Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Version 0.3.0
[kiriwrite/.git] / cgi-files / lib / compile.lib
1 #################################################################################
2 # compile.lib: Kiriwrite Compile 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 option is left blank, then print out a form where the list
11 # of databases to compile are available.
13 if ($form_data->{'action'}){
15         my $http_query_action = $form_data->{'action'};
17         if ($http_query_action eq "compile"){
19                 # The specified action is to compile the pages, check if the
20                 # action to compile the page has been confirmed.
22                 my $http_query_confirm  = $form_data->{'confirm'};
23                 my $http_query_type     = $form_data->{'type'};
25                 # If it is blank, set the confirm value to 0.
27                 if (!$http_query_confirm){
29                         # The http_query_confirm variable is uninitalised, so place a
30                         # '0' (meaning an unconfirmed action).
32                         $http_query_confirm = 0;
34                 }
36                 # If the compile type is blank then return an error.
38                 if (!$http_query_type){
40                         # Compile type is blank so return an error.
42                         kiriwrite_error("blankcompiletype");
44                 }
46                 if ($http_query_type eq "multiple"){
48                         if ($http_query_confirm eq 1){
50                                 # The action to compile the pages has been confirmed so
51                                 # compile the pages.
53                                 my $http_query_override         = $form_data->{'enableoverride'};
54                                 my $http_query_overridetemplate = $form_data->{'overridetemplate'};
56                                 my @selectedlist = kiriwrite_selectedlist();
57                                 my $pagedata = kiriwrite_compile_makepages($http_query_type, $http_query_confirm, $http_query_override, $http_query_overridetemplate, @selectedlist);
59                                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
60                                 kiriwrite_output_page($kiriwrite_lang->{compile}->{compilepages}, $pagedata, "compile"); # Output the page to browser/console/stdout.
61                                 exit;                           # End the script.
63                         } else {
65                                 # The action to compile the pages has not been confirmed
66                                 # so write a form asking the user to confirm the action
67                                 # of compiling the pages.
69                                 my @selectedlist = kiriwrite_selectedlist();
70                                 my $pagedata = kiriwrite_compile_makepages($http_query_type, $http_query_confirm, "", "", @selectedlist);
72                                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
73                                 kiriwrite_output_page($kiriwrite_lang->{compile}->{compileselecteddatabases}, $pagedata, "compile"); # Output the page to browser/console/stdout.
74                                 exit;                           # End the script.
76                         }
78                 } elsif ($http_query_type eq "single"){
80                         my $http_query_database = $form_data->{'database'};
81                         my @selectedlist;
82                         $selectedlist[0] = $http_query_database;
83                         my $pagedata = kiriwrite_compile_makepages($http_query_type, $http_query_confirm, "", "", @selectedlist);
85                         kiriwrite_output_header;        # Output the header to browser/console/stdout.
86                         kiriwrite_output_page($kiriwrite_lang->{compile}->{compiledatabase}, $pagedata, "compile");
87                         exit;                           # End the script.
89                 } else {
91                         kiriwrite_error("invalidcompiletype");
93                 }
95         } elsif ($http_query_action eq "all"){
97                 # The selected action is to compile all of the databases
98                 # in the database directory. Check if the action to
99                 # compile all of the databases has been confirmed.
101                 my $http_query_confirm = $form_data->{'confirm'};
103                 if (!$http_query_confirm){
105                         # The http_query_confirm variable is uninitalised, so place a
106                         # '0' (meaning an unconfirmed action).
108                         $http_query_confirm = 0;
110                 }
112                 if ($http_query_confirm eq 1){
114                         # The action to compile all the databases has been confirmed.
116                 }
118                 my $pagedata = kiriwrite_compile_all();
120                 kiriwrite_output_header;                        # Output the header to browser/console/stdout.
121                 kiriwrite_output_page($kiriwrite_lang->{compile}->{compilealldatabases}, $pagedata, "compile");
122                 exit;
124         } elsif ($http_query_action eq "clean") {
126                 # The selected action is to clean the output directory.
127                 # Check if the action to clean the output directory
128                 # has been confirmed.
130                 my $http_query_confirm = $form_data->{'confirm'};
132                 if (!$http_query_confirm){
134                         # The http_query_confirm variable is uninitalised, so place a
135                         # '0' (meaning an unconfirmed action).
137                         $http_query_confirm = 0;
139                 }
141                 if ($http_query_confirm eq 1){
143                         # The action to clean the output directory has been confirmed.
145                         my $pagedata = kiriwrite_compile_clean($http_query_confirm);
147                         kiriwrite_output_header;                # Output the header to browser/console/stdout.
148                         kiriwrite_output_page($kiriwrite_lang->{compile}->{cleanoutputdirectory}, $pagedata, "compile");        # Output the page to browser/console/stdout.
149                         exit;                                   # End the script.
150         
151                 }
153                 # The action to clean the output directory is not
154                 # confirmed, so write a page asking the user
155                 # to confirm cleaning the output directory.
157                 my $pagedata = kiriwrite_compile_clean();
159                 kiriwrite_output_header;                # Output the header to browser/console/stdout.
160                 kiriwrite_output_page($kiriwrite_lang->{compile}->{cleanoutputdirectory}, $pagedata, "compile");        # Output the page to browser/console/stdout.
161                 exit;                                   # End the script.
163         } else {
165                 # The action specified was something else other than those
166                 # above, so return an error.
168                 kiriwrite_error("invalidaction");
170         }
173 my $pagedata = kiriwrite_compile_list();
175 kiriwrite_output_header;                # Output the header to browser/console/stdout.
176 kiriwrite_output_page($kiriwrite_lang->{compile}->{compilepages}, $pagedata, "compile");        # Output the page to browser/console/stdout.
177 exit;                                   # End the script.
179 #################################################################################
180 # Begin list of relevant subroutines.                                           #
181 #################################################################################
183 sub kiriwrite_compile_makepages{
184 #################################################################################
185 # kiriwrite_compile_makepages: Compile the selected pages and place them in the #
186 # specified output directory.                                                   #
187 #                                                                               #
188 # Usage:                                                                        #
189 #                                                                               #
190 # kiriwrite_compile_makepages(type, selectedlist, override, overridetemplate,   #
191 #                               confirm);                                       #
192 #                                                                               #
193 # type                  Specifies if single or multiple databases are to be     #
194 #                       compiled.                                               #
195 # confirm               Specifies if the action to compile the databases should #
196 #                       really be done.                                         #
197 # override              Specifies if the template should be overriden.          #
198 # overridetemplate      Specifies the name of the template to override with.    #
199 # selectedlist          Specifies the databases to compile from as an array.    #
200 #################################################################################
202         # Get the values that have been passed to the subroutine.
204         my ($type, $confirm, $override, $override_template, @selectedlist) = @_;
206         # Check if the confirm value is more than one
207         # character long.
209         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
211         # Check if the value for enabling the override feature
212         # is "on" or blank and if it is something else then
213         # return an error.
215         if (!$override){
217                 $override = "off";
219         }
221         if ($override eq "on"){
222         } elsif (!$override || $override eq "off"){
223         } else {
225                 # The override value is invalid so return an error.
227                 kiriwrite_error("overridetemplatevalueinvalid");
229         }
231         # Check if the override template filename is valid and
232         # return an error if it isn't.
234         kiriwrite_variablecheck($override_template, "utf8", 0, 0);
235         $override_template      = kiriwrite_utf8convert($override_template);
236         $kiriwrite_overridetemplatefilename_length_check        = kiriwrite_variablecheck($override_template, "maxlength", 64, 1);
237         $kiriwrite_overridetemplatefilename_filename_check      = kiriwrite_variablecheck($override_template, "filename", "", 1);
239         if ($kiriwrite_overridetemplatefilename_length_check eq 1){
241                 # The override template filename given is too long
242                 # so return an error.
244                 kiriwrite_error("overridetemplatetoolong");
246         }
248         if ($kiriwrite_overridetemplatefilename_filename_check eq 2 && $override_template ne "!none"){
250                 # The override template filename is invalid so
251                 # return an error.
253                 kiriwrite_error("overridetemplateinvalid");
255         }
257         # Check if the confirm value is blank and if it
258         # is then set the confirm value to 0.
260         if (!$confirm){
262                 # The confirm value is blank, so set the
263                 # confirm value to 0.
265                 $confirm = 0;
267         }
269         # Check if there are any databases selected
270         # and return an error if there isn't.
272         if (!@selectedlist){
274                 # There are no databases in the array
275                 # so return an error.
277                 kiriwrite_error("nodatabaseselected");
279         }
281         # Check if the type given is no more than
282         # 7 characters long.
284         my $type_maxlength_check = kiriwrite_variablecheck($type, "maxlength", 8, 1);
286         if ($type_maxlength_check eq 1){
288                 # The type length given is too long so
289                 # return an error.
291                 kiriwrite_error("variabletoolong");
293         }
295         # Check if the action to compile the databases
296         # has been confirmed.
298         if ($confirm eq 1){
300                 # The action to compile the datavases has
301                 # been confirmed.
303                 # Define some variables for later.
305                 my %database_info;
306                 my %filter_info;
307                 my %template_info;
308                 my %page_info;
309                 my %templatefiles;
310                 my @page_filenames;
311                 my @databaseinfo;
312                 my @databasepages;
313                 my @filterslist;
314                 my @findfilter;
315                 my @replacefilter;
316                 my @templateslist;
317                 my @pagedirectories;
318                 my @database_filters;
319                 my $warning_count               = 0;
320                 my $error_count                 = 0;
321                 my $pages_count                 = 0;
322                 my $filter;
323                 my $filters_count               = 0;
324                 my $filters_find_blank_warning  = 0;
325                 my $filter_find;
326                 my $filter_replace;
327                 my $database;
328                 my $database_name;
329                 my $page_filename;
330                 my $page_filename_check;
331                 my $page_filename_char          = "";
332                 my $page_filename_directory;
333                 my $page_filename_length        = 0;
334                 my $page_filename_seek          = 0;
335                 my $page_filename_dircount      = 0;
336                 my $page_filename_exists        = 0;
337                 my $page_filename_permissions   = 0;
338                 my $page_directory_name;
339                 my $page_directory_path;
340                 my $page_name;
341                 my $page_description;
342                 my $page_section;
343                 my $page_template;
344                 my $page_content;
345                 my $page_settings;
346                 my $page_lastmodified;
347                 my $page_title;
348                 my $page_final;
349                 my $page_autosection;
350                 my $page_autotitle;
351                 my $page;
352                 my $database_filename_check     = 0;
353                 my $database_maxlength_check    = 0;
354                 my $output_exists               = 0;
355                 my $output_permissions          = 0;
356                 my $filters_exists              = 0;
357                 my $filters_permissions         = 0;
358                 my $filters_skip                = 0;
359                 my $template;
360                 my $templates_skip              = 0;
361                 my $information_prefix          = $kiriwrite_lang->{compile}->{informationprefix};
362                 my $error_prefix                = $kiriwrite_lang->{compile}->{errorprefix};
363                 my $warning_prefix              = $kiriwrite_lang->{compile}->{warningprefix};
364                 my $filehandle_page;
366                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compiledatabases}, { Style => "pageheader" });
367                 $kiriwrite_presmodule->addlinebreak();
368                 $kiriwrite_presmodule->addlinebreak();
369                 $kiriwrite_presmodule->startbox("datalist");
371                 # Check if the output directory exists and has
372                 # valid permissions set.
374                 $output_exists          = kiriwrite_fileexists($kiriwrite_config{'directory_data_output'});
376                 if ($output_exists ne 0){
378                         # The output directory does not exist so
379                         # return an error.
381                         kiriwrite_error("outputdirectorymissing");
383                 }
385                 $output_permissions     = kiriwrite_filepermissions($kiriwrite_config{'directory_data_output'}, 1, 1);
387                 if ($output_permissions ne 0){
389                         # The output directory has invalid
390                         # permissions set so return an error.
392                         kiriwrite_error("outputdirectoryinvalidpermissions");
394                 }
396                 # Connect to the database server.
398                 $kiriwrite_dbmodule->connect();
400                 # Check if any errors occured while connecting to the database server.
402                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
404                         # A database connection error has occured so return
405                         # an error.
407                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
409                 }
411                 # Connect to the filter database.
413                 $kiriwrite_dbmodule->connectfilter();
415                 # Check if any error has occured while connecting to the filter
416                 # database.
418                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
420                         # The filter database does not exist so write a warning message.
422                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{filterdatabasemissing});
423                         $kiriwrite_presmodule->addlinebreak();
424                         $filters_skip = 1;
425                         $warning_count++;
427                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
429                         # The filter database has invalid permissions set so write a
430                         # an error message.
432                         $kiriwrite_presmodule->addtext($error_prefix . $kiriwrite_lang->{compile}->{filterdatabasepermissions});
433                         $kiriwrite_presmodule->addlinebreak();
434                         $filters_skip = 1;
435                         $error_count++;
437                 }
439                 # Load the filter database (if the filters skip
440                 # value isn't set to 1).
442                 if ($filters_skip eq 0){
444                         # Get the list of available filters.
446                         @database_filters       = $kiriwrite_dbmodule->getfilterlist();
448                         # Check if any errors occured while getting the list of filters.
450                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
452                                 # A database error has occured with the filter database.
454                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{filterdatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
455                                 $kiriwrite_presmodule->addlinebreak();
456                                 $error_count++;
458                         }
460                         # Check if the filters skip value is set to 0
461                         # before executing the query.
463                         if ($filters_skip eq 0){
465                                 foreach $filter (@database_filters){
467                                         # Get the filter information.
469                                         %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter, Reduced => 1 });
471                                         # Check if the filter is enabled and if it isn't then process
472                                         # the next filter.
474                                         if (!$filter_info{"FilterEnabled"}){
476                                                 # The filter is not enabled so process the next filter.
478                                                 next;
480                                         }
482                                         # Check if any errors occured while getting the filter information.
484                                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
486                                                 # A database error occured while using the filter database.
488                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{filterdatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
489                                                 $kiriwrite_presmodule->addlinebreak();
490                                                 $error_count++;
491                                                 next;
493                                         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
495                                                 # The filter does not exist so process the next filter.
497                                                 next;
499                                         }
501                                         # Check if the find filter is blank and
502                                         # if it is then write a warning message.
504                                         if (!$filter_info{"FilterFind"}){
506                                                 if ($filters_find_blank_warning ne 1){
508                                                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{findfilterblank});
509                                                         $kiriwrite_presmodule->addlinebreak();
510                                                         $filters_find_blank_warning = 1;
511                                                 }
512                                                 next;
514                                         } else {
516                                                 # Add each find and replace filter.
518                                                 $findfilter[$filters_count]     = $filter_info{"FilterFind"};
519                                                 $replacefilter[$filters_count]  = $filter_info{"FilterReplace"};
521                                         }
523                                         $filters_count++;
525                                 }
527                                 $kiriwrite_presmodule->addtext($information_prefix . $kiriwrite_lang->{compile}->{finishfilterdatabase});
528                                 $kiriwrite_presmodule->addlinebreak();
530                         }
532                 }
534                 # Disconnect from the filter database.
536                 $kiriwrite_dbmodule->disconnectfilter();
538                 # Connect to the template database.
540                 $kiriwrite_dbmodule->connecttemplate();
542                 # Check if any errors occured while connecting to the template database.
544                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
546                         # The template database does not exist so set the template
547                         # warning message.
549                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{templatedatabasemissing});
550                         $kiriwrite_presmodule->addlinebreak();
551                         $templates_skip = 1;
552                         $warning_count++;
554                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
556                         # The template database has invalid permissions set so write
557                         # the template warning message.
558  
559                         $kiriwrite_presmodule->addtext($error_prefix . $kiriwrite_lang->{compile}->{templatedatabasepermissions});
560                         $kiriwrite_presmodule->addlinebreak();
561                         $templates_skip = 1;
562                         $error_count++;
564                 }
566                 # Check if the template skip value isn't set and if it isn't
567                 # then get the list of templates.
569                 if (!$templates_skip){
571                         @templateslist = $kiriwrite_dbmodule->gettemplatelist();
573                         # Check if any errors had occured.
575                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
577                                 # A database error occured while getting the list
578                                 # of templates so return a warning message with the 
579                                 # extended error information.
581                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatedatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
582                                 $templates_skip = 1;
583                                 $error_count++;
585                         }
587                         # Check if the template skip value isn't set and if it isn't
588                         # then process each template.
590                         if (!$templates_skip){
592                                 # Process each template.
594                                 foreach $template (@templateslist){
596                                         # Get information about the template.
598                                         %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template });
600                                         # Check if any error occured while getting the template information.
602                                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
604                                                 # A database error has occured, so return an error.
606                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatedatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
607                                                 $error_count++;
609                                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
611                                                 # The template does not exist, so process the next template.
613                                                 next;
615                                         }
617                                         # Place each template file into the hash.
619                                         $templatefiles{$template_info{"TemplateFilename"}}{template}    = $template_info{"TemplateLayout"};
620                                         $templatefiles{$template_info{"TemplateFilename"}}{valid}       = 1;
622                                 }
624                                 $kiriwrite_presmodule->addtext($information_prefix . $kiriwrite_lang->{compile}->{finishtemplatedatabase});
625                                 $kiriwrite_presmodule->addlinebreak();
627                         }
629                 }
631                 # Disconnect from the template database.
633                 $kiriwrite_dbmodule->disconnecttemplate();
635                 # Process each database.
637                 foreach $database (@selectedlist){
639                         # Check if the database filename and length
640                         # are valid.
642                         $kiriwrite_presmodule->addhorizontalline();
644                         $database_filename_check        = kiriwrite_variablecheck($database, "page_filename", "", 1);
645                         $database_maxlength_check       = kiriwrite_variablecheck($database, "maxlength", 32, 1);
647                         if ($database_filename_check ne 0){
649                                 # The database filename is invalid, so process
650                                 # the next database.
652                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefilenameinvalidcharacters}, $database));
653                                 $kiriwrite_presmodule->addlinebreak();
654                                 $error_count++;
655                                 next;
657                         }
659                         if ($database_maxlength_check ne 0){
661                                 # The database file is too long, so process the
662                                 # next database.
664                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefilenametoolong}, $database));
665                                 $kiriwrite_presmodule->addlinebreak();
666                                 $error_count++;
667                                 next;
669                         }
671                         # Select the database.
673                         $kiriwrite_dbmodule->selectdb({ DatabaseName => $database });
675                         # Check if any errors had occured while selecting the database.
677                         if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
679                                 # The database does not exist, so write a warning message.
681                                 $kiriwrite_presmodule->addtext($warning_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasemissing}, $database));
682                                 $kiriwrite_presmodule->addlinebreak();
683                                 $warning_count++;
684                                 next;
686                         } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
688                                 # The database has invalid permissions set, so write
689                                 # an error message.
691                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databaseinvalidpermissions}, $database));
692                                 $kiriwrite_presmodule->addlinebreak();
693                                 $error_count++;
694                                 next;
696                         }
698                         # Get information about the database.
700                         my %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
702                         # Check if any error occured while getting the database information.
704                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
706                                 # A database error has occured so write an error.
708                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databaseerror}, $database, $kiriwrite_dbmodule->geterror(1)));
709                                 $kiriwrite_presmodule->addlinebreak();
710                                 $error_count++;
711                                 next;
713                         };
715                         # Get the database name.
717                         $database_name = $database_info{"DatabaseName"};
719                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{compilingpages}, $database_name));
720                         $kiriwrite_presmodule->addlinebreak();
722                         # Get the list of pages in the database.
724                         @databasepages = $kiriwrite_dbmodule->getpagelist();
726                         # Check if any errors occured while getting the list of pages.
728                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
730                                 # A database error has occured so return an error and
731                                 # also the extended error information.
733                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasepageerror}, $database, $kiriwrite_dbmodule->geterror(1)));
734                                 $kiriwrite_presmodule->addlinebreak();
735                                 $error_count++;
736                                 next;
738                         }
740                         foreach $page (@databasepages) {
742                                 # Get information about the page.
744                                 %page_info = $kiriwrite_dbmodule->getpageinfo({ PageFilename => $page });
746                                 $page_filename          = $page_info{"PageFilename"};
747                                 $page_name              = $page_info{"PageName"};
748                                 $page_description       = $page_info{"PageDescription"};
749                                 $page_section           = $page_info{"PageSection"};
750                                 $page_template          = $page_info{"PageTemplate"};
751                                 $page_content           = $page_info{"PageContent"};
752                                 $page_settings          = $page_info{"PageSettings"};
753                                 $page_lastmodified      = $page_info{"PageLastModified"};
755                                 # Check if the filename is valid.
757                                 $page_filename_check = kiriwrite_variablecheck($page_filename, "page_filename", 0, 1);
759                                 if ($page_filename_check ne 0){
761                                         # The file name is not valid so write a
762                                         # error and process the next page.
764                                         $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{invalidpagefilename}, $page_name));
765                                         $kiriwrite_presmodule->addlinebreak();
766                                         $error_count++;
767                                         next;
769                                 }
771                                 # Check if the template with the filename does not exist
772                                 # in the template files hash and write a message and
773                                 # process the next page.
775                                 if ($override eq "on"){
777                                         $page_template = $override_template;
779                                 }
781                                 if (!$templatefiles{$page_template}{valid} && $page_template ne "!none" && $templates_skip eq 0){
783                                         $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatefilemissing}, $page_template, $page_name, $page_filename));
784                                         $kiriwrite_presmodule->addlinebreak();
785                                         $error_count++;
786                                         next;
788                                         $page_final = $page_content;
790                                 } elsif ($page_template eq "!none"){
792                                         $page_final = $page_content;
794                                 } else {
796                                         $page_final = $templatefiles{$page_template}{template};
798                                         if (!$page_final){
799                                                 $page_final = "";
800                                         }
802                                         $page_final =~ s/<kiriwrite:pagecontent>/$page_content/g;
804                                 }
806                                 # Create the combined page title (if needed).
808                                 if ($page_settings eq 0 || $page_settings > 3){
810                                         # Don't use page name or section name.
812                                         $page_final =~ s/<kiriwrite:pagetitle>//g;
814                                 } elsif ($page_settings eq 1){
816                                         # Use the page name and section name.
818                                         $page_autotitle = "(" . $page_section . " - " . $page_name . ")";
819                                         $page_title = $page_section . " - " . $page_name;
820                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_title/g;
822                                 } elsif ($page_settings eq 2){
824                                         # Use the page name only.
826                                         $page_autotitle = "(" . $page_name . ")";
827                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_name/g;
829                                 } elsif ($page_settings eq 3){
831                                         # Use the section name only.
833                                         if ($page_section){
834                                                 $page_autotitle = "(" . $page_section . ")";
835                                         }
836                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_section/g;
838                                 }
840                                 # Check if the section name is not blank and
841                                 # place brackets inbetween if it is.
843                                 if ($page_section){
845                                         $page_autosection = "(" . $page_section . ")";
847                                 }
849                                 # Replace each <kiriwrite> value with the apporiate page
850                                 # values.
852                                 $page_final =~ s/<kiriwrite:pagename>/$page_name/g;
853                                 $page_final =~ s/<kiriwrite:pagedescription>/$page_description/g;
854                                 $page_final =~ s/<kiriwrite:pagesection>/$page_section/g;
855                                 $page_final =~ s/<kiriwrite:autosection>/$page_autosection/g;
856                                 $page_final =~ s/<kiriwrite:autotitle>/$page_autotitle/g;
858                                 # Process the filters on the page data.
860                                 if ($filters_skip eq 0){
862                                         $filters_count = 0;
864                                         foreach $filter_find (@findfilter){
866                                                 # Get the replace filter and process each
867                                                 # filter on the page.
869                                                 $filter_replace = $replacefilter[$filters_count];
870                                                 $page_final =~ s/$filter_find/$filter_replace/g;
871                                                 $filters_count++;
873                                         }
875                                 }
877                                 # Process the page filename and check what directories
878                                 # need to be created.
880                                 $page_filename_length = int(length($page_filename));
882                                 do {
884                                         $page_filename_char = substr($page_filename, $page_filename_seek, 1);
886                                         # Check if a forward slash appears and add it to
887                                         # the list of directories array.
889                                         if ($page_filename_char eq '/'){
891                                                 # Append the directory name to the list of
892                                                 # directories array.
894                                                 $pagedirectories[$page_filename_dircount] = $page_filename_directory;
895                                                 $page_filename_directory        = "";
896                                                 $page_filename_char             = "";
897                                                 $page_filename_dircount++;
899                                         } else {
901                                                 # Append the character to the directory/filename.
903                                                 $page_filename_directory = $page_filename_directory . $page_filename_char;
905                                         }
907                                         $page_filename_seek++;
909                                 } until ($page_filename_length eq $page_filename_seek);
911                                 foreach $page_directory_name (@pagedirectories){
913                                         # Check if the directory name is undefined and if it
914                                         # is then set it blank.
916                                         if (!$page_directory_name){
917                                                 $page_directory_name = "";
918                                         }
920                                         if (!$page_directory_path){
921                                                 $page_directory_path = "";
922                                         }
924                                         # Check if the directory exists and create 
925                                         # the directory if it doesn't exist.
927                                         $page_directory_path = $page_directory_path . '/' . $page_directory_name;
929                                         mkdir($kiriwrite_config{"directory_data_output"} . '/' . $page_directory_path);
931                                 }
933                                 # Check if the file already exists and if it does then check
934                                 # the permissions of the file and return an error if the
935                                 # permissions set are invalid.
937                                 $page_filename_exists = kiriwrite_fileexists($kiriwrite_config{"directory_data_output"} . '/' . $page_filename);        
939                                 if ($page_filename_exists eq 0){
941                                         # The page filename exists, so check if the permissions given are
942                                         # valid.
944                                         $page_filename_permissions = kiriwrite_filepermissions($kiriwrite_config{"directory_data_output"} . '/' . $page_filename, 1, 1);
946                                         if ($page_filename_permissions eq 1){
948                                                 # The file has invalid permissions set.
950                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{pageinvalidpermissions}, $page_filename));
951                                                 $kiriwrite_presmodule->addlinebreak();
952                                                 $error_count++;
954                                                 # Reset certain values.
956                                                 $page_autotitle = "";
957                                                 $page_autosection = "";
958                                                 $page_filename_seek = 0;
959                                                 $page_filename_dircount = 0;
961                                                 $page_filename_directory = "";
962                                                 $page_directory_path = "";
963                                                 $page_directory_name = "";
964                                                 @pagedirectories = ();
965                                                 
966                                                 next;
968                                         }
970                                 }
972                                 # Reset certain values.
974                                 $page_autotitle = "";
975                                 $page_autosection = "";
976                                 $page_filename_seek = 0;
977                                 $page_filename_dircount = 0;
979                                 $page_filename_directory = "";
980                                 $page_directory_path = "";
981                                 $page_directory_name = "";
982                                 @pagedirectories = ();
984                                 # Write the file to the output directory.
986                                 ($page_filename) = $page_filename =~ m/^(.*)$/g;
987                                 ($kiriwrite_config{"directory_data_output"}) = $kiriwrite_config{"directory_data_output"} =~ m/^(.*)$/g;
989                                 open($filehandle_page, "> ",  $kiriwrite_config{"directory_data_output"} . '/' . $page_filename) or ($kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{pagenotwritten}, $page_filename, $!)), $kiriwrite_presmodule->addlinebreak(), $error_count++, next);
991                                 if (!$page_final){
993                                         $page_final = "";
995                                 }
997                                 binmode $filehandle_page, ':utf8';
998                                 print $filehandle_page $page_final;
999                                 close($filehandle_page);
1001                                 # Write a message saying the page has been compiled. Check
1002                                 # to see if the page name is blank and write a message
1003                                 # saying there's no page name.
1005                                 if (!$page_name){
1006                                         $kiriwrite_presmodule->addtext($information_prefix . ' ');
1007                                         $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{noname} . ' ');
1008                                         $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compiledpageblankname}, $page_filename));
1009                                 } else {
1010                                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{compiledpage}, $page_name, $page_filename));
1011                                 }
1014                                 $kiriwrite_presmodule->addlinebreak();
1015                                 $pages_count++;
1017                         }
1019                         # Write a message saying that the database has
1020                         # been processed.
1022                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefinish}, $database_name));
1023                         $kiriwrite_presmodule->addlinebreak();
1025                 }
1027                 # Disconnect from the database server.
1029                 $kiriwrite_dbmodule->disconnect();
1031                 $kiriwrite_presmodule->addhorizontalline();
1032                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compileresults}, $pages_count, $error_count, $warning_count));
1033                 $kiriwrite_presmodule->endbox();
1034                 $kiriwrite_presmodule->addlinebreak();
1035                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1037                 return $kiriwrite_presmodule->grab();
1039         } elsif ($confirm eq 0){
1041                 # The action to compile the databases has
1042                 # not been confirmed so check what type
1043                 # is being used.
1045                 # Get the list of templates for overwriting the
1046                 # template if needed.
1048                 my $templateoverride_skip       = 0;
1049                 my $templatedbwarning           = "";
1050                 my @template_list;
1051                 my $template_filename;
1052                 my %template_info;
1053                 my %template_dblist;
1054                 tie(%template_dblist, "Tie::IxHash");
1056                 if ($type eq "single"){
1058                         # The type is a single database selected so
1059                         # process that database.
1061                         # Define some variables for later.
1063                         my %database_info; 
1064                         my $database_filename_check;
1065                         my $database_maxlength_check;
1066                         my $databasefilename;
1067                         my $database_name;
1069                         # Check that the database name and length are
1070                         # valid and return an error if they aren't.
1072                         $databasefilename = $selectedlist[0];
1074                         # Connect to the database server.
1076                         $kiriwrite_dbmodule->connect();
1078                         # Check if any errors occured while connecting to the database server.
1080                         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1082                                 # A database connection error has occured so return
1083                                 # an error.
1085                                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1087                         }
1089                         # Select the database.
1091                         $kiriwrite_dbmodule->selectdb({ DatabaseName => $databasefilename });
1093                         # Check if any errors had occured while selecting the database.
1095                         if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1097                                 # The database does not exist, so return an error.
1099                                 kiriwrite_error("databasemissingfile");
1101                         } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
1103                                 # The database has invalid permissions set, so return
1104                                 # an error.
1106                                 kiriwrite_error("databaseinvalidpermissions");
1108                         }
1110                         # Get information about the database.
1112                         %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1114                         # Check if any error occured while getting the database information.
1116                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1118                                 # A database error has occured so return an error and
1119                                 # also the extended error information.
1121                                 kiriwrite_error("databaseerror", $kiriwrite_dbmodule->geterror(1));
1123                         };
1125                         $database_name = $database_info{"DatabaseName"};
1127                         $kiriwrite_dbmodule->connecttemplate();
1129                         # Check if any errors occured while connecting to the
1130                         # template database.
1132                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1134                                 # The template database does not exist so skip processing
1135                                 # the list of templates in the template database.
1137                                 $templateoverride_skip = 1;
1138                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1140                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1142                                 # The template database has invalid permissions set so
1143                                 # skip processing the list of templates in the
1144                                 # template database.
1146                                 $templateoverride_skip = 1;
1147                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1149                         }
1151                         # Get the list of available templates if no errors had
1152                         # occured.
1154                         if ($templateoverride_skip ne 1){
1156                                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1158                                 # Check if any errors occured while getting the list of templates.
1160                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1162                                         # A template database error has occured so skip processing the
1163                                         # list of templates in the template database.
1165                                         $templateoverride_skip = 1;
1166                                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1168                                 }
1170                                 if ($templateoverride_skip ne 1){
1172                                         foreach $template_file (@template_list){
1174                                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1175                                                 
1176                                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1178                                                         next;
1180                                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1182                                                         next;
1184                                                 }
1186                                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1188                                         }
1190                                 }
1192                         }
1194                         # Disconnect from the template database and database server.
1196                         $kiriwrite_dbmodule->disconnecttemplate();
1197                         $kiriwrite_dbmodule->disconnect();
1199                         # Write out a form asking the user to confirm if the
1200                         # user wants to compile the selected database.
1202                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compiledatabase}, { Style => "pageheader" });
1203                         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1204                         $kiriwrite_presmodule->startbox();
1205                         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1206                         $kiriwrite_presmodule->addhiddendata("action", "compile");
1207                         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1208                         $kiriwrite_presmodule->addhiddendata("id[1]", $databasefilename);
1209                         $kiriwrite_presmodule->addhiddendata("name[1]", "on");
1210                         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1211                         $kiriwrite_presmodule->addlinebreak();
1212                         $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compiledatabasemessage}, $database_name));
1213                         $kiriwrite_presmodule->addlinebreak();
1214                         $kiriwrite_presmodule->addlinebreak();
1216                         if ($templateoverride_skip eq 1){
1218                                 # Add message saying why template can't be overridden.
1219                                 $kiriwrite_presmodule->addtext($templatedbwarning);
1221                         } else {
1223                                 # Add overwrite template data.
1224                                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1225                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1226                                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1228                                 foreach $template_file (keys %template_dblist){
1230                                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1232                                 }
1234                                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1235                                 $kiriwrite_presmodule->endselectbox();
1237                         }
1239                         $kiriwrite_presmodule->addlinebreak();
1240                         $kiriwrite_presmodule->addlinebreak();
1241                         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compiledatabasebutton});
1242                         $kiriwrite_presmodule->addtext(" | ");
1243                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1244                         $kiriwrite_presmodule->endbox();
1245                         $kiriwrite_presmodule->endform();
1247                         return $kiriwrite_presmodule->grab();
1249                 } elsif ($type eq "multiple"){
1251                         # The type is multiple databases selected
1252                         # so process each database.
1254                         # Define some variables for later.
1256                         my %database_list;
1257                         my $databasename;
1258                         my $database;
1259                         my $database_filename_check;
1260                         my $database_maxlength_check;
1261                         my $database_count = 0;
1262                         my $database_info_name;
1264                         # Connect to the database server.
1266                         $kiriwrite_dbmodule->connect();
1268                         # Check if any errors occured while connecting to the database server.
1270                         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1272                                 # A database connection error has occured so return
1273                                 # an error.
1275                                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1277                         }
1279                         foreach $databasename (@selectedlist){
1281                                 # Check if the database is in the database
1282                                 # directory and skip it if it isn't.
1283  
1284                                 $database_filename_check        = kiriwrite_variablecheck($databasename, "filename", "", 1);
1285                                 $database_maxlength_check       = kiriwrite_variablecheck($databasename, "maxlength", 32, 1);
1286  
1287                                 if ($database_filename_check ne 0 || $database_maxlength_check ne 0){
1288  
1289                                         # The database filename given is invalid or
1290                                         # the database filename given is too long
1291                                         # so process the next database.
1292  
1293                                         next;
1294  
1295                                 }
1297                                 # Select the database to add the page to.
1299                                 $kiriwrite_dbmodule->selectdb({ DatabaseName => $databasename });
1301                                 # Check if any errors had occured while selecting the database.
1303                                 if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1305                                         # The database does not exist, so process the next database.
1307                                         next;
1309                                 } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
1311                                         # The database has invalid permissions set, so process
1312                                         # the next database.
1314                                         next;
1316                                 }
1318                                 # Get information about the database.
1320                                 my %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1322                                 # Check if any error occured while getting the database information.
1324                                 if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1326                                         # A database error has occured so process the next
1327                                         # database.
1329                                         next;
1331                                 };
1333                                 $database_list{$database_count}{Name}           = $database_info{"DatabaseName"};
1334                                 $database_list{$database_count}{Filename}       = $databasename;
1336                                 $database_count++;
1338                         }
1340                         # Check if any databases are available to be compiled.
1342                         if ($database_count eq 0){
1344                                 # No databases are available to be compiled.
1346                                 kiriwrite_error("nodatabaseselected");
1348                         }
1350                         # Write out the form for compiling the database.
1352                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compileselecteddatabases}, { Style => "pageheader" });
1353                         $kiriwrite_presmodule->addlinebreak();
1354                         $kiriwrite_presmodule->addlinebreak();
1355                         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1356                         $kiriwrite_presmodule->startbox();
1357                         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1358                         $kiriwrite_presmodule->addhiddendata("action", "compile");
1359                         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1360                         $kiriwrite_presmodule->addhiddendata("count", $database_count);
1361                         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1362                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compileselecteddatabasesmessage});
1363                         $kiriwrite_presmodule->addlinebreak();
1364                         $kiriwrite_presmodule->addlinebreak();
1365                         $kiriwrite_presmodule->startbox("datalist");
1367                         $database_count = 0;
1369                         # write out the list of databases to compile.
1371                         foreach $database (keys %database_list){
1373                                 $database_count++;
1375                                 $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database_list{$database}{Filename});
1376                                 $kiriwrite_presmodule->addhiddendata("name[" . $database_count . "]", "on");
1378                                 # Check if the database name is undefined and if it is
1379                                 # then write a message saying the database name is blank.
1381                                 if (!$database_list{$database}{Name}){
1382                                         $kiriwrite_presmodule->additalictext($kiriwrite_lang->{compile}->{blankdatabasename});
1383                                 } else {
1384                                         $kiriwrite_presmodule->addtext($database_list{$database}{Name});
1385                                 }
1387                                 $kiriwrite_presmodule->addlinebreak();
1389                         }
1391                         $kiriwrite_presmodule->endbox();
1393                         $kiriwrite_presmodule->addlinebreak();
1395                         $kiriwrite_dbmodule->connecttemplate();
1397                         # Check if any errors occured while connecting to the
1398                         # template database.
1400                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1402                                 # The template database does not exist so skip processing
1403                                 # the list of templates in the template database.
1405                                 $templateoverride_skip = 1;
1406                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1408                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1410                                 # The template database has invalid permissions set so
1411                                 # skip processing the list of templates in the
1412                                 # template database.
1414                                 $templateoverride_skip = 1;
1415                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1417                         }
1419                         # Get the list of available templates if no errors had
1420                         # occured.
1422                         if ($templateoverride_skip ne 1){
1424                                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1426                                 # Check if any errors occured while getting the list of templates.
1428                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1430                                         # A template database error has occured so skip processing the
1431                                         # list of templates in the template database.
1433                                         $templateoverride_skip = 1;
1434                                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1436                                 }
1438                                 if ($templateoverride_skip ne 1){
1440                                         foreach $template_file (@template_list){
1442                                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1443                                                 
1444                                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1446                                                         next;
1448                                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1450                                                         next;
1452                                                 }
1454                                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1456                                         }
1458                                 }
1460                         }
1462                         if ($templateoverride_skip eq 1){
1464                                 # Add message saying why template can't be overridden.
1465                                 $kiriwrite_presmodule->addtext($templatedbwarning);
1467                         } else {
1469                                 # Add overwrite template data.
1470                                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1471                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1472                                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1474                                 foreach $template_file (keys %template_dblist){
1476                                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1478                                 }
1480                                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1481                                 $kiriwrite_presmodule->endselectbox();
1483                         }
1485                         # Disconnect from the template database and database server.
1487                         $kiriwrite_dbmodule->disconnecttemplate();
1488                         $kiriwrite_dbmodule->disconnect();
1490                         $kiriwrite_presmodule->addlinebreak();
1491                         $kiriwrite_presmodule->addlinebreak();
1492                         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compileselecteddatabasesbutton});
1493                         $kiriwrite_presmodule->addtext(" | ");
1494                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1495                         $kiriwrite_presmodule->endbox();
1496                         $kiriwrite_presmodule->endform();
1498                         return $kiriwrite_presmodule->grab();
1500                 } else {
1502                         # The type is something else other than
1503                         # single or multiple, so return an error.
1505                         kiriwrite_error("invalidvariable");
1507                 }
1509         } else {
1511                 # The confirm value is neither 0 or 1, so
1512                 # return an error.
1514                 kiriwrite_error("invalidvariable");
1516         }
1520 sub kiriwrite_compile_all{
1521 #################################################################################
1522 # kiriwrite_compile_all: Compile all of the databases in the database           #
1523 # directory.                                                                    #
1524 #                                                                               #
1525 # Usage:                                                                        #
1526 #                                                                               #
1527 # kiriwrite_compile_all();                                                      #
1528 #################################################################################
1530         # Connect to the database server.
1532         $kiriwrite_dbmodule->connect();
1534         # Check if any errors occured while connecting to the database server.
1536         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1538                 # A database connection error has occured so return
1539                 # an error.
1541                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1543         }
1545         # Get the list of available databases.
1547         my @database_list = $kiriwrite_dbmodule->getdblist();
1549         # Check if any errors occured while getting the databases.
1551         if ($kiriwrite_dbmodule->geterror eq "DataDirMissing"){
1553                 # The database directory is missing so return an error.
1555                 kiriwrite_error("datadirectorymissing");
1557         } elsif ($kiriwrite_dbmodule->geterror eq "DataDirInvalidPermissions"){
1559                 # The database directory has invalid permissions set so return
1560                 # an error.
1562                 kiriwrite_error("datadirectoryinvalidpermissions");
1564         }
1566         # Define some variables for later.
1568         my $database;
1569         my $database_name_filename_check;
1570         my $database_count              = 0;
1572         # Check the list of databases to compile to see if it is blank,
1573         # if it is then return an error.
1575         if (!@database_list){
1577                 # The list of database is blank so return an error.
1579                 kiriwrite_error("nodatabasesavailable");
1581         }
1583         # Write out a form for confirming the action to compile all of the databases.
1585         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilealldatabases}, { Style => "pageheader" });
1586         $kiriwrite_presmodule->addlinebreak();
1587         $kiriwrite_presmodule->addlinebreak();
1589         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1590         $kiriwrite_presmodule->startbox();
1591         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1592         $kiriwrite_presmodule->addhiddendata("action", "compile");
1593         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1595         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilealldatabasesmessage});
1596         $kiriwrite_presmodule->addlinebreak();
1597         $kiriwrite_presmodule->addlinebreak();
1599         foreach $database (@database_list){
1601                 # Check if the database filename is blank.
1603                 if ($database eq ""){
1605                         # The database filename is blank so process
1606                         # the next database.
1608                         next;
1610                 }
1612                 # Check if the database filename is valid before
1613                 # using the database.
1615                 $database_name_filename_check   = kiriwrite_variablecheck($database, "filename", 0, 1);
1617                 if ($database_name_filename_check ne 0){
1619                         # The database filename is invalid so process
1620                         # the next database.
1622                         next;
1624                 }
1626                 $database_count++;
1627                 $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database);
1628                 $kiriwrite_presmodule->addhiddendata("name[" . $database_count . "]", "on");
1630         }
1632         $kiriwrite_presmodule->addhiddendata("count", $database_count);
1634         my $templateoverride_skip       = 0;
1635         my $templatedbwarning           = "";
1636         my @template_list;
1637         my $template_filename;
1638         my %template_info;
1639         my %template_dblist;
1640         tie(%template_dblist, "Tie::IxHash");
1642         $kiriwrite_dbmodule->connecttemplate();
1644         # Check if any errors occured while connecting to the
1645         # template database.
1647         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1649                 # The template database does not exist so skip processing
1650                 # the list of templates in the template database.
1652                 $templateoverride_skip = 1;
1653                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1655         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1657                 # The template database has invalid permissions set so
1658                 # skip processing the list of templates in the
1659                 # template database.
1661                 $templateoverride_skip = 1;
1662                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1664         }
1666         # Get the list of available templates if no errors had
1667         # occured.
1669         if ($templateoverride_skip ne 1){
1671                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1673                 # Check if any errors occured while getting the list of templates.
1675                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1677                         # A template database error has occured so skip processing the
1678                         # list of templates in the template database.
1680                         $templateoverride_skip = 1;
1681                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1683                 }
1685                 if ($templateoverride_skip ne 1){
1687                         foreach $template_file (@template_list){
1689                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1690                                 
1691                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1693                                         next;
1695                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1697                                         next;
1699                                 }
1701                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1703                         }
1705                 }
1707         }
1709         if ($templateoverride_skip eq 1){
1711                 # Add message saying why template can't be overridden.
1712                 $kiriwrite_presmodule->addtext($templatedbwarning);
1714         } else {
1716                 # Add overwrite template data.
1717                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1718                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1719                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1721                 foreach $template_file (keys %template_dblist){
1723                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1725                 }
1727                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1728                 $kiriwrite_presmodule->endselectbox();
1730         }
1732         # Disconnect from the template database and database server.
1734         $kiriwrite_dbmodule->disconnecttemplate();
1735         $kiriwrite_dbmodule->disconnect();
1737         $kiriwrite_presmodule->addlinebreak();
1738         $kiriwrite_presmodule->addlinebreak();
1740         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1741         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compilealldatabasesbutton});
1742         $kiriwrite_presmodule->addtext(" | ");
1743         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1744         $kiriwrite_presmodule->endbox();
1745         $kiriwrite_presmodule->endform();
1747         return $kiriwrite_presmodule->grab();
1752 sub kiriwrite_compile_list{
1753 #################################################################################
1754 # kiriwrite_compile_list: Shows a list of databases that can be compiled.       #
1755 #                                                                               #
1756 # Usage:                                                                        #
1757 #                                                                               #
1758 # kiriwrite_compile_list();                                                     #
1759 #################################################################################
1761         # Define the following variables that are going to be used before using 
1762         # the foreach function.
1764         my %database_info;
1765         my %database_list;
1766         my $database_count = 0;
1767         my $database_filename = "";
1768         my $database_filename_friendly = "";
1769         my $database_permissions = "";
1770         my $database_name = "";
1771         my $database_description = "";
1772         my $data_file = "";
1773         my @permissions_list;
1774         my @error_list;
1775         my $table_style = 0;
1776         my $table_style_name = "";
1777         my $database;
1779         tie(%database_list, 'Tie::IxHash');
1781         # Connect to the database server.
1783         $kiriwrite_dbmodule->connect();
1785         # Check if any errors occured while connecting to the database server.
1787         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1789                 # A database connection error has occured so return
1790                 # an error.
1792                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1794         }
1796         # Get the list of available databases and process any errors that
1797         # might have occured.
1799         my @database_list = $kiriwrite_dbmodule->getdblist();
1801         if ($kiriwrite_dbmodule->geterror eq "DataDirMissing"){
1803                 # The database directory is missing so return an error.
1805                 kiriwrite_error("datadirectorymissing");
1807         } elsif ($kiriwrite_dbmodule->geterror eq "DataDirInvalidPermissions"){
1809                 # The database directory has invalid permissions set so return
1810                 # an error.
1812                 kiriwrite_error("datadirectoryinvalidpermissions");
1814         }
1816         # Begin creating the table for the list of databases.
1818         foreach $data_file (@database_list){
1820                 # Select the database.
1822                 $kiriwrite_dbmodule->selectdb({ DatabaseName => $data_file });
1824                 # Check if any error occured while selecting the database.
1826                 if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1828                         # The database does not exist, so process the next
1829                         # database.
1831                         next;
1833                 } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet") {
1835                         # The database has invalid permissions settings, so
1836                         # add the database to the list of databases with
1837                         # invalid permissions set and process the next
1838                         # database.
1840                         push(@permissions_list, $data_file);
1841                         next;
1843                 }
1845                 # Get information about the database.
1847                 %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1849                 # Check if any error occured while getting information from the
1850                 # database.
1852                 if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1854                         # A database error has occured, add the database and specific
1855                         # error message to the list of databases with errors and
1856                         # process the next database.
1858                         push(@error_list, $data_file . ": " . $kiriwrite_dbmodule->geterror(1));
1859                         next;
1861                 }
1863                 $database_name          = $database_info{"DatabaseName"};
1864                 $database_description   = $database_info{"Description"};
1866                 # Create a friendly name for the database.
1868                 $database_filename_friendly = $data_file;
1870                 # Append the database information to the table.
1872                 $database_list{$database_count}{Filename}       = $database_filename_friendly;
1873                 $database_list{$database_count}{Name}           = $database_name;
1874                 $database_list{$database_count}{Description}    = $database_description;
1876                 $database_count++;
1878         }
1880         # Check if there are no valid databases are if there is no
1881         # valid databases then write a message saying that no
1882         # valid databases are available.
1884         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilepages}, { Style => "pageheader" });
1885         $kiriwrite_presmodule->addlinebreak();
1886         $kiriwrite_presmodule->addlinebreak();
1888         if ($database_count eq 0){
1890                 # There are no databases available for compiling so
1891                 # write a message instead.
1893                 $kiriwrite_presmodule->startbox("errorbox");
1894                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{nodatabasesavailable});
1895                 $kiriwrite_presmodule->endbox();
1897         } else {
1899                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1900                 $kiriwrite_presmodule->startbox();
1901                 $kiriwrite_presmodule->addhiddendata("mode", "compile");
1902                 $kiriwrite_presmodule->addhiddendata("action", "compile");
1903                 $kiriwrite_presmodule->addhiddendata("type", "multiple");
1905                 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{selectnone});
1906                 $kiriwrite_presmodule->addtext(" | ");
1907                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compileselectedbutton});
1908                 $kiriwrite_presmodule->addlinebreak();
1909                 $kiriwrite_presmodule->addlinebreak();
1910                 $kiriwrite_presmodule->addhiddendata("count", $database_count);
1911                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1913                 $kiriwrite_presmodule->startheader();
1914                 $kiriwrite_presmodule->addheader("", { Style => "tablecellheader" });
1915                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{database}->{databasename}, { Style => "tablecellheader" });
1916                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{database}->{databasedescription}, { Style => "tablecellheader" });
1917                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
1918                 $kiriwrite_presmodule->endheader();
1920                 $database_count = 1;
1922                 foreach $database (keys %database_list){
1924                         # Check the style to be used with.
1926                         if ($table_style eq 0){
1928                                 # Use the first style and set the style value
1929                                 # to use the next style, the next time the
1930                                 # if statement is checked.
1932                                 $table_style_name = "tablecell1";
1933                                 $table_style = 1;
1935                         } else {
1937                                 # Use the second style and set the style
1938                                 # value to use the first style, the next
1939                                 # time if statement is checked.
1941                                 $table_style_name = "tablecell2";
1942                                 $table_style = 0;
1943                         }
1945                         # Add the template to the list of available
1946                         # templates to compile.
1948                         $kiriwrite_presmodule->startrow();
1949                         $kiriwrite_presmodule->addcell($table_style_name);
1950                         $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database_list{$database}{Filename});
1951                         $kiriwrite_presmodule->addcheckbox("name[" . $database_count . "]");
1952                         $kiriwrite_presmodule->endcell();
1953                         $kiriwrite_presmodule->addcell($table_style_name);
1955                         if (!$database_list{$database}{Name}){
1956                                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile&action=compile&type=single&database=" . $database_list{$database}{Filename}, { Text => $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{noname}) });
1957                         } else {
1958                                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=page&action=view&database=" . $database_list{$database}{Filename}, { Text => $database_list{$database}{Name} });
1959                         }
1961                         $kiriwrite_presmodule->endcell();
1962                         $kiriwrite_presmodule->addcell($table_style_name);
1964                         if (!$database_list{$database}{Description}){
1965                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{nodescription});
1966                         } else {
1967                                 $kiriwrite_presmodule->addtext($database_list{$database}{Description});
1968                         }
1970                         $kiriwrite_presmodule->endcell();
1971                         $kiriwrite_presmodule->addcell($table_style_name);
1972                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile&action=compile&type=single&database=" . $database_list{$database}{Filename}, { Text => $kiriwrite_lang->{options}->{compile} });
1973                         $kiriwrite_presmodule->endcell();
1974                         $kiriwrite_presmodule->endrow();
1976                         $database_count++;
1978                 }
1980                 $kiriwrite_presmodule->endtable();
1981                 $kiriwrite_presmodule->endbox();
1982                 $kiriwrite_presmodule->endform();
1984         }
1986         # Disconnect from the database server.
1988         $kiriwrite_dbmodule->disconnect();
1990         # Check if any databases with problems have appeared and if they
1991         # have, print out a message saying which databases have problems.
1993         if (@permissions_list){
1995                 $kiriwrite_presmodule->addlinebreak();
1997                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseinvalidpermissions}, { Style => "smallpageheader" });
1998                 $kiriwrite_presmodule->addlinebreak();
1999                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseinvalidpermissionstext});
2000                 $kiriwrite_presmodule->addlinebreak();
2001  
2002                 foreach $database (@permissions_list){
2003  
2004                         $kiriwrite_presmodule->addlinebreak();
2005                         $kiriwrite_presmodule->addtext($database);
2006  
2007                 }
2009                 $kiriwrite_presmodule->addlinebreak();
2010  
2011         }
2013         if (@error_list){
2015                 $kiriwrite_presmodule->addlinebreak();
2017                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseerrors}, { Style => "smallpageheader" });
2018                 $kiriwrite_presmodule->addlinebreak();
2019                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseerrorstext});
2020                 $kiriwrite_presmodule->addlinebreak();
2022                 foreach $database (@error_list){
2024                         $kiriwrite_presmodule->addlinebreak();
2025                         $kiriwrite_presmodule->addtext($database);
2027                 }
2029         }
2031         return $kiriwrite_presmodule->grab();
2035 sub kiriwrite_compile_clean{
2036 #################################################################################
2037 # kiriwrite_compile_clean: Deletes the contents of the output directory.        #
2038 #                                                                               #
2039 # Usage:                                                                        #
2040 #                                                                               #
2041 # kiriwrite_compile_clean(confirm);                                             #
2042 #                                                                               #
2043 # confirm       Confirms the deletion of files from the output directory.       #
2044 #################################################################################
2046         # Get the values passed to the subroutine.
2048         my ($confirm) = @_;
2050         # Define some variables for later.
2052         my $file_permissions;
2053         my $output_directory_exists;
2054         my $output_directory_permissions;
2055         my $warning_message;
2057         # Check if the output directory exists.
2059         $output_directory_exists         = kiriwrite_fileexists($kiriwrite_config{"directory_data_output"});
2061         if ($output_directory_exists eq 1){
2063                 # The output directory does not exist so return
2064                 # an error.
2066                 kiriwrite_error("outputdirectorymissing");
2068         }
2070         # Check if the output directory has invalid
2071         # permissions set.
2073         $output_directory_permissions   = kiriwrite_filepermissions($kiriwrite_config{"directory_data_output"});
2075         if ($output_directory_permissions eq 1){
2077                 # The output directory has invalid permissions
2078                 # set, so return an error.
2080                 kiriwrite_error("outputdirectoryinvalidpermissions");
2082         }
2084         if ($confirm) {
2086                 if ($confirm eq 1){
2088                         # The action to clean the output directory has been
2089                         # confirmed.
2091                         # Remove the list of files and directories from the
2092                         # output directory.
2094                         $file_permissions = kiriwrite_compile_clean_helper($kiriwrite_config{"directory_data_output"}, 1);
2096                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectory}, { Style => "pageheader" });
2098                         if ($file_permissions eq 1){
2100                                 $kiriwrite_presmodule->addlinebreak();
2101                                 $kiriwrite_presmodule->addlinebreak();
2102                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{somecontentnotremoved});
2103                                 $kiriwrite_presmodule->addlinebreak();
2104                                 $kiriwrite_presmodule->addlinebreak();
2106                         } else {
2108                                 $kiriwrite_presmodule->addlinebreak();
2109                                 $kiriwrite_presmodule->addlinebreak();
2110                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{contentremoved});
2111                                 $kiriwrite_presmodule->addlinebreak();
2112                                 $kiriwrite_presmodule->addlinebreak();
2114                         }
2116                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
2118                         return $kiriwrite_presmodule->grab();
2120                 } else {
2122                         # A value other than 1 is set for the confirm value
2123                         # (which it shouldn't be) so return an error.
2125                         kiriwrite_error("invalidvariable");
2127                 }
2129         }
2131         # Print out a form for cleaning the output directory.
2133         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectory}, { Style => "pageheader" });
2134         $kiriwrite_presmodule->addlinebreak();
2135         $kiriwrite_presmodule->addlinebreak();
2136         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
2137         $kiriwrite_presmodule->startbox();
2138         $kiriwrite_presmodule->addhiddendata("mode", "compile");
2139         $kiriwrite_presmodule->addhiddendata("action", "clean");
2140         $kiriwrite_presmodule->addhiddendata("confirm", 1);
2141         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectorymessage});
2142         $kiriwrite_presmodule->addlinebreak();
2143         $kiriwrite_presmodule->addlinebreak();
2144         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{cleanoutputdirectorybutton});
2145         $kiriwrite_presmodule->addtext(" | ");
2146         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist}});
2147         $kiriwrite_presmodule->endbox();
2148         $kiriwrite_presmodule->endform();
2150         return $kiriwrite_presmodule->grab();
2154 sub kiriwrite_compile_clean_helper{
2155 #################################################################################
2156 # kiriwrite_compile_clean_helper: Helper for cleaning out the output directory. #
2157 # This command sometimes is called recursively (when a directory is found).     #
2158 #                                                                               #
2159 # Usage:                                                                        #
2160 #                                                                               #
2161 # kiriwrite_compile_clean_helper(directory, removedirectory, [permissions]);    #
2162 #                                                                               #
2163 # directory             Specifies the directory to remove files (and            #
2164 #                       sub-directories) from.                                  #
2165 # keepdirectory         Keeps the directory itself after all files have been    #
2166 #                       removed.                                                #
2167 # permissions           Used recursively for error checking.                    #
2168 #################################################################################
2170         # Get the values passed to the subroutine.
2172         my ($directory, $directory_keep, $permissions) = @_;
2174         # Check if the directory_keep is only one charater long.
2176         my $directory_file = "";
2177         my @directory_list;
2178         my $file_permissions = 0;
2179         my $debug = 0;
2181         # Check if the file permissions value is blank.
2183         if (!$permissions){
2185                 # The file permissions value is blank.
2187                 $permissions = 0;
2189         }
2191         # Open the directory specified, read the contents of
2192         # the directory and then close the directory.
2194         opendir(DIRECTORY, $directory);
2195         @directory_list = readdir(DIRECTORY);
2196         closedir(DIRECTORY);
2198         # Remove each file and directory.
2200         foreach $directory_file (@directory_list){
2202                 # Check if the filename is '.' or '..' and if it
2203                 # is skip those files.
2205                 if ($directory_file eq "." || $directory_file eq ".."){
2207                         # The filename is '.' or '..' so skip processing
2208                         # these files.
2210                 } else {
2212                         # Check if the permissions on the file or directory has
2213                         # valid permissions set.
2215                         $file_permissions = kiriwrite_filepermissions($directory . '/' . $directory_file, 1, 1);
2217                         if ($file_permissions eq 1){
2219                                 # The file or directory has invalid permissions set.
2221                                 $permissions = 1;
2222                                 next;
2224                         }
2226                         # Check if the filename is a directory.
2228                         if (-d $directory . '/' . $directory_file){
2230                                 # The filename is a directory so send the directory name
2231                                 # and this subroutine again (recursively).
2233                                 kiriwrite_compile_clean_helper($directory . '/' . $directory_file, 0, $permissions);
2235                         } else {
2237                                 # The file is not a directory but an actual file so
2238                                 # remove as normal (in terms of the Perl language).
2240                                 ($directory) = $directory =~ m/^(.*)$/g;
2241                                 ($directory_file) = $directory_file =~ m/^(.*)$/g;
2243                                 # Check if the directory is undefined and if it is then
2244                                 # set it to blank.
2246                                 if (!$directory){
2247                                         $directory = "";
2248                                 }
2250                                 if (!$directory_file){
2251                                         $directory_file = "";
2252                                 }
2254                                 unlink($directory . '/' . $directory_file);
2256                         }
2258                 }
2260         }
2262         # Check if the directory should be kept.
2264         if ($directory_keep eq 1){
2266                 # The directory_keep value is set as 1 so the directory
2267                 # specified should be kept.
2269         } elsif ($directory_keep eq 0) {
2271                 # The directory_keep value is set as 0 so remove the
2272                 # directory specified.
2274                 ($directory) = $directory =~ m/^(.*)$/g;
2275                 rmdir($directory);
2277         } else {
2279                 # A value other than 0 or 1 was specified so return
2280                 # an error,
2282                 kiriwrite_error('invalidvalue');
2284         }
2286         return $permissions;
2291 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