Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Another minor alteration.
[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_enabled          = $form_data->{'enabled'};
38                         my $http_query_notes            = $form_data->{'notes'};
39                 
40                         my $pagedata = kiriwrite_filter_add({ FindFilter => $http_query_findwords, ReplaceFilter => $http_query_replacewords, Priority => $http_query_priority, Enabled => $http_query_enabled, Notes => $http_query_notes, Confirm => $http_query_confirm });
41                         #my $pagedata = kiriwrite_filter_add($http_query_findwords, $http_query_replacewords, $http_query_priority, $http_query_notes, $http_query_confirm);
43                         kiriwrite_output_header;        # Output the header to browser/console/stdout.
44                         kiriwrite_output_page($kiriwrite_lang->{filter}->{addfilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
45                         exit;                           # End the script.
47                 }
49                 my $pagedata = kiriwrite_filter_add();
51                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
52                 kiriwrite_output_page($kiriwrite_lang->{filter}->{addfilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
53                 exit;                           # End the script.
55         } elsif ($http_query_action eq "edit"){
57                 # The action the user requested is to edit an filter from
58                 # the filter database.
60                 my $http_query_number   = $form_data->{'filter'};
61                 my $http_query_confirm  = $form_data->{'confirm'};
63                 if ($http_query_confirm){
65                         # There is a value in http_query_confirm, so pass on the
66                         # new find and replace words so that the filter database
67                         # can be edited.
69                         my $http_query_findwords        = $form_data->{'filterfind'};
70                         my $http_query_replacewords     = $form_data->{'filterreplace'};
71                         my $http_query_priority         = $form_data->{'priority'};
72                         my $http_query_notes            = $form_data->{'notes'};
73                         my $http_query_enabled          = $form_data->{'enabled'};
75                         my $pagedata = kiriwrite_filter_edit({ FilterID => $http_query_number, NewFindFilter => $http_query_findwords, NewReplaceFilter => $http_query_replacewords, NewPriority => $http_query_priority, NewEnabled => $http_query_enabled, NewFilterNotes => $http_query_notes, Confirm => $http_query_confirm });
77                         kiriwrite_output_header;        # Output the header to browser/console/stdout.
78                         kiriwrite_output_page($kiriwrite_lang->{filter}->{editfilter}, $pagedata, "filter");    # Output the page to browser/console/stdout.
79                         exit;                           # End the script.
81                 }
83                 my $pagedata = kiriwrite_filter_edit({ FilterID => $http_query_number });
85                 kiriwrite_output_header;                # Output the header to browser/console/stdout.
86                 kiriwrite_output_page($kiriwrite_lang->{filter}->{editfilter}, $pagedata, "filter");    # Output the page to browser/console/stdout.
87                 exit;                                   # End the script.
89         } elsif ($http_query_action eq "delete"){
91                 # The action the user requested is to delete an filter
92                 # from the filter database.
94                 my $http_query_number = $form_data->{'filter'};
95                 my $http_query_confirm = $form_data->{'confirm'};
97                 if ($http_query_confirm){
99                         my $pagedata = kiriwrite_filter_delete($http_query_number, $http_query_confirm);
101                         kiriwrite_output_header;                # Output the header to browser/console/stdout.
102                         kiriwrite_output_page($kiriwrite_lang->{filter}->{deletefilter}, $pagedata, "filter"); # Output the page to browser/console/stdout.
103                         exit;                                   # End the script
105                 }
107                 my $pagedata = kiriwrite_filter_delete($http_query_number);
109                 kiriwrite_output_header;                # Output the header to browser/console/stdout.
110                 kiriwrite_output_page($kiriwrite_lang->{filter}->{deletefilter}, $pagedata, "filter");  # Output the page to browser/console/stdout.
111                 exit;                                   # End the script.
113         } elsif ($http_query_action eq "view"){
115                 # The action the user requested is to view the list
116                 # filters on the filter database.
118                 my $http_query_browsenumber = $form_data->{'browsenumber'};
120                 my $pagedata = kiriwrite_filter_list($http_query_browsenumber);
122                 kiriwrite_output_header;        # Output the header to browser/console/stdout.
123                 kiriwrite_output_page($kiriwrite_lang->{filter}->{viewfilters}, $pagedata, "filter"); # Output the page to browser/console/stdout.
124                 exit;                           # End the script.
126         } else {
128                 # Another action was requested that was not one of 
129                 # the ones prcedding this catch all, so return
130                 # an error saying that an invalid option was
131                 # specified.
133                 kiriwrite_error("invalidaction");
135         }
137 } else {
139         my $pagedata = kiriwrite_filter_list();
141         kiriwrite_output_header;        # Output the header to browser/console/stdout.
142         kiriwrite_output_page($kiriwrite_lang->{filter}->{viewfilters}, $pagedata, "filter"); # Output the page to browser/console/stdout.
143         exit;                           # End the script.
147 #################################################################################
148 # Begin list of relevant subroutines.                                           #
149 #################################################################################
151 sub kiriwrite_filter_list{
152 #################################################################################
153 # kiriwrite_filter_list: Lists the filters that will be used when compiling a   #
154 # webpage.                                                                      #
155 #                                                                               #
156 # Usage:                                                                        #
157 #                                                                               #
158 # kiriwrite_filter_list([browsenumber]);                                        #
159 #                                                                               #
160 # browsenumber  Specifies the page browse number to use.                        #
161 #################################################################################
163         my $filter_browsenumber = shift;
165         my $filtersdb_notexist = 0;
167         # Connect to the database server.
169         $kiriwrite_dbmodule->connect();
171         # Check if any errors occured while connecting to the database server.
173         if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
175                 # A database connection error has occured so return
176                 # an error.
178                 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
180         }
182         # Connect to the filter database.
184         $kiriwrite_dbmodule->connectfilter();
186         # Check if any error has occured while connecting to the filter
187         # database.
189         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
191                 # The filter database does not exist.
193                 $filtersdb_notexist = 1;
195         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
197                 # The filter database has invalid permissions set so return
198                 # an error.
200                 kiriwrite_error("filtersdbpermissions");
202         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
204                 # A database error has occured with the filter database.
206                 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
208         }
210         # Define some variables required for processing the filters list.
212         my %filter_list;
213         my %filter_info;
214         my @database_filters;
215         my $blankfindfilter = 0;
216         my $filterswarning = "";
217         my $filter;
218         my $filter_split = $kiriwrite_config{"display_filtercount"};
219         my $filter_list = 0;
220         my $filter_count = 0;
221         my $filter_style = 0;
222         my $filter_list_count = 0;
223         my $filter_style_name = "";
225         tie(%filter_list, 'Tie::IxHash');
227         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{viewfilters}, { Style => "pageheader" });
228         $kiriwrite_presmodule->addlinebreak();
229         $kiriwrite_presmodule->addlinebreak();
231         # If the filter database exists then get the list of filters,
232         # otherwise write a message saying that the filter database
233         # does not exist and will be created when a filter is added.
235         if ($filtersdb_notexist eq 0){
237                 if (!$filter_browsenumber || $filter_browsenumber eq 0){
239                         $filter_browsenumber = 1;
241                 }
243                 # Check if the filter browse number is valid and if it isn't
244                 # then return an error.
246                 my $kiriwrite_browsenumber_length_check         = kiriwrite_variablecheck($filter_browsenumber, "maxlength", 7, 1);
247                 my $kiriwrite_browsenumber_number_check         = kiriwrite_variablecheck($filter_browsenumber, "numbers", 0, 1);
249                 if ($kiriwrite_browsenumber_length_check eq 1){
251                         # The browse number was too long so return
252                         # an error.
254                         kiriwrite_error("browsenumbertoolong");
256                 }
258                 if ($kiriwrite_browsenumber_number_check eq 1){
260                         # The browse number wasn't a number so
261                         # return an error.
263                         kiriwrite_error("browsenumberinvalid");
265                 }
267                 # Get the total count of filters in the filter database.
269                 my $filter_total_count  = $kiriwrite_dbmodule->getfiltercount();
271                 # Check if any errors occured while getting the count of filters.
273                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
275                         # A database error has occured with the filter database.
277                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
279                 }
281                 if ($filter_total_count ne 0){
283                         if ($filter_total_count eq $filter_split){
285                                 $filter_list = int(($filter_total_count / $filter_split));
287                         } else {
289                                 $filter_list = int(($filter_total_count / $filter_split) + 1);
291                         }
293                 }
295                 my $start_from = ($filter_browsenumber - 1) * $filter_split;
297                 # Get the list of available filters.
299                 @database_filters       = $kiriwrite_dbmodule->getfilterlist({ StartFrom => $start_from, Limit => $filter_split });
301                 # Check if any errors occured while getting the list of filters.
303                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
305                         # A database error has occured with the filter database.
307                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
309                 }
311                 # Process each filter getting the priority, find setting and
312                 # replace setting.
314                 foreach $filter (@database_filters){
316                         # Get the information about the filter.
318                         %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter });
320                         # Check if any errors occured while getting the filter information.
322                         if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
324                                 # A database error occured while using the filter database.
326                                 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
328                         } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
330                                 # The filter does not exist so process the next filter.
332                                 next;
334                         }
336                         # Check if the find filter is blank.
338                         if (!$filter_info{"FilterFind"}){
340                                 # The find filter is blank, so set the value to write a warning
341                                 # message saying that a find filter given is blank.
343                                 $blankfindfilter = 1;
345                         }
347                         $filter_list{$filter_count}{ID}         = $filter_info{"FilterID"};
348                         $filter_list{$filter_count}{Priority}   = $filter_info{"FilterPriority"};
349                         $filter_list{$filter_count}{Find}       = $filter_info{"FilterFind"};
350                         $filter_list{$filter_count}{Replace}    = $filter_info{"FilterReplace"};
351                         $filter_list{$filter_count}{Enabled}    = $filter_info{"FilterEnabled"};
352                         $filter_list{$filter_count}{Notes}      = $filter_info{"FilterNotes"};
354                         $filter_count++;
356                 }
358                 # Check if there are filters in the filter database and
359                 # write a message if there isn't.
361         }
363         # Check if the database wasn't found and if it
364         # wasn't then write a message saying that the
365         # database will be created when a filter is
366         # added.
368         if ($filtersdb_notexist eq 1){
370                 # The filter database doesn't exist so write
371                 # a message.
373                 $kiriwrite_presmodule->clear();
374                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
375                 $kiriwrite_presmodule->addlinebreak();
376                 $kiriwrite_presmodule->addlinebreak();
377                 $kiriwrite_presmodule->startbox("errorbox");
378                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{filterdatabasedoesnotexist});
379                 $kiriwrite_presmodule->endbox();
381                 # Disconnect from the filter database.
383                 $kiriwrite_dbmodule->disconnectfilter();
385                 # Disconnect from the database server.
387                 $kiriwrite_dbmodule->disconnect();
388                 return $kiriwrite_presmodule->grab();
390         }
392         # Check if there is a warning message and if
393         # there is then write that warning message
394         # else write the list of filters.
396         if ($filterswarning){
398                 $kiriwrite_presmodule->startbox("errorbox");
399                 $kiriwrite_presmodule->addtext($filterswarning);
400                 $kiriwrite_presmodule->endbox();
402         } elsif ($filter_count) {
404                 # The filter database exists so write out the
405                 # list of filters.
407                 if ($blankfindfilter eq 1){
409                         $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{filter}->{warningtitle});
410                         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{blankfindfilters});
411                         $kiriwrite_presmodule->addtext();
412                         $kiriwrite_presmodule->addlinebreak();
413                         $kiriwrite_presmodule->addlinebreak();
415                 }
417                 # Start a form for using the filter browsing list with.
419                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "GET");
420                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
422                 # Write out the filter browsing list.
424                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{showlistpage});
425                 $kiriwrite_presmodule->addselectbox("browsenumber");
427                 # Write out the list of available pages to browse.
428                 
429                 while ($filter_list_count ne $filter_list){
431                         $filter_list_count++;
433                         if ($filter_list_count eq 1 && !$filter_browsenumber){
435                                 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
437                         } else {
439                                 if ($filter_browsenumber eq $filter_list_count){
441                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
443                                 } else {
445                                         $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count });
447                                 }
449                         }
451                 }
453                 $kiriwrite_presmodule->endselectbox();
454                 $kiriwrite_presmodule->addbutton("action", { Value => "view", Description => $kiriwrite_lang->{filter}->{show} });
456                 if ($filter_list ne $filter_browsenumber){
458                         $kiriwrite_presmodule->addtext(" | ");
459                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber + 1), { Text => $kiriwrite_lang->{filter}->{nextpage} });
461                 }
463                 # Check if the filter browse number is not blank and
464                 # not set as 0 and hide the Previous page link if
465                 # it is.
467                 if ($filter_browsenumber > 1){
469                         $kiriwrite_presmodule->addtext(" | ");
470                         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber - 1), { Text => $kiriwrite_lang->{filter}->{previouspage} });
472                 }
474                 $kiriwrite_presmodule->addlinebreak();
475                 $kiriwrite_presmodule->addlinebreak();
477                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
479                 $kiriwrite_presmodule->startheader();
480                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{priority}, { Style => "tablecellheader" });
481                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{findsetting}, { Style => "tablecellheader" });
482                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{replacesetting}, { Style => "tablecellheader" });
483                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
484                 $kiriwrite_presmodule->endheader();
486                 foreach $filter (keys %filter_list){
488                         # Check which style should be used.
490                         if ($filter_style eq 0){
492                                 $filter_style_name = "tablecell1";
493                                 $filter_style = 1;
495                         } else {
497                                 $filter_style_name = "tablecell2";
498                                 $filter_style = 0;
500                         }
502                         # Check if the filter is disabled.
504                         if (!$filter_list{$filter}{Enabled}){
506                                 $filter_style_name = "tablecelldisabled";
508                         }
510                         $kiriwrite_presmodule->startrow();
511                         $kiriwrite_presmodule->addcell($filter_style_name);
512                         $kiriwrite_presmodule->addtext($filter_list{$filter}{Priority});
513                         $kiriwrite_presmodule->endcell();
514                         $kiriwrite_presmodule->addcell($filter_style_name);
516                         # Check if the find filter is blank.
518                         if (!$filter_list{$filter}{Find}){
520                                 # The find filter is blank.
522                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankfindsetting});
524                         } else {
526                                 # The find filter is not blank.
528                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Find});
530                         }
532                         $kiriwrite_presmodule->endcell();
533                         $kiriwrite_presmodule->addcell($filter_style_name);
535                         # Check if the replace filter is blank.
537                         if (!$filter_list{$filter}{Replace}){
539                                 # The replace filter is blank.
541                                 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankreplacesetting});
543                         } else {
545                                 # The replace filter is not blank.
547                                 $kiriwrite_presmodule->addtext($filter_list{$filter}{Replace});
549                         }
551                         $kiriwrite_presmodule->endcell();
552                         $kiriwrite_presmodule->addcell($filter_style_name);
553                         $kiriwrite_presmodule->addlink("?mode=filter&action=edit&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{edit} });
554                         $kiriwrite_presmodule->addlink("?mode=filter&action=delete&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{delete} });
555                         $kiriwrite_presmodule->endcell();
556                         $kiriwrite_presmodule->endrow();
558                 }
560                 $kiriwrite_presmodule->endtable();
561                 $kiriwrite_presmodule->endform();
563         }
565         if (!$filter_total_count){
567                 $filter_total_count = "";
569         }
571         if ($filter_browsenumber > 1 && !@database_filters){
573                 # There were no values given for the page browse
574                 # number given so write a message saying that
575                 # there were no pages for the page browse number
576                 # given.
578                 $kiriwrite_presmodule->clear();
579                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{viewfilters}, { Style => "pageheader" });
580                 $kiriwrite_presmodule->addlinebreak();
581                 $kiriwrite_presmodule->addlinebreak();
582                 $kiriwrite_presmodule->startbox("errorbox");
583                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersinpagebrowse});
584                 $kiriwrite_presmodule->addlinebreak();
585                 $kiriwrite_presmodule->addlinebreak();
586                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returntofirstpagebrowse} });
587                 $kiriwrite_presmodule->endbox();
589         } elsif (!@database_filters || !$filter_count || $filter_total_count eq 0){
591                 # There are no filters in the filter database.
593                 $kiriwrite_presmodule->clear();
594                 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}), { Style => "pageheader" });
595                 $kiriwrite_presmodule->addlinebreak();
596                 $kiriwrite_presmodule->addlinebreak();
597                 $kiriwrite_presmodule->startbox("errorbox");
598                 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersavailable});
599                 $kiriwrite_presmodule->endbox();
601         }
603         # Disconnect from the filter database.
605         $kiriwrite_dbmodule->disconnectfilter();
607         # Disconnect from the database server.
609         $kiriwrite_dbmodule->disconnect();
611         return $kiriwrite_presmodule->grab();
615 sub kiriwrite_filter_add{
616 #################################################################################
617 # kiriwrite_filter_add: Adds a filter to the filter list.                       #
618 #                                                                               #
619 # Usage:                                                                        #
620 #                                                                               #
621 # kiriwrite_filter_add(options);                                                #
622 #                                                                               #
623 # options       Specifies the following options as a hash (in any order).       #
624 #                                                                               #
625 # FindFilter    Specifies the find filter setting.                              #
626 # ReplaceFilter Specifies the replace filter setting.                           #
627 # Priority      Specifies the priority of the filter.                           #
628 # Enabled       Specifies if the filter should be enabled.                      #
629 # Notes         Specifies some notes about the filter.                          #
630 # Confirm       Specifies if the filter should be added.                        #
631 #################################################################################
633         # Get the values that have been passed to the subroutine.
635         my ($options) = @_;
637         $confirm        = $options->{"Confirm"};
639         # Check the confirm value to make sure it is no more than
640         # one character long.
642         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
644         if (!$confirm){
646                 # The confirm value is undefined, so set the
647                 # value of the confirm integer to '0'.
649                 $confirm = 0;
651         }
653         if ($confirm eq 1){
655                 # The confirm integer is '1', so add the word
656                 # to the filter list.
658                 # Get the values from the hashref.
660                 my $filter_new_find     = $options->{"FindFilter"};
661                 my $filter_new_replace  = $options->{"ReplaceFilter"};
662                 my $filter_new_priority = $options->{"Priority"};
663                 my $filter_new_enabled  = $options->{"Enabled"};
664                 my $filter_new_notes    = $options->{"Notes"};
666                 # First, check the variables recieved are UTF8
667                 # copliant.
669                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
670                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
671                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
672                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
674                 # Convert the UTF8 values so that the length can
675                 # checked properly.
677                 $filter_new_find        = kiriwrite_utf8convert($filter_new_find);
678                 $filter_new_replace     = kiriwrite_utf8convert($filter_new_replace);
679                 $filter_new_priority    = kiriwrite_utf8convert($filter_new_priority);
680                 $filter_new_notes       = kiriwrite_utf8convert($filter_new_notes);
682                 # Check if the find filter is blank and return an error
683                 # if it is.
685                 if (!$filter_new_find){
687                         # The find filter given is blank so return an
688                         # error.
690                         kiriwrite_error("blankfindfilter");
692                 }
694                 if (!$filter_new_priority){
696                         # The filter priority is blank so set it
697                         # to 1.
699                         $filter_new_priority = 1;
701                 }
703                 # Check if the enabled value is either "on" or
704                 # blank and return an error if it is something
705                 # else.
707                 if (!$filter_new_enabled || $filter_new_enabled ne "off"){
709                 } else {
711                         # FINISH THIS.
713                 }
715                 # Check if the new filter should be enabled.
717                 my $filter_enable = 0;
719                 if (!$filter_new_enabled){
721                         $filter_new_enabled = "off";
723                 }
725                 if ($filter_new_enabled eq "on"){
726                         
727                         # The filter is enabled.
729                         $filter_enable = 1;
731                 }
733                 # Check the length and contents of the values given
734                 # to make sure they are valid.
736                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
737                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
738                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
739                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
741                 # Check if the result of the tests to see if they
742                 # are valid.
744                 if ($filterfind_maxlength_check eq 1){
746                         # The find filter is too long, so return
747                         # an error.
749                         kiriwrite_error("findfiltertoolong");
751                 }
753                 if ($filterreplace_maxlength_check eq 1){
755                         # The replace filter is too long, so
756                         # return an error.
758                         kiriwrite_error("replacefiltertoolong");
760                 }
762                 if ($filterpriority_maxlength_check eq 1){
764                         # The length of the filter priority
765                         # given is too long, so return an
766                         # error.
768                         kiriwrite_error("filterprioritytoolong");
770                 }
772                 if ($filterpriority_numbers_check eq 1){
774                         # The priority of the filter given
775                         # contains characters other than
776                         # numbers.
778                         kiriwrite_error("filterpriorityinvalidchars");
780                 }
782                 # Check if the filter priority is less than 1
783                 # and more than 10000 and return an error
784                 # if it is.
786                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
788                         # The filter priority is less than 1 and
789                         # more than 10000, so return an error.
791                         kiriwrite_error("filterpriorityinvalid");
793                 }
795                 # Connect to the database server.
797                 $kiriwrite_dbmodule->connect();
799                 # Check if any errors occured while connecting to the database server.
801                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
803                         # A database connection error has occured so return
804                         # an error.
806                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
808                 }
810                 # Connect to the filter database.
812                 $kiriwrite_dbmodule->connectfilter(1);
814                 # Check if any error has occured while connecting to the filter
815                 # database.
817                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
819                         # The filter database does not exist.
821                         kiriwrite_error("filtersdbmissing");
823                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
825                         # The filter database has invalid permissions set so return
826                         # an error.
828                         kiriwrite_error("filtersdbpermissions");
830                 }
832                 # Add the filter to the filter database.
834                 $kiriwrite_dbmodule->addfilter({ FindFilter => $filter_new_find, ReplaceFilter => $filter_new_replace, Priority => $filter_new_priority, Enabled => $filter_enable, Notes => $filter_new_notes});
836                 # Check if any errors have occured while adding the filter.
838                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
840                         # The filter database has invalid permissions set so return
841                         # an error.
843                         kiriwrite_error("filtersdbpermissions");
845                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseUncreatable"){
847                         # The filter database is uncreatable so return an error.
849                         kiriwrite_error("filterdatabase");
851                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
853                         # A database error with the filter database has occured so return
854                         # an error with the extended error information.
856                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
858                 }
860                 # Disconnect from the filter database.
862                 $kiriwrite_dbmodule->disconnectfilter();
864                 # Disconnect from the database server.
866                 $kiriwrite_dbmodule->disconnect();
868                 # Write out a message saying that the filter was added to the
869                 # filter database.
871                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteradded}, { Style => "pageheader" });
872                 $kiriwrite_presmodule->addlinebreak();
873                 $kiriwrite_presmodule->addlinebreak();
874                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteraddedmessage});
875                 $kiriwrite_presmodule->addlinebreak();
876                 $kiriwrite_presmodule->addlinebreak();
877                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
879                 return $kiriwrite_presmodule->grab();
881         } elsif ($confirm ne 0) {
883                 # The confirm integer is another value (which
884                 # it shouldn't be) so return an error.
886                 kiriwrite_error("invalidvalue");
888         }
890         # The confirm integer was blank so print out a form
891         # for adding a new filter.
893         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{addfilter}, { Style => "pageheader" });
894         $kiriwrite_presmodule->addlinebreak();
895         $kiriwrite_presmodule->addlinebreak();
896         $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
897         $kiriwrite_presmodule->startbox();
898         $kiriwrite_presmodule->addhiddendata("mode", "filter");
899         $kiriwrite_presmodule->addhiddendata("action", "add");
900         $kiriwrite_presmodule->addhiddendata("confirm", 1);
901         $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
903         $kiriwrite_presmodule->startheader();
904         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
905         $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
906         $kiriwrite_presmodule->endheader();
908         $kiriwrite_presmodule->startrow();
909         $kiriwrite_presmodule->addcell("tablecell1");
910         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
911         $kiriwrite_presmodule->endcell();
912         $kiriwrite_presmodule->addcell("tablecell2");
913         $kiriwrite_presmodule->addinputbox("findword", { Size => 64, MaxLength => 1024 });
914         $kiriwrite_presmodule->endcell();
915         $kiriwrite_presmodule->endrow();
917         $kiriwrite_presmodule->startrow();
918         $kiriwrite_presmodule->addcell("tablecell1");
919         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
920         $kiriwrite_presmodule->endcell();
921         $kiriwrite_presmodule->addcell("tablecell2");
922         $kiriwrite_presmodule->addinputbox("replaceword", { Size => 64, MaxLength => 1024 });
923         $kiriwrite_presmodule->endcell();
924         $kiriwrite_presmodule->endrow();
926         $kiriwrite_presmodule->startrow();
927         $kiriwrite_presmodule->addcell("tablecell1");
928         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
929         $kiriwrite_presmodule->endcell();
930         $kiriwrite_presmodule->addcell("tablecell2");
931         $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5 });
932         $kiriwrite_presmodule->startlist();
933         $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
934         $kiriwrite_presmodule->endlist();
935         $kiriwrite_presmodule->endcell();
936         $kiriwrite_presmodule->endrow();
938         $kiriwrite_presmodule->startrow();
939         $kiriwrite_presmodule->addcell("tablecell1");
940         $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
941         $kiriwrite_presmodule->endcell();
942         $kiriwrite_presmodule->addcell("tablecell2");
943         $kiriwrite_presmodule->addtextbox("notes", { Columns => $kiriwrite_config{"display_textareacols"}, Rows => $kiriwrite_config{"display_textarearows"} });
944         $kiriwrite_presmodule->endcell();
945         $kiriwrite_presmodule->endrow();
947         $kiriwrite_presmodule->startrow();
948         $kiriwrite_presmodule->addcell("tablecell1");
949         $kiriwrite_presmodule->endcell();
950         $kiriwrite_presmodule->addcell("tablecell2");
951         $kiriwrite_presmodule->addcheckbox("enabled", { OptionDescription => $kiriwrite_lang->{filter}->{enabled}, Checked => 1 });
952         $kiriwrite_presmodule->endcell();
953         $kiriwrite_presmodule->endrow();
955         $kiriwrite_presmodule->endtable();
957         $kiriwrite_presmodule->addlinebreak();
958         $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{addfilterbutton});
959         $kiriwrite_presmodule->addtext(" | ");
960         $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{clearvalues});
961         $kiriwrite_presmodule->addtext(" | ");
962         $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
964         $kiriwrite_presmodule->endbox();
965         $kiriwrite_presmodule->endform();
967         return $kiriwrite_presmodule->grab();
971 sub kiriwrite_filter_edit{
972 #################################################################################
973 # kiriwrite_filter_edit: Edits a filter from the filter list.                   #
974 #                                                                               #
975 # Usage:                                                                        #
976 #                                                                               #
977 # kiriwrite_filter_edit(options);                                               #
978 #                                                                               #
979 # options               Specifies the following options as hash (in any order). #
980 #                                                                               #
981 # FilterID              Specifies the filter number in the filter database.     #
982 # NewFindFilter         Specifies the new find filter.                          #
983 # NewReplaceFilter      Specifies the new replace filter.                       #
984 # NewPriority           Specifies the new priority.                             #
985 # NewEnabled            Specifies the new enable setting.                       #
986 # NewFilterNotes        Specifies the new filter notes.                         #
987 # Confirm               Confirms the action to edit a filter.                   #
988 #################################################################################
990         # Get the values that have been passed to the subroutine.
992         my ($options) = @_;
993         #my ($filter_id, $filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
995         my $filter_id           = $options->{"FilterID"};
996         my $confirm = $options->{"Confirm"};
998         # Check the confirm value to make sure it is no more than
999         # one character long.
1001         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
1003         # Check if the confirm value is blank and if it is
1004         # srt the confirm value to 0.
1006         if (!$confirm){
1008                 # The confirm value does not have any value
1009                 # set so set it to 0.
1011                 $confirm = 0;
1013         }
1015         # Check if the filter identification number is blank,
1016         # contains characters other than numbers and is more
1017         # than seven characters long.
1019         if (!$filter_id){
1021                 # The filter identification number is blank,
1022                 # so return an error.
1024                 kiriwrite_error("filteridblank");
1026         }
1028         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
1030         if ($filter_id_numbers_check eq 1){
1032                 # The filter identification number contains
1033                 # characters other than numbers, so return
1034                 # an error.
1036                 kiriwrite_error("filteridinvalid");
1038         }
1040         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
1042         if ($filter_id_maxlength_check eq 1){
1044                 # The filter identification number given
1045                 # is more than seven characters long, so
1046                 # return an error.
1048                 kiriwrite_error("filteridtoolong");
1050         }
1052         my $filter_priority;
1053         my $filter_find;
1054         my $filter_replace;
1055         my $filter_notes;
1056  
1057         # Check if the action to edit a filter has been
1058         # confirmed.
1060         if ($confirm eq 1){
1062                 # The action to edit a filter has been confirmed so
1063                 # edit the selected filter.
1065                 # Get the values from the hashref.
1067                 my $filter_new_find     = $options->{"NewFindFilter"};
1068                 my $filter_new_replace  = $options->{"NewReplaceFilter"};
1069                 my $filter_new_priority = $options->{"NewPriority"};
1070                 my $filter_new_notes    = $options->{"NewFilterNotes"};
1071                 my $filter_new_enabled  = $options->{"NewEnabled"};
1073                 # First, check the variables recieved are UTF8
1074                 # copliant.
1076                 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
1077                 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
1078                 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
1079                 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
1081                 # Convert the UTF8 values so that the length can
1082                 # checked properly.
1084                 $filter_find            = kiriwrite_utf8convert($filter_new_find);
1085                 $filter_replace         = kiriwrite_utf8convert($filter_new_replace);
1086                 $filter_priority        = kiriwrite_utf8convert($filter_new_priority);
1087                 $filter_notes           = kiriwrite_utf8convert($filter_new_notes);
1089                 # Check if the find filter is blank and return an error
1090                 # if it is.
1092                 if (!$filter_new_find){
1094                         # The find filter given is blank so return an
1095                         # error.
1097                         kiriwrite_error("blankfindfilter");
1099                 }
1101                 if (!$filter_new_priority){
1103                         # The filter priority is blank so set it
1104                         # to 1.
1106                         $filter_new_priority = 1;
1108                 }
1110                 # Check the length and contents of the values given
1111                 # to make sure they are valid.
1113                 my $filterfind_maxlength_check          = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
1114                 my $filterreplace_maxlength_check       = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
1115                 my $filterpriority_maxlength_check      = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
1116                 my $filterpriority_numbers_check        = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
1118                 # Check if the result of the tests to see if they
1119                 # are valid.
1121                 if ($filterfind_maxlength_check eq 1){
1123                         # The find filter is too long, so return
1124                         # an error.
1126                         kiriwrite_error("findfiltertoolong");
1128                 }
1130                 if ($filterreplace_maxlength_check eq 1){
1132                         # The replace filter is too long, so
1133                         # return an error.
1135                         kiriwrite_error("replacefiltertoolong");
1137                 }
1139                 if ($filterpriority_maxlength_check eq 1){
1141                         # The length of the filter priority
1142                         # given is too long, so return an
1143                         # error.
1145                         kiriwrite_error("filterprioritytoolong");
1147                 }
1149                 if ($filterpriority_numbers_check eq 1){
1151                         # The priority of the filter given
1152                         # contains characters other than
1153                         # numbers.
1155                         kiriwrite_error("filterpriorityinvalidchars");
1157                 }
1159                 # Check if the filter priority is less than 1
1160                 # and more than 10000 and return an error
1161                 # if it is.
1163                 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
1165                         # The filter priority is less than 1 and
1166                         # more than 10000, so return an error.
1168                         kiriwrite_error("filterpriorityinvalid");
1170                 }
1172                 # Check to see if the filter should be enabled.
1174                 my $filter_enable = 0;
1176                 if (!$filter_new_enabled){
1178                         $filter_new_enabled = "off";
1180                 }
1182                 if ($filter_new_enabled eq "on"){
1183                         
1184                         # The filter is enabled.
1186                         $filter_enable = 1;
1188                 }
1190                 # Connect to the database server.
1192                 $kiriwrite_dbmodule->connect();
1194                 # Check if any errors occured while connecting to the database server.
1196                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1198                         # A database connection error has occured so return
1199                         # an error.
1201                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1203                 }
1205                 # Connect to the filter database.
1207                 $kiriwrite_dbmodule->connectfilter();
1209                 # Check if any error has occured while connecting to the filter
1210                 # database.
1212                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1214                         # The filter database does not exist.
1216                         kiriwrite_error("filtersdbmissing");
1218                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1220                         # The filter database has invalid permissions set so return
1221                         # an error.
1223                         kiriwrite_error("filtersdbpermissions");
1225                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1227                         # A database error has occured with the filter database.
1229                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1231                 }
1233                 # Edit the selected filter in the filter database.
1235                 $kiriwrite_dbmodule->editfilter({ FilterID => $filter_id, NewFindFilter => $filter_new_find, NewReplaceFilter => $filter_new_replace, NewFilterPriority => $filter_new_priority, NewEnabled => $filter_enable, NewFilterNotes => $filter_new_notes });
1237                 # Check if any errors occured while editing the filter.
1239                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1241                         # The filter database has invalid permissions set so return
1242                         # an error.
1244                         kiriwrite_error("filtersdbpermissions");
1246                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1248                         # A database error has occured while using the filter database
1249                         # so return an error.
1251                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1253                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1255                         # The specified filter does not exist so return an error.
1257                         kiriwrite_error("filterdoesnotexist");
1259                 }
1261                 # Disconnect from the filter database.
1263                 $kiriwrite_dbmodule->disconnectfilter();
1265                 # Disconnect from the database server.
1267                 $kiriwrite_dbmodule->disconnect();
1269                 # Write a message saying that the filter was edited.
1271                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfilter}, { Style => "pageheader" });
1272                 $kiriwrite_presmodule->addlinebreak();
1273                 $kiriwrite_presmodule->addlinebreak();
1274                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfiltermessage});
1275                 $kiriwrite_presmodule->addlinebreak();
1276                 $kiriwrite_presmodule->addlinebreak();
1277                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist}});
1279                 return $kiriwrite_presmodule->grab();
1281         } elsif ($confirm eq 0){
1283                 # The action to edit a filter has not been confirmed
1284                 # so write a form for editing the filter with.
1286                 # Connect to the database server.
1288                 $kiriwrite_dbmodule->connect();
1290                 # Check if any errors occured while connecting to the database server.
1292                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1294                         # A database connection error has occured so return
1295                         # an error.
1297                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1299                 }
1301                 # Connect to the database server.
1303                 $kiriwrite_dbmodule->connect();
1305                 # Check if any errors occured while connecting to the database server.
1307                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1309                         # A database connection error has occured so return
1310                         # an error.
1312                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1314                 }
1316                 # Connect to the filter database.
1318                 $kiriwrite_dbmodule->connectfilter();
1320                 # Check if any error has occured while connecting to the filter
1321                 # database.
1323                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1325                         # The filter database does not exist.
1327                         kiriwrite_error("filtersdbmissing");
1329                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1331                         # The filter database has invalid permissions set so return
1332                         # an error.
1334                         kiriwrite_error("filtersdbpermissions");
1336                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1338                         # A database error has occured with the filter database.
1340                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1342                 }
1344                 # Get information about the filter.
1346                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1348                 # Check if any errors occured while getting information about the filter.
1350                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1352                         # A database error occured while using the filter database so
1353                         # return an error.
1355                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1357                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1359                         # The filter does not exist so return an error.
1361                         kiriwrite_error("filterdoesnotexist");
1363                 }
1365                 # Get the required information.
1367                 $filter_priority        = $filter_info{"FilterPriority"};
1368                 $filter_find            = $filter_info{"FilterFind"};
1369                 $filter_replace         = $filter_info{"FilterReplace"};
1370                 $filter_enabled         = $filter_info{"FilterEnabled"};
1371                 $filter_notes           = $filter_info{"FilterNotes"};
1373                 # Disconnect from the filter database.
1375                 $kiriwrite_dbmodule->disconnectfilter();
1377                 # Disconnect from the database server.
1379                 $kiriwrite_dbmodule->disconnect();
1381                 # Write out the form.
1383                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editfilter}, { Style => "pageheader" });
1384                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1385                 $kiriwrite_presmodule->startbox();
1386                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1387                 $kiriwrite_presmodule->addhiddendata("action", "edit");
1388                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1389                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1391                 $kiriwrite_presmodule->addlinebreak();
1392                 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1394                 $kiriwrite_presmodule->startheader();
1395                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1396                 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1397                 $kiriwrite_presmodule->endheader();
1399                 $kiriwrite_presmodule->startrow();
1400                 $kiriwrite_presmodule->addcell("tablecell1");
1401                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
1402                 $kiriwrite_presmodule->endcell();
1403                 $kiriwrite_presmodule->addcell("tablecell2");
1404                 $kiriwrite_presmodule->addinputbox("filterfind", { Size => 64, MaxLength => 1024, Value => $filter_find });
1405                 $kiriwrite_presmodule->endcell();
1406                 $kiriwrite_presmodule->endrow();
1408                 $kiriwrite_presmodule->startrow();
1409                 $kiriwrite_presmodule->addcell("tablecell1");
1410                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
1411                 $kiriwrite_presmodule->endcell();
1412                 $kiriwrite_presmodule->addcell("tablecell2");
1413                 $kiriwrite_presmodule->addinputbox("filterreplace", { Size => 64, MaxLength => 1024, Value => $filter_replace });
1414                 $kiriwrite_presmodule->endcell();
1415                 $kiriwrite_presmodule->endrow();
1417                 $kiriwrite_presmodule->startrow();
1418                 $kiriwrite_presmodule->addcell("tablecell1");
1419                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
1420                 $kiriwrite_presmodule->endcell();
1421                 $kiriwrite_presmodule->addcell("tablecell2");
1422                 $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5, Value => $filter_priority });
1423                 $kiriwrite_presmodule->startlist();
1424                 $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
1425                 $kiriwrite_presmodule->endlist();
1426                 $kiriwrite_presmodule->endcell();
1427                 $kiriwrite_presmodule->endrow();
1429                 $kiriwrite_presmodule->startrow();
1430                 $kiriwrite_presmodule->addcell("tablecell1");
1431                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
1432                 $kiriwrite_presmodule->endcell();
1433                 $kiriwrite_presmodule->addcell("tablecell2");
1434                 $kiriwrite_presmodule->addtextbox("notes", { Columns => $kiriwrite_config{"display_textareacols"}, Rows => $kiriwrite_config{"display_textarearows"}, Value => $filter_notes});
1435                 $kiriwrite_presmodule->endcell();
1436                 $kiriwrite_presmodule->endrow();
1438                 $kiriwrite_presmodule->startrow();
1439                 $kiriwrite_presmodule->addcell("tablecell1");
1440                 $kiriwrite_presmodule->endcell();
1441                 $kiriwrite_presmodule->addcell("tablecell2");
1443                 if ($filter_enabled eq 1){
1445                         $kiriwrite_presmodule->addcheckbox("enabled", { OptionDescription => $kiriwrite_lang->{filter}->{enabled}, Checked => 1 });
1447                 } else {
1449                         $kiriwrite_presmodule->addcheckbox("enabled", { OptionDescription => $kiriwrite_lang->{filter}->{enabled} });
1451                 }
1452                 $kiriwrite_presmodule->endcell();
1453                 $kiriwrite_presmodule->endrow();
1455                 $kiriwrite_presmodule->endtable();
1457                 $kiriwrite_presmodule->addlinebreak();
1458                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{editfilterbutton});
1459                 $kiriwrite_presmodule->addtext(" | ");
1460                 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1461                 $kiriwrite_presmodule->addtext(" | ");
1462                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1463                 $kiriwrite_presmodule->endbox();
1464                 $kiriwrite_presmodule->endform();
1466                 return $kiriwrite_presmodule->grab(); 
1468         } else {
1470                 # A confirm value other than 0 or 1 has been
1471                 # specified, so return an error.
1473                 kiriwrite_error("invalidvalue");
1475         }
1479 sub kiriwrite_filter_delete{
1480 #################################################################################
1481 # kiriwrite_filter_delete: Deletes a filter from the filter list.               #
1482 #                                                                               #
1483 # Usage:                                                                        #
1484 #                                                                               #
1485 # kiriwrite_filter_delete(filterid, confirm);                                   #
1486 #                                                                               #
1487 # filterid      Specifies the filter line number to delete.                     #
1488 # confirm       Confirms the deletion of the selected filter.                   #
1489 #################################################################################
1491         # Get the values that were passed to this subroutine.
1493         my ($filter_id, $confirm) = @_;
1495         # Check the confirm value to make sure it is no more than
1496         # one character long.
1498         kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
1500         # Check if the confirm value is blank and if it is
1501         # srt the confirm value to 0.
1503         if (!$confirm){
1505                 # The confirm value does not have any value
1506                 # set so set it to 0.
1508                 $confirm = 0;
1510         }
1512         # Check if the filter identification number is blank,
1513         # contains characters other than numbers and is more
1514         # than seven characters long.
1516         if (!$filter_id){
1518                 # The filter identification number is blank,
1519                 # so return an error.
1521                 kiriwrite_error("filteridblank");
1523         }
1525         my $filter_id_numbers_check     = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
1527         if ($filter_id_numbers_check eq 1){
1529                 # The filter identification number contains
1530                 # characters other than numbers, so return
1531                 # an error.
1533                 kiriwrite_error("filteridinvalid");
1535         }
1537         my $filter_id_maxlength_check   = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
1539         if ($filter_id_maxlength_check eq 1){
1541                 # The filter identification number given
1542                 # is more than seven characters long, so
1543                 # return an error.
1545                 kiriwrite_error("filteridtoolong");
1547         }
1549         # Define some values for later.
1551         my @database_filter;
1552         my $filter_exists = 0;
1554         # Check if the confirm integer has a value of '1'.
1556         if ($confirm eq 1){
1558                 # The action to delete a filter has been confirmed.
1560                 # Connect to the database server.
1562                 $kiriwrite_dbmodule->connect();
1564                 # Check if any errors occured while connecting to the database server.
1566                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1568                         # A database connection error has occured so return
1569                         # an error.
1571                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1573                 }
1575                 # Connect to the filter database.
1577                 $kiriwrite_dbmodule->connectfilter();
1579                 # Check if any error has occured while connecting to the filter
1580                 # database.
1582                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1584                         # The filter database does not exist.
1586                         kiriwrite_error("filtersdbmissing");
1588                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1590                         # The filter database has invalid permissions set so return
1591                         # an error.
1593                         kiriwrite_error("filtersdbpermissions");
1595                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1597                         # A database error has occured with the filter database.
1599                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1601                 }
1603                 # Delete the filter from the filter database.
1605                 $kiriwrite_dbmodule->deletefilter({ FilterID => $filter_id });
1607                 # Check if any errors occured while deleting the filter.
1609                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1611                         # A database error has occured while trying to delete a filter so
1612                         # return an error.
1614                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1616                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1618                         # The filter does not exist so return an error.
1619  
1620                         kiriwrite_error("filterdoesnotexist");
1622                 }
1624                 # Disconnect from the filter database.
1626                 $kiriwrite_dbmodule->disconnectfilter();
1628                 # Disconnect from the database server.
1630                 $kiriwrite_dbmodule->disconnect();
1632                 # Write a message saying that the filter was deleted
1633                 # from the filter database.
1635                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfilter}, { Style => "pageheader" });
1636                 $kiriwrite_presmodule->addlinebreak();
1637                 $kiriwrite_presmodule->addlinebreak();
1638                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfiltermessage});
1639                 $kiriwrite_presmodule->addlinebreak();
1640                 $kiriwrite_presmodule->addlinebreak();
1641                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1643         } elsif ($confirm eq 0) {
1645                 # Connect to the database server.
1647                 $kiriwrite_dbmodule->connect();
1649                 # Check if any errors occured while connecting to the database server.
1651                 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1653                         # A database connection error has occured so return
1654                         # an error.
1656                         kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1658                 }
1660                 # Connect to the filter database.
1662                 $kiriwrite_dbmodule->connectfilter();
1664                 # Check if any error has occured while connecting to the filter
1665                 # database.
1667                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1669                         # The filter database does not exist.
1671                         kiriwrite_error("filtersdbmissing");
1673                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1675                         # The filter database has invalid permissions set so return
1676                         # an error.
1678                         kiriwrite_error("filtersdbpermissions");
1680                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1682                         # A database error has occured with the filter database.
1684                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1686                 }
1688                 # Get information about the filter (to check if it exists).
1690                 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1692                 # Check if any errors occured while getting information about the filter.
1694                 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1696                         # A database error occured while using the filter database so
1697                         # return an error.
1699                         kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1701                 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1703                         # The filter does not exist so return an error.
1705                         kiriwrite_error("filterdoesnotexist");
1707                 }
1709                 # Disconnect from the filter database.
1711                 $kiriwrite_dbmodule->disconnectfilter();
1713                 # Disconnect from the database
1715                 # The confirm integer is '0', so continue write out
1716                 # a form asking the user to confirm the deletion
1717                 # pf the filter.
1719                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefilter}, { Style => "pageheader" });
1720                 $kiriwrite_presmodule->addlinebreak();
1721                 $kiriwrite_presmodule->addlinebreak();
1722                 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefiltermessage});
1723                 $kiriwrite_presmodule->addlinebreak();
1724                 $kiriwrite_presmodule->addlinebreak();
1725                 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1726                 $kiriwrite_presmodule->startbox();
1727                 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1728                 $kiriwrite_presmodule->addhiddendata("action", "delete");
1729                 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1730                 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1731                 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{deletefilterbutton});
1732                 $kiriwrite_presmodule->addtext(" | ");
1733                 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{deletefilterreturn} });
1734                 $kiriwrite_presmodule->endbox();
1735                 $kiriwrite_presmodule->endform();
1737         } else {
1739                 kiriwrite_error("invalidvalue");
1741         }
1743         return $kiriwrite_presmodule->grab();
1747 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