Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Other Additions
[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 eq "on"){
216         } elsif (!$override){
217         } else {
219                 # The override value is invalid so return an error.
221                 kiriwrite_error("overridetemplatevalueinvalid");
223         }
225         # Check if the override template filename is valid and
226         # return an error if it isn't.
228         kiriwrite_variablecheck($override_template, "utf8", 0, 0);
229         $override_template      = kiriwrite_utf8convert($override_template);
230         $kiriwrite_overridetemplatefilename_length_check        = kiriwrite_variablecheck($override_template, "maxlength", 64, 1);
231         $kiriwrite_overridetemplatefilename_filename_check      = kiriwrite_variablecheck($override_template, "filename", "", 1);
233         if ($kiriwrite_overridetemplatefilename_length_check eq 1){
235                 # The override template filename given is too long
236                 # so return an error.
238                 kiriwrite_error("overridetemplatetoolong");
240         }
242         if ($kiriwrite_overridetemplatefilename_filename_check eq 2 && $override_template ne "!none"){
244                 # The override template filename is invalid so
245                 # return an error.
247                 kiriwrite_error("overridetemplateinvalid");
249         }
251         # Check if the confirm value is blank and if it
252         # is then set the confirm value to 0.
254         if (!$confirm){
256                 # The confirm value is blank, so set the
257                 # confirm value to 0.
259                 $confirm = 0;
261         }
263         # Check if there are any databases selected
264         # and return an error if there isn't.
266         if (!@selectedlist){
268                 # There are no databases in the array
269                 # so return an error.
271                 kiriwrite_error("nodatabaseselected");
273         }
275         # Check if the type given is no more than
276         # 7 characters long.
278         my $type_maxlength_check = kiriwrite_variablecheck($type, "maxlength", 8, 1);
280         if ($type_maxlength_check eq 1){
282                 # The type length given is too long so
283                 # return an error.
285                 kiriwrite_error("variabletoolong");
287         }
289         # Check if the action to compile the databases
290         # has been confirmed.
292         if ($confirm eq 1){
294                 # The action to compile the datavases has
295                 # been confirmed.
297                 # Define some variables for later.
299                 my %database_info;
300                 my %filter_info;
301                 my %template_info;
302                 my %page_info;
303                 my %templatefiles;
304                 my @page_filenames;
305                 my @databaseinfo;
306                 my @databasepages;
307                 my @filterslist;
308                 my @findfilter;
309                 my @replacefilter;
310                 my @templateslist;
311                 my @pagedirectories;
312                 my @database_filters;
313                 my $warning_count               = 0;
314                 my $error_count                 = 0;
315                 my $pages_count                 = 0;
316                 my $filter;
317                 my $filters_count               = 0;
318                 my $filters_find_blank_warning  = 0;
319                 my $filter_find;
320                 my $filter_replace;
321                 my $database;
322                 my $database_name;
323                 my $page_filename;
324                 my $page_filename_check;
325                 my $page_filename_char          = "";
326                 my $page_filename_directory;
327                 my $page_filename_length        = 0;
328                 my $page_filename_seek          = 0;
329                 my $page_filename_dircount      = 0;
330                 my $page_filename_exists        = 0;
331                 my $page_filename_permissions   = 0;
332                 my $page_directory_name;
333                 my $page_directory_path;
334                 my $page_name;
335                 my $page_description;
336                 my $page_section;
337                 my $page_template;
338                 my $page_content;
339                 my $page_settings;
340                 my $page_lastmodified;
341                 my $page_title;
342                 my $page_final;
343                 my $page_autosection;
344                 my $page_autotitle;
345                 my $page;
346                 my $database_filename_check     = 0;
347                 my $database_maxlength_check    = 0;
348                 my $output_exists               = 0;
349                 my $output_permissions          = 0;
350                 my $filters_exists              = 0;
351                 my $filters_permissions         = 0;
352                 my $filters_skip                = 0;
353                 my $template;
354                 my $templates_skip              = 0;
355                 my $information_prefix          = $kiriwrite_lang->{compile}->{informationprefix};
356                 my $error_prefix                = $kiriwrite_lang->{compile}->{errorprefix};
357                 my $warning_prefix              = $kiriwrite_lang->{compile}->{warningprefix};
358                 my $filehandle_page;
360                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compiledatabases}, { Style => "pageheader" });
361                 $kiriwrite_presmodule->addlinebreak();
362                 $kiriwrite_presmodule->addlinebreak();
363                 $kiriwrite_presmodule->startbox("datalist");
365                 # Check if the output directory exists and has
366                 # valid permissions set.
368                 $output_exists          = kiriwrite_fileexists($kiriwrite_config{'directory_data_output'});
370                 if ($output_exists ne 0){
372                         # The output directory does not exist so
373                         # return an error.
375                         kiriwrite_error("outputdirectorymissing");
377                 }
379                 $output_permissions     = kiriwrite_filepermissions($kiriwrite_config{'directory_data_output'}, 1, 1);
381                 if ($output_permissions ne 0){
383                         # The output directory has invalid
384                         # permissions set so return an error.
386                         kiriwrite_error("outputdirectoryinvalidpermissions");
388                 }
390                 # Connect to the database server.
392                 $kiriwrite_dbmodule->connect();
394                 # Check if any errors occured while connecting to the database server.
396                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
398                         # A database connection error has occured so return
399                         # an error.
401                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
403                 }
405                 # Connect to the filter database.
407                 $kiriwrite_dbmodule->connectfilter();
409                 # Check if any error has occured while connecting to the filter
410                 # database.
412                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
414                         # The filter database does not exist so write a warning message.
416                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{filterdatabasemissing});
417                         $kiriwrite_presmodule->addlinebreak();
418                         $filters_skip = 1;
419                         $warning_count++;
421                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
423                         # The filter database has invalid permissions set so write a
424                         # an error message.
426                         $kiriwrite_presmodule->addtext($error_prefix . $kiriwrite_lang->{compile}->{filterdatabasepermissions});
427                         $kiriwrite_presmodule->addlinebreak();
428                         $filters_skip = 1;
429                         $error_count++;
431                 }
433                 # Load the filter database (if the filters skip
434                 # value isn't set to 1).
436                 if ($filters_skip eq 0){
438                         # Get the list of available filters.
440                         @database_filters       = $kiriwrite_dbmodule->getfilterlist();
442                         # Check if any errors occured while getting the list of filters.
444                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
446                                 # A database error has occured with the filter database.
448                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{filterdatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
449                                 $kiriwrite_presmodule->addlinebreak();
450                                 $error_count++;
452                         }
454                         # Check if the filters skip value is set to 0
455                         # before executing the query.
457                         if ($filters_skip eq 0){
459                                 foreach $filter (@database_filters){
461                                         # Get the filter information.
463                                         %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter, Reduced => 1 });
465                                         # Check if any errors occured while getting the filter information.
467                                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
469                                                 # A database error occured while using the filter database.
471                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{filterdatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
472                                                 $kiriwrite_presmodule->addlinebreak();
473                                                 $error_count++;
474                                                 next;
476                                         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
478                                                 # The filter does not exist so process the next filter.
480                                                 next;
482                                         }
484                                         # Check if the find filter is blank and
485                                         # if it is then write a warning message.
487                                         if (!$filter_info{"FilterFind"}){
489                                                 if ($filters_find_blank_warning ne 1){
491                                                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{findfilterblank});
492                                                         $kiriwrite_presmodule->addlinebreak();
493                                                         $filters_find_blank_warning = 1;
494                                                 }
495                                                 next;
497                                         } else {
499                                                 # Add each find and replace filter.
501                                                 $findfilter[$filters_count]     = $filter_info{"FilterFind"};
502                                                 $replacefilter[$filters_count]  = $filter_info{"FilterReplace"};
504                                         }
506                                         $filters_count++;
508                                 }
510                                 $kiriwrite_presmodule->addtext($information_prefix . $kiriwrite_lang->{compile}->{finishfilterdatabase});
511                                 $kiriwrite_presmodule->addlinebreak();
513                         }
515                 }
517                 # Disconnect from the filter database.
519                 $kiriwrite_dbmodule->disconnectfilter();
521                 # Connect to the template database.
523                 $kiriwrite_dbmodule->connecttemplate();
525                 # Check if any errors occured while connecting to the template database.
527                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
529                         # The template database does not exist so set the template
530                         # warning message.
532                         $kiriwrite_presmodule->addtext($warning_prefix . $kiriwrite_lang->{compile}->{templatedatabasemissing});
533                         $kiriwrite_presmodule->addlinebreak();
534                         $templates_skip = 1;
535                         $warning_count++;
537                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
539                         # The template database has invalid permissions set so write
540                         # the template warning message.
541  
542                         $kiriwrite_presmodule->addtext($error_prefix . $kiriwrite_lang->{compile}->{templatedatabasepermissions});
543                         $kiriwrite_presmodule->addlinebreak();
544                         $templates_skip = 1;
545                         $error_count++;
547                 }
549                 # Check if the template skip value isn't set and if it isn't
550                 # then get the list of templates.
552                 if (!$templates_skip){
554                         @templateslist = $kiriwrite_dbmodule->gettemplatelist();
556                         # Check if any errors had occured.
558                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
560                                 # A database error occured while getting the list
561                                 # of templates so return a warning message with the 
562                                 # extended error information.
564                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatedatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
565                                 $templates_skip = 1;
566                                 $error_count++;
568                         }
570                         # Check if the template skip value isn't set and if it isn't
571                         # then process each template.
573                         if (!$templates_skip){
575                                 # Process each template.
577                                 foreach $template (@templateslist){
579                                         # Get information about the template.
581                                         %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template });
583                                         # Check if any error occured while getting the template information.
585                                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
587                                                 # A database error has occured, so return an error.
589                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatedatabaseerror}, $kiriwrite_dbmodule->geterror(1)));
590                                                 $error_count++;
592                                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
594                                                 # The template does not exist, so process the next template.
596                                                 next;
598                                         }
600                                         # Place each template file into the hash.
602                                         $templatefiles{$template_info{"TemplateFilename"}}{template}    = $template_info{"TemplateLayout"};
603                                         $templatefiles{$template_info{"TemplateFilename"}}{valid}       = 1;
605                                 }
607                                 $kiriwrite_presmodule->addtext($information_prefix . $kiriwrite_lang->{compile}->{finishtemplatedatabase});
608                                 $kiriwrite_presmodule->addlinebreak();
610                         }
612                 }
614                 # Disconnect from the template database.
616                 $kiriwrite_dbmodule->disconnecttemplate();
618                 # Process each database.
620                 foreach $database (@selectedlist){
622                         # Check if the database filename and length
623                         # are valid.
625                         $kiriwrite_presmodule->addhorizontalline();
627                         $database_filename_check        = kiriwrite_variablecheck($database, "page_filename", "", 1);
628                         $database_maxlength_check       = kiriwrite_variablecheck($database, "maxlength", 32, 1);
630                         if ($database_filename_check ne 0){
632                                 # The database filename is invalid, so process
633                                 # the next database.
635                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefilenameinvalidcharacters}, $database));
636                                 $kiriwrite_presmodule->addlinebreak();
637                                 $error_count++;
638                                 next;
640                         }
642                         if ($database_maxlength_check ne 0){
644                                 # The database file is too long, so process the
645                                 # next database.
647                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefilenametoolong}, $database));
648                                 $kiriwrite_presmodule->addlinebreak();
649                                 $error_count++;
650                                 next;
652                         }
654                         # Select the database.
656                         $kiriwrite_dbmodule->selectdb({ DatabaseName => $database });
658                         # Check if any errors had occured while selecting the database.
660                         if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
662                                 # The database does not exist, so write a warning message.
664                                 $kiriwrite_presmodule->addtext($warning_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasemissing}, $database));
665                                 $kiriwrite_presmodule->addlinebreak();
666                                 $warning_count++;
667                                 next;
669                         } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
671                                 # The database has invalid permissions set, so write
672                                 # an error message.
674                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databaseinvalidpermissions}, $database));
675                                 $kiriwrite_presmodule->addlinebreak();
676                                 $error_count++;
677                                 next;
679                         }
681                         # Get information about the database.
683                         my %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
685                         # Check if any error occured while getting the database information.
687                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
689                                 # A database error has occured so write an error.
691                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databaseerror}, $database, $kiriwrite_dbmodule->geterror(1)));
692                                 $kiriwrite_presmodule->addlinebreak();
693                                 $error_count++;
694                                 next;
696                         };
698                         # Get the database name.
700                         $database_name = $database_info{"DatabaseName"};
702                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{compilingpages}, $database_name));
703                         $kiriwrite_presmodule->addlinebreak();
705                         # Get the list of pages in the database.
707                         @databasepages = $kiriwrite_dbmodule->getpagelist();
709                         # Check if any errors occured while getting the list of pages.
711                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
713                                 # A database error has occured so return an error and
714                                 # also the extended error information.
716                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasepageerror}, $database, $kiriwrite_dbmodule->geterror(1)));
717                                 $kiriwrite_presmodule->addlinebreak();
718                                 $error_count++;
719                                 next;
721                         }
723                         foreach $page (@databasepages) {
725                                 # Get information about the page.
727                                 %page_info = $kiriwrite_dbmodule->getpageinfo({ PageFilename => $page });
729                                 $page_filename          = $page_info{"PageFilename"};
730                                 $page_name              = $page_info{"PageName"};
731                                 $page_description       = $page_info{"PageDescription"};
732                                 $page_section           = $page_info{"PageSection"};
733                                 $page_template          = $page_info{"PageTemplate"};
734                                 $page_content           = $page_info{"PageContent"};
735                                 $page_settings          = $page_info{"PageSettings"};
736                                 $page_lastmodified      = $page_info{"PageLastModified"};
738                                 # Check if the filename is valid.
740                                 $page_filename_check = kiriwrite_variablecheck($page_filename, "page_filename", 0, 1);
742                                 if ($page_filename_check ne 0){
744                                         # The file name is not valid so write a
745                                         # error and process the next page.
747                                         $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{invalidpagefilename}, $page_name));
748                                         $kiriwrite_presmodule->addlinebreak();
749                                         $error_count++;
750                                         next;
752                                 }
754                                 # Check if the template with the filename does not exist
755                                 # in the template files hash and write a message and
756                                 # process the next page.
758                                 if ($override eq "on"){
760                                         $page_template = $override_template;
762                                 }
764                                 if (!$templatefiles{$page_template}{valid} && $page_template ne "!none" && $templates_skip eq 0){
766                                         $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{templatefilemissing}, $page_template, $page_name, $page_filename));
767                                         $kiriwrite_presmodule->addlinebreak();
768                                         $error_count++;
769                                         next;
771                                         $page_final = $page_content;
773                                 } elsif ($page_template eq "!none"){
775                                         $page_final = $page_content;
777                                 } else {
779                                         $page_final = $templatefiles{$page_template}{template};
781                                         if (!$page_final){
782                                                 $page_final = "";
783                                         }
785                                         $page_final =~ s/<kiriwrite:pagecontent>/$page_content/g;
787                                 }
789                                 # Create the combined page title (if needed).
791                                 if ($page_settings eq 0 || $page_settings > 3){
793                                         # Don't use page name or section name.
795                                         $page_final =~ s/<kiriwrite:pagetitle>//g;
797                                 } elsif ($page_settings eq 1){
799                                         # Use the page name and section name.
801                                         $page_autotitle = "(" . $page_section . " - " . $page_name . ")";
802                                         $page_title = $page_section . " - " . $page_name;
803                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_title/g;
805                                 } elsif ($page_settings eq 2){
807                                         # Use the page name only.
809                                         $page_autotitle = "(" . $page_name . ")";
810                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_name/g;
812                                 } elsif ($page_settings eq 3){
814                                         # Use the section name only.
816                                         if ($page_section){
817                                                 $page_autotitle = "(" . $page_section . ")";
818                                         }
819                                         $page_final =~ s/<kiriwrite:pagetitle>/$page_section/g;
821                                 }
823                                 # Check if the section name is not blank and
824                                 # place brackets inbetween if it is.
826                                 if ($page_section){
828                                         $page_autosection = "(" . $page_section . ")";
830                                 }
832                                 # Replace each <kiriwrite> value with the apporiate page
833                                 # values.
835                                 $page_final =~ s/<kiriwrite:pagename>/$page_name/g;
836                                 $page_final =~ s/<kiriwrite:pagedescription>/$page_description/g;
837                                 $page_final =~ s/<kiriwrite:pagesection>/$page_section/g;
838                                 $page_final =~ s/<kiriwrite:autosection>/$page_autosection/g;
839                                 $page_final =~ s/<kiriwrite:autotitle>/$page_autotitle/g;
841                                 # Process the filters on the page data.
843                                 if ($filters_skip eq 0){
845                                         $filters_count = 0;
847                                         foreach $filter_find (@findfilter){
849                                                 # Get the replace filter and process each
850                                                 # filter on the page.
852                                                 $filter_replace = $replacefilter[$filters_count];
853                                                 $page_final =~ s/$filter_find/$filter_replace/g;
854                                                 $filters_count++;
856                                         }
858                                 }
860                                 # Process the page filename and check what directories
861                                 # need to be created.
863                                 $page_filename_length = int(length($page_filename));
865                                 do {
867                                         $page_filename_char = substr($page_filename, $page_filename_seek, 1);
869                                         # Check if a forward slash appears and add it to
870                                         # the list of directories array.
872                                         if ($page_filename_char eq '/'){
874                                                 # Append the directory name to the list of
875                                                 # directories array.
877                                                 $pagedirectories[$page_filename_dircount] = $page_filename_directory;
878                                                 $page_filename_directory        = "";
879                                                 $page_filename_char             = "";
880                                                 $page_filename_dircount++;
882                                         } else {
884                                                 # Append the character to the directory/filename.
886                                                 $page_filename_directory = $page_filename_directory . $page_filename_char;
888                                         }
890                                         $page_filename_seek++;
892                                 } until ($page_filename_length eq $page_filename_seek);
894                                 foreach $page_directory_name (@pagedirectories){
896                                         # Check if the directory name is undefined and if it
897                                         # is then set it blank.
899                                         if (!$page_directory_name){
900                                                 $page_directory_name = "";
901                                         }
903                                         if (!$page_directory_path){
904                                                 $page_directory_path = "";
905                                         }
907                                         # Check if the directory exists and create 
908                                         # the directory if it doesn't exist.
910                                         $page_directory_path = $page_directory_path . '/' . $page_directory_name;
912                                         mkdir($kiriwrite_config{"directory_data_output"} . '/' . $page_directory_path);
914                                 }
916                                 # Check if the file already exists and if it does then check
917                                 # the permissions of the file and return an error if the
918                                 # permissions set are invalid.
920                                 $page_filename_exists = kiriwrite_fileexists($kiriwrite_config{"directory_data_output"} . '/' . $page_filename);        
922                                 if ($page_filename_exists eq 0){
924                                         # The page filename exists, so check if the permissions given are
925                                         # valid.
927                                         $page_filename_permissions = kiriwrite_filepermissions($kiriwrite_config{"directory_data_output"} . '/' . $page_filename, 1, 1);
929                                         if ($page_filename_permissions eq 1){
931                                                 # The file has invalid permissions set.
933                                                 $kiriwrite_presmodule->addtext($error_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{pageinvalidpermissions}, $page_filename));
934                                                 $kiriwrite_presmodule->addlinebreak();
935                                                 $error_count++;
937                                                 # Reset certain values.
939                                                 $page_autotitle = "";
940                                                 $page_autosection = "";
941                                                 $page_filename_seek = 0;
942                                                 $page_filename_dircount = 0;
944                                                 $page_filename_directory = "";
945                                                 $page_directory_path = "";
946                                                 $page_directory_name = "";
947                                                 @pagedirectories = ();
948                                                 
949                                                 next;
951                                         }
953                                 }
955                                 # Reset certain values.
957                                 $page_autotitle = "";
958                                 $page_autosection = "";
959                                 $page_filename_seek = 0;
960                                 $page_filename_dircount = 0;
962                                 $page_filename_directory = "";
963                                 $page_directory_path = "";
964                                 $page_directory_name = "";
965                                 @pagedirectories = ();
967                                 # Write the file to the output directory.
969                                 ($page_filename) = $page_filename =~ m/^(.*)$/g;
970                                 ($kiriwrite_config{"directory_data_output"}) = $kiriwrite_config{"directory_data_output"} =~ m/^(.*)$/g;
972                                 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);
974                                 if (!$page_final){
976                                         $page_final = "";
978                                 }
980                                 binmode $filehandle_page, ':utf8';
981                                 print $filehandle_page $page_final;
982                                 close($filehandle_page);
984                                 # Write a message saying the page has been compiled. Check
985                                 # to see if the page name is blank and write a message
986                                 # saying there's no page name.
988                                 if (!$page_name){
989                                         $kiriwrite_presmodule->addtext($information_prefix . ' ');
990                                         $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{noname} . ' ');
991                                         $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compiledpageblankname}, $page_filename));
992                                 } else {
993                                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{compiledpage}, $page_name, $page_filename));
994                                 }
997                                 $kiriwrite_presmodule->addlinebreak();
998                                 $pages_count++;
1000                         }
1002                         # Write a message saying that the database has
1003                         # been processed.
1005                         $kiriwrite_presmodule->addtext($information_prefix . kiriwrite_language($kiriwrite_lang->{compile}->{databasefinish}, $database_name));
1006                         $kiriwrite_presmodule->addlinebreak();
1008                 }
1010                 # Disconnect from the database server.
1012                 $kiriwrite_dbmodule->disconnect();
1014                 $kiriwrite_presmodule->addhorizontalline();
1015                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compileresults}, $pages_count, $error_count, $warning_count));
1016                 $kiriwrite_presmodule->endbox();
1017                 $kiriwrite_presmodule->addlinebreak();
1018                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1020                 return $kiriwrite_presmodule->grab();
1022         } elsif ($confirm eq 0){
1024                 # The action to compile the databases has
1025                 # not been confirmed so check what type
1026                 # is being used.
1028                 # Get the list of templates for overwriting the
1029                 # template if needed.
1031                 my $templateoverride_skip       = 0;
1032                 my $templatedbwarning           = "";
1033                 my @template_list;
1034                 my $template_filename;
1035                 my %template_info;
1036                 my %template_dblist;
1037                 tie(%template_dblist, "Tie::IxHash");
1039                 if ($type eq "single"){
1041                         # The type is a single database selected so
1042                         # process that database.
1044                         # Define some variables for later.
1046                         my %database_info; 
1047                         my $database_filename_check;
1048                         my $database_maxlength_check;
1049                         my $databasefilename;
1050                         my $database_name;
1052                         # Check that the database name and length are
1053                         # valid and return an error if they aren't.
1055                         $databasefilename = $selectedlist[0];
1057                         # Connect to the database server.
1059                         $kiriwrite_dbmodule->connect();
1061                         # Check if any errors occured while connecting to the database server.
1063                         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1065                                 # A database connection error has occured so return
1066                                 # an error.
1068                                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1070                         }
1072                         # Select the database.
1074                         $kiriwrite_dbmodule->selectdb({ DatabaseName => $databasefilename });
1076                         # Check if any errors had occured while selecting the database.
1078                         if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1080                                 # The database does not exist, so return an error.
1082                                 kiriwrite_error("databasemissingfile");
1084                         } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
1086                                 # The database has invalid permissions set, so return
1087                                 # an error.
1089                                 kiriwrite_error("databaseinvalidpermissions");
1091                         }
1093                         # Get information about the database.
1095                         %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1097                         # Check if any error occured while getting the database information.
1099                         if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1101                                 # A database error has occured so return an error and
1102                                 # also the extended error information.
1104                                 kiriwrite_error("databaseerror", $kiriwrite_dbmodule->geterror(1));
1106                         };
1108                         $database_name = $database_info{"DatabaseName"};
1110                         $kiriwrite_dbmodule->connecttemplate();
1112                         # Check if any errors occured while connecting to the
1113                         # template database.
1115                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1117                                 # The template database does not exist so skip processing
1118                                 # the list of templates in the template database.
1120                                 $templateoverride_skip = 1;
1121                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1123                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1125                                 # The template database has invalid permissions set so
1126                                 # skip processing the list of templates in the
1127                                 # template database.
1129                                 $templateoverride_skip = 1;
1130                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1132                         }
1134                         # Get the list of available templates if no errors had
1135                         # occured.
1137                         if ($templateoverride_skip ne 1){
1139                                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1141                                 # Check if any errors occured while getting the list of templates.
1143                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1145                                         # A template database error has occured so skip processing the
1146                                         # list of templates in the template database.
1148                                         $templateoverride_skip = 1;
1149                                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1151                                 }
1153                                 if ($templateoverride_skip ne 1){
1155                                         foreach $template_file (@template_list){
1157                                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1158                                                 
1159                                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1161                                                         next;
1163                                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1165                                                         next;
1167                                                 }
1169                                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1171                                         }
1173                                 }
1175                         }
1177                         # Disconnect from the template database and database server.
1179                         $kiriwrite_dbmodule->disconnecttemplate();
1180                         $kiriwrite_dbmodule->disconnect();
1182                         # Write out a form asking the user to confirm if the
1183                         # user wants to compile the selected database.
1185                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compiledatabase}, { Style => "pageheader" });
1186                         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1187                         $kiriwrite_presmodule->startbox();
1188                         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1189                         $kiriwrite_presmodule->addhiddendata("action", "compile");
1190                         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1191                         $kiriwrite_presmodule->addhiddendata("id[1]", $databasefilename);
1192                         $kiriwrite_presmodule->addhiddendata("name[1]", "on");
1193                         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1194                         $kiriwrite_presmodule->addlinebreak();
1195                         $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{compile}->{compiledatabasemessage}, $database_name));
1196                         $kiriwrite_presmodule->addlinebreak();
1197                         $kiriwrite_presmodule->addlinebreak();
1199                         if ($templateoverride_skip eq 1){
1201                                 # Add message saying why template can't be overridden.
1202                                 $kiriwrite_presmodule->addtext($templatedbwarning);
1204                         } else {
1206                                 # Add overwrite template data.
1207                                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1208                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1209                                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1211                                 foreach $template_file (keys %template_dblist){
1213                                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1215                                 }
1217                                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1218                                 $kiriwrite_presmodule->endselectbox();
1220                         }
1222                         $kiriwrite_presmodule->addlinebreak();
1223                         $kiriwrite_presmodule->addlinebreak();
1224                         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compiledatabasebutton});
1225                         $kiriwrite_presmodule->addtext(" | ");
1226                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1227                         $kiriwrite_presmodule->endbox();
1228                         $kiriwrite_presmodule->endform();
1230                         return $kiriwrite_presmodule->grab();
1232                 } elsif ($type eq "multiple"){
1234                         # The type is multiple databases selected
1235                         # so process each database.
1237                         # Define some variables for later.
1239                         my %database_list;
1240                         my $databasename;
1241                         my $database;
1242                         my $database_filename_check;
1243                         my $database_maxlength_check;
1244                         my $database_count = 0;
1245                         my $database_info_name;
1247                         # Connect to the database server.
1249                         $kiriwrite_dbmodule->connect();
1251                         # Check if any errors occured while connecting to the database server.
1253                         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1255                                 # A database connection error has occured so return
1256                                 # an error.
1258                                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1260                         }
1262                         foreach $databasename (@selectedlist){
1264                                 # Check if the database is in the database
1265                                 # directory and skip it if it isn't.
1266  
1267                                 $database_filename_check        = kiriwrite_variablecheck($databasename, "filename", "", 1);
1268                                 $database_maxlength_check       = kiriwrite_variablecheck($databasename, "maxlength", 32, 1);
1269  
1270                                 if ($database_filename_check ne 0 || $database_maxlength_check ne 0){
1271  
1272                                         # The database filename given is invalid or
1273                                         # the database filename given is too long
1274                                         # so process the next database.
1275  
1276                                         next;
1277  
1278                                 }
1280                                 # Select the database to add the page to.
1282                                 $kiriwrite_dbmodule->selectdb({ DatabaseName => $databasename });
1284                                 # Check if any errors had occured while selecting the database.
1286                                 if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1288                                         # The database does not exist, so process the next database.
1290                                         next;
1292                                 } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet"){
1294                                         # The database has invalid permissions set, so process
1295                                         # the next database.
1297                                         next;
1299                                 }
1301                                 # Get information about the database.
1303                                 my %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1305                                 # Check if any error occured while getting the database information.
1307                                 if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1309                                         # A database error has occured so process the next
1310                                         # database.
1312                                         next;
1314                                 };
1316                                 $database_list{$database_count}{Name}           = $database_info{"DatabaseName"};
1317                                 $database_list{$database_count}{Filename}       = $databasename;
1319                                 $database_count++;
1321                         }
1323                         # Check if any databases are available to be compiled.
1325                         if ($database_count eq 0){
1327                                 # No databases are available to be compiled.
1329                                 kiriwrite_error("nodatabaseselected");
1331                         }
1333                         # Write out the form for compiling the database.
1335                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compileselecteddatabases}, { Style => "pageheader" });
1336                         $kiriwrite_presmodule->addlinebreak();
1337                         $kiriwrite_presmodule->addlinebreak();
1338                         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1339                         $kiriwrite_presmodule->startbox();
1340                         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1341                         $kiriwrite_presmodule->addhiddendata("action", "compile");
1342                         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1343                         $kiriwrite_presmodule->addhiddendata("count", $database_count);
1344                         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1345                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compileselecteddatabasesmessage});
1346                         $kiriwrite_presmodule->addlinebreak();
1347                         $kiriwrite_presmodule->addlinebreak();
1348                         $kiriwrite_presmodule->startbox("datalist");
1350                         $database_count = 0;
1352                         # write out the list of databases to compile.
1354                         foreach $database (keys %database_list){
1356                                 $database_count++;
1358                                 $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database_list{$database}{Filename});
1359                                 $kiriwrite_presmodule->addhiddendata("name[" . $database_count . "]", "on");
1361                                 # Check if the database name is undefined and if it is
1362                                 # then write a message saying the database name is blank.
1364                                 if (!$database_list{$database}{Name}){
1365                                         $kiriwrite_presmodule->additalictext($kiriwrite_lang->{compile}->{blankdatabasename});
1366                                 } else {
1367                                         $kiriwrite_presmodule->addtext($database_list{$database}{Name});
1368                                 }
1370                                 $kiriwrite_presmodule->addlinebreak();
1372                         }
1374                         $kiriwrite_presmodule->endbox();
1376                         $kiriwrite_presmodule->addlinebreak();
1378                         $kiriwrite_dbmodule->connecttemplate();
1380                         # Check if any errors occured while connecting to the
1381                         # template database.
1383                         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1385                                 # The template database does not exist so skip processing
1386                                 # the list of templates in the template database.
1388                                 $templateoverride_skip = 1;
1389                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1391                         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1393                                 # The template database has invalid permissions set so
1394                                 # skip processing the list of templates in the
1395                                 # template database.
1397                                 $templateoverride_skip = 1;
1398                                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1400                         }
1402                         # Get the list of available templates if no errors had
1403                         # occured.
1405                         if ($templateoverride_skip ne 1){
1407                                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1409                                 # Check if any errors occured while getting the list of templates.
1411                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1413                                         # A template database error has occured so skip processing the
1414                                         # list of templates in the template database.
1416                                         $templateoverride_skip = 1;
1417                                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1419                                 }
1421                                 if ($templateoverride_skip ne 1){
1423                                         foreach $template_file (@template_list){
1425                                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1426                                                 
1427                                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1429                                                         next;
1431                                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1433                                                         next;
1435                                                 }
1437                                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1439                                         }
1441                                 }
1443                         }
1445                         if ($templateoverride_skip eq 1){
1447                                 # Add message saying why template can't be overridden.
1448                                 $kiriwrite_presmodule->addtext($templatedbwarning);
1450                         } else {
1452                                 # Add overwrite template data.
1453                                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1454                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1455                                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1457                                 foreach $template_file (keys %template_dblist){
1459                                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1461                                 }
1463                                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1464                                 $kiriwrite_presmodule->endselectbox();
1466                         }
1468                         # Disconnect from the template database and database server.
1470                         $kiriwrite_dbmodule->disconnecttemplate();
1471                         $kiriwrite_dbmodule->disconnect();
1473                         $kiriwrite_presmodule->addlinebreak();
1474                         $kiriwrite_presmodule->addlinebreak();
1475                         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compileselecteddatabasesbutton});
1476                         $kiriwrite_presmodule->addtext(" | ");
1477                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1478                         $kiriwrite_presmodule->endbox();
1479                         $kiriwrite_presmodule->endform();
1481                         return $kiriwrite_presmodule->grab();
1483                 } else {
1485                         # The type is something else other than
1486                         # single or multiple, so return an error.
1488                         kiriwrite_error("invalidvariable");
1490                 }
1492         } else {
1494                 # The confirm value is neither 0 or 1, so
1495                 # return an error.
1497                 kiriwrite_error("invalidvariable");
1499         }
1503 sub kiriwrite_compile_all{
1504 #################################################################################
1505 # kiriwrite_compile_all: Compile all of the databases in the database           #
1506 # directory.                                                                    #
1507 #                                                                               #
1508 # Usage:                                                                        #
1509 #                                                                               #
1510 # kiriwrite_compile_all();                                                      #
1511 #################################################################################
1513         # Connect to the database server.
1515         $kiriwrite_dbmodule->connect();
1517         # Check if any errors occured while connecting to the database server.
1519         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1521                 # A database connection error has occured so return
1522                 # an error.
1524                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1526         }
1528         # Get the list of available databases.
1530         my @database_list = $kiriwrite_dbmodule->getdblist();
1532         # Check if any errors occured while getting the databases.
1534         if ($kiriwrite_dbmodule->geterror eq "DataDirMissing"){
1536                 # The database directory is missing so return an error.
1538                 kiriwrite_error("datadirectorymissing");
1540         } elsif ($kiriwrite_dbmodule->geterror eq "DataDirInvalidPermissions"){
1542                 # The database directory has invalid permissions set so return
1543                 # an error.
1545                 kiriwrite_error("datadirectoryinvalidpermissions");
1547         }
1549         # Define some variables for later.
1551         my $database;
1552         my $database_name_filename_check;
1553         my $database_count              = 0;
1555         # Check the list of databases to compile to see if it is blank,
1556         # if it is then return an error.
1558         if (!@database_list){
1560                 # The list of database is blank so return an error.
1562                 kiriwrite_error("nodatabasesavailable");
1564         }
1566         # Write out a form for confirming the action to compile all of the databases.
1568         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilealldatabases}, { Style => "pageheader" });
1569         $kiriwrite_presmodule->addlinebreak();
1570         $kiriwrite_presmodule->addlinebreak();
1572         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1573         $kiriwrite_presmodule->startbox();
1574         $kiriwrite_presmodule->addhiddendata("mode", "compile");
1575         $kiriwrite_presmodule->addhiddendata("action", "compile");
1576         $kiriwrite_presmodule->addhiddendata("type", "multiple");
1578         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilealldatabasesmessage});
1579         $kiriwrite_presmodule->addlinebreak();
1580         $kiriwrite_presmodule->addlinebreak();
1582         foreach $database (@database_list){
1584                 # Check if the database filename is blank.
1586                 if ($database eq ""){
1588                         # The database filename is blank so process
1589                         # the next database.
1591                         next;
1593                 }
1595                 # Check if the database filename is valid before
1596                 # using the database.
1598                 $database_name_filename_check   = kiriwrite_variablecheck($database, "filename", 0, 1);
1600                 if ($database_name_filename_check ne 0){
1602                         # The database filename is invalid so process
1603                         # the next database.
1605                         next;
1607                 }
1609                 $database_count++;
1610                 $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database);
1611                 $kiriwrite_presmodule->addhiddendata("name[" . $database_count . "]", "on");
1613         }
1615         $kiriwrite_presmodule->addhiddendata("count", $database_count);
1617         my $templateoverride_skip       = 0;
1618         my $templatedbwarning           = "";
1619         my @template_list;
1620         my $template_filename;
1621         my %template_info;
1622         my %template_dblist;
1623         tie(%template_dblist, "Tie::IxHash");
1625         $kiriwrite_dbmodule->connecttemplate();
1627         # Check if any errors occured while connecting to the
1628         # template database.
1630         if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1632                 # The template database does not exist so skip processing
1633                 # the list of templates in the template database.
1635                 $templateoverride_skip = 1;
1636                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbmissing};
1638         } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1640                 # The template database has invalid permissions set so
1641                 # skip processing the list of templates in the
1642                 # template database.
1644                 $templateoverride_skip = 1;
1645                 $templatedbwarning = $kiriwrite_lang->{compile}->{templatedbinvalidpermissions};
1647         }
1649         # Get the list of available templates if no errors had
1650         # occured.
1652         if ($templateoverride_skip ne 1){
1654                 @template_list = $kiriwrite_dbmodule->gettemplatelist();
1656                 # Check if any errors occured while getting the list of templates.
1658                 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1660                         # A template database error has occured so skip processing the
1661                         # list of templates in the template database.
1663                         $templateoverride_skip = 1;
1664                         $templatedbwarning = $kiriwrite_lang->{compile}->{templatedberror};
1666                 }
1668                 if ($templateoverride_skip ne 1){
1670                         foreach $template_file (@template_list){
1672                                 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_file });
1673                                 
1674                                 if ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1676                                         next;
1678                                 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1680                                         next;
1682                                 }
1684                                 $template_dblist{$template_file} = $template_info{"TemplateName"};
1686                         }
1688                 }
1690         }
1692         if ($templateoverride_skip eq 1){
1694                 # Add message saying why template can't be overridden.
1695                 $kiriwrite_presmodule->addtext($templatedbwarning);
1697         } else {
1699                 # Add overwrite template data.
1700                 $kiriwrite_presmodule->addcheckbox("enableoverride", { OptionDescription => $kiriwrite_lang->{compile}->{overridetemplate}, LineBreak => 1 });
1701                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{replacecurrenttemplate});
1702                 $kiriwrite_presmodule->addselectbox("overridetemplate");
1704                 foreach $template_file (keys %template_dblist){
1706                         $kiriwrite_presmodule->addoption($template_dblist{$template_file} . " (" . $template_file . ")", { Value => $template_file });
1708                 }
1710                 $kiriwrite_presmodule->addoption($kiriwrite_lang->{compile}->{dontusetemplate}, { Value => "!none" });
1711                 $kiriwrite_presmodule->endselectbox();
1713         }
1715         # Disconnect from the template database and database server.
1717         $kiriwrite_dbmodule->disconnecttemplate();
1718         $kiriwrite_dbmodule->disconnect();
1720         $kiriwrite_presmodule->addlinebreak();
1721         $kiriwrite_presmodule->addlinebreak();
1723         $kiriwrite_presmodule->addhiddendata("confirm", 1);
1724         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compilealldatabasesbutton});
1725         $kiriwrite_presmodule->addtext(" | ");
1726         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
1727         $kiriwrite_presmodule->endbox();
1728         $kiriwrite_presmodule->endform();
1730         return $kiriwrite_presmodule->grab();
1735 sub kiriwrite_compile_list{
1736 #################################################################################
1737 # kiriwrite_compile_list: Shows a list of databases that can be compiled.       #
1738 #                                                                               #
1739 # Usage:                                                                        #
1740 #                                                                               #
1741 # kiriwrite_compile_list();                                                     #
1742 #################################################################################
1744         # Define the following variables that are going to be used before using 
1745         # the foreach function.
1747         my %database_info;
1748         my %database_list;
1749         my $database_count = 0;
1750         my $database_filename = "";
1751         my $database_filename_friendly = "";
1752         my $database_permissions = "";
1753         my $database_name = "";
1754         my $database_description = "";
1755         my $data_file = "";
1756         my @permissions_list;
1757         my @error_list;
1758         my $table_style = 0;
1759         my $table_style_name = "";
1760         my $database;
1762         tie(%database_list, 'Tie::IxHash');
1764         # Connect to the database server.
1766         $kiriwrite_dbmodule->connect();
1768         # Check if any errors occured while connecting to the database server.
1770         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1772                 # A database connection error has occured so return
1773                 # an error.
1775                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1777         }
1779         # Get the list of available databases and process any errors that
1780         # might have occured.
1782         my @database_list = $kiriwrite_dbmodule->getdblist();
1784         if ($kiriwrite_dbmodule->geterror eq "DataDirMissing"){
1786                 # The database directory is missing so return an error.
1788                 kiriwrite_error("datadirectorymissing");
1790         } elsif ($kiriwrite_dbmodule->geterror eq "DataDirInvalidPermissions"){
1792                 # The database directory has invalid permissions set so return
1793                 # an error.
1795                 kiriwrite_error("datadirectoryinvalidpermissions");
1797         }
1799         # Begin creating the table for the list of databases.
1801         foreach $data_file (@database_list){
1803                 # Select the database.
1805                 $kiriwrite_dbmodule->selectdb({ DatabaseName => $data_file });
1807                 # Check if any error occured while selecting the database.
1809                 if ($kiriwrite_dbmodule->geterror eq "DoesNotExist"){
1811                         # The database does not exist, so process the next
1812                         # database.
1814                         next;
1816                 } elsif ($kiriwrite_dbmodule->geterror eq "InvalidPermissionsSet") {
1818                         # The database has invalid permissions settings, so
1819                         # add the database to the list of databases with
1820                         # invalid permissions set and process the next
1821                         # database.
1823                         push(@permissions_list, $data_file);
1824                         next;
1826                 }
1828                 # Get information about the database.
1830                 %database_info = $kiriwrite_dbmodule->getdatabaseinfo();
1832                 # Check if any error occured while getting information from the
1833                 # database.
1835                 if ($kiriwrite_dbmodule->geterror eq "DatabaseError"){
1837                         # A database error has occured, add the database and specific
1838                         # error message to the list of databases with errors and
1839                         # process the next database.
1841                         push(@error_list, $data_file . ": " . $kiriwrite_dbmodule->geterror(1));
1842                         next;
1844                 }
1846                 $database_name          = $database_info{"DatabaseName"};
1847                 $database_description   = $database_info{"Description"};
1849                 # Create a friendly name for the database.
1851                 $database_filename_friendly = $data_file;
1853                 # Append the database information to the table.
1855                 $database_list{$database_count}{Filename}       = $database_filename_friendly;
1856                 $database_list{$database_count}{Name}           = $database_name;
1857                 $database_list{$database_count}{Description}    = $database_description;
1859                 $database_count++;
1861         }
1863         # Check if there are no valid databases are if there is no
1864         # valid databases then write a message saying that no
1865         # valid databases are available.
1867         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{compilepages}, { Style => "pageheader" });
1868         $kiriwrite_presmodule->addlinebreak();
1869         $kiriwrite_presmodule->addlinebreak();
1871         if ($database_count eq 0){
1873                 # There are no databases available for compiling so
1874                 # write a message instead.
1876                 $kiriwrite_presmodule->startbox("errorbox");
1877                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{nodatabasesavailable});
1878                 $kiriwrite_presmodule->endbox();
1880         } else {
1882                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1883                 $kiriwrite_presmodule->startbox();
1884                 $kiriwrite_presmodule->addhiddendata("mode", "compile");
1885                 $kiriwrite_presmodule->addhiddendata("action", "compile");
1886                 $kiriwrite_presmodule->addhiddendata("type", "multiple");
1888                 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{selectnone});
1889                 $kiriwrite_presmodule->addtext(" | ");
1890                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{compileselectedbutton});
1891                 $kiriwrite_presmodule->addlinebreak();
1892                 $kiriwrite_presmodule->addlinebreak();
1893                 $kiriwrite_presmodule->addhiddendata("count", $database_count);
1894                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1896                 $kiriwrite_presmodule->startheader();
1897                 $kiriwrite_presmodule->addheader("", { Style => "tablecellheader" });
1898                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{database}->{databasename}, { Style => "tablecellheader" });
1899                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{database}->{databasedescription}, { Style => "tablecellheader" });
1900                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
1901                 $kiriwrite_presmodule->endheader();
1903                 $database_count = 1;
1905                 foreach $database (keys %database_list){
1907                         # Check the style to be used with.
1909                         if ($table_style eq 0){
1911                                 # Use the first style and set the style value
1912                                 # to use the next style, the next time the
1913                                 # if statement is checked.
1915                                 $table_style_name = "tablecell1";
1916                                 $table_style = 1;
1918                         } else {
1920                                 # Use the second style and set the style
1921                                 # value to use the first style, the next
1922                                 # time if statement is checked.
1924                                 $table_style_name = "tablecell2";
1925                                 $table_style = 0;
1926                         }
1928                         # Add the template to the list of available
1929                         # templates to compile.
1931                         $kiriwrite_presmodule->startrow();
1932                         $kiriwrite_presmodule->addcell($table_style_name);
1933                         $kiriwrite_presmodule->addhiddendata("id[" . $database_count . "]", $database_list{$database}{Filename});
1934                         $kiriwrite_presmodule->addcheckbox("name[" . $database_count . "]");
1935                         $kiriwrite_presmodule->endcell();
1936                         $kiriwrite_presmodule->addcell($table_style_name);
1938                         if (!$database_list{$database}{Name}){
1939                                 $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}) });
1940                         } else {
1941                                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=page&action=view&database=" . $database_list{$database}{Filename}, { Text => $database_list{$database}{Name} });
1942                         }
1944                         $kiriwrite_presmodule->endcell();
1945                         $kiriwrite_presmodule->addcell($table_style_name);
1947                         if (!$database_list{$database}{Description}){
1948                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{nodescription});
1949                         } else {
1950                                 $kiriwrite_presmodule->addtext($database_list{$database}{Description});
1951                         }
1953                         $kiriwrite_presmodule->endcell();
1954                         $kiriwrite_presmodule->addcell($table_style_name);
1955                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile&action=compile&type=single&database=" . $database_list{$database}{Filename}, { Text => $kiriwrite_lang->{options}->{compile} });
1956                         $kiriwrite_presmodule->endcell();
1957                         $kiriwrite_presmodule->endrow();
1959                         $database_count++;
1961                 }
1963                 $kiriwrite_presmodule->endtable();
1964                 $kiriwrite_presmodule->endbox();
1965                 $kiriwrite_presmodule->endform();
1967         }
1969         # Disconnect from the database server.
1971         $kiriwrite_dbmodule->disconnect();
1973         # Check if any databases with problems have appeared and if they
1974         # have, print out a message saying which databases have problems.
1976         if (@permissions_list){
1978                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseinvalidpermissions}, { Style => "smallpageheader" });
1979                 $kiriwrite_presmodule->addlinebreak();
1980                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseinvalidpermissionstext});
1981                 $kiriwrite_presmodule->addlinebreak();
1982  
1983                 foreach $database (@permissions_list){
1984  
1985                         $kiriwrite_presmodule->addlinebreak();
1986                         $kiriwrite_presmodule->addtext($database);
1987  
1988                 }
1989  
1990                 $kiriwrite_presmodule->addlinebreak();
1991                 $kiriwrite_presmodule->addlinebreak();
1993         }
1995         if (@error_list){
1997                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseerrors}, { Style => "smallpageheader" });
1998                 $kiriwrite_presmodule->addlinebreak();
1999                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{database}->{databaseerrorstext});
2000                 $kiriwrite_presmodule->addlinebreak();
2002                 foreach $database (@error_list){
2004                         $kiriwrite_presmodule->addlinebreak();
2005                         $kiriwrite_presmodule->addtext($database);
2007                 }
2009         }
2011         return $kiriwrite_presmodule->grab();
2015 sub kiriwrite_compile_clean{
2016 #################################################################################
2017 # kiriwrite_compile_clean: Deletes the contents of the output directory.        #
2018 #                                                                               #
2019 # Usage:                                                                        #
2020 #                                                                               #
2021 # kiriwrite_compile_clean(confirm);                                             #
2022 #                                                                               #
2023 # confirm       Confirms the deletion of files from the output directory.       #
2024 #################################################################################
2026         # Get the values passed to the subroutine.
2028         my ($confirm) = @_;
2030         # Define some variables for later.
2032         my $file_permissions;
2033         my $output_directory_exists;
2034         my $output_directory_permissions;
2035         my $warning_message;
2037         # Check if the output directory exists.
2039         $output_directory_exists         = kiriwrite_fileexists($kiriwrite_config{"directory_data_output"});
2041         if ($output_directory_exists eq 1){
2043                 # The output directory does not exist so return
2044                 # an error.
2046                 kiriwrite_error("outputdirectorymissing");
2048         }
2050         # Check if the output directory has invalid
2051         # permissions set.
2053         $output_directory_permissions   = kiriwrite_filepermissions($kiriwrite_config{"directory_data_output"});
2055         if ($output_directory_permissions eq 1){
2057                 # The output directory has invalid permissions
2058                 # set, so return an error.
2060                 kiriwrite_error("outputdirectoryinvalidpermissions");
2062         }
2064         if ($confirm) {
2066                 if ($confirm eq 1){
2068                         # The action to clean the output directory has been
2069                         # confirmed.
2071                         # Remove the list of files and directories from the
2072                         # output directory.
2074                         $file_permissions = kiriwrite_compile_clean_helper($kiriwrite_config{"directory_data_output"}, 1);
2076                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectory}, { Style => "pageheader" });
2078                         if ($file_permissions eq 1){
2080                                 $kiriwrite_presmodule->addlinebreak();
2081                                 $kiriwrite_presmodule->addlinebreak();
2082                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{somecontentnotremoved});
2083                                 $kiriwrite_presmodule->addlinebreak();
2084                                 $kiriwrite_presmodule->addlinebreak();
2086                         } else {
2088                                 $kiriwrite_presmodule->addlinebreak();
2089                                 $kiriwrite_presmodule->addlinebreak();
2090                                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{contentremoved});
2091                                 $kiriwrite_presmodule->addlinebreak();
2092                                 $kiriwrite_presmodule->addlinebreak();
2094                         }
2096                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist} });
2098                         return $kiriwrite_presmodule->grab();
2100                 } else {
2102                         # A value other than 1 is set for the confirm value
2103                         # (which it shouldn't be) so return an error.
2105                         kiriwrite_error("invalidvariable");
2107                 }
2109         }
2111         # Print out a form for cleaning the output directory.
2113         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectory}, { Style => "pageheader" });
2114         $kiriwrite_presmodule->addlinebreak();
2115         $kiriwrite_presmodule->addlinebreak();
2116         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
2117         $kiriwrite_presmodule->startbox();
2118         $kiriwrite_presmodule->addhiddendata("mode", "compile");
2119         $kiriwrite_presmodule->addhiddendata("action", "clean");
2120         $kiriwrite_presmodule->addhiddendata("confirm", 1);
2121         $kiriwrite_presmodule->addtext($kiriwrite_lang->{compile}->{cleanoutputdirectorymessage});
2122         $kiriwrite_presmodule->addlinebreak();
2123         $kiriwrite_presmodule->addlinebreak();
2124         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{compile}->{cleanoutputdirectorybutton});
2125         $kiriwrite_presmodule->addtext(" | ");
2126         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=compile", { Text => $kiriwrite_lang->{compile}->{returncompilelist}});
2127         $kiriwrite_presmodule->endbox();
2128         $kiriwrite_presmodule->endform();
2130         return $kiriwrite_presmodule->grab();
2134 sub kiriwrite_compile_clean_helper{
2135 #################################################################################
2136 # kiriwrite_compile_clean_helper: Helper for cleaning out the output directory. #
2137 # This command sometimes is called recursively (when a directory is found).     #
2138 #                                                                               #
2139 # Usage:                                                                        #
2140 #                                                                               #
2141 # kiriwrite_compile_clean_helper(directory, removedirectory, [permissions]);    #
2142 #                                                                               #
2143 # directory             Specifies the directory to remove files (and            #
2144 #                       sub-directories) from.                                  #
2145 # keepdirectory         Keeps the directory itself after all files have been    #
2146 #                       removed.                                                #
2147 # permissions           Used recursively for error checking.                    #
2148 #################################################################################
2150         # Get the values passed to the subroutine.
2152         my ($directory, $directory_keep, $permissions) = @_;
2154         # Check if the directory_keep is only one charater long.
2156         my $directory_file = "";
2157         my @directory_list;
2158         my $file_permissions = 0;
2159         my $debug = 0;
2161         # Check if the file permissions value is blank.
2163         if (!$permissions){
2165                 # The file permissions value is blank.
2167                 $permissions = 0;
2169         }
2171         # Open the directory specified, read the contents of
2172         # the directory and then close the directory.
2174         opendir(DIRECTORY, $directory);
2175         @directory_list = readdir(DIRECTORY);
2176         closedir(DIRECTORY);
2178         # Remove each file and directory.
2180         foreach $directory_file (@directory_list){
2182                 # Check if the filename is '.' or '..' and if it
2183                 # is skip those files.
2185                 if ($directory_file eq "." || $directory_file eq ".."){
2187                         # The filename is '.' or '..' so skip processing
2188                         # these files.
2190                 } else {
2192                         # Check if the permissions on the file or directory has
2193                         # valid permissions set.
2195                         $file_permissions = kiriwrite_filepermissions($directory . '/' . $directory_file, 1, 1);
2197                         if ($file_permissions eq 1){
2199                                 # The file or directory has invalid permissions set.
2201                                 $permissions = 1;
2202                                 next;
2204                         }
2206                         # Check if the filename is a directory.
2208                         if (-d $directory . '/' . $directory_file){
2210                                 # The filename is a directory so send the directory name
2211                                 # and this subroutine again (recursively).
2213                                 kiriwrite_compile_clean_helper($directory . '/' . $directory_file, 0, $permissions);
2215                         } else {
2217                                 # The file is not a directory but an actual file so
2218                                 # remove as normal (in terms of the Perl language).
2220                                 ($directory) = $directory =~ m/^(.*)$/g;
2221                                 ($directory_file) = $directory_file =~ m/^(.*)$/g;
2223                                 # Check if the directory is undefined and if it is then
2224                                 # set it to blank.
2226                                 if (!$directory){
2227                                         $directory = "";
2228                                 }
2230                                 if (!$directory_file){
2231                                         $directory_file = "";
2232                                 }
2234                                 unlink($directory . '/' . $directory_file);
2236                         }
2238                 }
2240         }
2242         # Check if the directory should be kept.
2244         if ($directory_keep eq 1){
2246                 # The directory_keep value is set as 1 so the directory
2247                 # specified should be kept.
2249         } elsif ($directory_keep eq 0) {
2251                 # The directory_keep value is set as 0 so remove the
2252                 # directory specified.
2254                 ($directory) = $directory =~ m/^(.*)$/g;
2255                 rmdir($directory);
2257         } else {
2259                 # A value other than 0 or 1 was specified so return
2260                 # an error,
2262                 kiriwrite_error('invalidvalue');
2264         }
2266         return $permissions;
2271 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