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