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'};
45 my $http_query_pagecount = $form_data->{'pagecount'};
46 my $http_query_filtercount = $form_data->{'filtercount'};
47 my $http_query_templatecount = $form_data->{'templatecount'};
49 my $http_query_database_server = $form_data->{'database_server'};
50 my $http_query_database_port = $form_data->{'database_port'};
51 my $http_query_database_protocol = $form_data->{'database_protocol'};
52 my $http_query_database_sqldatabase = $form_data->{'database_sqldatabase'};
53 my $http_query_database_username = $form_data->{'database_username'};
54 my $http_query_database_passwordkeep = $form_data->{'database_password_keep'};
55 my $http_query_database_password = $form_data->{'database_password'};
56 my $http_query_database_tableprefix = $form_data->{'database_tableprefix'};
58 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, PageCount => $http_query_pagecount, FilterCount => $http_query_filtercount, TemplateCount => $http_query_templatecount, 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 });
60 kiriwrite_output_header; # Output the header to browser/console/stdout.
61 kiriwrite_output_page($kiriwrite_lang->{setting}->{editsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
62 exit; # End the script.
66 # The action to edit the settings has not been confirmed.
68 my $pagedata = kiriwrite_settings_edit();
70 kiriwrite_output_header; # Output the header to browser/console/stdout.
71 kiriwrite_output_page($kiriwrite_lang->{setting}->{editsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
72 exit; # End the script.
76 # The action specified was something else other than those
77 # above, so return an error.
79 kiriwrite_error("invalidaction");
85 # No action has been specified, so print out the list of settings currently being used.
87 my $pagedata = kiriwrite_settings_view();
89 kiriwrite_output_header; # Output the header to browser/console/stdout.
90 kiriwrite_output_page($kiriwrite_lang->{setting}->{viewsettings}, $pagedata, "settings"); # Output the page to browser/console/stdout.
91 exit; # End the script.
93 #################################################################################
94 # Begin list of relevant subroutines. #
95 #################################################################################
97 sub kiriwrite_settings_view{
98 #################################################################################
99 # kiriwrite_options_view: Writes out the list of options and variables. #
103 # kiriwrite_settings_view(); #
104 #################################################################################
108 my $settings_directory_db = $kiriwrite_config{"directory_data_db"};
109 my $settings_directory_output = $kiriwrite_config{"directory_data_output"};
110 my $settings_noncgi_images = $kiriwrite_config{"directory_noncgi_images"};
111 my $settings_display_textareacols = $kiriwrite_config{"display_textareacols"};
112 my $settings_display_textarearows = $kiriwrite_config{"display_textarearows"};
113 my $settings_display_pagecount = $kiriwrite_config{"display_pagecount"};
114 my $settings_display_templatecount = $kiriwrite_config{"display_templatecount"};
115 my $settings_display_filtercount = $kiriwrite_config{"display_filtercount"};
116 my $settings_system_datetime = $kiriwrite_config{"system_datetime"};
117 my $settings_system_language = $kiriwrite_config{"system_language"};
118 my $settings_system_presentation = $kiriwrite_config{"system_presmodule"};
119 my $settings_system_database = $kiriwrite_config{"system_dbmodule"};
121 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{viewsettings}, { Style => "pageheader" });
122 $kiriwrite_presmodule->addlinebreak();
123 $kiriwrite_presmodule->addlinebreak();
124 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{currentsettings});
125 $kiriwrite_presmodule->addlinebreak();
126 $kiriwrite_presmodule->addlinebreak();
127 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
129 $kiriwrite_presmodule->startheader();
130 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
131 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
132 $kiriwrite_presmodule->endheader();
134 $kiriwrite_presmodule->startrow();
135 $kiriwrite_presmodule->addcell("tablecellheader");
136 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{directories});
137 $kiriwrite_presmodule->endcell();
138 $kiriwrite_presmodule->addcell("tablecellheader");
139 $kiriwrite_presmodule->endcell();
140 $kiriwrite_presmodule->endrow();
142 $kiriwrite_presmodule->startrow();
143 $kiriwrite_presmodule->addcell("tablecell1");
144 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasedirectory});
145 $kiriwrite_presmodule->endcell();
146 $kiriwrite_presmodule->addcell("tablecell2");
147 $kiriwrite_presmodule->addtext($settings_directory_db);
148 $kiriwrite_presmodule->endcell();
149 $kiriwrite_presmodule->endrow();
151 $kiriwrite_presmodule->startrow();
152 $kiriwrite_presmodule->addcell("tablecell1");
153 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{outputdirectory});
154 $kiriwrite_presmodule->endcell();
155 $kiriwrite_presmodule->addcell("tablecell2");
156 $kiriwrite_presmodule->addtext($settings_directory_output);
157 $kiriwrite_presmodule->endcell();
158 $kiriwrite_presmodule->endrow();
160 $kiriwrite_presmodule->startrow();
161 $kiriwrite_presmodule->addcell("tablecell1");
162 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{imagesuripath});
163 $kiriwrite_presmodule->endcell();
164 $kiriwrite_presmodule->addcell("tablecell2");
165 $kiriwrite_presmodule->addtext($settings_noncgi_images);
166 $kiriwrite_presmodule->endcell();
167 $kiriwrite_presmodule->endrow();
169 $kiriwrite_presmodule->startrow();
170 $kiriwrite_presmodule->addcell("tablecellheader");
171 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{display});
172 $kiriwrite_presmodule->endcell();
173 $kiriwrite_presmodule->addcell("tablecellheader");
174 $kiriwrite_presmodule->endcell();
175 $kiriwrite_presmodule->endrow();
177 $kiriwrite_presmodule->startrow();
178 $kiriwrite_presmodule->addcell("tablecell1");
179 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textareacols});
180 $kiriwrite_presmodule->endcell();
181 $kiriwrite_presmodule->addcell("tablecell2");
182 $kiriwrite_presmodule->addtext($settings_display_textareacols);
183 $kiriwrite_presmodule->endcell();
184 $kiriwrite_presmodule->endrow();
186 $kiriwrite_presmodule->startrow();
187 $kiriwrite_presmodule->addcell("tablecell1");
188 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textarearows});
189 $kiriwrite_presmodule->endcell();
190 $kiriwrite_presmodule->addcell("tablecell2");
191 $kiriwrite_presmodule->addtext($settings_display_textarearows);
192 $kiriwrite_presmodule->endcell();
193 $kiriwrite_presmodule->endrow();
195 $kiriwrite_presmodule->startrow();
196 $kiriwrite_presmodule->addcell("tablecell1");
197 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{pagecount});
198 $kiriwrite_presmodule->endcell();
199 $kiriwrite_presmodule->addcell("tablecell2");
200 $kiriwrite_presmodule->addtext($settings_display_pagecount);
201 $kiriwrite_presmodule->endcell();
202 $kiriwrite_presmodule->endrow();
204 $kiriwrite_presmodule->startrow();
205 $kiriwrite_presmodule->addcell("tablecell1");
206 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{templatecount});
207 $kiriwrite_presmodule->endcell();
208 $kiriwrite_presmodule->addcell("tablecell2");
209 $kiriwrite_presmodule->addtext($settings_display_templatecount);
210 $kiriwrite_presmodule->endcell();
211 $kiriwrite_presmodule->endrow();
213 $kiriwrite_presmodule->startrow();
214 $kiriwrite_presmodule->addcell("tablecell1");
215 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{filtercount});
216 $kiriwrite_presmodule->endcell();
217 $kiriwrite_presmodule->addcell("tablecell2");
218 $kiriwrite_presmodule->addtext($settings_display_filtercount);
219 $kiriwrite_presmodule->endcell();
220 $kiriwrite_presmodule->endrow();
222 $kiriwrite_presmodule->startrow();
223 $kiriwrite_presmodule->addcell("tablecellheader");
224 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{date});
225 $kiriwrite_presmodule->endcell();
226 $kiriwrite_presmodule->addcell("tablecellheader");
227 $kiriwrite_presmodule->endcell();
228 $kiriwrite_presmodule->endrow();
230 $kiriwrite_presmodule->startrow();
231 $kiriwrite_presmodule->addcell("tablecell1");
232 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{dateformat});
233 $kiriwrite_presmodule->endcell();
234 $kiriwrite_presmodule->addcell("tablecell2");
235 $kiriwrite_presmodule->addtext($settings_system_datetime);
236 $kiriwrite_presmodule->endcell();
237 $kiriwrite_presmodule->endrow();
239 $kiriwrite_presmodule->startrow();
240 $kiriwrite_presmodule->addcell("tablecellheader");
241 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{language});
242 $kiriwrite_presmodule->endcell();
243 $kiriwrite_presmodule->addcell("tablecellheader");
244 $kiriwrite_presmodule->endcell();
245 $kiriwrite_presmodule->endrow();
247 $kiriwrite_presmodule->startrow();
248 $kiriwrite_presmodule->addcell("tablecell1");
249 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{systemlanguage});
250 $kiriwrite_presmodule->endcell();
251 $kiriwrite_presmodule->addcell("tablecell2");
252 $kiriwrite_presmodule->addtext($settings_system_language);
253 $kiriwrite_presmodule->endcell();
254 $kiriwrite_presmodule->endrow();
256 $kiriwrite_presmodule->startrow();
257 $kiriwrite_presmodule->addcell("tablecellheader");
258 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{modules});
259 $kiriwrite_presmodule->endcell();
260 $kiriwrite_presmodule->addcell("tablecellheader");
261 $kiriwrite_presmodule->endcell();
262 $kiriwrite_presmodule->endrow();
264 $kiriwrite_presmodule->startrow();
265 $kiriwrite_presmodule->addcell("tablecell1");
266 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{presentationmodule});
267 $kiriwrite_presmodule->endcell();
268 $kiriwrite_presmodule->addcell("tablecell2");
269 $kiriwrite_presmodule->addtext($settings_system_presentation);
270 $kiriwrite_presmodule->endcell();
271 $kiriwrite_presmodule->endrow();
273 $kiriwrite_presmodule->startrow();
274 $kiriwrite_presmodule->addcell("tablecell1");
275 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasemodule});
276 $kiriwrite_presmodule->endcell();
277 $kiriwrite_presmodule->addcell("tablecell2");
278 $kiriwrite_presmodule->addtext($settings_system_database);
279 $kiriwrite_presmodule->endcell();
280 $kiriwrite_presmodule->endrow();
282 $kiriwrite_presmodule->endtable();
284 $kiriwrite_presmodule->addlinebreak();
285 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{altersettings});
287 return $kiriwrite_presmodule->grab();
291 sub kiriwrite_settings_edit{
292 #################################################################################
293 # kiriwrite_settings_edit: Edits the options. #
297 # kiriwrite_settings_edit(options); #
299 # options Specifies the following options in any order. #
301 # DatabaseDirectory Specifies the new database directory to use. #
302 # OutputDirectory Specifies the new output directory to use. #
303 # ImagesURIPath Specifies the new URI path for images. #
304 # DateTimeFormat Specifies the new date and time format. #
305 # SystemLanguage Specifies the new language to use for Kiriwrite. #
306 # PrsentationModule Specifies the new presentation module to use for #
308 # DatabaseModule Specifies the new database module to use for Kiriwrite. #
309 # TextAreaCols Specifies the width of the text area. #
310 # TextAreaRows Specifies the height of the text area. #
311 # PageCount Specifies the amount of pages that should be viewed. #
312 # FilterCount Specifies the amount of filters that should be viewed. #
313 # TemplateCount Specifies the amount of templates that should be viewed.#
315 # Options for server-based database modules. #
317 # DatabaseServer Specifies the database server to use. #
318 # DaravasePort Specifies the port the database server is running on. #
319 # DatabaseProtocol Specifies the protocol the database server is using. #
320 # DatabaseSQLDatabase Specifies the SQL database name to use. #
321 # DatabaseUsername Specifies the database server username. #
322 # DatabasePasswordKeep Keeps the current password in the configuration file. #
323 # DatabasePassword Specifies the password for the database server username.#
324 # DatabaseTablePrefix Specifies the prefix used for tables. #
325 #################################################################################
327 # Get the values that have been passed to the subroutine.
329 my ($passedoptions) = @_;
331 # Get the values from the hash.
333 my $settings_dbdirectory = $passedoptions->{"DatabaseDirectory"};
334 my $settings_outputdirectory = $passedoptions->{"OutputDirectory"};
335 my $settings_imagesuri = $passedoptions->{"ImagesURIPath"};
336 my $settings_datetimeformat = $passedoptions->{"DateTimeFormat"};
337 my $settings_languagesystem = $passedoptions->{"SystemLanguage"};
338 my $settings_presmodule = $passedoptions->{"PresentationModule"};
339 my $settings_dbmodule = $passedoptions->{"DatabaseModule"};
340 my $settings_textareacols = $passedoptions->{"TextAreaCols"};
341 my $settings_textarearows = $passedoptions->{"TextAreaRows"};
342 my $settings_pagecount = $passedoptions->{"PageCount"};
343 my $settings_filtercount = $passedoptions->{"FilterCount"};
344 my $settings_templatecount = $passedoptions->{"TemplateCount"};
346 my $settings_database_server = $passedoptions->{"DatabaseServer"};
347 my $settings_database_port = $passedoptions->{"DatabasePort"};
348 my $settings_database_protocol = $passedoptions->{"DatabaseProtocol"};
349 my $settings_database_sqldatabase = $passedoptions->{"DatabaseSQLDatabase"};
350 my $settings_database_username = $passedoptions->{"DatabaseUsername"};
351 my $settings_database_passwordkeep = $passedoptions->{"DatabasePasswordKeep"};
352 my $settings_database_password = $passedoptions->{"DatabasePassword"};
353 my $settings_database_tableprefix = $passedoptions->{"DatabaseTablePrefix"};
355 my $confirm = $passedoptions->{"Confirm"};
359 # If the confirm value is blank, then set the confirm
366 if ($confirm eq "1"){
368 # The action to edit the settings has been confirmed.
369 # Start by checking each variable about to be placed
370 # in the settings file is valid.
372 # Deinfe some variables for later.
374 my @kiriwrite_new_settings;
376 # Check the length of the directory names.
378 kiriwrite_variablecheck($settings_dbdirectory, "maxlength", 64, 0);
379 kiriwrite_variablecheck($settings_outputdirectory, "maxlength", 64, 0);
380 kiriwrite_variablecheck($settings_imagesuri, "maxlength", 512, 0);
381 kiriwrite_variablecheck($settings_datetimeformat, "maxlength", 32, 0);
383 kiriwrite_variablecheck($settings_languagesystem, "language_filename", "", 0);
385 # Check the module names to see if they're valid.
387 my $kiriwrite_presmodule_modulename_check = kiriwrite_variablecheck($settings_presmodule, "module", 0, 1);
388 my $kiriwrite_dbmodule_modulename_check = kiriwrite_variablecheck($settings_dbmodule, "module", 0, 1);
390 if ($kiriwrite_presmodule_modulename_check eq 1){
392 # The presentation module name is blank, so return
395 kiriwrite_error("presmoduleblank");
399 if ($kiriwrite_presmodule_modulename_check eq 2){
401 # The presentation module name is invalid, so return
404 kiriwrite_error("presmoduleinvalid");
408 if ($kiriwrite_dbmodule_modulename_check eq 1){
410 # The database module name is blank, so return
413 kiriwrite_error("dbmoduleblank");
417 if ($kiriwrite_dbmodule_modulename_check eq 2){
419 # The database module name is invalid, so return
422 kiriwrite_error("dbmoduleinvalid");
426 # Check if the directory names only contain letters and numbers and
427 # return a specific error if they don't.
429 my $kiriwrite_dbdirectory_check = kiriwrite_variablecheck($settings_dbdirectory, "directory", 0, 1);
430 my $kiriwrite_outputdirectory_check = kiriwrite_variablecheck($settings_outputdirectory, "directory", 0, 1);
431 kiriwrite_variablecheck($settings_datetimeformat, "datetime", 0, 0);
433 my $kiriwrite_textarearows_maxlength = kiriwrite_variablecheck($settings_textarearows, "maxlength", 3, 1);
434 my $kiriwrite_textarearows_number = kiriwrite_variablecheck($settings_textarearows, "numbers", 0, 1);
435 my $kiriwrite_textareacols_maxlength = kiriwrite_variablecheck($settings_textareacols, "maxlength", 3, 1);
436 my $kiriwrite_textareacols_number = kiriwrite_variablecheck($settings_textareacols, "numbers", 0, 1);
438 my $kiriwrite_pagecount_maxlength = kiriwrite_variablecheck($settings_pagecount, "maxlength", 4, 1);
439 my $kiriwrite_pagecount_number = kiriwrite_variablecheck($settings_pagecount, "numbers", 0, 1);
440 my $kiriwrite_filtercount_maxlength = kiriwrite_variablecheck($settings_filtercount, "maxlength", 4, 1);
441 my $kiriwrite_filtercount_number = kiriwrite_variablecheck($settings_filtercount, "numbers", 0, 1);
442 my $kiriwrite_templatecount_maxlength = kiriwrite_variablecheck($settings_templatecount, "maxlength", 4, 1);
443 my $kiriwrite_templatecount_number = kiriwrite_variablecheck($settings_templatecount, "numbers", 0, 1);
445 if ($kiriwrite_dbdirectory_check eq 1){
447 # The database directory name is blank, so return
450 kiriwrite_error("dbdirectoryblank");
452 } elsif ($kiriwrite_dbdirectory_check eq 2){
454 # The database directory name is invalid, so return
457 kiriwrite_error("dbdirectoryinvalid");
461 if ($kiriwrite_outputdirectory_check eq 1){
463 # The output directory name is blank, so return
466 kiriwrite_error("outputdirectoryblank");
468 } elsif ($kiriwrite_outputdirectory_check eq 2){
470 # The output directory name is invalid, so return
473 kiriwrite_error("outputdirectoryinvalid");
477 if (!$settings_textarearows){
479 # The text area row value is blank so return an
482 kiriwrite_error("textarearowblank");
486 if ($kiriwrite_textarearows_maxlength eq 1){
488 # The text area row value is too long, so return
491 kiriwrite_error("textarearowtoolong");
495 if ($kiriwrite_textarearows_number eq 1){
497 # The text area row value is invalid, so return
500 kiriwrite_error("textarearowinvalid");
504 if (!$settings_textareacols){
506 # The text area column value is blank so return
509 kiriwrite_error("textareacolblank");
513 if ($kiriwrite_textareacols_maxlength eq 1){
515 # The text area column value is too long, so return
518 kiriwrite_error("textareacoltoolong");
522 if ($kiriwrite_textareacols_number eq 1){
524 # The text area column value is invalid, so return
527 kiriwrite_error("textareacolinvalid");
531 if ($kiriwrite_pagecount_maxlength eq 1){
533 # The page count value is too long, so return
536 kiriwrite_error("pagecounttoolong");
540 if ($kiriwrite_pagecount_number eq 1){
542 # The page count value is invalid, so return
545 kiriwrite_error("pagecountinvalid");
549 if ($kiriwrite_filtercount_maxlength eq 1){
551 # The filter count value is too long, so return
554 kiriwrite_error("filtercounttoolong");
558 if ($kiriwrite_filtercount_number eq 1){
560 # The filter count value is invalid, so return
563 kiriwrite_error("filtercountinvalid");
567 if ($kiriwrite_templatecount_maxlength eq 1){
569 # The template count value is too long, so return
572 kiriwrite_error("templatecounttoolong");
576 if ($kiriwrite_templatecount_number eq 1){
578 # The template count value is invalid, so return
581 kiriwrite_error("templatecountinvalid");
585 # Check if the presentation module with the filename given exists.
587 my $presmodule_exists = kiriwrite_fileexists("Modules/Presentation/" . $settings_presmodule . ".pm");
589 if ($presmodule_exists eq 1){
591 # The presentation module does not exist so return an error.
593 kiriwrite_error("presmodulemissing");
597 # Check if the database module with the filename given exists.
599 my $dbmodule_exists = kiriwrite_fileexists("Modules/Database/" . $settings_dbmodule . ".pm");
601 if ($dbmodule_exists eq 1){
603 # The database module does not exist so return an error.
605 kiriwrite_error("dbmodulemissing");
609 # Check if the language filename given exists.
611 my $languagefile_exists = kiriwrite_fileexists("lang/" . $settings_languagesystem . ".lang");
613 if ($languagefile_exists eq 1){
615 # The language filename given does not exist so return an error.
617 kiriwrite_error("languagefilenamemissing");
621 # Check the database server options to see if they are valid.
623 my $kiriwrite_databaseserver_length_check = kiriwrite_variablecheck($settings_database_server, "maxlength", 128, 1);
624 my $kiriwrite_databaseserver_lettersnumbers_check = kiriwrite_variablecheck($settings_database_server, "lettersnumbers", 0, 1);
625 my $kiriwrite_databaseport_length_check = kiriwrite_variablecheck($settings_database_port, "maxlength", 5, 1);
626 my $kiriwrite_databaseport_numbers_check = kiriwrite_variablecheck($settings_database_port, "numbers", 0, 1);
627 my $kiriwrite_databaseport_port_check = kiriwrite_variablecheck($settings_database_port, "port", 0, 1);
628 my $kiriwrite_databaseprotocol_length_check = kiriwrite_variablecheck($settings_database_protocol, "maxlength", 5, 1);
629 my $kiriwrite_databaseprotocol_protocol_check = kiriwrite_variablecheck($settings_database_protocol, "serverprotocol", 0, 1);
630 my $kiriwrite_databasename_length_check = kiriwrite_variablecheck($settings_database_sqldatabase, "maxlength", 32, 1);
631 my $kiriwrite_databasename_lettersnumbers_check = kiriwrite_variablecheck($settings_database_sqldatabase, "lettersnumbers", 0, 1);
632 my $kiriwrite_databaseusername_length_check = kiriwrite_variablecheck($settings_database_username, "maxlength", 16, 1);
633 my $kiriwrite_databaseusername_lettersnumbers_check = kiriwrite_variablecheck($settings_database_username, "lettersnumbers", 0, 1);
634 my $kiriwrite_databasepassword_length_check = kiriwrite_variablecheck($settings_database_password, "maxlength", 64, 1);
635 my $kiriwrite_databasetableprefix_length_check = kiriwrite_variablecheck($settings_database_tableprefix, "maxlength", 16, 1);
636 my $kiriwrite_databasetableprefix_lettersnumbers_check = kiriwrite_variablecheck($settings_database_tableprefix, "lettersnumbers", 0, 1);
638 if ($kiriwrite_databaseserver_length_check eq 1){
640 # The length of the database server name is too long so
643 kiriwrite_error("servernametoolong");
647 if ($kiriwrite_databaseserver_lettersnumbers_check eq 1){
649 # The database server name contains characters other
650 # than letters and numbers, so return an error.
652 kiriwrite_error("servernameinvalid");
656 if ($kiriwrite_databaseport_length_check eq 1){
658 # The database port number length is too long so return
661 kiriwrite_error("serverportnumbertoolong");
665 if ($kiriwrite_databaseport_numbers_check eq 1){
667 # The database port number contains characters other
668 # than numbers so return an error.
670 kiriwrite_error("serverportnumberinvalidcharacters");
674 if ($kiriwrite_databaseport_port_check eq 1){
676 # The database port number given is invalid so return
679 kiriwrite_error("serverportnumberinvalid");
683 if ($kiriwrite_databaseprotocol_length_check eq 1){
685 # The database protocol name given is too long so
688 kiriwrite_error("serverprotocolnametoolong");
692 if ($kiriwrite_databaseprotocol_protocol_check eq 1){
694 # The server protcol given is invalid so return
697 kiriwrite_error("serverprotocolinvalid");
701 if ($kiriwrite_databasename_length_check eq 1){
703 # The SQL database name is too long so return
706 kiriwrite_error("serverdatabasenametoolong");
710 if ($kiriwrite_databasename_lettersnumbers_check eq 1){
712 # The database name contains invalid characters
713 # so return an error.
715 kiriwrite_error("serverdatabasenameinvalid");
719 if ($kiriwrite_databaseusername_length_check eq 1){
721 # The database username given is too long so
724 kiriwrite_error("serverdatabaseusernametoolong");
728 if ($kiriwrite_databaseusername_lettersnumbers_check eq 1){
730 # The database username contains invalid characters
731 # so return an error.
733 kiriwrite_error("serverdatabaseusernameinvalid");
737 if ($kiriwrite_databasepassword_length_check eq 1){
739 # The database password given is too long so return
742 kiriwrite_error("serverdatabasepasswordtoolong");
746 if ($kiriwrite_databasetableprefix_length_check eq 1){
748 # The database table prefix given is too long so
751 kiriwrite_error("serverdatabasetableprefixtoolong");
755 if ($kiriwrite_databasetableprefix_lettersnumbers_check eq 1){
757 # The database table prefix given contains invalid
758 # characters so return an error.
760 kiriwrite_error("serverdatabasetableprefixinvalid");
764 # Check if the current password should be kept.
766 if ($settings_database_passwordkeep eq "on"){
768 # The current password in the configuration file should be used.
770 $settings_database_password = $kiriwrite_config{"database_password"};
774 # Write the new settings to the configuration file.
776 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, PageCount => $settings_pagecount, FilterCount => $settings_filtercount, TemplateCount => $settings_templatecount, 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 });
778 # Write a confirmation message.
780 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{settingsedited}, { Style => "pageheader" });
781 $kiriwrite_presmodule->addlinebreak();
782 $kiriwrite_presmodule->addlinebreak();
783 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{settingseditedmessage});
784 $kiriwrite_presmodule->addlinebreak();
785 $kiriwrite_presmodule->addlinebreak();
786 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=settings", { Text => $kiriwrite_lang->{setting}->{returnsettingslist} });
788 return $kiriwrite_presmodule->grab();
792 # Get the list of languages available.
795 my @language_directory = "";
797 my $language_filename = "";
798 my $language_file_xml = "";
799 my $language_file_systemname = "";
800 my $language_file_localname = "";
801 my $language_file_seek = 0;
802 my $language_flie_dot = 0;
803 my $language_file_length = 0;
804 my $language_file_count = 0;
805 my $language_file_char = "";
806 my $language_file_friendly = "";
807 my $language_config = $kiriwrite_config{"system_language"};
809 tie(%language_list, 'Tie::IxHash');
811 opendir(LANGUAGEDIR, "lang");
812 @language_directory = grep /m*\.lang$/, readdir(LANGUAGEDIR);
813 closedir(LANGUAGEDIR);
815 # Process each language by loading the language file
816 # used for each language and then get the System name and
817 # the local name of the language.
819 foreach $language_filename (@language_directory){
821 # Load the language file currently selected.
823 $language_file = Config::Auto::parse("lang/" . $kiriwrite_config{"system_language"} . ".lang");
825 # Get the system name and the local name of the language.
827 $language_file_localname = $language_file -> {about} -> {name};
829 # Check if either the system name or the local name of the language
830 # is blank and if it is, then don't add the language to the list.
832 if (!$language_file_localname){
834 # The system name or the local name is blank so don't add
835 # the language to the list.
839 # Get the 'friendly' name of the language file name (basically
840 # remove the .lang part from the filename.
842 $language_file_length = length($language_filename);
846 # Get a character from the language filename and currently
847 # set by the seek counter.
849 $language_file_char = substr($language_filename, $language_file_seek, 1);
851 # Check if the character is a dot and if it is then set the
852 # last dot value to the seek counter value.
854 if ($language_file_char eq "."){
856 # Current chatacter is a dot so set the last dot value
857 # to what is currently the seek counter.
859 $language_flie_dot = $language_file_seek;
863 # Current character is not a dot, so do nothing.
867 # Increment the seek counter.
869 $language_file_seek++;
871 } until ($language_file_seek eq $language_file_length);
873 # Reset the seek counter.
875 $language_file_seek = 0;
877 # Process the file name again and this time process the file
878 # name until it reaches the last dot found.
882 # Get the character the seek counter is currently set at.
884 $language_file_char = substr($language_filename, $language_file_seek, 1);
886 # Append the character to the friendly file name.
888 $language_file_friendly = $language_file_friendly . $language_file_char;
890 # Increment the seek counter.
892 $language_file_seek++;
894 } until ($language_file_seek eq $language_flie_dot);
896 # Append the language to the available languages list.
898 $language_list{$language_file_count}{Filename} = $language_file_friendly;
899 $language_list{$language_file_count}{Name} = $language_file_localname;
900 $language_file_count++;
902 # Reset certain counters and values before continuing.
904 $language_file_seek = 0;
905 $language_flie_dot = 0;
906 $language_file_length = 0;
907 $language_file_char = "";
908 $language_file_friendly = "";
912 undef $language_file;
916 # Get the list of presentation modules available.
919 my @presmodule_directory;
921 my $presmodule_file = "";
922 my $presmodule_char = "";
923 my $presmodule_dot = 0;
924 my $presmodule_firstdot = 0;
925 my $presmodule_firstdotfound = "";
926 my $presmodule_seek = 0;
927 my $presmodule_length = 0;
928 my $presmodule_count = 0;
929 my $presmodule_friendly = "";
930 my $presmodule_selectlist = "";
931 my $presmodule_config = $kiriwrite_config{"system_presmodule"};
933 # Open and get the list of presentation modules (perl modules) by filtering
936 opendir(OUTPUTSYSTEMDIR, "Modules/Presentation");
937 @presmodule_directory = grep /m*\.pm$/, readdir(OUTPUTSYSTEMDIR);
938 closedir(OUTPUTSYSTEMDIR);
940 # Process each presentation module and add them to the list of available
941 # presentation modules.
943 foreach $presmodule_file (@presmodule_directory){
945 # Get the length of the presentation module (perl module) filename.
947 $presmodule_length = length($presmodule_file);
949 # Get the friendly name of the Perl module (by getting rid of the
950 # .pm part of the filename).
954 $presmodule_char = substr($presmodule_file, $presmodule_seek, 1);
956 # Check if the current character is a dot and if it is then
957 # set the last dot found number to the current seek number.
959 if ($presmodule_char eq "."){
961 # Put the seek value as the last dot found number.
963 $presmodule_dot = $presmodule_seek;
967 # Increment the seek counter.
971 } until ($presmodule_seek eq $presmodule_length);
973 # Reset the seek counter as it is going to be used again.
975 $presmodule_seek = 0;
977 # Get the friendly name of the Perl module by the processing the file
978 # name to the last dot the previous 'do' tried to find.
982 # Get the character the seek counter is currently set at.
984 $presmodule_char = substr($presmodule_file, $presmodule_seek, 1);
986 # Append the character to the friendly name of the presentation module.
988 $presmodule_friendly = $presmodule_friendly . $presmodule_char;
990 # Increment the seek counter.
994 } until ($presmodule_seek eq $presmodule_dot);
996 # Append the option to tbe list of available presentation modules.
998 $presmodule_list{$presmodule_count}{Filename} = $presmodule_friendly;
1000 # Reset the following values.
1002 $presmodule_seek = 0;
1003 $presmodule_length = 0;
1004 $presmodule_char = "";
1005 $presmodule_friendly = "";
1006 $presmodule_count++;
1010 # Get the list of database modules available.
1013 my @dbmodule_directory;
1015 my $dbmodule_file = "";
1016 my $dbmodule_char = "";
1017 my $dbmodule_dot = 0;
1018 my $dbmodule_firstdot = 0;
1019 my $dbmodule_firstdotfound = "";
1020 my $dbmodule_seek = 0;
1021 my $dbmodule_length = 0;
1022 my $dbmodule_count = 0;
1023 my $dbmodule_friendly = "";
1024 my $dbmodule_selectlist = "";
1025 my $dbmodule_config = $kiriwrite_config{"system_dbmodule"};
1027 # Open and get the list of presentation modules (perl modules) by filtering
1030 opendir(DATABASEDIR, "Modules/Database");
1031 @dbmodule_directory = grep /m*\.pm$/, readdir(DATABASEDIR);
1032 closedir(DATABASEDIR);
1034 # Process each presentation module and add them to the list of available
1035 # presentation modules.
1037 foreach $dbmodule_file (@dbmodule_directory){
1039 # Get the length of the database module (perl module) filename.
1041 $dbmodule_length = length($dbmodule_file);
1043 # Get the friendly name of the Perl module (by getting rid of the
1044 # .pm part of the filename).
1048 $dbmodule_char = substr($dbmodule_file, $dbmodule_seek, 1);
1050 # Check if the current character is a dot and if it is then
1051 # set the last dot found number to the current seek number.
1053 if ($dbmodule_char eq "."){
1055 # Put the seek value as the last dot found number.
1057 $dbmodule_dot = $dbmodule_seek;
1061 # Increment the seek counter.
1065 } until ($dbmodule_seek eq $dbmodule_length);
1067 # Reset the seek counter as it is going to be used again.
1071 # Get the friendly name of the Perl module by the processing the file
1072 # name to the last dot the previous 'do' tried to find.
1076 # Get the character the seek counter is currently set at.
1078 $dbmodule_char = substr($dbmodule_file, $dbmodule_seek, 1);
1080 # Append the character to the friendly name of the presentation module.
1082 $dbmodule_friendly = $dbmodule_friendly . $dbmodule_char;
1084 # Increment the seek counter.
1088 } until ($dbmodule_seek eq $dbmodule_dot);
1090 # Append the option to tbe list of available database modules.
1092 $dbmodule_list{$dbmodule_count}{Filename} = $dbmodule_friendly;
1094 # Reset the following values.
1097 $dbmodule_length = 0;
1098 $dbmodule_char = "";
1099 $dbmodule_friendly = "";
1104 # Get the directory settings.
1106 my $directory_settings_database = $kiriwrite_config{"directory_data_db"};
1107 my $directory_settings_output = $kiriwrite_config{"directory_data_output"};
1108 my $directory_settings_imagesuri = $kiriwrite_config{"directory_noncgi_images"};
1109 my $datetime_setting = $kiriwrite_config{"system_datetime"};
1111 my $display_textareacols = $kiriwrite_config{"display_textareacols"};
1112 my $display_textarearows = $kiriwrite_config{"display_textarearows"};
1113 my $display_pagecount = $kiriwrite_config{"display_pagecount"};
1114 my $display_templatecount = $kiriwrite_config{"display_templatecount"};
1115 my $display_filtercount = $kiriwrite_config{"display_filtercount"};
1117 my $database_server = $kiriwrite_config{"database_server"};
1118 my $database_port = $kiriwrite_config{"database_port"};
1119 my $database_protocol = $kiriwrite_config{"database_protocol"};
1120 my $database_sqldatabase = $kiriwrite_config{"database_sqldatabase"};
1121 my $database_username = $kiriwrite_config{"database_username"};
1122 my $database_passwordhash = $kiriwrite_config{"database_passwordhash"};
1123 my $database_password = $kiriwrite_config{"database_password"};
1124 my $database_prefix = $kiriwrite_config{"database_tableprefix"};
1126 # Print out a form for editing the settings.
1128 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{editsettings}, { Style => "pageheader" });
1129 $kiriwrite_presmodule->addlinebreak();
1130 $kiriwrite_presmodule->addlinebreak();
1131 $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{setting}->{warning});
1132 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{warningmessage});
1133 $kiriwrite_presmodule->addlinebreak();
1134 $kiriwrite_presmodule->addlinebreak();
1136 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1137 $kiriwrite_presmodule->startbox();
1138 $kiriwrite_presmodule->addhiddendata("mode", "settings");
1139 $kiriwrite_presmodule->addhiddendata("action", "edit");
1140 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1142 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1144 $kiriwrite_presmodule->startheader();
1145 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1146 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1147 $kiriwrite_presmodule->endheader();
1149 $kiriwrite_presmodule->startrow();
1150 $kiriwrite_presmodule->addcell("tablecellheader");
1151 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{directories});
1152 $kiriwrite_presmodule->endcell();
1153 $kiriwrite_presmodule->addcell("tablecellheader");
1154 $kiriwrite_presmodule->endcell();
1155 $kiriwrite_presmodule->endrow();
1157 $kiriwrite_presmodule->startrow();
1158 $kiriwrite_presmodule->addcell("tablecell1");
1159 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasedirectory});
1160 $kiriwrite_presmodule->endcell();
1161 $kiriwrite_presmodule->addcell("tablecell2");
1162 $kiriwrite_presmodule->addinputbox("databasedir", { Size => 32, MaxLength => 64, Value => $directory_settings_database });
1163 $kiriwrite_presmodule->endcell();
1164 $kiriwrite_presmodule->endrow();
1166 $kiriwrite_presmodule->startrow();
1167 $kiriwrite_presmodule->addcell("tablecell1");
1168 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{outputdirectory});
1169 $kiriwrite_presmodule->endcell();
1170 $kiriwrite_presmodule->addcell("tablecell2");
1171 $kiriwrite_presmodule->addinputbox("outputdir", { Size => 32, MaxLength => 64, Value => $directory_settings_output });
1172 $kiriwrite_presmodule->endcell();
1173 $kiriwrite_presmodule->endrow();
1175 $kiriwrite_presmodule->startrow();
1176 $kiriwrite_presmodule->addcell("tablecell1");
1177 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{imagesuripath});
1178 $kiriwrite_presmodule->endcell();
1179 $kiriwrite_presmodule->addcell("tablecell2");
1180 $kiriwrite_presmodule->addinputbox("imagesuripath", { Size => 32, MaxLength => 64, Value => $directory_settings_imagesuri });
1181 $kiriwrite_presmodule->endcell();
1182 $kiriwrite_presmodule->endrow();
1184 $kiriwrite_presmodule->startrow();
1185 $kiriwrite_presmodule->addcell("tablecellheader");
1186 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{display});
1187 $kiriwrite_presmodule->endcell();
1188 $kiriwrite_presmodule->addcell("tablecellheader");
1189 $kiriwrite_presmodule->endcell();
1190 $kiriwrite_presmodule->endrow();
1192 $kiriwrite_presmodule->startrow();
1193 $kiriwrite_presmodule->addcell("tablecell1");
1194 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textareacols});
1195 $kiriwrite_presmodule->endcell();
1196 $kiriwrite_presmodule->addcell("tablecell2");
1197 $kiriwrite_presmodule->addinputbox("textareacols", { Size => 3, MaxLength => 3, Value => $display_textareacols });
1198 $kiriwrite_presmodule->endrow();
1200 $kiriwrite_presmodule->startrow();
1201 $kiriwrite_presmodule->addcell("tablecell1");
1202 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{textarearows});
1203 $kiriwrite_presmodule->endcell();
1204 $kiriwrite_presmodule->addcell("tablecell2");
1205 $kiriwrite_presmodule->addinputbox("textarearows", { Size => 3, MaxLength => 3, Value => $display_textarearows });
1206 $kiriwrite_presmodule->endrow();
1208 $kiriwrite_presmodule->startrow();
1209 $kiriwrite_presmodule->addcell("tablecell1");
1210 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{pagecount});
1211 $kiriwrite_presmodule->endcell();
1212 $kiriwrite_presmodule->addcell("tablecell2");
1213 $kiriwrite_presmodule->addinputbox("pagecount", { Size => 4, MaxLength => 4, Value => $display_pagecount });
1214 $kiriwrite_presmodule->endrow();
1216 $kiriwrite_presmodule->startrow();
1217 $kiriwrite_presmodule->addcell("tablecell1");
1218 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{filtercount});
1219 $kiriwrite_presmodule->endcell();
1220 $kiriwrite_presmodule->addcell("tablecell2");
1221 $kiriwrite_presmodule->addinputbox("filtercount", { Size => 4, MaxLength => 4, Value => $display_filtercount });
1222 $kiriwrite_presmodule->endrow();
1224 $kiriwrite_presmodule->startrow();
1225 $kiriwrite_presmodule->addcell("tablecell1");
1226 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{templatecount});
1227 $kiriwrite_presmodule->endcell();
1228 $kiriwrite_presmodule->addcell("tablecell2");
1229 $kiriwrite_presmodule->addinputbox("templatecount", { Size => 4, MaxLength => 4, Value => $display_templatecount });
1230 $kiriwrite_presmodule->endrow();
1232 $kiriwrite_presmodule->startrow();
1233 $kiriwrite_presmodule->addcell("tablecellheader");
1234 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{date});
1235 $kiriwrite_presmodule->endcell();
1236 $kiriwrite_presmodule->addcell("tablecellheader");
1237 $kiriwrite_presmodule->endcell();
1238 $kiriwrite_presmodule->endrow();
1240 $kiriwrite_presmodule->startrow();
1241 $kiriwrite_presmodule->addcell("tablecell1");
1242 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{dateformat});
1243 $kiriwrite_presmodule->endcell();
1244 $kiriwrite_presmodule->addcell("tablecell2");
1245 $kiriwrite_presmodule->addinputbox("datetime", { Size => 32, MaxLength => 64, Value => $datetime_setting });
1246 $kiriwrite_presmodule->addlinebreak();
1247 $kiriwrite_presmodule->addlinebreak();
1248 $kiriwrite_presmodule->startbox("datalist");
1250 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleday});
1251 $kiriwrite_presmodule->addlinebreak();
1252 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleday});
1253 $kiriwrite_presmodule->addlinebreak();
1254 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlemonth});
1255 $kiriwrite_presmodule->addlinebreak();
1256 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublemonth});
1257 $kiriwrite_presmodule->addlinebreak();
1258 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleyear});
1259 $kiriwrite_presmodule->addlinebreak();
1260 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleyear});
1261 $kiriwrite_presmodule->addlinebreak();
1262 $kiriwrite_presmodule->addlinebreak();
1263 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlehour});
1264 $kiriwrite_presmodule->addlinebreak();
1265 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublehour});
1266 $kiriwrite_presmodule->addlinebreak();
1267 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singleminute});
1268 $kiriwrite_presmodule->addlinebreak();
1269 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doubleminute});
1270 $kiriwrite_presmodule->addlinebreak();
1271 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{singlesecond});
1272 $kiriwrite_presmodule->addlinebreak();
1273 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{doublesecond});
1274 $kiriwrite_presmodule->addlinebreak();
1275 $kiriwrite_presmodule->addlinebreak();
1276 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{othercharacters});
1277 $kiriwrite_presmodule->endbox();
1278 $kiriwrite_presmodule->endcell();
1279 $kiriwrite_presmodule->endrow();
1281 $kiriwrite_presmodule->startrow();
1282 $kiriwrite_presmodule->addcell("tablecellheader");
1283 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{language});
1284 $kiriwrite_presmodule->endcell();
1285 $kiriwrite_presmodule->addcell("tablecellheader");
1286 $kiriwrite_presmodule->endcell();
1287 $kiriwrite_presmodule->endrow();
1289 $kiriwrite_presmodule->startrow();
1290 $kiriwrite_presmodule->addcell("tablecell1");
1291 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{systemlanguage});
1292 $kiriwrite_presmodule->endcell();
1293 $kiriwrite_presmodule->addcell("tablecell2");
1295 $kiriwrite_presmodule->addselectbox("language");
1297 # Process the list of available languages.
1299 foreach $language (keys %language_list){
1301 # Check if the language filename matches the filename in the configuration
1304 if ($language_list{$language}{Filename} eq $language_config){
1306 $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} , Selected => 1 });
1310 $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} });
1316 $kiriwrite_presmodule->endselectbox();
1318 $kiriwrite_presmodule->startrow();
1319 $kiriwrite_presmodule->addcell("tablecellheader");
1320 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{modules});
1321 $kiriwrite_presmodule->endcell();
1322 $kiriwrite_presmodule->addcell("tablecellheader");
1323 $kiriwrite_presmodule->endcell();
1324 $kiriwrite_presmodule->endrow();
1326 $kiriwrite_presmodule->startrow();
1327 $kiriwrite_presmodule->addcell("tablecell1");
1328 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{presentationmodule});
1329 $kiriwrite_presmodule->endcell();
1330 $kiriwrite_presmodule->addcell("tablecell2");
1332 $kiriwrite_presmodule->addselectbox("presmodule");
1334 # Process the list of available presentation modules.
1336 foreach $presmodule (keys %presmodule_list){
1338 # Check if the presentation module fileanme matches the filename in the
1339 # configuration file.
1341 if ($presmodule_list{$presmodule}{Filename} eq $presmodule_config){
1343 $kiriwrite_presmodule->addoption($presmodule_list{$presmodule}{Filename}, { Value => $presmodule_list{$presmodule}{Filename} , Selected => 1 });
1347 $kiriwrite_presmodule->addoption($presmodule_list{$presmodule}{Filename}, { Value => $presmodule_list{$presmodule}{Filename} });
1353 $kiriwrite_presmodule->endselectbox();
1355 $kiriwrite_presmodule->endcell();
1356 $kiriwrite_presmodule->endrow();
1358 $kiriwrite_presmodule->startrow();
1359 $kiriwrite_presmodule->addcell("tablecell1");
1360 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasemodule});
1361 $kiriwrite_presmodule->endcell();
1362 $kiriwrite_presmodule->addcell("tablecell2");
1364 # Process the list of available database modules.
1366 $kiriwrite_presmodule->addselectbox("dbmodule");
1368 foreach $dbmodule (keys %dbmodule_list){
1370 # Check if the database module fileanme matches the filename in the
1371 # configuration file.
1373 if ($dbmodule_list{$dbmodule}{Filename} eq $dbmodule_config){
1375 $kiriwrite_presmodule->addoption($dbmodule_list{$dbmodule}{Filename}, { Value => $dbmodule_list{$dbmodule}{Filename} , Selected => 1 });
1379 $kiriwrite_presmodule->addoption($dbmodule_list{$dbmodule}{Filename}, { Value => $dbmodule_list{$dbmodule}{Filename} });
1386 $kiriwrite_presmodule->endselectbox();
1388 $kiriwrite_presmodule->endcell();
1389 $kiriwrite_presmodule->endrow();
1391 $kiriwrite_presmodule->startrow();
1392 $kiriwrite_presmodule->addcell("tablecell1");
1393 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseserver});
1394 $kiriwrite_presmodule->endcell();
1395 $kiriwrite_presmodule->addcell("tablecell2");
1396 $kiriwrite_presmodule->addinputbox("database_server", { Size => 32, MaxLength => 128, Value => $database_server });
1397 $kiriwrite_presmodule->endcell();
1398 $kiriwrite_presmodule->endrow();
1400 $kiriwrite_presmodule->startrow();
1401 $kiriwrite_presmodule->addcell("tablecell1");
1402 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseport});
1403 $kiriwrite_presmodule->endcell();
1404 $kiriwrite_presmodule->addcell("tablecell2");
1405 $kiriwrite_presmodule->addinputbox("database_port", { Size => 5, MaxLength => 5, Value => $database_port });
1406 $kiriwrite_presmodule->endcell();
1407 $kiriwrite_presmodule->endrow();
1409 $kiriwrite_presmodule->startrow();
1410 $kiriwrite_presmodule->addcell("tablecell1");
1411 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseprotocol});
1412 $kiriwrite_presmodule->endcell();
1413 $kiriwrite_presmodule->addcell("tablecell2");
1415 # Check if TCP is being used.
1417 $kiriwrite_presmodule->addselectbox("database_protocol");
1419 if ($database_protocol eq "tcp"){
1421 # The TCP protocol is selected so have the TCP option selected.
1423 $kiriwrite_presmodule->addoption("TCP", { Value => "tcp", Selected => 1});
1427 # The TCP protocol is not selected.
1429 $kiriwrite_presmodule->addoption("TCP", { Value => "tcp"});
1433 # Check if UDP is being used.
1435 if ($database_protocol eq "udp"){
1437 # The UDP protocol is selected so have the UDP option selected.
1439 $kiriwrite_presmodule->addoption("UDP", { Value => "udp", Selected => 1});
1443 # The UDP protocol is not selected.
1445 $kiriwrite_presmodule->addoption("UDP", { Value => "udp"});
1449 $kiriwrite_presmodule->endselectbox();
1451 $kiriwrite_presmodule->endcell();
1452 $kiriwrite_presmodule->endrow();
1454 $kiriwrite_presmodule->startrow();
1455 $kiriwrite_presmodule->addcell("tablecell1");
1456 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasename});
1457 $kiriwrite_presmodule->endcell();
1458 $kiriwrite_presmodule->addcell("tablecell2");
1459 $kiriwrite_presmodule->addinputbox("database_sqldatabase", { Size => 32, MaxLength => 32, Value => $database_sqldatabase });
1460 $kiriwrite_presmodule->endcell();
1461 $kiriwrite_presmodule->endrow();
1463 $kiriwrite_presmodule->startrow();
1464 $kiriwrite_presmodule->addcell("tablecell1");
1465 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databaseusername});
1466 $kiriwrite_presmodule->endcell();
1467 $kiriwrite_presmodule->addcell("tablecell2");
1468 $kiriwrite_presmodule->addinputbox("database_username", { Size => 16, MaxLength => 16, Value => $database_username });
1469 $kiriwrite_presmodule->endcell();
1470 $kiriwrite_presmodule->endrow();
1472 $kiriwrite_presmodule->startrow();
1473 $kiriwrite_presmodule->addcell("tablecell1");
1474 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{databasepassword});
1475 $kiriwrite_presmodule->endcell();
1476 $kiriwrite_presmodule->addcell("tablecell2");
1477 $kiriwrite_presmodule->addinputbox("database_password", { Size => 16, MaxLength => 64, Password => 1 });
1478 $kiriwrite_presmodule->addtext(" ");
1479 $kiriwrite_presmodule->addcheckbox("database_password_keep", { OptionDescription => "Keep the current password", Checked => 1 });
1480 $kiriwrite_presmodule->endcell();
1481 $kiriwrite_presmodule->endrow();
1483 $kiriwrite_presmodule->startrow();
1484 $kiriwrite_presmodule->addcell("tablecell1");
1485 $kiriwrite_presmodule->addtext($kiriwrite_lang->{setting}->{tableprefix});
1486 $kiriwrite_presmodule->endcell();
1487 $kiriwrite_presmodule->addcell("tablecell2");
1488 $kiriwrite_presmodule->addinputbox("database_tableprefix", { Size => 16, MaxLength => 16, Value => $database_prefix });
1489 $kiriwrite_presmodule->endcell();
1490 $kiriwrite_presmodule->endrow();
1492 $kiriwrite_presmodule->endtable();
1494 $kiriwrite_presmodule->addlinebreak();
1495 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{setting}->{changesettingsbutton});
1496 $kiriwrite_presmodule->addtext(" | ");
1497 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1498 $kiriwrite_presmodule->addtext(" | ");
1499 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=settings", { Text => $kiriwrite_lang->{setting}->{returnsettingslist} });
1500 $kiriwrite_presmodule->endbox();
1501 $kiriwrite_presmodule->endform();
1503 return $kiriwrite_presmodule->grab();
1507 sub kiriwrite_output_config{
1508 #################################################################################
1509 # kiriwrite_output_config: Outputs the configuration file. #
1513 # kiriwrite_output_config(settings); #
1515 # settings Specifies the following settings in any order. #
1517 # Settings for Kiriwrite configuration files: #
1519 # DatabaseDirectory Specifies the new database directory to use. #
1520 # OutputDirectory Specifies the new output directory to use. #
1521 # ImagesURIPath Specifies the new URI path for images. #
1522 # DateTimeFormat Specifies the new date and time format. #
1523 # SystemLanguage Specifies the new language to use for Kiriwrite. #
1524 # PrsentationModule Specifies the new presentation module to use for #
1526 # TextAreaCols Specifies the width of the text area. #
1527 # TextAreaRows Specifies the height of the text area. #
1528 # PageCount Specifies the amount of pages to view. #
1529 # FilterCount Specifies the amount of filters to view. #
1530 # TemplateCount Specifies the amount of templates to view. #
1531 # DatabaseModule Specifies the new database module to use for Kiriwrite. #
1532 # DatabaseServer Specifies the database server to use. #
1533 # DaravasePort Specifies the port the database server is running on. #
1534 # DatabaseProtocol Specifies the protocol the database server is using. #
1535 # DatabaseSQLDatabase Specifies the SQL database name to use. #
1536 # DatabaseUsername Specifies the database server username. #
1537 # DatabasePassword Specifies the password for the database server username.#
1538 # DatabaseTablePrefix Specifies the table prefix to use. #
1539 #################################################################################
1541 # Get the variables passed from the subroutine.
1543 my ($passedsettings) = @_;
1545 # Get the data from the hash.
1547 my $settings_databasedir = $passedsettings->{"DatabaseDirectory"};
1548 my $settings_outputdir = $passedsettings->{"OutputDirectory"};
1549 my $settings_imagesuri = $passedsettings->{"ImagesURIPath"};
1550 my $settings_datetime = $passedsettings->{"DateTimeFormat"};
1551 my $settings_systemlanguage = $passedsettings->{"SystemLanguage"};
1552 my $settings_presmodule = $passedsettings->{"PresentationModule"};
1553 my $settings_dbmodule = $passedsettings->{"DatabaseModule"};
1555 my $settings_textareacols = $passedsettings->{"TextAreaCols"};
1556 my $settings_textarearows = $passedsettings->{"TextAreaRows"};
1557 my $settings_pagecount = $passedsettings->{"PageCount"};
1558 my $settings_filtercount = $passedsettings->{"FilterCount"};
1559 my $settings_templatecount = $passedsettings->{"TemplateCount"};
1561 my $settings_database_server = $passedsettings->{"DatabaseServer"};
1562 my $settings_database_port = $passedsettings->{"DatabasePort"};
1563 my $settings_database_protocol = $passedsettings->{"DatabaseProtocol"};
1564 my $settings_database_sqldatabase = $passedsettings->{"DatabaseSQLDatabase"};
1565 my $settings_database_username = $passedsettings->{"DatabaseUsername"};
1566 my $settings_database_password = $passedsettings->{"DatabasePassword"};
1567 my $settings_database_tableprefix = $passedsettings->{"DatabaseTablePrefix"};
1569 # Convert the password to make sure it can be read properly.
1571 if ($settings_database_password){
1573 $settings_database_password =~ s/\0//g;
1574 $settings_database_password =~ s/</</g;
1575 $settings_database_password =~ s/>/>/g;
1579 # Convert the less than and greater than characters are there and
1582 if ($settings_imagesuri){
1584 $settings_imagesuri =~ s/</</g;
1585 $settings_imagesuri =~ s/>/>/g;
1589 # Check if the database password value is undefined and if it is then
1592 if (!$settings_database_password){
1594 $settings_database_password = "";
1598 # Create the Kiriwrite configuration file layout.
1600 my $configdata = "[config]\r\n";
1602 $configdata = $configdata . "directory_data_db = " . $settings_databasedir . "\r\n";
1603 $configdata = $configdata . "directory_data_output = " . $settings_outputdir . "\r\n";
1604 $configdata = $configdata . "directory_noncgi_images = " . $settings_imagesuri . "\r\n\r\n";
1606 $configdata = $configdata . "system_language = " . $settings_systemlanguage . "\r\n";
1607 $configdata = $configdata . "system_presmodule = " . $settings_presmodule . "\r\n";
1608 $configdata = $configdata . "system_dbmodule = " . $settings_dbmodule . "\r\n";
1609 $configdata = $configdata . "system_datetime = " . $settings_datetime . "\r\n\r\n";
1611 $configdata = $configdata . "display_textareacols = " . $settings_textareacols . "\r\n";
1612 $configdata = $configdata . "display_textarearows = " . $settings_textarearows . "\r\n";
1613 $configdata = $configdata . "display_pagecount = " . $settings_pagecount . "\r\n";
1614 $configdata = $configdata . "display_filtercount = " . $settings_filtercount . "\r\n";
1615 $configdata = $configdata . "display_templatecount = " . $settings_templatecount . "\r\n\r\n";
1617 $configdata = $configdata . "database_server = " . $settings_database_server . "\r\n";
1618 $configdata = $configdata . "database_port = " . $settings_database_port . "\r\n";
1619 $configdata = $configdata . "database_protocol = " . $settings_database_protocol . "\r\n";
1620 $configdata = $configdata . "database_sqldatabase = " . $settings_database_sqldatabase . "\r\n";
1621 $configdata = $configdata . "database_username = " . $settings_database_username . "\r\n";
1622 $configdata = $configdata . "database_password = " . $settings_database_password . "\r\n";
1623 $configdata = $configdata . "database_tableprefix = " . $settings_database_tableprefix . "\r\n\r\n";
1625 # Open the Kiriwrite configuration file and write the new settings to the
1626 # configuration file.
1628 open(my $filehandle_config, "> ", "kiriwrite.cfg");
1629 print $filehandle_config $configdata;
1630 close($filehandle_config);