Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Extra 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                 $kiriwrite_presmodule->clear();
370                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
371                 $kiriwrite_presmodule->addlinebreak();
372                 $kiriwrite_presmodule->addlinebreak();
373                 $kiriwrite_presmodule->startbox("errorbox");
374                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{filterdatabasedoesnotexist});
375                 $kiriwrite_presmodule->endbox();
377                 # Disconnect from the filter database.
379                 $kiriwrite_dbmodule->disconnectfilter();
381                 # Disconnect from the database server.
383                 $kiriwrite_dbmodule->disconnect();
384                 return $kiriwrite_presmodule->grab();
386         }
388         # Check if there is a warning message and if
389         # there is then write that warning message
390         # else write the list of filters.
392         if ($filterswarning){
394                 $kiriwrite_presmodule->startbox("errorbox");
395                 $kiriwrite_presmodule->addtext($filterswarning);
396                 $kiriwrite_presmodule->endbox();
398         } elsif ($filter_count) {
400                 # The filter database exists so write out the
401                 # list of filters.
403                 if ($blankfindfilter eq 1){
405                         $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{filter}->{warningtitle});
406                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{blankfindfilters});
407                         $kiriwrite_presmodule->addtext();
408                         $kiriwrite_presmodule->addlinebreak();
409                         $kiriwrite_presmodule->addlinebreak();
411                 }
413                 # Start a form for using the filter browsing list with.
415                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "GET");
416                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
418                 # Write out the filter browsing list.
420                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{showlistpage});
421                 $kiriwrite_presmodule->addselectbox("browsenumber");
423                 # Write out the list of available pages to browse.
424                 
425                 while ($filter_list_count ne $filter_list){
427                         $filter_list_count++;
429                         if ($filter_list_count eq 1 && !$filter_browsenumber){
431                                 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
433                         } else {
435                                 if ($filter_browsenumber eq $filter_list_count){
437                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
439                                 } else {
441                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count });
443                                 }
445                         }
447                 }
449                 $kiriwrite_presmodule->endselectbox();
450                 $kiriwrite_presmodule->addbutton("action", { Value => "view", Description => $kiriwrite_lang->{filter}->{show} });
452                 if ($filter_list ne $filter_browsenumber){
454                         $kiriwrite_presmodule->addtext(" | ");
455                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber + 1), { Text => $kiriwrite_lang->{filter}->{nextpage} });
457                 }
459                 # Check if the filter browse number is not blank and
460                 # not set as 0 and hide the Previous page link if
461                 # it is.
463                 if ($filter_browsenumber > 1){
465                         $kiriwrite_presmodule->addtext(" | ");
466                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber - 1), { Text => $kiriwrite_lang->{filter}->{previouspage} });
468                 }
470                 $kiriwrite_presmodule->addlinebreak();
471                 $kiriwrite_presmodule->addlinebreak();
473                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
475                 $kiriwrite_presmodule->startheader();
476                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{priority}, { Style => "tablecellheader" });
477                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{findsetting}, { Style => "tablecellheader" });
478                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{replacesetting}, { Style => "tablecellheader" });
479                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
480                 $kiriwrite_presmodule->endheader();
482                 foreach $filter (keys %filter_list){
484                         # Check which style should be used.
486                         if ($filter_style eq 0){
488                                 $filter_style_name = "tablecell1";
489                                 $filter_style = 1;
491                         } else {
493                                 $filter_style_name = "tablecell2";
494                                 $filter_style = 0;
496                         }
498                         $kiriwrite_presmodule->startrow();
499                         $kiriwrite_presmodule->addcell($filter_style_name);
500                         $kiriwrite_presmodule->addtext($filter_list{$filter}{Priority});
501                         $kiriwrite_presmodule->endcell();
502                         $kiriwrite_presmodule->addcell($filter_style_name);
504                         # Check if the find filter is blank.
506                         if (!$filter_list{$filter}{Find}){
508                                 # The find filter is blank.
510                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankfindsetting});
512                         } else {
514                                 # The find filter is not blank.
516                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Find});
518                         }
520                         $kiriwrite_presmodule->endcell();
521                         $kiriwrite_presmodule->addcell($filter_style_name);
523                         # Check if the replace filter is blank.
525                         if (!$filter_list{$filter}{Replace}){
527                                 # The replace filter is blank.
529                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankreplacesetting});
531                         } else {
533                                 # The replace filter is not blank.
535                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Replace});
537                         }
539                         $kiriwrite_presmodule->endcell();
540                         $kiriwrite_presmodule->addcell($filter_style_name);
541                         $kiriwrite_presmodule->addlink("?mode=filter&action=edit&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{edit} });
542                         $kiriwrite_presmodule->addlink("?mode=filter&action=delete&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{delete} });
543                         $kiriwrite_presmodule->endcell();
544                         $kiriwrite_presmodule->endrow();
546                 }
548                 $kiriwrite_presmodule->endtable();
549                 $kiriwrite_presmodule->endform();
551         }
553         if (!@database_filters && $filter_browsenumber > 1){
555                 # There were no values given for the page browse
556                 # number given so write a message saying that
557                 # there were no pages for the page browse number
558                 # given.
560                 $kiriwrite_presmodule->clear();
561                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
562                 $kiriwrite_presmodule->addlinebreak();
563                 $kiriwrite_presmodule->addlinebreak();
564                 $kiriwrite_presmodule->startbox("errorbox");
565                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersinpagebrowse});
566                 $kiriwrite_presmodule->addlinebreak();
567                 $kiriwrite_presmodule->addlinebreak();
568                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returntofirstpagebrowse} });
569                 $kiriwrite_presmodule->endbox();
571         } elsif (!@database_filters || !$filter_count || $filter_total_count eq 0){
573                 # There are no filters in the filter database.
575                 $kiriwrite_presmodule->clear();
576                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
577                 $kiriwrite_presmodule->addlinebreak();
578                 $kiriwrite_presmodule->addlinebreak();
579                 $kiriwrite_presmodule->startbox("errorbox");
580                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersavailable});
581                 $kiriwrite_presmodule->endbox();
583         }
585         # Disconnect from the filter database.
587         $kiriwrite_dbmodule->disconnectfilter();
589         # Disconnect from the database server.
591         $kiriwrite_dbmodule->disconnect();
593         return $kiriwrite_presmodule->grab();
597 sub kiriwrite_filter_add{
598 #################################################################################
599 # kiriwrite_filter_add: Adds a filter to the filter list.                       #
600 #                                                                               #
601 # Usage:                                                                        #
602 #                                                                               #
603 # kiriwrite_filter_add(filterfind, filterreplace, filterpriority,               #
604 #                       filternotes, [confirm]);                                #
605 #                                                                               #
606 # filterfind            Specifies the new word(s) to find.                      #
607 # filterreplace         Specifies the new word(s) to replace.                   #
608 # filterpriority        Specifies the new priority to use.                      #
609 # filternotes           Specifies the new notes to use.                         #
610 # confirm               Confirms the action to add a filter.                    #
611 #################################################################################
613         # Get the values that have been passed to the subroutine.
615         my ($filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
617         # Check the confirm value to make sure it is no more than
618         # one character long.
620         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
622         if (!$confirm){
624                 # The confirm value is undefined, so set the
625                 # value of the confirm integer to '0'.
627                 $confirm = 0;
629         }
631         if ($confirm eq 1){
633                 # The confirm integer is '1', so add the word
634                 # to the filter list.
636                 # First, check the variables recieved are UTF8
637                 # copliant.
639                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
640                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
641                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
642                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
644                 # Convert the UTF8 values so that the length can
645                 # checked properly.
647                 $filter_new_find        = kiriwrite_utf8convert($filter_new_find);
648                 $filter_new_replace     = kiriwrite_utf8convert($filter_new_replace);
649                 $filter_new_priority    = kiriwrite_utf8convert($filter_new_priority);
650                 $filter_new_notes       = kiriwrite_utf8convert($filter_new_notes);
652                 # Check if the find filter is blank and return an error
653                 # if it is.
655                 if (!$filter_new_find){
657                         # The find filter given is blank so return an
658                         # error.
660                         kiriwrite_error("blankfindfilter");
662                 }
664                 if (!$filter_new_priority){
666                         # The filter priority is blank so set it
667                         # to 1.
669                         $filter_new_priority = 1;
671                 }
673                 # Check the length and contents of the values given
674                 # to make sure they are valid.
676                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
677                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
678                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
679                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
681                 # Check if the result of the tests to see if they
682                 # are valid.
684                 if ($filterfind_maxlength_check eq 1){
686                         # The find filter is too long, so return
687                         # an error.
689                         kiriwrite_error("findfiltertoolong");
691                 }
693                 if ($filterreplace_maxlength_check eq 1){
695                         # The replace filter is too long, so
696                         # return an error.
698                         kiriwrite_error("replacefiltertoolong");
700                 }
702                 if ($filterpriority_maxlength_check eq 1){
704                         # The length of the filter priority
705                         # given is too long, so return an
706                         # error.
708                         kiriwrite_error("filterprioritytoolong");
710                 }
712                 if ($filterpriority_numbers_check eq 1){
714                         # The priority of the filter given
715                         # contains characters other than
716                         # numbers.
718                         kiriwrite_error("filterpriorityinvalidchars");
720                 }
722                 # Check if the filter priority is less than 1
723                 # and more than 10000 and return an error
724                 # if it is.
726                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
728                         # The filter priority is less than 1 and
729                         # more than 10000, so return an error.
731                         kiriwrite_error("filterpriorityinvalid");
733                 }
735                 # Connect to the database server.
737                 $kiriwrite_dbmodule->connect();
739                 # Check if any errors occured while connecting to the database server.
741                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
743                         # A database connection error has occured so return
744                         # an error.
746                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
748                 }
750                 # Connect to the filter database.
752                 $kiriwrite_dbmodule->connectfilter(1);
754                 # Check if any error has occured while connecting to the filter
755                 # database.
757                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
759                         # The filter database does not exist.
761                         kiriwrite_error("filtersdbmissing");
763                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
765                         # The filter database has invalid permissions set so return
766                         # an error.
768                         kiriwrite_error("filtersdbpermissions");
770                 }
772                 # Add the filter to the filter database.
774                 $kiriwrite_dbmodule->addfilter({ FindFilter => $filter_new_find, ReplaceFilter => $filter_new_replace, Priority => $filter_new_priority, Notes => $filter_new_notes});
776                 # Check if any errors have occured while adding the filter.
778                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
780                         # The filter database has invalid permissions set so return
781                         # an error.
783                         kiriwrite_error("filtersdbpermissions");
785                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseUncreatable"){
787                         # The filter database is uncreatable so return an error.
789                         kiriwrite_error("filterdatabase");
791                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
793                         # A database error with the filter database has occured so return
794                         # an error with the extended error information.
796                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
798                 }
800                 # Disconnect from the filter database.
802                 $kiriwrite_dbmodule->disconnectfilter();
804                 # Disconnect from the database server.
806                 $kiriwrite_dbmodule->disconnect();
808                 # Write out a message saying that the filter was added to the
809                 # filter database.
811                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteradded}, { Style => "pageheader" });
812                 $kiriwrite_presmodule->addlinebreak();
813                 $kiriwrite_presmodule->addlinebreak();
814                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteraddedmessage});
815                 $kiriwrite_presmodule->addlinebreak();
816                 $kiriwrite_presmodule->addlinebreak();
817                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
819                 return $kiriwrite_presmodule->grab();
821         } elsif ($confirm ne 0) {
823                 # The confirm integer is another value (which
824                 # it shouldn't be) so return an error.
826                 kiriwrite_error("invalidvalue");
828         }
830         # The confirm integer was blank so print out a form
831         # for adding a new filter.
833         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{addfilter}, { Style => "pageheader" });
834         $kiriwrite_presmodule->addlinebreak();
835         $kiriwrite_presmodule->addlinebreak();
836         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
837         $kiriwrite_presmodule->startbox();
838         $kiriwrite_presmodule->addhiddendata("mode", "filter");
839         $kiriwrite_presmodule->addhiddendata("action", "add");
840         $kiriwrite_presmodule->addhiddendata("confirm", 1);
841         $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
843         $kiriwrite_presmodule->startheader();
844         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
845         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
846         $kiriwrite_presmodule->endheader();
848         $kiriwrite_presmodule->startrow();
849         $kiriwrite_presmodule->addcell("tablecell1");
850         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
851         $kiriwrite_presmodule->endcell();
852         $kiriwrite_presmodule->addcell("tablecell2");
853         $kiriwrite_presmodule->addinputbox("findword", { Size => 64, MaxLength => 1024 });
854         $kiriwrite_presmodule->endcell();
855         $kiriwrite_presmodule->endrow();
857         $kiriwrite_presmodule->startrow();
858         $kiriwrite_presmodule->addcell("tablecell1");
859         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
860         $kiriwrite_presmodule->endcell();
861         $kiriwrite_presmodule->addcell("tablecell2");
862         $kiriwrite_presmodule->addinputbox("replaceword", { Size => 64, MaxLength => 1024 });
863         $kiriwrite_presmodule->endcell();
864         $kiriwrite_presmodule->endrow();
866         $kiriwrite_presmodule->startrow();
867         $kiriwrite_presmodule->addcell("tablecell1");
868         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
869         $kiriwrite_presmodule->endcell();
870         $kiriwrite_presmodule->addcell("tablecell2");
871         $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5 });
872         $kiriwrite_presmodule->startlist();
873         $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
874         $kiriwrite_presmodule->endlist();
875         $kiriwrite_presmodule->endcell();
876         $kiriwrite_presmodule->endrow();
878         $kiriwrite_presmodule->startrow();
879         $kiriwrite_presmodule->addcell("tablecell1");
880         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
881         $kiriwrite_presmodule->endcell();
882         $kiriwrite_presmodule->addcell("tablecell2");
883         $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10 });
884         $kiriwrite_presmodule->endcell();
885         $kiriwrite_presmodule->endrow();
887         $kiriwrite_presmodule->endtable();
889         $kiriwrite_presmodule->addlinebreak();
890         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{addfilterbutton});
891         $kiriwrite_presmodule->addtext(" | ");
892         $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{clearvalues});
893         $kiriwrite_presmodule->addtext(" | ");
894         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
896         $kiriwrite_presmodule->endbox();
897         $kiriwrite_presmodule->endform();
899         return $kiriwrite_presmodule->grab();
903 sub kiriwrite_filter_edit{
904 #################################################################################
905 # kiriwrite_filter_edit: Edits a filter from the filter list.                   #
906 #                                                                               #
907 # Usage:                                                                        #
908 #                                                                               #
909 # kiriwrite_filter_edit(filternumber, newfilterfind, newfilterreplace,          #
910 #                       newfilterpriority, newfilternotes, confirm);            #
911 #                                                                               #
912 # filterid              Specifies the filter number (line number) in the        #
913 #                       filter database.                                        #
914 # newfilterfind         Specifies the new word to find.                         #
915 # newfilterreplace      Specifies the new word to replace.                      #
916 # newfilterpriority     Specifies the new filter priority.                      #
917 # newfilternotes        Specifies the new filter notes.                         #
918 # confirm               Confirms the action to edit a filter.                   #
919 #################################################################################
921         # Get the values that have been passed to the subroutine.
923         my ($filter_id, $filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
925         # Check the confirm value to make sure it is no more than
926         # one character long.
928         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
930         # Check if the confirm value is blank and if it is
931         # srt the confirm value to 0.
933         if (!$confirm){
935                 # The confirm value does not have any value
936                 # set so set it to 0.
938                 $confirm = 0;
940         }
942         # Check if the filter identification number is blank,
943         # contains characters other than numbers and is more
944         # than seven characters long.
946         if (!$filter_id){
948                 # The filter identification number is blank,
949                 # so return an error.
951                 kiriwrite_error("filteridblank");
953         }
955         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
957         if ($filter_id_numbers_check eq 1){
959                 # The filter identification number contains
960                 # characters other than numbers, so return
961                 # an error.
963                 kiriwrite_error("filteridinvalid");
965         }
967         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
969         if ($filter_id_maxlength_check eq 1){
971                 # The filter identification number given
972                 # is more than seven characters long, so
973                 # return an error.
975                 kiriwrite_error("filteridtoolong");
977         }
979         my $filter_priority;
980         my $filter_find;
981         my $filter_replace;
982         my $filter_notes;
983  
984         # Check if the action to edit a filter has been
985         # confirmed.
987         if ($confirm eq 1){
989                 # The action to edit a filter has been confirmed so
990                 # edit the selected filter.
992                 # First, check the variables recieved are UTF8
993                 # copliant.
995                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
996                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
997                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
998                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
1000                 # Convert the UTF8 values so that the length can
1001                 # checked properly.
1003                 $filter_find            = kiriwrite_utf8convert($filter_new_find);
1004                 $filter_replace         = kiriwrite_utf8convert($filter_new_replace);
1005                 $filter_priority        = kiriwrite_utf8convert($filter_new_priority);
1006                 $filter_notes           = kiriwrite_utf8convert($filter_new_notes);
1008                 # Check if the find filter is blank and return an error
1009                 # if it is.
1011                 if (!$filter_new_find){
1013                         # The find filter given is blank so return an
1014                         # error.
1016                         kiriwrite_error("blankfindfilter");
1018                 }
1020                 if (!$filter_new_priority){
1022                         # The filter priority is blank so set it
1023                         # to 1.
1025                         $filter_new_priority = 1;
1027                 }
1029                 # Check the length and contents of the values given
1030                 # to make sure they are valid.
1032                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
1033                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
1034                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
1035                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
1037                 # Check if the result of the tests to see if they
1038                 # are valid.
1040                 if ($filterfind_maxlength_check eq 1){
1042                         # The find filter is too long, so return
1043                         # an error.
1045                         kiriwrite_error("findfiltertoolong");
1047                 }
1049                 if ($filterreplace_maxlength_check eq 1){
1051                         # The replace filter is too long, so
1052                         # return an error.
1054                         kiriwrite_error("replacefiltertoolong");
1056                 }
1058                 if ($filterpriority_maxlength_check eq 1){
1060                         # The length of the filter priority
1061                         # given is too long, so return an
1062                         # error.
1064                         kiriwrite_error("filterprioritytoolong");
1066                 }
1068                 if ($filterpriority_numbers_check eq 1){
1070                         # The priority of the filter given
1071                         # contains characters other than
1072                         # numbers.
1074                         kiriwrite_error("filterpriorityinvalidchars");
1076                 }
1078                 # Check if the filter priority is less than 1
1079                 # and more than 10000 and return an error
1080                 # if it is.
1082                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
1084                         # The filter priority is less than 1 and
1085                         # more than 10000, so return an error.
1087                         kiriwrite_error("filterpriorityinvalid");
1089                 }
1091                 # Connect to the database server.
1093                 $kiriwrite_dbmodule->connect();
1095                 # Check if any errors occured while connecting to the database server.
1097                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1099                         # A database connection error has occured so return
1100                         # an error.
1102                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1104                 }
1106                 # Connect to the filter database.
1108                 $kiriwrite_dbmodule->connectfilter();
1110                 # Check if any error has occured while connecting to the filter
1111                 # database.
1113                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1115                         # The filter database does not exist.
1117                         kiriwrite_error("filtersdbmissing");
1119                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1121                         # The filter database has invalid permissions set so return
1122                         # an error.
1124                         kiriwrite_error("filtersdbpermissions");
1126                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1128                         # A database error has occured with the filter database.
1130                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1132                 }
1134                 # Edit the selected filter in the filter database.
1136                 $kiriwrite_dbmodule->editfilter({ FilterID => $filter_id, NewFindFilter => $filter_new_find, NewReplaceFilter => $filter_new_replace, NewFilterPriority => $filter_new_priority, NewFilterNotes => $filter_new_notes });
1138                 # Check if any errors occured while editing the filter.
1140                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1142                         # The filter database has invalid permissions set so return
1143                         # an error.
1145                         kiriwrite_error("filtersdbpermissions");
1147                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1149                         # A database error has occured while using the filter database
1150                         # so return an error.
1152                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1154                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1156                         # The specified filter does not exist so return an error.
1158                         kiriwrite_error("filterdoesnotexist");
1160                 }
1162                 # Disconnect from the filter database.
1164                 $kiriwrite_dbmodule->disconnectfilter();
1166                 # Disconnect from the database server.
1168                 $kiriwrite_dbmodule->disconnect();
1170                 # Write a message saying that the filter was edited.
1172                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfilter}, { Style => "pageheader" });
1173                 $kiriwrite_presmodule->addlinebreak();
1174                 $kiriwrite_presmodule->addlinebreak();
1175                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfiltermessage});
1176                 $kiriwrite_presmodule->addlinebreak();
1177                 $kiriwrite_presmodule->addlinebreak();
1178                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist}});
1180                 return $kiriwrite_presmodule->grab();
1182         } elsif ($confirm eq 0){
1184                 # The action to edit a filter has not been confirmed
1185                 # so write a form for editing the filter with.
1187                 # Connect to the database server.
1189                 $kiriwrite_dbmodule->connect();
1191                 # Check if any errors occured while connecting to the database server.
1193                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1195                         # A database connection error has occured so return
1196                         # an error.
1198                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1200                 }
1202                 # Connect to the database server.
1204                 $kiriwrite_dbmodule->connect();
1206                 # Check if any errors occured while connecting to the database server.
1208                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1210                         # A database connection error has occured so return
1211                         # an error.
1213                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1215                 }
1217                 # Connect to the filter database.
1219                 $kiriwrite_dbmodule->connectfilter();
1221                 # Check if any error has occured while connecting to the filter
1222                 # database.
1224                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1226                         # The filter database does not exist.
1228                         kiriwrite_error("filtersdbmissing");
1230                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1232                         # The filter database has invalid permissions set so return
1233                         # an error.
1235                         kiriwrite_error("filtersdbpermissions");
1237                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1239                         # A database error has occured with the filter database.
1241                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1243                 }
1245                 # Get information about the filter.
1247                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1249                 # Check if any errors occured while getting information about the filter.
1251                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1253                         # A database error occured while using the filter database so
1254                         # return an error.
1256                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1258                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1260                         # The filter does not exist so return an error.
1262                         kiriwrite_error("filterdoesnotexist");
1264                 }
1266                 # Get the required information.
1268                 $filter_priority        = $filter_info{"FilterPriority"};
1269                 $filter_find            = $filter_info{"FilterFind"};
1270                 $filter_replace         = $filter_info{"FilterReplace"};
1271                 $filter_notes           = $filter_info{"FilterNotes"};
1273                 # Disconnect from the filter database.
1275                 $kiriwrite_dbmodule->disconnectfilter();
1277                 # Disconnect from the database server.
1279                 $kiriwrite_dbmodule->disconnect();
1281                 # Write out the form.
1283                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editfilter}, { Style => "pageheader" });
1284                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1285                 $kiriwrite_presmodule->startbox();
1286                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1287                 $kiriwrite_presmodule->addhiddendata("action", "edit");
1288                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1289                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1291                 $kiriwrite_presmodule->addlinebreak();
1292                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1294                 $kiriwrite_presmodule->startheader();
1295                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1296                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1297                 $kiriwrite_presmodule->endheader();
1299                 $kiriwrite_presmodule->startrow();
1300                 $kiriwrite_presmodule->addcell("tablecell1");
1301                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
1302                 $kiriwrite_presmodule->endcell();
1303                 $kiriwrite_presmodule->addcell("tablecell2");
1304                 $kiriwrite_presmodule->addinputbox("filterfind", { Size => 64, MaxLength => 1024, Value => $filter_find });
1305                 $kiriwrite_presmodule->endcell();
1306                 $kiriwrite_presmodule->endrow();
1308                 $kiriwrite_presmodule->startrow();
1309                 $kiriwrite_presmodule->addcell("tablecell1");
1310                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
1311                 $kiriwrite_presmodule->endcell();
1312                 $kiriwrite_presmodule->addcell("tablecell2");
1313                 $kiriwrite_presmodule->addinputbox("filterreplace", { Size => 64, MaxLength => 1024, Value => $filter_replace });
1314                 $kiriwrite_presmodule->endcell();
1315                 $kiriwrite_presmodule->endrow();
1317                 $kiriwrite_presmodule->startrow();
1318                 $kiriwrite_presmodule->addcell("tablecell1");
1319                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
1320                 $kiriwrite_presmodule->endcell();
1321                 $kiriwrite_presmodule->addcell("tablecell2");
1322                 $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5, Value => $filter_priority });
1323                 $kiriwrite_presmodule->startlist();
1324                 $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
1325                 $kiriwrite_presmodule->endlist();
1326                 $kiriwrite_presmodule->endcell();
1327                 $kiriwrite_presmodule->endrow();
1329                 $kiriwrite_presmodule->startrow();
1330                 $kiriwrite_presmodule->addcell("tablecell1");
1331                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
1332                 $kiriwrite_presmodule->endcell();
1333                 $kiriwrite_presmodule->addcell("tablecell2");
1334                 $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10});
1335                 $kiriwrite_presmodule->endcell();
1336                 $kiriwrite_presmodule->endrow();
1338                 $kiriwrite_presmodule->endtable();
1340                 $kiriwrite_presmodule->addlinebreak();
1341                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{editfilterbutton});
1342                 $kiriwrite_presmodule->addtext(" | ");
1343                 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1344                 $kiriwrite_presmodule->addtext(" | ");
1345                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1346                 $kiriwrite_presmodule->endbox();
1347                 $kiriwrite_presmodule->endform();
1349                 return $kiriwrite_presmodule->grab(); 
1351         } else {
1353                 # A confirm value other than 0 or 1 has been
1354                 # specified, so return an error.
1356                 kiriwrite_error("invalidvalue");
1358         }
1362 sub kiriwrite_filter_delete{
1363 #################################################################################
1364 # kiriwrite_filter_delete: Deletes a filter from the filter list.               #
1365 #                                                                               #
1366 # Usage:                                                                        #
1367 #                                                                               #
1368 # kiriwrite_filter_delete(filterid, confirm);                                   #
1369 #                                                                               #
1370 # filterid      Specifies the filter line number to delete.                     #
1371 # confirm       Confirms the deletion of the selected filter.                   #
1372 #################################################################################
1374         # Get the values that were passed to this subroutine.
1376         my ($filter_id, $confirm) = @_;
1378         # Check the confirm value to make sure it is no more than
1379         # one character long.
1381         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
1383         # Check if the confirm value is blank and if it is
1384         # srt the confirm value to 0.
1386         if (!$confirm){
1388                 # The confirm value does not have any value
1389                 # set so set it to 0.
1391                 $confirm = 0;
1393         }
1395         # Check if the filter identification number is blank,
1396         # contains characters other than numbers and is more
1397         # than seven characters long.
1399         if (!$filter_id){
1401                 # The filter identification number is blank,
1402                 # so return an error.
1404                 kiriwrite_error("filteridblank");
1406         }
1408         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
1410         if ($filter_id_numbers_check eq 1){
1412                 # The filter identification number contains
1413                 # characters other than numbers, so return
1414                 # an error.
1416                 kiriwrite_error("filteridinvalid");
1418         }
1420         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
1422         if ($filter_id_maxlength_check eq 1){
1424                 # The filter identification number given
1425                 # is more than seven characters long, so
1426                 # return an error.
1428                 kiriwrite_error("filteridtoolong");
1430         }
1432         # Define some values for later.
1434         my @database_filter;
1435         my $filter_exists = 0;
1437         # Check if the confirm integer has a value of '1'.
1439         if ($confirm eq 1){
1441                 # The action to delete a filter has been confirmed.
1443                 # Connect to the database server.
1445                 $kiriwrite_dbmodule->connect();
1447                 # Check if any errors occured while connecting to the database server.
1449                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1451                         # A database connection error has occured so return
1452                         # an error.
1454                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1456                 }
1458                 # Connect to the filter database.
1460                 $kiriwrite_dbmodule->connectfilter();
1462                 # Check if any error has occured while connecting to the filter
1463                 # database.
1465                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1467                         # The filter database does not exist.
1469                         kiriwrite_error("filtersdbmissing");
1471                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1473                         # The filter database has invalid permissions set so return
1474                         # an error.
1476                         kiriwrite_error("filtersdbpermissions");
1478                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1480                         # A database error has occured with the filter database.
1482                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1484                 }
1486                 # Delete the filter from the filter database.
1488                 $kiriwrite_dbmodule->deletefilter({ FilterID => $filter_id });
1490                 # Check if any errors occured while deleting the filter.
1492                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1494                         # A database error has occured while trying to delete a filter so
1495                         # return an error.
1497                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1499                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1501                         # The filter does not exist so return an error.
1502  
1503                         kiriwrite_error("filterdoesnotexist");
1505                 }
1507                 # Disconnect from the filter database.
1509                 $kiriwrite_dbmodule->disconnectfilter();
1511                 # Disconnect from the database server.
1513                 $kiriwrite_dbmodule->disconnect();
1515                 # Write a message saying that the filter was deleted
1516                 # from the filter database.
1518                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfilter}, { Style => "pageheader" });
1519                 $kiriwrite_presmodule->addlinebreak();
1520                 $kiriwrite_presmodule->addlinebreak();
1521                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfiltermessage});
1522                 $kiriwrite_presmodule->addlinebreak();
1523                 $kiriwrite_presmodule->addlinebreak();
1524                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1526         } elsif ($confirm eq 0) {
1528                 # Connect to the database server.
1530                 $kiriwrite_dbmodule->connect();
1532                 # Check if any errors occured while connecting to the database server.
1534                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1536                         # A database connection error has occured so return
1537                         # an error.
1539                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1541                 }
1543                 # Connect to the filter database.
1545                 $kiriwrite_dbmodule->connectfilter();
1547                 # Check if any error has occured while connecting to the filter
1548                 # database.
1550                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1552                         # The filter database does not exist.
1554                         kiriwrite_error("filtersdbmissing");
1556                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1558                         # The filter database has invalid permissions set so return
1559                         # an error.
1561                         kiriwrite_error("filtersdbpermissions");
1563                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1565                         # A database error has occured with the filter database.
1567                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1569                 }
1571                 # Get information about the filter (to check if it exists).
1573                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1575                 # Check if any errors occured while getting information about the filter.
1577                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1579                         # A database error occured while using the filter database so
1580                         # return an error.
1582                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1584                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1586                         # The filter does not exist so return an error.
1588                         kiriwrite_error("filterdoesnotexist");
1590                 }
1592                 # Disconnect from the filter database.
1594                 $kiriwrite_dbmodule->disconnectfilter();
1596                 # Disconnect from the database
1598                 # The confirm integer is '0', so continue write out
1599                 # a form asking the user to confirm the deletion
1600                 # pf the filter.
1602                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefilter}, { Style => "pageheader" });
1603                 $kiriwrite_presmodule->addlinebreak();
1604                 $kiriwrite_presmodule->addlinebreak();
1605                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefiltermessage});
1606                 $kiriwrite_presmodule->addlinebreak();
1607                 $kiriwrite_presmodule->addlinebreak();
1608                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1609                 $kiriwrite_presmodule->startbox();
1610                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1611                 $kiriwrite_presmodule->addhiddendata("action", "delete");
1612                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1613                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1614                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{deletefilterbutton});
1615                 $kiriwrite_presmodule->addtext(" | ");
1616                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{deletefilterreturn} });
1617                 $kiriwrite_presmodule->endbox();
1618                 $kiriwrite_presmodule->endform();
1620         } else {
1622                 kiriwrite_error("invalidvalue");
1624         }
1626         return $kiriwrite_presmodule->grab();
1630 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