Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Version 0.2.0 Import. Speed of Kiriwrite optimised and other alterations
[kiriwrite/.git] / cgi-files / lib / filter.lib
1 #################################################################################
2 # filter.lib: Kiriwrite Filter 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 ($form_data->{'action'}){
12         # There is a value for action in the HTTP query,
13         # so get the value from it.
15         my $http_query_action = $form_data->{'action'};
17         if ($http_query_action eq "add"){
19                 # The action the user requested is to add a filter to the
20                 # filter database.
22                 # Check if there is a value in confirm and if there is
23                 # then pass it on to the new find and replace words
24                 # to add to the filter database.
26                 my $http_query_confirm = $form_data->{'confirm'};
28                 if ($http_query_confirm){
30                         # There is a value in http_query_confirm, so pass on the
31                         # new find and replace words so that they can be added
32                         # to the filter database.
34                         my $http_query_findwords        = $form_data->{'findword'};
35                         my $http_query_replacewords     = $form_data->{'replaceword'};
36                         my $http_query_priority         = $form_data->{'priority'};
37                         my $http_query_notes            = $form_data->{'notes'};
38                 
39                         my $pagedata = kiriwrite_filter_add($http_query_findwords, $http_query_replacewords, $http_query_priority, $http_query_notes, $http_query_confirm);
41                         kiriwrite_output_header;        # Output the header to browser/console/stdout.
42                         kiriwrite_output_page($kiriwrite_lang->{filter}->{addfilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
43                         exit;                           # End the script.
45                 }
47                 my $pagedata = kiriwrite_filter_add();
49                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
50                 kiriwrite_output_page($kiriwrite_lang->{filter}->{addfilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
51                 exit;                           # End the script.
53         } elsif ($http_query_action eq "edit"){
55                 # The action the user requested is to edit an filter from
56                 # the filter database.
58                 my $http_query_number   = $form_data->{'filter'};
59                 my $http_query_confirm  = $form_data->{'confirm'};
61                 if ($http_query_confirm){
63                         # There is a value in http_query_confirm, so pass on the
64                         # new find and replace words so that the filter database
65                         # can be edited.
67                         my $http_query_findwords        = $form_data->{'filterfind'};
68                         my $http_query_replacewords     = $form_data->{'filterreplace'};
69                         my $http_query_priority         = $form_data->{'priority'};
70                         my $http_query_notes            = $form_data->{'notes'};
72                         my $pagedata = kiriwrite_filter_edit($http_query_number, $http_query_findwords, $http_query_replacewords, $http_query_priority, $http_query_notes, $http_query_confirm);
74                         kiriwrite_output_header;        # Output the header to browser/console/stdout.
75                         kiriwrite_output_page($kiriwrite_lang->{filter}->{editfilter}, $pagedata, "filter");    # Output the page to browser/console/stdout.
76                         exit;                           # End the script.
78                 }
80                 my $pagedata = kiriwrite_filter_edit($http_query_number);
82                 kiriwrite_output_header;                # Output the header to browser/console/stdout.
83                 kiriwrite_output_page($kiriwrite_lang->{filter}->{editfilter}, $pagedata, "filter");    # Output the page to browser/console/stdout.
84                 exit;                                   # End the script.
86         } elsif ($http_query_action eq "delete"){
88                 # The action the user requested is to delete an filter
89                 # from the filter database.
91                 my $http_query_number = $form_data->{'filter'};
92                 my $http_query_confirm = $form_data->{'confirm'};
94                 if ($http_query_confirm){
96                         my $pagedata = kiriwrite_filter_delete($http_query_number, $http_query_confirm);
98                         kiriwrite_output_header;                # Output the header to browser/console/stdout.
99                         kiriwrite_output_page($kiriwrite_lang->{filter}->{deletefilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
100                         exit;                                   # End the script
102                 }
104                 my $pagedata = kiriwrite_filter_delete($http_query_number);
106                 kiriwrite_output_header;                # Output the header to browser/console/stdout.
107                 kiriwrite_output_page($kiriwrite_lang->{filter}->{deletefilter}, $pagedata, "filter");  # Output the page to browser/console/stdout.
108                 exit;                                   # End the script.
110         } elsif ($http_query_action eq "view"){
112                 # The action the user requested is to view the list
113                 # filters on the filter database.
115                 my $http_query_browsenumber = $form_data->{'browsenumber'};
117                 my $pagedata = kiriwrite_filter_list($http_query_browsenumber);
119                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
120                 kiriwrite_output_page($kiriwrite_lang->{filter}->{viewfilters}, $pagedata, "filter"); # Output the page to browser/console/stdout.
121                 exit;                           # End the script.
123         } else {
125                 # Another action was requested that was not one of 
126                 # the ones prcedding this catch all, so return
127                 # an error saying that an invalid option was
128                 # specified.
130                 kiriwrite_error("invalidaction");
132         }
134 } else {
136         my $pagedata = kiriwrite_filter_list();
138         kiriwrite_output_header;        # Output the header to browser/console/stdout.
139         kiriwrite_output_page($kiriwrite_lang->{filter}->{viewfilters}, $pagedata, "filter"); # Output the page to browser/console/stdout.
140         exit;                           # End the script.
144 #################################################################################
145 # Begin list of relevant subroutines.                                           #
146 #################################################################################
148 sub kiriwrite_filter_list{
149 #################################################################################
150 # kiriwrite_filter_list: Lists the filters that will be used when compiling a   #
151 # webpage.                                                                      #
152 #                                                                               #
153 # Usage:                                                                        #
154 #                                                                               #
155 # kiriwrite_filter_list([browsenumber]);                                        #
156 #                                                                               #
157 # browsenumber  Specifies the page browse number to use.                        #
158 #################################################################################
160         my $filter_browsenumber = shift;
162         my $filtersdb_notexist = 0;
164         # Connect to the database server.
166         $kiriwrite_dbmodule->connect();
168         # Check if any errors occured while connecting to the database server.
170         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
172                 # A database connection error has occured so return
173                 # an error.
175                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
177         }
179         # Connect to the filter database.
181         $kiriwrite_dbmodule->connectfilter();
183         # Check if any error has occured while connecting to the filter
184         # database.
186         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
188                 # The filter database does not exist.
190                 $filtersdb_notexist = 1;
192         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
194                 # The filter database has invalid permissions set so return
195                 # an error.
197                 kiriwrite_error("filtersdbpermissions");
199         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
201                 # A database error has occured with the filter database.
203                 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
205         }
207         # Define some variables required for processing the filters list.
209         my %filter_list;
210         my %filter_info;
211         my @database_filters;
212         my $blankfindfilter = 0;
213         my $filterswarning = "";
214         my $filter;
215         my $filter_split = 50;
216         my $filter_list = 0;
217         my $filter_count = 0;
218         my $filter_style = 0;
219         my $filter_list_count = 0;
220         my $filter_style_name = "";
222         tie(%filter_list, 'Tie::IxHash');
224         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{viewfilters}, { Style => "pageheader" });
225         $kiriwrite_presmodule->addlinebreak();
226         $kiriwrite_presmodule->addlinebreak();
228         # If the filter database exists then get the list of filters,
229         # otherwise write a message saying that the filter database
230         # does not exist and will be created when a filter is added.
232         if ($filtersdb_notexist eq 0){
234                 if (!$filter_browsenumber || $filter_browsenumber eq 0){
236                         $filter_browsenumber = 1;
238                 }
240                 # Check if the filter browse number is valid and if it isn't
241                 # then return an error.
243                 my $kiriwrite_browsenumber_length_check         = kiriwrite_variablecheck($filter_browsenumber, "maxlength", 7, 1);
244                 my $kiriwrite_browsenumber_number_check         = kiriwrite_variablecheck($filter_browsenumber, "numbers", 0, 1);
246                 if ($kiriwrite_browsenumber_length_check eq 1){
248                         # The browse number was too long so return
249                         # an error.
251                         kiriwrite_error("browsenumbertoolong");
253                 }
255                 if ($kiriwrite_browsenumber_number_check eq 1){
257                         # The browse number wasn't a number so
258                         # return an error.
260                         kiriwrite_error("browsenumberinvalid");
262                 }
264                 # Get the total count of filters in the filter database.
266                 my $filter_total_count  = $kiriwrite_dbmodule->getfiltercount();
268                 # Check if any errors occured while getting the count of filters.
270                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
272                         # A database error has occured with the filter database.
274                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
276                 }
278                 if ($filter_total_count ne 0){
280                         if ($filter_total_count eq $filter_split){
282                                 $filter_list = substr(($filter_total_count / $filter_split), 0, 1);                             
284                         } else {
286                                 $filter_list = substr(($filter_total_count / $filter_split), 0, 1) + 1;                 
288                         }
290                 }
292                 my $start_from = ($filter_browsenumber - 1) * $filter_split;
294                 # Get the list of available filters.
296                 @database_filters       = $kiriwrite_dbmodule->getfilterlist({ StartFrom => $start_from, Limit => $filter_split });
298                 # Check if any errors occured while getting the list of filters.
300                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
302                         # A database error has occured with the filter database.
304                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
306                 }
308                 # Process each filter getting the priority, find setting and
309                 # replace setting.
311                 foreach $filter (@database_filters){
313                         # Get the information about the filter.
315                         %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter });
317                         # Check if any errors occured while getting the filter information.
319                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
321                                 # A database error occured while using the filter database.
323                                 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
325                         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
327                                 # The filter does not exist so process the next filter.
329                                 next;
331                         }
333                         # Check if the find filter is blank.
335                         if (!$filter_info{"FilterFind"}){
337                                 # The find filter is blank, so set the value to write a warning
338                                 # message saying that a find filter given is blank.
340                                 $blankfindfilter = 1;
342                         }
344                         $filter_list{$filter_count}{ID}         = $filter_info{"FilterID"};
345                         $filter_list{$filter_count}{Priority}   = $filter_info{"FilterPriority"};
346                         $filter_list{$filter_count}{Find}       = $filter_info{"FilterFind"};
347                         $filter_list{$filter_count}{Replace}    = $filter_info{"FilterReplace"};
348                         $filter_list{$filter_count}{Notes}      = $filter_info{"FilterNotes"};
350                         $filter_count++;
352                 }
354                 # Check if there are filters in the filter database and
355                 # write a message if there isn't.
357         }
359         # Check if the database wasn't found and if it
360         # wasn't then write a message saying that the
361         # database will be created when a filter is
362         # added.
364         if ($filtersdb_notexist eq 1){
366                 # The filter database doesn't exist so write
367                 # a message.
369                 $filterswarning = $kiriwrite_lang->{filter}->{filterdatabasedoesnotexist};
372         }
374         # Check if there is a warning message and if
375         # there is then write that warning message
376         # else write the list of filters.
378         if ($filterswarning){
380                 $kiriwrite_presmodule->startbox("errorbox");
381                 $kiriwrite_presmodule->addtext($filterswarning);
382                 $kiriwrite_presmodule->endbox();
384         } elsif ($filter_count) {
386                 # The filter database exists so write out the
387                 # list of filters.
389                 if ($blankfindfilter eq 1){
391                         $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{filter}->{warningtitle});
392                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{blankfindfilters});
393                         $kiriwrite_presmodule->addtext();
394                         $kiriwrite_presmodule->addlinebreak();
395                         $kiriwrite_presmodule->addlinebreak();
397                 }
399                 # Start a form for using the filter browsing list with.
401                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "GET");
402                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
404                 # Write out the filter browsing list.
406                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{showlistpage});
407                 $kiriwrite_presmodule->addselectbox("browsenumber");
409                 # Write out the list of available pages to browse.
410                 
411                 while ($filter_list_count ne $filter_list){
413                         $filter_list_count++;
415                         if ($filter_list_count eq 1 && !$filter_browsenumber){
417                                 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
419                         } else {
421                                 if ($filter_browsenumber eq $filter_list_count){
423                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
425                                 } else {
427                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count });
429                                 }
431                         }
433                 }
435                 $kiriwrite_presmodule->endselectbox();
436                 $kiriwrite_presmodule->addbutton("action", { Value => "view", Description => $kiriwrite_lang->{filter}->{show} });
438                 if ($filter_list ne $filter_browsenumber){
440                         $kiriwrite_presmodule->addtext(" | ");
441                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber + 1), { Text => $kiriwrite_lang->{filter}->{nextpage} });
443                 }
445                 # Check if the filter browse number is not blank and
446                 # not set as 0 and hide the Previous page link if
447                 # it is.
449                 if ($filter_browsenumber > 1){
451                         $kiriwrite_presmodule->addtext(" | ");
452                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber - 1), { Text => $kiriwrite_lang->{filter}->{previouspage} });
454                 }
456                 $kiriwrite_presmodule->addlinebreak();
457                 $kiriwrite_presmodule->addlinebreak();
459                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
461                 $kiriwrite_presmodule->startheader();
462                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{priority}, { Style => "tablecellheader" });
463                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{findsetting}, { Style => "tablecellheader" });
464                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{replacesetting}, { Style => "tablecellheader" });
465                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
466                 $kiriwrite_presmodule->endheader();
468                 foreach $filter (keys %filter_list){
470                         # Check which style should be used.
472                         if ($filter_style eq 0){
474                                 $filter_style_name = "tablecell1";
475                                 $filter_style = 1;
477                         } else {
479                                 $filter_style_name = "tablecell2";
480                                 $filter_style = 0;
482                         }
484                         $kiriwrite_presmodule->startrow();
485                         $kiriwrite_presmodule->addcell($filter_style_name);
486                         $kiriwrite_presmodule->addtext($filter_list{$filter}{Priority});
487                         $kiriwrite_presmodule->endcell();
488                         $kiriwrite_presmodule->addcell($filter_style_name);
490                         # Check if the find filter is blank.
492                         if (!$filter_list{$filter}{Find}){
494                                 # The find filter is blank.
496                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankfindsetting});
498                         } else {
500                                 # The find filter is not blank.
502                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Find});
504                         }
506                         $kiriwrite_presmodule->endcell();
507                         $kiriwrite_presmodule->addcell($filter_style_name);
509                         # Check if the replace filter is blank.
511                         if (!$filter_list{$filter}{Replace}){
513                                 # The replace filter is blank.
515                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankreplacesetting});
517                         } else {
519                                 # The replace filter is not blank.
521                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Replace});
523                         }
525                         $kiriwrite_presmodule->endcell();
526                         $kiriwrite_presmodule->addcell($filter_style_name);
527                         $kiriwrite_presmodule->addlink("?mode=filter&action=edit&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{edit} });
528                         $kiriwrite_presmodule->addlink("?mode=filter&action=delete&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{delete} });
529                         $kiriwrite_presmodule->endcell();
530                         $kiriwrite_presmodule->endrow();
532                 }
534                 $kiriwrite_presmodule->endtable();
535                 $kiriwrite_presmodule->endform();
537         }
539         if (!@database_filters && $filter_browsenumber > 1){
541                 # There were no values given for the page browse
542                 # number given so write a message saying that
543                 # there were no pages for the page browse number
544                 # given.
546                 $kiriwrite_presmodule->clear();
547                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
548                 $kiriwrite_presmodule->addlinebreak();
549                 $kiriwrite_presmodule->addlinebreak();
550                 $kiriwrite_presmodule->startbox("errorbox");
551                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersinpagebrowse});
552                 $kiriwrite_presmodule->addlinebreak();
553                 $kiriwrite_presmodule->addlinebreak();
554                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returntofirstpagebrowse} });
555                 $kiriwrite_presmodule->endbox();
557         } elsif (!@database_filters || !$filter_count || $filter_total_count eq 0){
559                 # There are no filters in the filter database.
561                 $kiriwrite_presmodule->clear();
562                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
563                 $kiriwrite_presmodule->addlinebreak();
564                 $kiriwrite_presmodule->addlinebreak();
565                 $kiriwrite_presmodule->startbox("errorbox");
566                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersavailable});
567                 $kiriwrite_presmodule->endbox();
569         }
571         # Disconnect from the filter database.
573         $kiriwrite_dbmodule->disconnectfilter();
575         # Disconnect from the database server.
577         $kiriwrite_dbmodule->disconnect();
579         return $kiriwrite_presmodule->grab();
583 sub kiriwrite_filter_add{
584 #################################################################################
585 # kiriwrite_filter_add: Adds a filter to the filter list.                       #
586 #                                                                               #
587 # Usage:                                                                        #
588 #                                                                               #
589 # kiriwrite_filter_add(filterfind, filterreplace, filterpriority,               #
590 #                       filternotes, [confirm]);                                #
591 #                                                                               #
592 # filterfind            Specifies the new word(s) to find.                      #
593 # filterreplace         Specifies the new word(s) to replace.                   #
594 # filterpriority        Specifies the new priority to use.                      #
595 # filternotes           Specifies the new notes to use.                         #
596 # confirm               Confirms the action to add a filter.                    #
597 #################################################################################
599         # Get the values that have been passed to the subroutine.
601         my ($filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
603         # Check the confirm value to make sure it is no more than
604         # one character long.
606         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
608         if (!$confirm){
610                 # The confirm value is undefined, so set the
611                 # value of the confirm integer to '0'.
613                 $confirm = 0;
615         }
617         if ($confirm eq 1){
619                 # The confirm integer is '1', so add the word
620                 # to the filter list.
622                 # First, check the variables recieved are UTF8
623                 # copliant.
625                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
626                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
627                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
628                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
630                 # Convert the UTF8 values so that the length can
631                 # checked properly.
633                 $filter_new_find        = kiriwrite_utf8convert($filter_new_find);
634                 $filter_new_replace     = kiriwrite_utf8convert($filter_new_replace);
635                 $filter_new_priority    = kiriwrite_utf8convert($filter_new_priority);
636                 $filter_new_notes       = kiriwrite_utf8convert($filter_new_notes);
638                 # Check if the find filter is blank and return an error
639                 # if it is.
641                 if (!$filter_new_find){
643                         # The find filter given is blank so return an
644                         # error.
646                         kiriwrite_error("blankfindfilter");
648                 }
650                 if (!$filter_new_priority){
652                         # The filter priority is blank so set it
653                         # to 1.
655                         $filter_new_priority = 1;
657                 }
659                 # Check the length and contents of the values given
660                 # to make sure they are valid.
662                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
663                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
664                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
665                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
667                 # Check if the result of the tests to see if they
668                 # are valid.
670                 if ($filterfind_maxlength_check eq 1){
672                         # The find filter is too long, so return
673                         # an error.
675                         kiriwrite_error("findfiltertoolong");
677                 }
679                 if ($filterreplace_maxlength_check eq 1){
681                         # The replace filter is too long, so
682                         # return an error.
684                         kiriwrite_error("replacefiltertoolong");
686                 }
688                 if ($filterpriority_maxlength_check eq 1){
690                         # The length of the filter priority
691                         # given is too long, so return an
692                         # error.
694                         kiriwrite_error("filterprioritytoolong");
696                 }
698                 if ($filterpriority_numbers_check eq 1){
700                         # The priority of the filter given
701                         # contains characters other than
702                         # numbers.
704                         kiriwrite_error("filterpriorityinvalidchars");
706                 }
708                 # Check if the filter priority is less than 1
709                 # and more than 10000 and return an error
710                 # if it is.
712                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
714                         # The filter priority is less than 1 and
715                         # more than 10000, so return an error.
717                         kiriwrite_error("filterpriorityinvalid");
719                 }
721                 # Connect to the database server.
723                 $kiriwrite_dbmodule->connect();
725                 # Check if any errors occured while connecting to the database server.
727                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
729                         # A database connection error has occured so return
730                         # an error.
732                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
734                 }
736                 # Connect to the filter database.
738                 $kiriwrite_dbmodule->connectfilter(1);
740                 # Check if any error has occured while connecting to the filter
741                 # database.
743                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
745                         # The filter database does not exist.
747                         kiriwrite_error("filtersdbmissing");
749                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
751                         # The filter database has invalid permissions set so return
752                         # an error.
754                         kiriwrite_error("filtersdbpermissions");
756                 }
758                 # Add the filter to the filter database.
760                 $kiriwrite_dbmodule->addfilter({ FindFilter => $filter_new_find, ReplaceFilter => $filter_new_replace, Priority => $filter_new_priority, Notes => $filter_new_notes});
762                 # Check if any errors have occured while adding the filter.
764                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
766                         # The filter database has invalid permissions set so return
767                         # an error.
769                         kiriwrite_error("filtersdbpermissions");
771                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseUncreatable"){
773                         # The filter database is uncreatable so return an error.
775                         kiriwrite_error("filterdatabase");
777                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
779                         # A database error with the filter database has occured so return
780                         # an error with the extended error information.
782                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
784                 }
786                 # Disconnect from the filter database.
788                 $kiriwrite_dbmodule->disconnectfilter();
790                 # Disconnect from the database server.
792                 $kiriwrite_dbmodule->disconnect();
794                 # Write out a message saying that the filter was added to the
795                 # filter database.
797                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteradded}, { Style => "pageheader" });
798                 $kiriwrite_presmodule->addlinebreak();
799                 $kiriwrite_presmodule->addlinebreak();
800                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteraddedmessage});
801                 $kiriwrite_presmodule->addlinebreak();
802                 $kiriwrite_presmodule->addlinebreak();
803                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
805                 return $kiriwrite_presmodule->grab();
807         } elsif ($confirm ne 0) {
809                 # The confirm integer is another value (which
810                 # it shouldn't be) so return an error.
812                 kiriwrite_error("invalidvalue");
814         }
816         # The confirm integer was blank so print out a form
817         # for adding a new filter.
819         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{addfilter}, { Style => "pageheader" });
820         $kiriwrite_presmodule->addlinebreak();
821         $kiriwrite_presmodule->addlinebreak();
822         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
823         $kiriwrite_presmodule->startbox();
824         $kiriwrite_presmodule->addhiddendata("mode", "filter");
825         $kiriwrite_presmodule->addhiddendata("action", "add");
826         $kiriwrite_presmodule->addhiddendata("confirm", 1);
827         $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
829         $kiriwrite_presmodule->startheader();
830         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
831         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
832         $kiriwrite_presmodule->endheader();
834         $kiriwrite_presmodule->startrow();
835         $kiriwrite_presmodule->addcell("tablecell1");
836         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
837         $kiriwrite_presmodule->endcell();
838         $kiriwrite_presmodule->addcell("tablecell2");
839         $kiriwrite_presmodule->addinputbox("findword", { Size => 64, MaxLength => 1024 });
840         $kiriwrite_presmodule->endcell();
841         $kiriwrite_presmodule->endrow();
843         $kiriwrite_presmodule->startrow();
844         $kiriwrite_presmodule->addcell("tablecell1");
845         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
846         $kiriwrite_presmodule->endcell();
847         $kiriwrite_presmodule->addcell("tablecell2");
848         $kiriwrite_presmodule->addinputbox("replaceword", { Size => 64, MaxLength => 1024 });
849         $kiriwrite_presmodule->endcell();
850         $kiriwrite_presmodule->endrow();
852         $kiriwrite_presmodule->startrow();
853         $kiriwrite_presmodule->addcell("tablecell1");
854         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
855         $kiriwrite_presmodule->endcell();
856         $kiriwrite_presmodule->addcell("tablecell2");
857         $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5 });
858         $kiriwrite_presmodule->startlist();
859         $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
860         $kiriwrite_presmodule->endlist();
861         $kiriwrite_presmodule->endcell();
862         $kiriwrite_presmodule->endrow();
864         $kiriwrite_presmodule->startrow();
865         $kiriwrite_presmodule->addcell("tablecell1");
866         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
867         $kiriwrite_presmodule->endcell();
868         $kiriwrite_presmodule->addcell("tablecell2");
869         $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10 });
870         $kiriwrite_presmodule->endcell();
871         $kiriwrite_presmodule->endrow();
873         $kiriwrite_presmodule->endtable();
875         $kiriwrite_presmodule->addlinebreak();
876         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{addfilterbutton});
877         $kiriwrite_presmodule->addtext(" | ");
878         $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{clearvalues});
879         $kiriwrite_presmodule->addtext(" | ");
880         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
882         $kiriwrite_presmodule->endbox();
883         $kiriwrite_presmodule->endform();
885         return $kiriwrite_presmodule->grab();
889 sub kiriwrite_filter_edit{
890 #################################################################################
891 # kiriwrite_filter_edit: Edits a filter from the filter list.                   #
892 #                                                                               #
893 # Usage:                                                                        #
894 #                                                                               #
895 # kiriwrite_filter_edit(filternumber, newfilterfind, newfilterreplace,          #
896 #                       newfilterpriority, newfilternotes, confirm);            #
897 #                                                                               #
898 # filterid              Specifies the filter number (line number) in the        #
899 #                       filter database.                                        #
900 # newfilterfind         Specifies the new word to find.                         #
901 # newfilterreplace      Specifies the new word to replace.                      #
902 # newfilterpriority     Specifies the new filter priority.                      #
903 # newfilternotes        Specifies the new filter notes.                         #
904 # confirm               Confirms the action to edit a filter.                   #
905 #################################################################################
907         # Get the values that have been passed to the subroutine.
909         my ($filter_id, $filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
911         # Check the confirm value to make sure it is no more than
912         # one character long.
914         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
916         # Check if the confirm value is blank and if it is
917         # srt the confirm value to 0.
919         if (!$confirm){
921                 # The confirm value does not have any value
922                 # set so set it to 0.
924                 $confirm = 0;
926         }
928         # Check if the filter identification number is blank,
929         # contains characters other than numbers and is more
930         # than seven characters long.
932         if (!$filter_id){
934                 # The filter identification number is blank,
935                 # so return an error.
937                 kiriwrite_error("filteridblank");
939         }
941         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
943         if ($filter_id_numbers_check eq 1){
945                 # The filter identification number contains
946                 # characters other than numbers, so return
947                 # an error.
949                 kiriwrite_error("filteridinvalid");
951         }
953         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
955         if ($filter_id_maxlength_check eq 1){
957                 # The filter identification number given
958                 # is more than seven characters long, so
959                 # return an error.
961                 kiriwrite_error("filteridtoolong");
963         }
965         my $filter_priority;
966         my $filter_find;
967         my $filter_replace;
968         my $filter_notes;
969  
970         # Check if the action to edit a filter has been
971         # confirmed.
973         if ($confirm eq 1){
975                 # The action to edit a filter has been confirmed so
976                 # edit the selected filter.
978                 # First, check the variables recieved are UTF8
979                 # copliant.
981                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
982                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
983                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
984                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
986                 # Convert the UTF8 values so that the length can
987                 # checked properly.
989                 $filter_find            = kiriwrite_utf8convert($filter_new_find);
990                 $filter_replace         = kiriwrite_utf8convert($filter_new_replace);
991                 $filter_priority        = kiriwrite_utf8convert($filter_new_priority);
992                 $filter_notes           = kiriwrite_utf8convert($filter_new_notes);
994                 # Check if the find filter is blank and return an error
995                 # if it is.
997                 if (!$filter_new_find){
999                         # The find filter given is blank so return an
1000                         # error.
1002                         kiriwrite_error("blankfindfilter");
1004                 }
1006                 if (!$filter_new_priority){
1008                         # The filter priority is blank so set it
1009                         # to 1.
1011                         $filter_new_priority = 1;
1013                 }
1015                 # Check the length and contents of the values given
1016                 # to make sure they are valid.
1018                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
1019                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
1020                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
1021                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
1023                 # Check if the result of the tests to see if they
1024                 # are valid.
1026                 if ($filterfind_maxlength_check eq 1){
1028                         # The find filter is too long, so return
1029                         # an error.
1031                         kiriwrite_error("findfiltertoolong");
1033                 }
1035                 if ($filterreplace_maxlength_check eq 1){
1037                         # The replace filter is too long, so
1038                         # return an error.
1040                         kiriwrite_error("replacefiltertoolong");
1042                 }
1044                 if ($filterpriority_maxlength_check eq 1){
1046                         # The length of the filter priority
1047                         # given is too long, so return an
1048                         # error.
1050                         kiriwrite_error("filterprioritytoolong");
1052                 }
1054                 if ($filterpriority_numbers_check eq 1){
1056                         # The priority of the filter given
1057                         # contains characters other than
1058                         # numbers.
1060                         kiriwrite_error("filterpriorityinvalidchars");
1062                 }
1064                 # Check if the filter priority is less than 1
1065                 # and more than 10000 and return an error
1066                 # if it is.
1068                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
1070                         # The filter priority is less than 1 and
1071                         # more than 10000, so return an error.
1073                         kiriwrite_error("filterpriorityinvalid");
1075                 }
1077                 # Connect to the database server.
1079                 $kiriwrite_dbmodule->connect();
1081                 # Check if any errors occured while connecting to the database server.
1083                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1085                         # A database connection error has occured so return
1086                         # an error.
1088                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1090                 }
1092                 # Connect to the filter database.
1094                 $kiriwrite_dbmodule->connectfilter();
1096                 # Check if any error has occured while connecting to the filter
1097                 # database.
1099                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1101                         # The filter database does not exist.
1103                         kiriwrite_error("filtersdbmissing");
1105                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1107                         # The filter database has invalid permissions set so return
1108                         # an error.
1110                         kiriwrite_error("filtersdbpermissions");
1112                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1114                         # A database error has occured with the filter database.
1116                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1118                 }
1120                 # Edit the selected filter in the filter database.
1122                 $kiriwrite_dbmodule->editfilter({ FilterID => $filter_id, NewFindFilter => $filter_new_find, NewReplaceFilter => $filter_new_replace, NewFilterPriority => $filter_new_priority, NewFilterNotes => $filter_new_notes });
1124                 # Check if any errors occured while editing the filter.
1126                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1128                         # The filter database has invalid permissions set so return
1129                         # an error.
1131                         kiriwrite_error("filtersdbpermissions");
1133                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1135                         # A database error has occured while using the filter database
1136                         # so return an error.
1138                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1140                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1142                         # The specified filter does not exist so return an error.
1144                         kiriwrite_error("filterdoesnotexist");
1146                 }
1148                 # Disconnect from the filter database.
1150                 $kiriwrite_dbmodule->disconnectfilter();
1152                 # Disconnect from the database server.
1154                 $kiriwrite_dbmodule->disconnect();
1156                 # Write a message saying that the filter was edited.
1158                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfilter}, { Style => "pageheader" });
1159                 $kiriwrite_presmodule->addlinebreak();
1160                 $kiriwrite_presmodule->addlinebreak();
1161                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfiltermessage});
1162                 $kiriwrite_presmodule->addlinebreak();
1163                 $kiriwrite_presmodule->addlinebreak();
1164                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist}});
1166                 return $kiriwrite_presmodule->grab();
1168         } elsif ($confirm eq 0){
1170                 # The action to edit a filter has not been confirmed
1171                 # so write a form for editing the filter with.
1173                 # Connect to the database server.
1175                 $kiriwrite_dbmodule->connect();
1177                 # Check if any errors occured while connecting to the database server.
1179                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1181                         # A database connection error has occured so return
1182                         # an error.
1184                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1186                 }
1188                 # Connect to the database server.
1190                 $kiriwrite_dbmodule->connect();
1192                 # Check if any errors occured while connecting to the database server.
1194                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1196                         # A database connection error has occured so return
1197                         # an error.
1199                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1201                 }
1203                 # Connect to the filter database.
1205                 $kiriwrite_dbmodule->connectfilter();
1207                 # Check if any error has occured while connecting to the filter
1208                 # database.
1210                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1212                         # The filter database does not exist.
1214                         kiriwrite_error("filtersdbmissing");
1216                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1218                         # The filter database has invalid permissions set so return
1219                         # an error.
1221                         kiriwrite_error("filtersdbpermissions");
1223                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1225                         # A database error has occured with the filter database.
1227                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1229                 }
1231                 # Get information about the filter.
1233                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1235                 # Check if any errors occured while getting information about the filter.
1237                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1239                         # A database error occured while using the filter database so
1240                         # return an error.
1242                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1244                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1246                         # The filter does not exist so return an error.
1248                         kiriwrite_error("filterdoesnotexist");
1250                 }
1252                 # Get the required information.
1254                 $filter_priority        = $filter_info{"FilterPriority"};
1255                 $filter_find            = $filter_info{"FilterFind"};
1256                 $filter_replace         = $filter_info{"FilterReplace"};
1257                 $filter_notes           = $filter_info{"FilterNotes"};
1259                 # Disconnect from the filter database.
1261                 $kiriwrite_dbmodule->disconnectfilter();
1263                 # Disconnect from the database server.
1265                 $kiriwrite_dbmodule->disconnect();
1267                 # Write out the form.
1269                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editfilter}, { Style => "pageheader" });
1270                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1271                 $kiriwrite_presmodule->startbox();
1272                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1273                 $kiriwrite_presmodule->addhiddendata("action", "edit");
1274                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1275                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1277                 $kiriwrite_presmodule->addlinebreak();
1278                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1280                 $kiriwrite_presmodule->startheader();
1281                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1282                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1283                 $kiriwrite_presmodule->endheader();
1285                 $kiriwrite_presmodule->startrow();
1286                 $kiriwrite_presmodule->addcell("tablecell1");
1287                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
1288                 $kiriwrite_presmodule->endcell();
1289                 $kiriwrite_presmodule->addcell("tablecell2");
1290                 $kiriwrite_presmodule->addinputbox("filterfind", { Size => 64, MaxLength => 1024, Value => $filter_find });
1291                 $kiriwrite_presmodule->endcell();
1292                 $kiriwrite_presmodule->endrow();
1294                 $kiriwrite_presmodule->startrow();
1295                 $kiriwrite_presmodule->addcell("tablecell1");
1296                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
1297                 $kiriwrite_presmodule->endcell();
1298                 $kiriwrite_presmodule->addcell("tablecell2");
1299                 $kiriwrite_presmodule->addinputbox("filterreplace", { Size => 64, MaxLength => 1024, Value => $filter_replace });
1300                 $kiriwrite_presmodule->endcell();
1301                 $kiriwrite_presmodule->endrow();
1303                 $kiriwrite_presmodule->startrow();
1304                 $kiriwrite_presmodule->addcell("tablecell1");
1305                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
1306                 $kiriwrite_presmodule->endcell();
1307                 $kiriwrite_presmodule->addcell("tablecell2");
1308                 $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5, Value => $filter_priority });
1309                 $kiriwrite_presmodule->startlist();
1310                 $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
1311                 $kiriwrite_presmodule->endlist();
1312                 $kiriwrite_presmodule->endcell();
1313                 $kiriwrite_presmodule->endrow();
1315                 $kiriwrite_presmodule->startrow();
1316                 $kiriwrite_presmodule->addcell("tablecell1");
1317                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
1318                 $kiriwrite_presmodule->endcell();
1319                 $kiriwrite_presmodule->addcell("tablecell2");
1320                 $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10});
1321                 $kiriwrite_presmodule->endcell();
1322                 $kiriwrite_presmodule->endrow();
1324                 $kiriwrite_presmodule->endtable();
1326                 $kiriwrite_presmodule->addlinebreak();
1327                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{editfilterbutton});
1328                 $kiriwrite_presmodule->addtext(" | ");
1329                 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1330                 $kiriwrite_presmodule->addtext(" | ");
1331                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1332                 $kiriwrite_presmodule->endbox();
1333                 $kiriwrite_presmodule->endform();
1335                 return $kiriwrite_presmodule->grab(); 
1337         } else {
1339                 # A confirm value other than 0 or 1 has been
1340                 # specified, so return an error.
1342                 kiriwrite_error("invalidvalue");
1344         }
1348 sub kiriwrite_filter_delete{
1349 #################################################################################
1350 # kiriwrite_filter_delete: Deletes a filter from the filter list.               #
1351 #                                                                               #
1352 # Usage:                                                                        #
1353 #                                                                               #
1354 # kiriwrite_filter_delete(filterid, confirm);                                   #
1355 #                                                                               #
1356 # filterid      Specifies the filter line number to delete.                     #
1357 # confirm       Confirms the deletion of the selected filter.                   #
1358 #################################################################################
1360         # Get the values that were passed to this subroutine.
1362         my ($filter_id, $confirm) = @_;
1364         # Check the confirm value to make sure it is no more than
1365         # one character long.
1367         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
1369         # Check if the confirm value is blank and if it is
1370         # srt the confirm value to 0.
1372         if (!$confirm){
1374                 # The confirm value does not have any value
1375                 # set so set it to 0.
1377                 $confirm = 0;
1379         }
1381         # Check if the filter identification number is blank,
1382         # contains characters other than numbers and is more
1383         # than seven characters long.
1385         if (!$filter_id){
1387                 # The filter identification number is blank,
1388                 # so return an error.
1390                 kiriwrite_error("filteridblank");
1392         }
1394         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
1396         if ($filter_id_numbers_check eq 1){
1398                 # The filter identification number contains
1399                 # characters other than numbers, so return
1400                 # an error.
1402                 kiriwrite_error("filteridinvalid");
1404         }
1406         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
1408         if ($filter_id_maxlength_check eq 1){
1410                 # The filter identification number given
1411                 # is more than seven characters long, so
1412                 # return an error.
1414                 kiriwrite_error("filteridtoolong");
1416         }
1418         # Define some values for later.
1420         my @database_filter;
1421         my $filter_exists = 0;
1423         # Check if the confirm integer has a value of '1'.
1425         if ($confirm eq 1){
1427                 # The action to delete a filter has been confirmed.
1429                 # Connect to the database server.
1431                 $kiriwrite_dbmodule->connect();
1433                 # Check if any errors occured while connecting to the database server.
1435                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1437                         # A database connection error has occured so return
1438                         # an error.
1440                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1442                 }
1444                 # Connect to the filter database.
1446                 $kiriwrite_dbmodule->connectfilter();
1448                 # Check if any error has occured while connecting to the filter
1449                 # database.
1451                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1453                         # The filter database does not exist.
1455                         kiriwrite_error("filtersdbmissing");
1457                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1459                         # The filter database has invalid permissions set so return
1460                         # an error.
1462                         kiriwrite_error("filtersdbpermissions");
1464                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1466                         # A database error has occured with the filter database.
1468                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1470                 }
1472                 # Delete the filter from the filter database.
1474                 $kiriwrite_dbmodule->deletefilter({ FilterID => $filter_id });
1476                 # Check if any errors occured while deleting the filter.
1478                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1480                         # A database error has occured while trying to delete a filter so
1481                         # return an error.
1483                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1485                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1487                         # The filter does not exist so return an error.
1488  
1489                         kiriwrite_error("filterdoesnotexist");
1491                 }
1493                 # Disconnect from the filter database.
1495                 $kiriwrite_dbmodule->disconnectfilter();
1497                 # Disconnect from the database server.
1499                 $kiriwrite_dbmodule->disconnect();
1501                 # Write a message saying that the filter was deleted
1502                 # from the filter database.
1504                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfilter}, { Style => "pageheader" });
1505                 $kiriwrite_presmodule->addlinebreak();
1506                 $kiriwrite_presmodule->addlinebreak();
1507                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfiltermessage});
1508                 $kiriwrite_presmodule->addlinebreak();
1509                 $kiriwrite_presmodule->addlinebreak();
1510                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1512         } elsif ($confirm eq 0) {
1514                 # Connect to the database server.
1516                 $kiriwrite_dbmodule->connect();
1518                 # Check if any errors occured while connecting to the database server.
1520                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1522                         # A database connection error has occured so return
1523                         # an error.
1525                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1527                 }
1529                 # Connect to the filter database.
1531                 $kiriwrite_dbmodule->connectfilter();
1533                 # Check if any error has occured while connecting to the filter
1534                 # database.
1536                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1538                         # The filter database does not exist.
1540                         kiriwrite_error("filtersdbmissing");
1542                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1544                         # The filter database has invalid permissions set so return
1545                         # an error.
1547                         kiriwrite_error("filtersdbpermissions");
1549                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1551                         # A database error has occured with the filter database.
1553                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1555                 }
1557                 # Get information about the filter (to check if it exists).
1559                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1561                 # Check if any errors occured while getting information about the filter.
1563                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1565                         # A database error occured while using the filter database so
1566                         # return an error.
1568                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1570                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1572                         # The filter does not exist so return an error.
1574                         kiriwrite_error("filterdoesnotexist");
1576                 }
1578                 # Disconnect from the filter database.
1580                 $kiriwrite_dbmodule->disconnectfilter();
1582                 # Disconnect from the database
1584                 # The confirm integer is '0', so continue write out
1585                 # a form asking the user to confirm the deletion
1586                 # pf the filter.
1588                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefilter}, { Style => "pageheader" });
1589                 $kiriwrite_presmodule->addlinebreak();
1590                 $kiriwrite_presmodule->addlinebreak();
1591                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefiltermessage});
1592                 $kiriwrite_presmodule->addlinebreak();
1593                 $kiriwrite_presmodule->addlinebreak();
1594                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1595                 $kiriwrite_presmodule->startbox();
1596                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1597                 $kiriwrite_presmodule->addhiddendata("action", "delete");
1598                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1599                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1600                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{deletefilterbutton});
1601                 $kiriwrite_presmodule->addtext(" | ");
1602                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{deletefilterreturn} });
1603                 $kiriwrite_presmodule->endbox();
1604                 $kiriwrite_presmodule->endform();
1606         } else {
1608                 kiriwrite_error("invalidvalue");
1610         }
1612         return $kiriwrite_presmodule->grab();
1616 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