Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Version 0.3.0
[kiriwrite/.git] / cgi-files / lib / settings.lib
1 #################################################################################
2 # settings.lib: Kiriwrite Settings Library                                      #
3 #                                                                               #
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
8 # Kiriwrite script.
10 # If the action value has been left blank, then view the list of
11 # current settings.
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;
29                 }
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.
64                 }
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.
74         } else {
76                 # The action specified was something else other than those
77                 # above, so return an error.
79                 kiriwrite_error("invalidaction");
81         }
83 }
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.         #
100 #                                                                               #
101 # Usage:                                                                        #
102 #                                                                               #
103 # kiriwrite_settings_view();                                                    #
104 #################################################################################
106         # Get the settings.
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.                                   #
294 #                                                                               #
295 # Usage:                                                                        #
296 #                                                                               #
297 # kiriwrite_settings_edit(options);                                             #
298 #                                                                               #
299 # options               Specifies the following options in any order.           #
300 #                                                                               #
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        #
307 #                       Kiriwrite.                                              #
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.#
314 #                                                                               #
315 # Options for server-based database modules.                                    #
316 #                                                                               #
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"};
357         if (!$confirm){
359                 # If the confirm value is blank, then set the confirm
360                 # value to 0.
362                 $confirm = 0;
364         }
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
393                         # an error.
395                         kiriwrite_error("presmoduleblank");
397                 }
399                 if ($kiriwrite_presmodule_modulename_check eq 2){
401                         # The presentation module name is invalid, so return
402                         # an error.
404                         kiriwrite_error("presmoduleinvalid");
406                 }
408                 if ($kiriwrite_dbmodule_modulename_check eq 1){
410                         # The database module name is blank, so return
411                         # an error.
413                         kiriwrite_error("dbmoduleblank");
415                 }
417                 if ($kiriwrite_dbmodule_modulename_check eq 2){
419                         # The database module name is invalid, so return
420                         # an error.
422                         kiriwrite_error("dbmoduleinvalid");
424                 }
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
448                         # an error.
450                         kiriwrite_error("dbdirectoryblank");
452                 } elsif ($kiriwrite_dbdirectory_check eq 2){
454                         # The database directory name is invalid, so return
455                         # an error.
457                         kiriwrite_error("dbdirectoryinvalid");
459                 }
461                 if ($kiriwrite_outputdirectory_check eq 1){
463                         # The output directory name is blank, so return
464                         # an error.
466                         kiriwrite_error("outputdirectoryblank");
468                 } elsif ($kiriwrite_outputdirectory_check eq 2){
470                         # The output directory name is invalid, so return
471                         # an error.
473                         kiriwrite_error("outputdirectoryinvalid");
475                 }
477                 if (!$settings_textarearows){
479                         # The text area row value is blank so return an
480                         # error.
482                         kiriwrite_error("textarearowblank");
484                 }
486                 if ($kiriwrite_textarearows_maxlength eq 1){
488                         # The text area row value is too long, so return
489                         # an error.
491                         kiriwrite_error("textarearowtoolong");
493                 }
495                 if ($kiriwrite_textarearows_number eq 1){
497                         # The text area row value is invalid, so return
498                         # an error.
500                         kiriwrite_error("textarearowinvalid");
502                 }
504                 if (!$settings_textareacols){
506                         # The text area column value is blank so return
507                         # an error.
509                         kiriwrite_error("textareacolblank");
511                 }
513                 if ($kiriwrite_textareacols_maxlength eq 1){
515                         # The text area column value is too long, so return
516                         # an error.
518                         kiriwrite_error("textareacoltoolong");
520                 }
522                 if ($kiriwrite_textareacols_number eq 1){
524                         # The text area column value is invalid, so return
525                         # an error.
527                         kiriwrite_error("textareacolinvalid");
529                 }
531                 if ($kiriwrite_pagecount_maxlength eq 1){
533                         # The page count value is too long, so return
534                         # an error.
536                         kiriwrite_error("pagecounttoolong");
538                 }
540                 if ($kiriwrite_pagecount_number eq 1){
542                         # The page count value is invalid, so return
543                         # an error.
545                         kiriwrite_error("pagecountinvalid");
547                 }
549                 if ($kiriwrite_filtercount_maxlength eq 1){
551                         # The filter count value is too long, so return
552                         # an error.
554                         kiriwrite_error("filtercounttoolong");
556                 }
558                 if ($kiriwrite_filtercount_number eq 1){
560                         # The filter count value is invalid, so return
561                         # an error.
563                         kiriwrite_error("filtercountinvalid");
565                 }
567                 if ($kiriwrite_templatecount_maxlength eq 1){
569                         # The template count value is too long, so return
570                         # an error.
572                         kiriwrite_error("templatecounttoolong");
574                 }
576                 if ($kiriwrite_templatecount_number eq 1){
578                         # The template count value is invalid, so return
579                         # an error.
581                         kiriwrite_error("templatecountinvalid");
583                 }
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");
595                 }
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");
607                 }
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");             
619                 }
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
641                         # return an error.
643                         kiriwrite_error("servernametoolong");
645                 }
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");
654                 }
656                 if ($kiriwrite_databaseport_length_check eq 1){
658                         # The database port number length is too long so return
659                         # an error.
661                         kiriwrite_error("serverportnumbertoolong");
663                 }
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");
672                 }
674                 if ($kiriwrite_databaseport_port_check eq 1){
676                         # The database port number given is invalid so return
677                         # an error.
679                         kiriwrite_error("serverportnumberinvalid");
681                 }
683                 if ($kiriwrite_databaseprotocol_length_check eq 1){
685                         # The database protocol name given is too long so
686                         # return an error.
688                         kiriwrite_error("serverprotocolnametoolong");
690                 }
692                 if ($kiriwrite_databaseprotocol_protocol_check eq 1){
694                         # The server protcol given is invalid so return
695                         # an error.
697                         kiriwrite_error("serverprotocolinvalid");
699                 }
701                 if ($kiriwrite_databasename_length_check eq 1){
703                         # The SQL database name is too long so return
704                         # an error.
706                         kiriwrite_error("serverdatabasenametoolong");
708                 }
710                 if ($kiriwrite_databasename_lettersnumbers_check eq 1){
712                         # The database name contains invalid characters
713                         # so return an error.
715                         kiriwrite_error("serverdatabasenameinvalid");
717                 }
719                 if ($kiriwrite_databaseusername_length_check eq 1){
721                         # The database username given is too long so
722                         # return an error.
724                         kiriwrite_error("serverdatabaseusernametoolong");
726                 }
728                 if ($kiriwrite_databaseusername_lettersnumbers_check eq 1){
730                         # The database username contains invalid characters
731                         # so return an error.
733                         kiriwrite_error("serverdatabaseusernameinvalid");
735                 }
737                 if ($kiriwrite_databasepassword_length_check eq 1){
739                         # The database password given is too long so return
740                         # an error.
742                         kiriwrite_error("serverdatabasepasswordtoolong");
744                 }
746                 if ($kiriwrite_databasetableprefix_length_check eq 1){
748                         # The database table prefix given is too long so
749                         # return an error.
751                         kiriwrite_error("serverdatabasetableprefixtoolong");
753                 }
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");
762                 }
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"};
772                 }
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();
790         }
792         # Get the list of languages available.
794         my %language_list;
795         my @language_directory          = "";
796         my $language;
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.
836                 
837                 } else {
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);
844                         do {
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;
861                                 } else {
863                                         # Current character is not a dot, so do nothing.
865                                 }
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.
880                         do {
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.
891         
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 = "";
910                 }
912                 undef $language_file;
914         }
916         # Get the list of presentation modules available.
918         my %presmodule_list;
919         my @presmodule_directory;
920         my $presmodule;
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
934         # out the 
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).
952                 do {
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;
965                         }
967                         # Increment the seek counter.
969                         $presmodule_seek++;
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.
980                 do {
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.
992                         $presmodule_seek++;
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++;
1008         }
1010         # Get the list of database modules available.
1012         my %dbmodule_list;
1013         my @dbmodule_directory;
1014         my $dbmodule;
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
1028         # out the 
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).
1046                 do {
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;
1059                         }
1061                         # Increment the seek counter.
1063                         $dbmodule_seek++;
1065                 } until ($dbmodule_seek eq $dbmodule_length);
1067                 # Reset the seek counter as it is going to be used again.
1069                 $dbmodule_seek = 0;
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.
1074                 do {
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.
1086                         $dbmodule_seek++;
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.
1096                 $dbmodule_seek  = 0;
1097                 $dbmodule_length        = 0;
1098                 $dbmodule_char          = "";
1099                 $dbmodule_friendly      = "";
1100                 $dbmodule_count++;
1102         }
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
1302                 # file.
1304                 if ($language_list{$language}{Filename} eq $language_config){
1306                         $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} , Selected => 1 });
1308                 } else {
1310                         $kiriwrite_presmodule->addoption($language_list{$language}{Name}, { Value => $language_list{$language}{Filename} });
1312                 }
1314         }
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 });
1345                 } else {
1347                         $kiriwrite_presmodule->addoption($presmodule_list{$presmodule}{Filename}, { Value => $presmodule_list{$presmodule}{Filename} });
1349                 }
1351         }
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 });
1377                 } else {
1379                         $kiriwrite_presmodule->addoption($dbmodule_list{$dbmodule}{Filename}, { Value => $dbmodule_list{$dbmodule}{Filename} });
1381                 }
1384         }
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});
1425         } else {
1427                 # The TCP protocol is not selected.
1429                 $kiriwrite_presmodule->addoption("TCP", { Value => "tcp"});
1431         } 
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});
1441         } else {
1443                 # The UDP protocol is not selected.
1445                 $kiriwrite_presmodule->addoption("UDP", { Value => "udp"});
1447         }
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();
1505
1507 sub kiriwrite_output_config{
1508 #################################################################################
1509 # kiriwrite_output_config: Outputs the configuration file.                      #
1510 #                                                                               #
1511 # Usage:                                                                        #
1512 #                                                                               #
1513 # kiriwrite_output_config(settings);                                            #
1514 #                                                                               #
1515 # settings      Specifies the following settings in any order.                  #
1516 #                                                                               #
1517 # Settings for Kiriwrite configuration files:                                   #
1518 #                                                                               #
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        #
1525 #                       Kiriwrite.                                              #
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/</&lt;/g;
1575                 $settings_database_password =~ s/>/&gt;/g;
1577         }
1579         # Convert the less than and greater than characters are there and
1580         # convert them.
1582         if ($settings_imagesuri){
1584                 $settings_imagesuri =~ s/</&lt;/g;
1585                 $settings_imagesuri =~ s/>/&gt;/g;
1587         }
1589         # Check if the database password value is undefined and if it is then
1590         # set it blank.
1592         if (!$settings_database_password){
1594                 $settings_database_password = "";
1596         }
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);
1632         return;
1634 };
1636 1;
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy