1 #################################################################################
2 # settings.lib: Kiriwrite Settings Library #
4 # This library is under the same license as the main Kiriwrite script. #
5 #################################################################################
7 # This section of the file is for when the library is called from the main
10 # If the action value has been left blank, then view the list of
13 if ($form_data->{'action'}){
14 my $http_query_action = $form_data->{'action'};
16 if ($http_query_action eq "edit"){
18 # The action specified is to edit the settings. Check if the action
19 # to edit the settings has been confirmed.
21 my $http_query_confirm = $form_data->{'confirm'};
23 if (!$http_query_confirm){
25 # The confirm value is blank, so set it to 0.
27 $http_query_confirm = 0;
31 if ($http_query_confirm eq 1){
33 # The action to edit the settings has been confirmed. Get the
34 # required settings from the HTTP query.
36 my $http_query_database = $form_data->{'databasedir'};
37 my $http_query_output = $form_data->{'outputdir'};
38 my $http_query_imagesuri = $form_data->{'imagesuripath'};
39 my $http_query_datetimeformat = $form_data->{'datetime'};
40 my $http_query_systemlanguage = $form_data->{'language'};
41 my $http_query_presmodule = $form_data->{'presmodule'};
42 my $http_query_dbmodule = $form_data->{'dbmodule'};
43 my $http_query_textareacols = $form_data->{'textareacols'};
44 my $http_query_textarearows = $form_data->{'textarearows'};
46 my $http_query_database_server = $form_data->{'database_server'};
47 my $http_query_database_port = $form_data->{'database_port'};
48 my $http_query_database_protocol = $form_data->{'database_protocol'};
49 my $http_query_database_sqldatabase = $form_data->{'database_sqldatabase'};
50 my $http_query_database_username = $form_data->{'database_username'};
51 my $http_query_database_passwordkeep = $form_data->{'database_password_keep'};
52 my $http_query_database_password = $form_data->{'database_password'};
53 my $http_query_database_tableprefix = $form_data->{'database_tableprefix'};
55 my $pagedata = kiriwrite_settings_edit({ DatabaseDirectory => $http_query_database, OutputDirectory => $http_query_output, ImagesURIPath => $http_query_imagesuri, DateTimeFormat => $http_query_datetimeformat, SystemLanguage => $http_query_systemlanguage, PresentationModule => $http_query_presmodule, TextAreaCols => $http_query_textareacols, TextAreaRows => $http_query_textarearows, DatabaseModule => $http_query_dbmodule, DatabaseServer => $http_query_database_server, DatabasePort => $http_query_database_port, DatabaseProtocol => $http_query_database_protocol, DatabaseSQLDatabase => $http_query_database_sqldatabase, DatabaseUsername => $http_query_database_username, DatabasePasswordKeep => $http_query_database_passwordkeep, DatabasePassword => $http_query_database_password, DatabaseTablePrefix => $http_query_database_tableprefix, Confirm => 1 });
57 kiriwrite_output_header; # Output the header to browser/console/stdout.
58 kiriwrite_output_page($kiriwrite_lang->{setting}->{editsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
59 exit; # End the script.
63 # The action to edit the settings has not been confirmed.
65 my $pagedata = kiriwrite_settings_edit();
67 kiriwrite_output_header; # Output the header to browser/console/stdout.
68 kiriwrite_output_page($kiriwrite_lang->{setting}->{editsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
69 exit; # End the script.
73 # The action specified was something else other than those
74 # above, so return an error.
76 kiriwrite_error("invalidaction");
82 # No action has been specified, so print out the list of settings currently being used.
84 my $pagedata = kiriwrite_settings_view();
86 kiriwrite_output_header; # Output the header to browser/console/stdout.
87 kiriwrite_output_page($kiriwrite_lang->{setting}->{viewsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
88 exit; # End the script.
90 #################################################################################
91 # Begin list of relevant subroutines. #
92 #################################################################################
94 sub kiriwrite_settings_view{
95 #################################################################################
96 # kiriwrite_options_view: Writes out the list of options and variables. #
100 # kiriwrite_settings_view(); #
101 #################################################################################
105 my $settings_directory_db = $kiriwrite_config{"directory_data_db"};
106 my $settings_directory_output = $kiriwrite_config{"directory_data_output"};
107 my $settings_noncgi_images = $kiriwrite_config{"directory_noncgi_images"};
108 my $settings_display_textareacols = $kiriwrite_config{"display_textareacols"};
109 my $settings_display_textarearows = $kiriwrite_config{"display_textarearows"};
110 my $settings_system_datetime = $kiriwrite_config{"system_datetime"};
111 my $settings_system_language = $kiriwrite_config{"system_language"};
112 my $settings_system_presentation = $kiriwrite_config{"system_presmodule"};
113 my $settings_system_database = $kiriwrite_config{"system_dbmodule"};
115 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{viewsettings}, { Style => "pageheader" });
116 $kiriwrite_presmodule->addlinebreak();
117 $kiriwrite_presmodule->addlinebreak();
118 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{currentsettings});
119 $kiriwrite_presmodule->addlinebreak();
120 $kiriwrite_presmodule->addlinebreak();
121 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
123 $kiriwrite_presmodule->startheader();
124 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
125 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
126 $kiriwrite_presmodule->endheader();
128 $kiriwrite_presmodule->startrow();
129 $kiriwrite_presmodule->addcell("tablecellheader");
130 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{directories});
131 $kiriwrite_presmodule->endcell();
132 $kiriwrite_presmodule->addcell("tablecellheader");
133 $kiriwrite_presmodule->endcell();
134 $kiriwrite_presmodule->endrow();
136 $kiriwrite_presmodule->startrow();
137 $kiriwrite_presmodule->addcell("tablecell1");
138 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasedirectory});
139 $kiriwrite_presmodule->endcell();
140 $kiriwrite_presmodule->addcell("tablecell2");
141 $kiriwrite_presmodule->addtext($settings_directory_db);
142 $kiriwrite_presmodule->endcell();
143 $kiriwrite_presmodule->endrow();
145 $kiriwrite_presmodule->startrow();
146 $kiriwrite_presmodule->addcell("tablecell1");
147 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{outputdirectory});
148 $kiriwrite_presmodule->endcell();
149 $kiriwrite_presmodule->addcell("tablecell2");
150 $kiriwrite_presmodule->addtext($settings_directory_output);
151 $kiriwrite_presmodule->endcell();
152 $kiriwrite_presmodule->endrow();
154 $kiriwrite_presmodule->startrow();
155 $kiriwrite_presmodule->addcell("tablecell1");
156 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{imagesuripath});
157 $kiriwrite_presmodule->endcell();
158 $kiriwrite_presmodule->addcell("tablecell2");
159 $kiriwrite_presmodule->addtext($settings_noncgi_images);
160 $kiriwrite_presmodule->endcell();
161 $kiriwrite_presmodule->endrow();
163 $kiriwrite_presmodule->startrow();
164 $kiriwrite_presmodule->addcell("tablecellheader");
165 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{display});
166 $kiriwrite_presmodule->endcell();
167 $kiriwrite_presmodule->addcell("tablecellheader");
168 $kiriwrite_presmodule->endcell();
169 $kiriwrite_presmodule->endrow();
171 $kiriwrite_presmodule->startrow();
172 $kiriwrite_presmodule->addcell("tablecell1");
173 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textareacols});
174 $kiriwrite_presmodule->endcell();
175 $kiriwrite_presmodule->addcell("tablecell2");
176 $kiriwrite_presmodule->addtext($settings_display_textareacols);
177 $kiriwrite_presmodule->endcell();
178 $kiriwrite_presmodule->endrow();
180 $kiriwrite_presmodule->startrow();
181 $kiriwrite_presmodule->addcell("tablecell1");
182 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textarearows});
183 $kiriwrite_presmodule->endcell();
184 $kiriwrite_presmodule->addcell("tablecell2");
185 $kiriwrite_presmodule->addtext($settings_display_textarearows);
186 $kiriwrite_presmodule->endcell();
187 $kiriwrite_presmodule->endrow();
189 $kiriwrite_presmodule->startrow();
190 $kiriwrite_presmodule->addcell("tablecellheader");
191 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{date});
192 $kiriwrite_presmodule->endcell();
193 $kiriwrite_presmodule->addcell("tablecellheader");
194 $kiriwrite_presmodule->endcell();
195 $kiriwrite_presmodule->endrow();
197 $kiriwrite_presmodule->startrow();
198 $kiriwrite_presmodule->addcell("tablecell1");
199 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{dateformat});
200 $kiriwrite_presmodule->endcell();
201 $kiriwrite_presmodule->addcell("tablecell2");
202 $kiriwrite_presmodule->addtext($settings_system_datetime);
203 $kiriwrite_presmodule->endcell();
204 $kiriwrite_presmodule->endrow();
206 $kiriwrite_presmodule->startrow();
207 $kiriwrite_presmodule->addcell("tablecellheader");
208 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{language});
209 $kiriwrite_presmodule->endcell();
210 $kiriwrite_presmodule->addcell("tablecellheader");
211 $kiriwrite_presmodule->endcell();
212 $kiriwrite_presmodule->endrow();
214 $kiriwrite_presmodule->startrow();
215 $kiriwrite_presmodule->addcell("tablecell1");
216 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{systemlanguage});
217 $kiriwrite_presmodule->endcell();
218 $kiriwrite_presmodule->addcell("tablecell2");
219 $kiriwrite_presmodule->addtext($settings_system_language);
220 $kiriwrite_presmodule->endcell();
221 $kiriwrite_presmodule->endrow();
223 $kiriwrite_presmodule->startrow();
224 $kiriwrite_presmodule->addcell("tablecellheader");
225 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{modules});
226 $kiriwrite_presmodule->endcell();
227 $kiriwrite_presmodule->addcell("tablecellheader");
228 $kiriwrite_presmodule->endcell();
229 $kiriwrite_presmodule->endrow();
231 $kiriwrite_presmodule->startrow();
232 $kiriwrite_presmodule->addcell("tablecell1");
233 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{presentationmodule});
234 $kiriwrite_presmodule->endcell();
235 $kiriwrite_presmodule->addcell("tablecell2");
236 $kiriwrite_presmodule->addtext($settings_system_presentation);
237 $kiriwrite_presmodule->endcell();
238 $kiriwrite_presmodule->endrow();
240 $kiriwrite_presmodule->startrow();
241 $kiriwrite_presmodule->addcell("tablecell1");
242 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasemodule});
243 $kiriwrite_presmodule->endcell();
244 $kiriwrite_presmodule->addcell("tablecell2");
245 $kiriwrite_presmodule->addtext($settings_system_database);
246 $kiriwrite_presmodule->endcell();
247 $kiriwrite_presmodule->endrow();
249 $kiriwrite_presmodule->endtable();
251 $kiriwrite_presmodule->addlinebreak();
252 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{altersettings});
254 return $kiriwrite_presmodule->grab();
258 sub kiriwrite_settings_edit{
259 #################################################################################
260 # kiriwrite_settings_edit: Edits the options. #
264 # kiriwrite_settings_edit(options); #
266 # options Specifies the following options in any order. #
268 # DatabaseDirectory Specifies the new database directory to use. #
269 # OutputDirectory Specifies the new output directory to use. #
270 # ImagesURIPath Specifies the new URI path for images. #
271 # DateTimeFormat Specifies the new date and time format. #
272 # SystemLanguage Specifies the new language to use for Kiriwrite. #
273 # PrsentationModule Specifies the new presentation module to use for #
275 # DatabaseModule Specifies the new database module to use for Kiriwrite. #
276 # TextAreaCols Specifies the width of the text area. #
277 # TextAreaRows Specifies the height of the text area. #
279 # Options for server-based database modules. #
281 # DatabaseServer Specifies the database server to use. #
282 # DaravasePort Specifies the port the database server is running on. #
283 # DatabaseProtocol Specifies the protocol the database server is using. #
284 # DatabaseSQLDatabase Specifies the SQL database name to use. #
285 # DatabaseUsername Specifies the database server username. #
286 # DatabasePasswordKeep Keeps the current password in the configuration file. #
287 # DatabasePassword Specifies the password for the database server username.#
288 # DatabaseTablePrefix Specifies the prefix used for tables. #
289 #################################################################################
291 # Get the values that have been passed to the subroutine.
293 my ($passedoptions) = @_;
295 # Get the values from the hash.
297 my $settings_dbdirectory = $passedoptions->{"DatabaseDirectory"};
298 my $settings_outputdirectory = $passedoptions->{"OutputDirectory"};
299 my $settings_imagesuri = $passedoptions->{"ImagesURIPath"};
300 my $settings_datetimeformat = $passedoptions->{"DateTimeFormat"};
301 my $settings_languagesystem = $passedoptions->{"SystemLanguage"};
302 my $settings_presmodule = $passedoptions->{"PresentationModule"};
303 my $settings_dbmodule = $passedoptions->{"DatabaseModule"};
304 my $settings_textareacols = $passedoptions->{"TextAreaCols"};
305 my $settings_textarearows = $passedoptions->{"TextAreaRows"};
307 my $settings_database_server = $passedoptions->{"DatabaseServer"};
308 my $settings_database_port = $passedoptions->{"DatabasePort"};
309 my $settings_database_protocol = $passedoptions->{"DatabaseProtocol"};
310 my $settings_database_sqldatabase = $passedoptions->{"DatabaseSQLDatabase"};
311 my $settings_database_username = $passedoptions->{"DatabaseUsername"};
312 my $settings_database_passwordkeep = $passedoptions->{"DatabasePasswordKeep"};
313 my $settings_database_password = $passedoptions->{"DatabasePassword"};
314 my $settings_database_tableprefix = $passedoptions->{"DatabaseTablePrefix"};
316 my $confirm = $passedoptions->{"Confirm"};
320 # If the confirm value is blank, then set the confirm
327 if ($confirm eq "1"){
329 # The action to edit the settings has been confirmed.
330 # Start by checking each variable about to be placed
331 # in the settings file is valid.
333 # Deinfe some variables for later.
335 my @kiriwrite_new_settings;
337 # Check the length of the directory names.
339 kiriwrite_variablecheck($settings_dbdirectory, "maxlength", 64, 0);
340 kiriwrite_variablecheck($settings_outputdirectory, "maxlength", 64, 0);
341 kiriwrite_variablecheck($settings_imagesuri, "maxlength", 512, 0);
342 kiriwrite_variablecheck($settings_datetimeformat, "maxlength", 32, 0);
344 kiriwrite_variablecheck($settings_languagesystem, "language_filename", "", 0);
346 # Check the module names to see if they're valid.
348 my $kiriwrite_presmodule_modulename_check = kiriwrite_variablecheck($settings_presmodule, "module", 0, 1);
349 my $kiriwrite_dbmodule_modulename_check = kiriwrite_variablecheck($settings_dbmodule, "module", 0, 1);
351 if ($kiriwrite_presmodule_modulename_check eq 1){
353 # The presentation module name is blank, so return
356 kiriwrite_error("presmoduleblank");
360 if ($kiriwrite_presmodule_modulename_check eq 2){
362 # The presentation module name is invalid, so return
365 kiriwrite_error("presmoduleinvalid");
369 if ($kiriwrite_dbmodule_modulename_check eq 1){
371 # The database module name is blank, so return
374 kiriwrite_error("dbmoduleblank");
378 if ($kiriwrite_dbmodule_modulename_check eq 2){
380 # The database module name is invalid, so return
383 kiriwrite_error("dbmoduleinvalid");
387 # Check if the directory names only contain letters and numbers and
388 # return a specific error if they don't.
390 my $kiriwrite_dbdirectory_check = kiriwrite_variablecheck($settings_dbdirectory, "directory", 0, 1);
391 my $kiriwrite_outputdirectory_check = kiriwrite_variablecheck($settings_outputdirectory, "directory", 0, 1);
392 kiriwrite_variablecheck($settings_datetimeformat, "datetime", 0, 0);
394 my $kiriwrite_textarearows_maxlength = kiriwrite_variablecheck($settings_textarearows, "maxlength", 3, 1);
395 my $kiriwrite_textarearows_number = kiriwrite_variablecheck($settings_textarearows, "numbers", 0, 1);
396 my $kiriwrite_textareacols_maxlength = kiriwrite_variablecheck($settings_textareacols, "maxlength", 3, 1);
397 my $kiriwrite_textareacols_number = kiriwrite_variablecheck($settings_textareacols, "numbers", 0, 1);
399 if ($kiriwrite_dbdirectory_check eq 1){
401 # The database directory name is blank, so return
404 kiriwrite_error("dbdirectoryblank");
406 } elsif ($kiriwrite_dbdirectory_check eq 2){
408 # The database directory name is invalid, so return
411 kiriwrite_error("dbdirectoryinvalid");
415 if ($kiriwrite_outputdirectory_check eq 1){
417 # The output directory name is blank, so return
420 kiriwrite_error("outputdirectoryblank");
422 } elsif ($kiriwrite_outputdirectory_check eq 2){
424 # The output directory name is invalid, so return
427 kiriwrite_error("outputdirectoryinvalid");
431 if (!$settings_textarearows){
433 # The text area row value is blank so return an
436 kiriwrite_error("textarearowblank");
440 if ($kiriwrite_textarearows_maxlength eq 1){
442 # The text area row value is too long, so return
445 kiriwrite_error("textarearowtoolong");
449 if ($kiriwrite_textarearows_number eq 1){
451 # The text area row value is invalid, so return
454 kiriwrite_error("textarearowinvalid");
458 if (!$settings_textareacols){
460 # The text area column value is blank so return
463 kiriwrite_error("textareacolblank");
467 if ($kiriwrite_textareacols_maxlength eq 1){
469 # The text area column value is too long, so return
472 kiriwrite_error("textareacoltoolong");
476 if ($kiriwrite_textareacols_number eq 1){
478 # The text area column value is invalid, so return
481 kiriwrite_error("textareacolinvalid");
485 # Check if the presentation module with the filename given exists.
487 my $presmodule_exists = kiriwrite_fileexists("Modules/Presentation/" . $settings_presmodule . ".pm");
489 if ($presmodule_exists eq 1){
491 # The presentation module does not exist so return an error.
493 kiriwrite_error("presmodulemissing");
497 # Check if the database module with the filename given exists.
499 my $dbmodule_exists = kiriwrite_fileexists("Modules/Database/" . $settings_dbmodule . ".pm");
501 if ($dbmodule_exists eq 1){
503 # The database module does not exist so return an error.
505 kiriwrite_error("dbmodulemissing");
509 # Check if the language filename given exists.
511 my $languagefile_exists = kiriwrite_fileexists("lang/" . $settings_languagesystem . ".lang");
513 if ($languagefile_exists eq 1){
515 # The language filename given does not exist so return an error.
517 kiriwrite_error("languagefilenamemissing");
521 # Check the database server options to see if they are valid.
523 my $kiriwrite_databaseserver_length_check = kiriwrite_variablecheck($settings_database_server, "maxlength", 128, 1);
524 my $kiriwrite_databaseserver_lettersnumbers_check = kiriwrite_variablecheck($settings_database_server, "lettersnumbers", 0, 1);
525 my $kiriwrite_databaseport_length_check = kiriwrite_variablecheck($settings_database_port, "maxlength", 5, 1);
526 my $kiriwrite_databaseport_numbers_check = kiriwrite_variablecheck($settings_database_port, "numbers", 0, 1);
527 my $kiriwrite_databaseport_port_check = kiriwrite_variablecheck($settings_database_port, "port", 0, 1);
528 my $kiriwrite_databaseprotocol_length_check = kiriwrite_variablecheck($settings_database_protocol, "maxlength", 5, 1);
529 my $kiriwrite_databaseprotocol_protocol_check = kiriwrite_variablecheck($settings_database_protocol, "serverprotocol", 0, 1);
530 my $kiriwrite_databasename_length_check = kiriwrite_variablecheck($settings_database_sqldatabase, "maxlength", 32, 1);
531 my $kiriwrite_databasename_lettersnumbers_check = kiriwrite_variablecheck($settings_database_sqldatabase, "lettersnumbers", 0, 1);
532 my $kiriwrite_databaseusername_length_check = kiriwrite_variablecheck($settings_database_username, "maxlength", 16, 1);
533 my $kiriwrite_databaseusername_lettersnumbers_check = kiriwrite_variablecheck($settings_database_username, "lettersnumbers", 0, 1);
534 my $kiriwrite_databasepassword_length_check = kiriwrite_variablecheck($settings_database_password, "maxlength", 64, 1);
535 my $kiriwrite_databasetableprefix_length_check = kiriwrite_variablecheck($settings_database_tableprefix, "maxlength", 16, 1);
536 my $kiriwrite_databasetableprefix_lettersnumbers_check = kiriwrite_variablecheck($settings_database_tableprefix, "lettersnumbers", 0, 1);
538 if ($kiriwrite_databaseserver_length_check eq 1){
540 # The length of the database server name is too long so
543 kiriwrite_error("servernametoolong");
547 if ($kiriwrite_databaseserver_lettersnumbers_check eq 1){
549 # The database server name contains characters other
550 # than letters and numbers, so return an error.
552 kiriwrite_error("servernameinvalid");
556 if ($kiriwrite_databaseport_length_check eq 1){
558 # The database port number length is too long so return
561 kiriwrite_error("serverportnumbertoolong");
565 if ($kiriwrite_databaseport_numbers_check eq 1){
567 # The database port number contains characters other
568 # than numbers so return an error.
570 kiriwrite_error("serverportnumberinvalidcharacters");
574 if ($kiriwrite_databaseport_port_check eq 1){
576 # The database port number given is invalid so return
579 kiriwrite_error("serverportnumberinvalid");
583 if ($kiriwrite_databaseprotocol_length_check eq 1){
585 # The database protocol name given is too long so
588 kiriwrite_error("serverprotocolnametoolong");
592 if ($kiriwrite_databaseprotocol_protocol_check eq 1){
594 # The server protcol given is invalid so return
597 kiriwrite_error("serverprotocolinvalid");
601 if ($kiriwrite_databasename_length_check eq 1){
603 # The SQL database name is too long so return
606 kiriwrite_error("serverdatabasenametoolong");
610 if ($kiriwrite_databasename_lettersnumbers_check eq 1){
612 # The database name contains invalid characters
613 # so return an error.
615 kiriwrite_error("serverdatabasenameinvalid");
619 if ($kiriwrite_databaseusername_length_check eq 1){
621 # The database username given is too long so
624 kiriwrite_error("serverdatabaseusernametoolong");
628 if ($kiriwrite_databaseusername_lettersnumbers_check eq 1){
630 # The database username contains invalid characters
631 # so return an error.
633 kiriwrite_error("serverdatabaseusernameinvalid");
637 if ($kiriwrite_databasepassword_length_check eq 1){
639 # The database password given is too long so return
642 kiriwrite_error("serverdatabasepasswordtoolong");
646 if ($kiriwrite_databasetableprefix_length_check eq 1){
648 # The database table prefix given is too long so
651 kiriwrite_error("serverdatabasetableprefixtoolong");
655 if ($kiriwrite_databasetableprefix_lettersnumbers_check eq 1){
657 # The database table prefix given contains invalid
658 # characters so return an error.
660 kiriwrite_error("serverdatabasetableprefixinvalid");
664 # Check if the current password should be kept.
666 if ($settings_database_passwordkeep eq "on"){
668 # The current password in the configuration file should be used.
670 $settings_database_password = $kiriwrite_config{"database_password"};
674 # Write the new settings to the configuration file.
676 kiriwrite_output_config({ DatabaseDirectory => $settings_dbdirectory, OutputDirectory => $settings_outputdirectory, ImagesURIPath => $settings_imagesuri, DateTimeFormat => $settings_datetimeformat, SystemLanguage => $settings_languagesystem, PresentationModule => $settings_presmodule, TextAreaCols => $settings_textareacols, TextAreaRows => $settings_textarearows, DatabaseModule => $settings_dbmodule, DatabaseServer => $settings_database_server, DatabasePort => $settings_database_port, DatabaseProtocol => $settings_database_protocol, DatabaseSQLDatabase => $settings_database_sqldatabase, DatabaseUsername => $settings_database_username, DatabasePassword => $settings_database_password, DatabaseTablePrefix => $settings_database_tableprefix });
678 # Write a confirmation message.
680 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{settingsedited}, { Style => "pageheader" });
681 $kiriwrite_presmodule->addlinebreak();
682 $kiriwrite_presmodule->addlinebreak();
683 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{settingseditedmessage});
684 $kiriwrite_presmodule->addlinebreak();
685 $kiriwrite_presmodule->addlinebreak();
686 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=settings", { Text => $kiriwrite_lang->{setting}->{returnsettingslist} });
688 return $kiriwrite_presmodule->grab();
692 # Get the list of languages available.
695 my @language_directory = "";
697 my $language_filename = "";
698 my $language_file_xml = "";
699 my $language_file_systemname = "";
700 my $language_file_localname = "";
701 my $language_file_seek = 0;
702 my $language_flie_dot = 0;
703 my $language_file_length = 0;
704 my $language_file_count = 0;
705 my $language_file_char = "";
706 my $language_file_friendly = "";
707 my $language_config = $kiriwrite_config{"system_language"};
709 tie(%language_list, 'Tie::IxHash');
711 opendir(LANGUAGEDIR, "lang");
712 @language_directory = grep /m*\.lang$/, readdir(LANGUAGEDIR);
713 closedir(LANGUAGEDIR);
715 # Process each language by loading the language file
716 # used for each language and then get the System name and
717 # the local name of the language.
719 foreach $language_filename (@language_directory){
721 # Load the language file currently selected.
723 $language_file = Config::Auto::parse("lang/" . $kiriwrite_config{"system_language"} . ".lang");
725 # Get the system name and the local name of the language.
727 $language_file_localname = $language_file -> {about} -> {name};
729 # Check if either the system name or the local name of the language
730 # is blank and if it is, then don't add the language to the list.
732 if (!$language_file_localname){
734 # The system name or the local name is blank so don't add
735 # the language to the list.
739 # Get the 'friendly' name of the language file name (basically
740 # remove the .lang part from the filename.
742 $language_file_length = length($language_filename);
746 # Get a character from the language filename and currently
747 # set by the seek counter.
749 $language_file_char = substr($language_filename, $language_file_seek, 1);
751 # Check if the character is a dot and if it is then set the
752 # last dot value to the seek counter value.
754 if ($language_file_char eq "."){
756 # Current chatacter is a dot so set the last dot value
757 # to what is currently the seek counter.
759 $language_flie_dot = $language_file_seek;
763 # Current character is not a dot, so do nothing.
767 # Increment the seek counter.
769 $language_file_seek++;
771 } until ($language_file_seek eq $language_file_length);
773 # Reset the seek counter.
775 $language_file_seek = 0;
777 # Process the file name again and this time process the file
778 # name until it reaches the last dot found.
782 # Get the character the seek counter is currently set at.
784 $language_file_char = substr($language_filename, $language_file_seek, 1);
786 # Append the character to the friendly file name.
788 $language_file_friendly = $language_file_friendly . $language_file_char;
790 # Increment the seek counter.
792 $language_file_seek++;
794 } until ($language_file_seek eq $language_flie_dot);
796 # Append the language to the available languages list.
798 $language_list{$language_file_count}{Filename} = $language_file_friendly;
799 $language_list{$language_file_count}{Name} = $language_file_localname;
800 $language_file_count++;
802 # Reset certain counters and values before continuing.
804 $language_file_seek = 0;
805 $language_flie_dot = 0;
806 $language_file_length = 0;
807 $language_file_char = "";
808 $language_file_friendly = "";
812 undef $language_file;
816 # Get the list of presentation modules available.
819 my @presmodule_directory;
821 my $presmodule_file = "";
822 my $presmodule_char = "";
823 my $presmodule_dot = 0;
824 my $presmodule_firstdot = 0;
825 my $presmodule_firstdotfound = "";
826 my $presmodule_seek = 0;
827 my $presmodule_length = 0;
828 my $presmodule_count = 0;
829 my $presmodule_friendly = "";
830 my $presmodule_selectlist = "";
831 my $presmodule_config = $kiriwrite_config{"system_presmodule"};
833 # Open and get the list of presentation modules (perl modules) by filtering
836 opendir(OUTPUTSYSTEMDIR, "Modules/Presentation");
837 @presmodule_directory = grep /m*\.pm$/, readdir(OUTPUTSYSTEMDIR);
838 closedir(OUTPUTSYSTEMDIR);
840 # Process each presentation module and add them to the list of available
841 # presentation modules.
843 foreach $presmodule_file (@presmodule_directory){
845 # Get the length of the presentation module (perl module) filename.
847 $presmodule_length = length($presmodule_file);
849 # Get the friendly name of the Perl module (by getting rid of the
850 # .pm part of the filename).
854 $presmodule_char = substr($presmodule_file, $presmodule_seek, 1);
856 # Check if the current character is a dot and if it is then
857 # set the last dot found number to the current seek number.
859 if ($presmodule_char eq "."){
861 # Put the seek value as the last dot found number.
863 $presmodule_dot = $presmodule_seek;
867 # Increment the seek counter.
871 } until ($presmodule_seek eq $presmodule_length);
873 # Reset the seek counter as it is going to be used again.
875 $presmodule_seek = 0;
877 # Get the friendly name of the Perl module by the processing the file
878 # name to the last dot the previous 'do' tried to find.
882 # Get the character the seek counter is currently set at.
884 $presmodule_char = substr($presmodule_file, $presmodule_seek, 1);
886 # Append the character to the friendly name of the presentation module.
888 $presmodule_friendly = $presmodule_friendly . $presmodule_char;
890 # Increment the seek counter.
894 } until ($presmodule_seek eq $presmodule_dot);
896 # Append the option to tbe list of available presentation modules.
898 $presmodule_list{$presmodule_count}{Filename} = $presmodule_friendly;
900 # Reset the following values.
902 $presmodule_seek = 0;
903 $presmodule_length = 0;
904 $presmodule_char = "";
905 $presmodule_friendly = "";
910 # Get the list of database modules available.
913 my @dbmodule_directory;
915 my $dbmodule_file = "";
916 my $dbmodule_char = "";
917 my $dbmodule_dot = 0;
918 my $dbmodule_firstdot = 0;
919 my $dbmodule_firstdotfound = "";
920 my $dbmodule_seek = 0;
921 my $dbmodule_length = 0;
922 my $dbmodule_count = 0;
923 my $dbmodule_friendly = "";
924 my $dbmodule_selectlist = "";
925 my $dbmodule_config = $kiriwrite_config{"system_dbmodule"};
927 # Open and get the list of presentation modules (perl modules) by filtering
930 opendir(DATABASEDIR, "Modules/Database");
931 @dbmodule_directory = grep /m*\.pm$/, readdir(DATABASEDIR);
932 closedir(DATABASEDIR);
934 # Process each presentation module and add them to the list of available
935 # presentation modules.
937 foreach $dbmodule_file (@dbmodule_directory){
939 # Get the length of the database module (perl module) filename.
941 $dbmodule_length = length($dbmodule_file);
943 # Get the friendly name of the Perl module (by getting rid of the
944 # .pm part of the filename).
948 $dbmodule_char = substr($dbmodule_file, $dbmodule_seek, 1);
950 # Check if the current character is a dot and if it is then
951 # set the last dot found number to the current seek number.
953 if ($dbmodule_char eq "."){
955 # Put the seek value as the last dot found number.
957 $dbmodule_dot = $dbmodule_seek;
961 # Increment the seek counter.
965 } until ($dbmodule_seek eq $dbmodule_length);
967 # Reset the seek counter as it is going to be used again.
971 # Get the friendly name of the Perl module by the processing the file
972 # name to the last dot the previous 'do' tried to find.
976 # Get the character the seek counter is currently set at.
978 $dbmodule_char = substr($dbmodule_file, $dbmodule_seek, 1);
980 # Append the character to the friendly name of the presentation module.
982 $dbmodule_friendly = $dbmodule_friendly . $dbmodule_char;
984 # Increment the seek counter.
988 } until ($dbmodule_seek eq $dbmodule_dot);
990 # Append the option to tbe list of available database modules.
992 $dbmodule_list{$dbmodule_count}{Filename} = $dbmodule_friendly;
994 # Reset the following values.
997 $dbmodule_length = 0;
999 $dbmodule_friendly = "";
1004 # Get the directory settings.
1006 my $directory_settings_database = $kiriwrite_config{"directory_data_db"};
1007 my $directory_settings_output = $kiriwrite_config{"directory_data_output"};
1008 my $directory_settings_imagesuri = $kiriwrite_config{"directory_noncgi_images"};
1009 my $datetime_setting = $kiriwrite_config{"system_datetime"};
1011 my $display_textareacols = $kiriwrite_config{"display_textareacols"};
1012 my $display_textarearows = $kiriwrite_config{"display_textarearows"};
1014 my $database_server = $kiriwrite_config{"database_server"};
1015 my $database_port = $kiriwrite_config{"database_port"};
1016 my $database_protocol = $kiriwrite_config{"database_protocol"};
1017 my $database_sqldatabase = $kiriwrite_config{"database_sqldatabase"};
1018 my $database_username = $kiriwrite_config{"database_username"};
1019 my $database_passwordhash = $kiriwrite_config{"database_passwordhash"};
1020 my $database_password = $kiriwrite_config{"database_password"};
1021 my $database_prefix = $kiriwrite_config{"database_tableprefix"};
1023 # Print out a form for editing the settings.
1025 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{editsettings}, { Style => "pageheader" });
1026 $kiriwrite_presmodule->addlinebreak();
1027 $kiriwrite_presmodule->addlinebreak();
1028 $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{setting}->{warning});
1029 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{warningmessage});
1030 $kiriwrite_presmodule->addlinebreak();
1031 $kiriwrite_presmodule->addlinebreak();
1033 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1034 $kiriwrite_presmodule->startbox();
1035 $kiriwrite_presmodule->addhiddendata("mode", "settings");
1036 $kiriwrite_presmodule->addhiddendata("action", "edit");
1037 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1039 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1041 $kiriwrite_presmodule->startheader();
1042 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1043 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1044 $kiriwrite_presmodule->endheader();
1046 $kiriwrite_presmodule->startrow();
1047 $kiriwrite_presmodule->addcell("tablecellheader");
1048 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{directories});
1049 $kiriwrite_presmodule->endcell();
1050 $kiriwrite_presmodule->addcell("tablecellheader");
1051 $kiriwrite_presmodule->endcell();
1052 $kiriwrite_presmodule->endrow();
1054 $kiriwrite_presmodule->startrow();
1055 $kiriwrite_presmodule->addcell("tablecell1");
1056 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasedirectory});
1057 $kiriwrite_presmodule->endcell();
1058 $kiriwrite_presmodule->addcell("tablecell2");
1059 $kiriwrite_presmodule->addinputbox("databasedir", { Size => 32, MaxLength => 64, Value => $directory_settings_database });
1060 $kiriwrite_presmodule->endcell();
1061 $kiriwrite_presmodule->endrow();
1063 $kiriwrite_presmodule->startrow();
1064 $kiriwrite_presmodule->addcell("tablecell1");
1065 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{outputdirectory});
1066 $kiriwrite_presmodule->endcell();
1067 $kiriwrite_presmodule->addcell("tablecell2");
1068 $kiriwrite_presmodule->addinputbox("outputdir", { Size => 32, MaxLength => 64, Value => $directory_settings_output });
1069 $kiriwrite_presmodule->endcell();
1070 $kiriwrite_presmodule->endrow();
1072 $kiriwrite_presmodule->startrow();
1073 $kiriwrite_presmodule->addcell("tablecell1");
1074 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{imagesuripath});
1075 $kiriwrite_presmodule->endcell();
1076 $kiriwrite_presmodule->addcell("tablecell2");
1077 $kiriwrite_presmodule->addinputbox("imagesuripath", { Size => 32, MaxLength => 64, Value => $directory_settings_imagesuri });
1078 $kiriwrite_presmodule->endcell();
1079 $kiriwrite_presmodule->endrow();
1081 $kiriwrite_presmodule->startrow();
1082 $kiriwrite_presmodule->addcell("tablecellheader");
1083 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{display});
1084 $kiriwrite_presmodule->endcell();
1085 $kiriwrite_presmodule->addcell("tablecellheader");
1086 $kiriwrite_presmodule->endcell();
1087 $kiriwrite_presmodule->endrow();
1089 $kiriwrite_presmodule->startrow();
1090 $kiriwrite_presmodule->addcell("tablecell1");
1091 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textareacols});
1092 $kiriwrite_presmodule->endcell();
1093 $kiriwrite_presmodule->addcell("tablecell2");
1094 $kiriwrite_presmodule->addinputbox("textareacols", { Size => 3, MaxLength => 3, Value => $display_textareacols });
1095 $kiriwrite_presmodule->endrow();
1097 $kiriwrite_presmodule->startrow();
1098 $kiriwrite_presmodule->addcell("tablecell1");
1099 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textarearows});
1100 $kiriwrite_presmodule->endcell();
1101 $kiriwrite_presmodule->addcell("tablecell2");
1102 $kiriwrite_presmodule->addinputbox("textarearows", { Size => 3, MaxLength => 3, Value => $display_textarearows });
1103 $kiriwrite_presmodule->endrow();
1105 $kiriwrite_presmodule->startrow();
1106 $kiriwrite_presmodule->addcell("tablecellheader");
1107 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{date});
1108 $kiriwrite_presmodule->endcell();
1109 $kiriwrite_presmodule->addcell("tablecellheader");
1110 $kiriwrite_presmodule->endcell();
1111 $kiriwrite_presmodule->endrow();
1113 $kiriwrite_presmodule->startrow();
1114 $kiriwrite_presmodule->addcell("tablecell1");
1115 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{dateformat});
1116 $kiriwrite_presmodule->endcell();
1117 $kiriwrite_presmodule->addcell("tablecell2");
1118 $kiriwrite_presmodule->addinputbox("datetime", { Size => 32, MaxLength => 64, Value => $datetime_setting });
1119 $kiriwrite_presmodule->addlinebreak();
1120 $kiriwrite_presmodule->addlinebreak();
1121 $kiriwrite_presmodule->startbox("datalist");
1123 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleday});
1124 $kiriwrite_presmodule->addlinebreak();
1125 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleday});
1126 $kiriwrite_presmodule->addlinebreak();
1127 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlemonth});
1128 $kiriwrite_presmodule->addlinebreak();
1129 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublemonth});
1130 $kiriwrite_presmodule->addlinebreak();
1131 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleyear});
1132 $kiriwrite_presmodule->addlinebreak();
1133 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleyear});
1134 $kiriwrite_presmodule->addlinebreak();
1135 $kiriwrite_presmodule->addlinebreak();
1136 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlehour});
1137 $kiriwrite_presmodule->addlinebreak();
1138 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublehour});
1139 $kiriwrite_presmodule->addlinebreak();
1140 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleminute});
1141 $kiriwrite_presmodule->addlinebreak();
1142 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleminute});
1143 $kiriwrite_presmodule->addlinebreak();
1144 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlesecond});
1145 $kiriwrite_presmodule->addlinebreak();
1146 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublesecond});
1147 $kiriwrite_presmodule->addlinebreak();
1148 $kiriwrite_presmodule->addlinebreak();
1149 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{othercharacters});
1150 $kiriwrite_presmodule->endbox();
1151 $kiriwrite_presmodule->endcell();
1152 $kiriwrite_presmodule->endrow();
1154 $kiriwrite_presmodule->startrow();
1155 $kiriwrite_presmodule->addcell("tablecellheader");
1156 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{language});
1157 $kiriwrite_presmodule->endcell();
1158 $kiriwrite_presmodule->addcell("tablecellheader");
1159 $kiriwrite_presmodule->endcell();
1160 $kiriwrite_presmodule->endrow();
1162 $kiriwrite_presmodule->startrow();
1163 $kiriwrite_presmodule->addcell("tablecell1");
1164 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{systemlanguage});
1165 $kiriwrite_presmodule->endcell();
1166 $kiriwrite_presmodule->addcell("tablecell2");
1168 $kiriwrite_presmodule->addselectbox("language");
1170 # Process the list of available languages.
1172 foreach $language (keys %language_list){
1174 # Check if the language filename matches the filename in the configuration
1177 if ($language_list{$language}{Filename} eq $language_config){
1179 $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} , Selected => 1 });
1183 $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} });
1189 $kiriwrite_presmodule->endselectbox();
1191 $kiriwrite_presmodule->startrow();
1192 $kiriwrite_presmodule->addcell("tablecellheader");
1193 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{modules});
1194 $kiriwrite_presmodule->endcell();
1195 $kiriwrite_presmodule->addcell("tablecellheader");
1196 $kiriwrite_presmodule->endcell();
1197 $kiriwrite_presmodule->endrow();
1199 $kiriwrite_presmodule->startrow();
1200 $kiriwrite_presmodule->addcell("tablecell1");
1201 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{presentationmodule});
1202 $kiriwrite_presmodule->endcell();
1203 $kiriwrite_presmodule->addcell("tablecell2");
1205 $kiriwrite_presmodule->addselectbox("presmodule");
1207 # Process the list of available presentation modules.
1209 foreach $presmodule (keys %presmodule_list){
1211 # Check if the presentation module fileanme matches the filename in the
1212 # configuration file.
1214 if ($presmodule_list{$presmodule}{Filename} eq $presmodule_config){
1216 $kiriwrite_presmodule->addoption($presmodule_list{$presmodule}{Filename}, { Value => $presmodule_list{$presmodule}{Filename} , Selected => 1 });
1220 $kiriwrite_presmodule->addoption($presmodule_list{$presmodule}{Filename}, { Value => $presmodule_list{$presmodule}{Filename} });
1226 $kiriwrite_presmodule->endselectbox();
1228 $kiriwrite_presmodule->endcell();
1229 $kiriwrite_presmodule->endrow();
1231 $kiriwrite_presmodule->startrow();
1232 $kiriwrite_presmodule->addcell("tablecell1");
1233 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasemodule});
1234 $kiriwrite_presmodule->endcell();
1235 $kiriwrite_presmodule->addcell("tablecell2");
1237 # Process the list of available database modules.
1239 $kiriwrite_presmodule->addselectbox("dbmodule");
1241 foreach $dbmodule (keys %dbmodule_list){
1243 # Check if the database module fileanme matches the filename in the
1244 # configuration file.
1246 if ($dbmodule_list{$dbmodule}{Filename} eq $dbmodule_config){
1248 $kiriwrite_presmodule->addoption($dbmodule_list{$dbmodule}{Filename}, { Value => $dbmodule_list{$dbmodule}{Filename} , Selected => 1 });
1252 $kiriwrite_presmodule->addoption($dbmodule_list{$dbmodule}{Filename}, { Value => $dbmodule_list{$dbmodule}{Filename} });
1259 $kiriwrite_presmodule->endselectbox();
1261 $kiriwrite_presmodule->endcell();
1262 $kiriwrite_presmodule->endrow();
1264 $kiriwrite_presmodule->startrow();
1265 $kiriwrite_presmodule->addcell("tablecell1");
1266 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseserver});
1267 $kiriwrite_presmodule->endcell();
1268 $kiriwrite_presmodule->addcell("tablecell2");
1269 $kiriwrite_presmodule->addinputbox("database_server", { Size => 32, MaxLength => 128, Value => $database_server });
1270 $kiriwrite_presmodule->endcell();
1271 $kiriwrite_presmodule->endrow();
1273 $kiriwrite_presmodule->startrow();
1274 $kiriwrite_presmodule->addcell("tablecell1");
1275 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseport});
1276 $kiriwrite_presmodule->endcell();
1277 $kiriwrite_presmodule->addcell("tablecell2");
1278 $kiriwrite_presmodule->addinputbox("database_port", { Size => 5, MaxLength => 5, Value => $database_port });
1279 $kiriwrite_presmodule->endcell();
1280 $kiriwrite_presmodule->endrow();
1282 $kiriwrite_presmodule->startrow();
1283 $kiriwrite_presmodule->addcell("tablecell1");
1284 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseprotocol});
1285 $kiriwrite_presmodule->endcell();
1286 $kiriwrite_presmodule->addcell("tablecell2");
1288 # Check if TCP is being used.
1290 $kiriwrite_presmodule->addselectbox("database_protocol");
1292 if ($database_protocol eq "tcp"){
1294 # The TCP protocol is selected so have the TCP option selected.
1296 $kiriwrite_presmodule->addoption("TCP", { Value => "tcp", Selected => 1});
1300 # The TCP protocol is not selected.
1302 $kiriwrite_presmodule->addoption("TCP", { Value => "tcp"});
1306 # Check if UDP is being used.
1308 if ($database_protocol eq "udp"){
1310 # The UDP protocol is selected so have the UDP option selected.
1312 $kiriwrite_presmodule->addoption("UDP", { Value => "udp", Selected => 1});
1316 # The UDP protocol is not selected.
1318 $kiriwrite_presmodule->addoption("UDP", { Value => "udp"});
1322 $kiriwrite_presmodule->endselectbox();
1324 $kiriwrite_presmodule->endcell();
1325 $kiriwrite_presmodule->endrow();
1327 $kiriwrite_presmodule->startrow();
1328 $kiriwrite_presmodule->addcell("tablecell1");
1329 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasename});
1330 $kiriwrite_presmodule->endcell();
1331 $kiriwrite_presmodule->addcell("tablecell2");
1332 $kiriwrite_presmodule->addinputbox("database_sqldatabase", { Size => 32, MaxLength => 32, Value => $database_sqldatabase });
1333 $kiriwrite_presmodule->endcell();
1334 $kiriwrite_presmodule->endrow();
1336 $kiriwrite_presmodule->startrow();
1337 $kiriwrite_presmodule->addcell("tablecell1");
1338 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseusername});
1339 $kiriwrite_presmodule->endcell();
1340 $kiriwrite_presmodule->addcell("tablecell2");
1341 $kiriwrite_presmodule->addinputbox("database_username", { Size => 16, MaxLength => 16, Value => $database_username });
1342 $kiriwrite_presmodule->endcell();
1343 $kiriwrite_presmodule->endrow();
1345 $kiriwrite_presmodule->startrow();
1346 $kiriwrite_presmodule->addcell("tablecell1");
1347 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasepassword});
1348 $kiriwrite_presmodule->endcell();
1349 $kiriwrite_presmodule->addcell("tablecell2");
1350 $kiriwrite_presmodule->addinputbox("database_password", { Size => 16, MaxLength => 64, Password => 1 });
1351 $kiriwrite_presmodule->addtext(" ");
1352 $kiriwrite_presmodule->addcheckbox("database_password_keep", { OptionDescription => "Keep the current password", Checked => 1 });
1353 $kiriwrite_presmodule->endcell();
1354 $kiriwrite_presmodule->endrow();
1356 $kiriwrite_presmodule->startrow();
1357 $kiriwrite_presmodule->addcell("tablecell1");
1358 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{tableprefix});
1359 $kiriwrite_presmodule->endcell();
1360 $kiriwrite_presmodule->addcell("tablecell2");
1361 $kiriwrite_presmodule->addinputbox("database_tableprefix", { Size => 16, MaxLength => 16, Value => $database_prefix });
1362 $kiriwrite_presmodule->endcell();
1363 $kiriwrite_presmodule->endrow();
1365 $kiriwrite_presmodule->endtable();
1367 $kiriwrite_presmodule->addlinebreak();
1368 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{setting}->{changesettingsbutton});
1369 $kiriwrite_presmodule->addtext(" | ");
1370 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1371 $kiriwrite_presmodule->addtext(" | ");
1372 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=settings", { Text => $kiriwrite_lang->{setting}->{returnsettingslist} });
1373 $kiriwrite_presmodule->endbox();
1374 $kiriwrite_presmodule->endform();
1376 return $kiriwrite_presmodule->grab();
1380 sub kiriwrite_output_config{
1381 #################################################################################
1382 # kiriwrite_output_config: Outputs the configuration file. #
1386 # kiriwrite_output_config(settings); #
1388 # settings Specifies the following settings in any order. #
1390 # Settings for Kiriwrite configuration files: #
1392 # DatabaseDirectory Specifies the new database directory to use. #
1393 # OutputDirectory Specifies the new output directory to use. #
1394 # ImagesURIPath Specifies the new URI path for images. #
1395 # DateTimeFormat Specifies the new date and time format. #
1396 # SystemLanguage Specifies the new language to use for Kiriwrite. #
1397 # PrsentationModule Specifies the new presentation module to use for #
1399 # TextAreaCols Specifies the width of the text area. #
1400 # TextAreaRows Specifies the height of the text area. #
1401 # DatabaseModule Specifies the new database module to use for Kiriwrite. #
1402 # DatabaseServer Specifies the database server to use. #
1403 # DaravasePort Specifies the port the database server is running on. #
1404 # DatabaseProtocol Specifies the protocol the database server is using. #
1405 # DatabaseSQLDatabase Specifies the SQL database name to use. #
1406 # DatabaseUsername Specifies the database server username. #
1407 # DatabasePassword Specifies the password for the database server username.#
1408 # DatabaseTablePrefix Specifies the table prefix to use. #
1409 #################################################################################
1411 # Get the variables passed from the subroutine.
1413 my ($passedsettings) = @_;
1415 # Get the data from the hash.
1417 my $settings_databasedir = $passedsettings->{"DatabaseDirectory"};
1418 my $settings_outputdir = $passedsettings->{"OutputDirectory"};
1419 my $settings_imagesuri = $passedsettings->{"ImagesURIPath"};
1420 my $settings_datetime = $passedsettings->{"DateTimeFormat"};
1421 my $settings_systemlanguage = $passedsettings->{"SystemLanguage"};
1422 my $settings_presmodule = $passedsettings->{"PresentationModule"};
1423 my $settings_dbmodule = $passedsettings->{"DatabaseModule"};
1425 my $settings_textareacols = $passedsettings->{"TextAreaCols"};
1426 my $settings_textarearows = $passedsettings->{"TextAreaRows"};
1428 my $settings_database_server = $passedsettings->{"DatabaseServer"};
1429 my $settings_database_port = $passedsettings->{"DatabasePort"};
1430 my $settings_database_protocol = $passedsettings->{"DatabaseProtocol"};
1431 my $settings_database_sqldatabase = $passedsettings->{"DatabaseSQLDatabase"};
1432 my $settings_database_username = $passedsettings->{"DatabaseUsername"};
1433 my $settings_database_password = $passedsettings->{"DatabasePassword"};
1434 my $settings_database_tableprefix = $passedsettings->{"DatabaseTablePrefix"};
1436 # Convert the password to make sure it can be read properly.
1438 if ($settings_database_password){
1440 $settings_database_password =~ s/\0//g;
1441 $settings_database_password =~ s/</</g;
1442 $settings_database_password =~ s/>/>/g;
1446 # Convert the less than and greater than characters are there and
1449 if ($settings_imagesuri){
1451 $settings_imagesuri =~ s/</</g;
1452 $settings_imagesuri =~ s/>/>/g;
1456 # Check if the database password value is undefined and if it is then
1459 if (!$settings_database_password){
1461 $settings_database_password = "";
1465 # Create the Kiriwrite configuration file layout.
1467 my $configdata = "[config]\r\n";
1469 $configdata = $configdata . "directory_data_db = " . $settings_databasedir . "\r\n";
1470 $configdata = $configdata . "directory_data_output = " . $settings_outputdir . "\r\n";
1471 $configdata = $configdata . "directory_noncgi_images = " . $settings_imagesuri . "\r\n\r\n";
1473 $configdata = $configdata . "system_language = " . $settings_systemlanguage . "\r\n";
1474 $configdata = $configdata . "system_presmodule = " . $settings_presmodule . "\r\n";
1475 $configdata = $configdata . "system_dbmodule = " . $settings_dbmodule . "\r\n";
1476 $configdata = $configdata . "system_datetime = " . $settings_datetime . "\r\n\r\n";
1478 $configdata = $configdata . "display_textareacols = " . $settings_textareacols . "\r\n";
1479 $configdata = $configdata . "display_textarearows = " . $settings_textarearows . "\r\n\r\n";
1481 $configdata = $configdata . "database_server = " . $settings_database_server . "\r\n";
1482 $configdata = $configdata . "database_port = " . $settings_database_port . "\r\n";
1483 $configdata = $configdata . "database_protocol = " . $settings_database_protocol . "\r\n";
1484 $configdata = $configdata . "database_sqldatabase = " . $settings_database_sqldatabase . "\r\n";
1485 $configdata = $configdata . "database_username = " . $settings_database_username . "\r\n";
1486 $configdata = $configdata . "database_password = " . $settings_database_password . "\r\n";
1487 $configdata = $configdata . "database_tableprefix = " . $settings_database_tableprefix . "\r\n\r\n";
1489 # Open the Kiriwrite configuration file and write the new settings to the
1490 # configuration file.
1492 open(my $filehandle_config, "> ", "kiriwrite.cfg");
1493 print $filehandle_config $configdata;
1494 close($filehandle_config);