1 #################################################################################
2 # filter.lib: Kiriwrite Filter Library #
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
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
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'};
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.
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
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.
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
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.
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
130 kiriwrite_error("invalidaction");
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 #
155 # kiriwrite_filter_list([browsenumber]); #
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
175 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
179 # Connect to the filter database.
181 $kiriwrite_dbmodule->connectfilter();
183 # Check if any error has occured while connecting to the filter
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
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));
207 # Define some variables required for processing the filters list.
211 my @database_filters;
212 my $blankfindfilter = 0;
213 my $filterswarning = "";
215 my $filter_split = 50;
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;
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
251 kiriwrite_error("browsenumbertoolong");
255 if ($kiriwrite_browsenumber_number_check eq 1){
257 # The browse number wasn't a number so
260 kiriwrite_error("browsenumberinvalid");
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));
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);
286 $filter_list = substr(($filter_total_count / $filter_split), 0, 1) + 1;
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));
308 # Process each filter getting the priority, find setting and
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.
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;
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"};
354 # Check if there are filters in the filter database and
355 # write a message if there isn't.
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
364 if ($filtersdb_notexist eq 1){
366 # The filter database doesn't exist so write
369 $filterswarning = $kiriwrite_lang->{filter}->{filterdatabasedoesnotexist};
374 # Check if there is a warning message and if
375 # there is then write that warning message
376 # else write the list of filters.
378 if ($filterswarning){
380 $kiriwrite_presmodule->startbox("errorbox");
381 $kiriwrite_presmodule->addtext($filterswarning);
382 $kiriwrite_presmodule->endbox();
384 } elsif ($filter_count) {
386 # The filter database exists so write out the
389 if ($blankfindfilter eq 1){
391 $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{filter}->{warningtitle});
392 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{blankfindfilters});
393 $kiriwrite_presmodule->addtext();
394 $kiriwrite_presmodule->addlinebreak();
395 $kiriwrite_presmodule->addlinebreak();
399 # Start a form for using the filter browsing list with.
401 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "GET");
402 $kiriwrite_presmodule->addhiddendata("mode", "filter");
404 # Write out the filter browsing list.
406 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{showlistpage});
407 $kiriwrite_presmodule->addselectbox("browsenumber");
409 # Write out the list of available pages to browse.
411 while ($filter_list_count ne $filter_list){
413 $filter_list_count++;
415 if ($filter_list_count eq 1 && !$filter_browsenumber){
417 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
421 if ($filter_browsenumber eq $filter_list_count){
423 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count, Selected => 1 });
427 $kiriwrite_presmodule->addoption($filter_list_count, { Value => $filter_list_count });
435 $kiriwrite_presmodule->endselectbox();
436 $kiriwrite_presmodule->addbutton("action", { Value => "view", Description => $kiriwrite_lang->{filter}->{show} });
438 if ($filter_list ne $filter_browsenumber){
440 $kiriwrite_presmodule->addtext(" | ");
441 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber + 1), { Text => $kiriwrite_lang->{filter}->{nextpage} });
445 # Check if the filter browse number is not blank and
446 # not set as 0 and hide the Previous page link if
449 if ($filter_browsenumber > 1){
451 $kiriwrite_presmodule->addtext(" | ");
452 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter&action=view&browsenumber=" . ($filter_browsenumber - 1), { Text => $kiriwrite_lang->{filter}->{previouspage} });
456 $kiriwrite_presmodule->addlinebreak();
457 $kiriwrite_presmodule->addlinebreak();
459 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
461 $kiriwrite_presmodule->startheader();
462 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{priority}, { Style => "tablecellheader" });
463 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{findsetting}, { Style => "tablecellheader" });
464 $kiriwrite_presmodule->addheader($kiriwrite_lang->{filter}->{replacesetting}, { Style => "tablecellheader" });
465 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
466 $kiriwrite_presmodule->endheader();
468 foreach $filter (keys %filter_list){
470 # Check which style should be used.
472 if ($filter_style eq 0){
474 $filter_style_name = "tablecell1";
479 $filter_style_name = "tablecell2";
484 $kiriwrite_presmodule->startrow();
485 $kiriwrite_presmodule->addcell($filter_style_name);
486 $kiriwrite_presmodule->addtext($filter_list{$filter}{Priority});
487 $kiriwrite_presmodule->endcell();
488 $kiriwrite_presmodule->addcell($filter_style_name);
490 # Check if the find filter is blank.
492 if (!$filter_list{$filter}{Find}){
494 # The find filter is blank.
496 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankfindsetting});
500 # The find filter is not blank.
502 $kiriwrite_presmodule->addtext($filter_list{$filter}{Find});
506 $kiriwrite_presmodule->endcell();
507 $kiriwrite_presmodule->addcell($filter_style_name);
509 # Check if the replace filter is blank.
511 if (!$filter_list{$filter}{Replace}){
513 # The replace filter is blank.
515 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{filter}->{blankreplacesetting});
519 # The replace filter is not blank.
521 $kiriwrite_presmodule->addtext($filter_list{$filter}{Replace});
525 $kiriwrite_presmodule->endcell();
526 $kiriwrite_presmodule->addcell($filter_style_name);
527 $kiriwrite_presmodule->addlink("?mode=filter&action=edit&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{edit} });
528 $kiriwrite_presmodule->addlink("?mode=filter&action=delete&filter=" . $filter_list{$filter}{ID}, { Text => $kiriwrite_lang->{options}->{delete} });
529 $kiriwrite_presmodule->endcell();
530 $kiriwrite_presmodule->endrow();
534 $kiriwrite_presmodule->endtable();
535 $kiriwrite_presmodule->endform();
539 if (!@database_filters && $filter_browsenumber > 1){
541 # There were no values given for the page browse
542 # number given so write a message saying that
543 # there were no pages for the page browse number
546 $kiriwrite_presmodule->clear();
547 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
548 $kiriwrite_presmodule->addlinebreak();
549 $kiriwrite_presmodule->addlinebreak();
550 $kiriwrite_presmodule->startbox("errorbox");
551 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersinpagebrowse});
552 $kiriwrite_presmodule->addlinebreak();
553 $kiriwrite_presmodule->addlinebreak();
554 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returntofirstpagebrowse} });
555 $kiriwrite_presmodule->endbox();
557 } elsif (!@database_filters || !$filter_count || $filter_total_count eq 0){
559 # There are no filters in the filter database.
561 $kiriwrite_presmodule->clear();
562 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{filter}->{viewfilters}, $db_name), { Style => "pageheader" });
563 $kiriwrite_presmodule->addlinebreak();
564 $kiriwrite_presmodule->addlinebreak();
565 $kiriwrite_presmodule->startbox("errorbox");
566 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{filter}->{nofiltersavailable});
567 $kiriwrite_presmodule->endbox();
571 # Disconnect from the filter database.
573 $kiriwrite_dbmodule->disconnectfilter();
575 # Disconnect from the database server.
577 $kiriwrite_dbmodule->disconnect();
579 return $kiriwrite_presmodule->grab();
583 sub kiriwrite_filter_add{
584 #################################################################################
585 # kiriwrite_filter_add: Adds a filter to the filter list. #
589 # kiriwrite_filter_add(filterfind, filterreplace, filterpriority, #
590 # filternotes, [confirm]); #
592 # filterfind Specifies the new word(s) to find. #
593 # filterreplace Specifies the new word(s) to replace. #
594 # filterpriority Specifies the new priority to use. #
595 # filternotes Specifies the new notes to use. #
596 # confirm Confirms the action to add a filter. #
597 #################################################################################
599 # Get the values that have been passed to the subroutine.
601 my ($filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
603 # Check the confirm value to make sure it is no more than
604 # one character long.
606 kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
610 # The confirm value is undefined, so set the
611 # value of the confirm integer to '0'.
619 # The confirm integer is '1', so add the word
620 # to the filter list.
622 # First, check the variables recieved are UTF8
625 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
626 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
627 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
628 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
630 # Convert the UTF8 values so that the length can
633 $filter_new_find = kiriwrite_utf8convert($filter_new_find);
634 $filter_new_replace = kiriwrite_utf8convert($filter_new_replace);
635 $filter_new_priority = kiriwrite_utf8convert($filter_new_priority);
636 $filter_new_notes = kiriwrite_utf8convert($filter_new_notes);
638 # Check if the find filter is blank and return an error
641 if (!$filter_new_find){
643 # The find filter given is blank so return an
646 kiriwrite_error("blankfindfilter");
650 if (!$filter_new_priority){
652 # The filter priority is blank so set it
655 $filter_new_priority = 1;
659 # Check the length and contents of the values given
660 # to make sure they are valid.
662 my $filterfind_maxlength_check = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
663 my $filterreplace_maxlength_check = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
664 my $filterpriority_maxlength_check = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
665 my $filterpriority_numbers_check = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
667 # Check if the result of the tests to see if they
670 if ($filterfind_maxlength_check eq 1){
672 # The find filter is too long, so return
675 kiriwrite_error("findfiltertoolong");
679 if ($filterreplace_maxlength_check eq 1){
681 # The replace filter is too long, so
684 kiriwrite_error("replacefiltertoolong");
688 if ($filterpriority_maxlength_check eq 1){
690 # The length of the filter priority
691 # given is too long, so return an
694 kiriwrite_error("filterprioritytoolong");
698 if ($filterpriority_numbers_check eq 1){
700 # The priority of the filter given
701 # contains characters other than
704 kiriwrite_error("filterpriorityinvalidchars");
708 # Check if the filter priority is less than 1
709 # and more than 10000 and return an error
712 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
714 # The filter priority is less than 1 and
715 # more than 10000, so return an error.
717 kiriwrite_error("filterpriorityinvalid");
721 # Connect to the database server.
723 $kiriwrite_dbmodule->connect();
725 # Check if any errors occured while connecting to the database server.
727 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
729 # A database connection error has occured so return
732 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
736 # Connect to the filter database.
738 $kiriwrite_dbmodule->connectfilter(1);
740 # Check if any error has occured while connecting to the filter
743 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
745 # The filter database does not exist.
747 kiriwrite_error("filtersdbmissing");
749 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
751 # The filter database has invalid permissions set so return
754 kiriwrite_error("filtersdbpermissions");
758 # Add the filter to the filter database.
760 $kiriwrite_dbmodule->addfilter({ FindFilter => $filter_new_find, ReplaceFilter => $filter_new_replace, Priority => $filter_new_priority, Notes => $filter_new_notes});
762 # Check if any errors have occured while adding the filter.
764 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
766 # The filter database has invalid permissions set so return
769 kiriwrite_error("filtersdbpermissions");
771 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseUncreatable"){
773 # The filter database is uncreatable so return an error.
775 kiriwrite_error("filterdatabase");
777 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
779 # A database error with the filter database has occured so return
780 # an error with the extended error information.
782 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
786 # Disconnect from the filter database.
788 $kiriwrite_dbmodule->disconnectfilter();
790 # Disconnect from the database server.
792 $kiriwrite_dbmodule->disconnect();
794 # Write out a message saying that the filter was added to the
797 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteradded}, { Style => "pageheader" });
798 $kiriwrite_presmodule->addlinebreak();
799 $kiriwrite_presmodule->addlinebreak();
800 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{filteraddedmessage});
801 $kiriwrite_presmodule->addlinebreak();
802 $kiriwrite_presmodule->addlinebreak();
803 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
805 return $kiriwrite_presmodule->grab();
807 } elsif ($confirm ne 0) {
809 # The confirm integer is another value (which
810 # it shouldn't be) so return an error.
812 kiriwrite_error("invalidvalue");
816 # The confirm integer was blank so print out a form
817 # for adding a new filter.
819 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{addfilter}, { Style => "pageheader" });
820 $kiriwrite_presmodule->addlinebreak();
821 $kiriwrite_presmodule->addlinebreak();
822 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
823 $kiriwrite_presmodule->startbox();
824 $kiriwrite_presmodule->addhiddendata("mode", "filter");
825 $kiriwrite_presmodule->addhiddendata("action", "add");
826 $kiriwrite_presmodule->addhiddendata("confirm", 1);
827 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
829 $kiriwrite_presmodule->startheader();
830 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
831 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
832 $kiriwrite_presmodule->endheader();
834 $kiriwrite_presmodule->startrow();
835 $kiriwrite_presmodule->addcell("tablecell1");
836 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
837 $kiriwrite_presmodule->endcell();
838 $kiriwrite_presmodule->addcell("tablecell2");
839 $kiriwrite_presmodule->addinputbox("findword", { Size => 64, MaxLength => 1024 });
840 $kiriwrite_presmodule->endcell();
841 $kiriwrite_presmodule->endrow();
843 $kiriwrite_presmodule->startrow();
844 $kiriwrite_presmodule->addcell("tablecell1");
845 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
846 $kiriwrite_presmodule->endcell();
847 $kiriwrite_presmodule->addcell("tablecell2");
848 $kiriwrite_presmodule->addinputbox("replaceword", { Size => 64, MaxLength => 1024 });
849 $kiriwrite_presmodule->endcell();
850 $kiriwrite_presmodule->endrow();
852 $kiriwrite_presmodule->startrow();
853 $kiriwrite_presmodule->addcell("tablecell1");
854 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
855 $kiriwrite_presmodule->endcell();
856 $kiriwrite_presmodule->addcell("tablecell2");
857 $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5 });
858 $kiriwrite_presmodule->startlist();
859 $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
860 $kiriwrite_presmodule->endlist();
861 $kiriwrite_presmodule->endcell();
862 $kiriwrite_presmodule->endrow();
864 $kiriwrite_presmodule->startrow();
865 $kiriwrite_presmodule->addcell("tablecell1");
866 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
867 $kiriwrite_presmodule->endcell();
868 $kiriwrite_presmodule->addcell("tablecell2");
869 $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10 });
870 $kiriwrite_presmodule->endcell();
871 $kiriwrite_presmodule->endrow();
873 $kiriwrite_presmodule->endtable();
875 $kiriwrite_presmodule->addlinebreak();
876 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{addfilterbutton});
877 $kiriwrite_presmodule->addtext(" | ");
878 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{clearvalues});
879 $kiriwrite_presmodule->addtext(" | ");
880 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
882 $kiriwrite_presmodule->endbox();
883 $kiriwrite_presmodule->endform();
885 return $kiriwrite_presmodule->grab();
889 sub kiriwrite_filter_edit{
890 #################################################################################
891 # kiriwrite_filter_edit: Edits a filter from the filter list. #
895 # kiriwrite_filter_edit(filternumber, newfilterfind, newfilterreplace, #
896 # newfilterpriority, newfilternotes, confirm); #
898 # filterid Specifies the filter number (line number) in the #
900 # newfilterfind Specifies the new word to find. #
901 # newfilterreplace Specifies the new word to replace. #
902 # newfilterpriority Specifies the new filter priority. #
903 # newfilternotes Specifies the new filter notes. #
904 # confirm Confirms the action to edit a filter. #
905 #################################################################################
907 # Get the values that have been passed to the subroutine.
909 my ($filter_id, $filter_new_find, $filter_new_replace, $filter_new_priority, $filter_new_notes, $confirm) = @_;
911 # Check the confirm value to make sure it is no more than
912 # one character long.
914 kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
916 # Check if the confirm value is blank and if it is
917 # srt the confirm value to 0.
921 # The confirm value does not have any value
922 # set so set it to 0.
928 # Check if the filter identification number is blank,
929 # contains characters other than numbers and is more
930 # than seven characters long.
934 # The filter identification number is blank,
935 # so return an error.
937 kiriwrite_error("filteridblank");
941 my $filter_id_numbers_check = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
943 if ($filter_id_numbers_check eq 1){
945 # The filter identification number contains
946 # characters other than numbers, so return
949 kiriwrite_error("filteridinvalid");
953 my $filter_id_maxlength_check = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
955 if ($filter_id_maxlength_check eq 1){
957 # The filter identification number given
958 # is more than seven characters long, so
961 kiriwrite_error("filteridtoolong");
970 # Check if the action to edit a filter has been
975 # The action to edit a filter has been confirmed so
976 # edit the selected filter.
978 # First, check the variables recieved are UTF8
981 kiriwrite_variablecheck($filter_new_find, "utf8", 0, 0);
982 kiriwrite_variablecheck($filter_new_replace, "utf8", 0, 0);
983 kiriwrite_variablecheck($filter_new_priority, "utf8", 0, 0);
984 kiriwrite_variablecheck($filter_new_notes, "utf8", 0, 0);
986 # Convert the UTF8 values so that the length can
989 $filter_find = kiriwrite_utf8convert($filter_new_find);
990 $filter_replace = kiriwrite_utf8convert($filter_new_replace);
991 $filter_priority = kiriwrite_utf8convert($filter_new_priority);
992 $filter_notes = kiriwrite_utf8convert($filter_new_notes);
994 # Check if the find filter is blank and return an error
997 if (!$filter_new_find){
999 # The find filter given is blank so return an
1002 kiriwrite_error("blankfindfilter");
1006 if (!$filter_new_priority){
1008 # The filter priority is blank so set it
1011 $filter_new_priority = 1;
1015 # Check the length and contents of the values given
1016 # to make sure they are valid.
1018 my $filterfind_maxlength_check = kiriwrite_variablecheck($filter_new_find, "maxlength", 1024, 1);
1019 my $filterreplace_maxlength_check = kiriwrite_variablecheck($filter_new_replace, "maxlength", 1024, 1);
1020 my $filterpriority_maxlength_check = kiriwrite_variablecheck($filter_new_priority, "maxlength", 5, 1);
1021 my $filterpriority_numbers_check = kiriwrite_variablecheck($filter_new_priority, "numbers", 0, 1);
1023 # Check if the result of the tests to see if they
1026 if ($filterfind_maxlength_check eq 1){
1028 # The find filter is too long, so return
1031 kiriwrite_error("findfiltertoolong");
1035 if ($filterreplace_maxlength_check eq 1){
1037 # The replace filter is too long, so
1040 kiriwrite_error("replacefiltertoolong");
1044 if ($filterpriority_maxlength_check eq 1){
1046 # The length of the filter priority
1047 # given is too long, so return an
1050 kiriwrite_error("filterprioritytoolong");
1054 if ($filterpriority_numbers_check eq 1){
1056 # The priority of the filter given
1057 # contains characters other than
1060 kiriwrite_error("filterpriorityinvalidchars");
1064 # Check if the filter priority is less than 1
1065 # and more than 10000 and return an error
1068 if ($filter_new_priority < 1 || $filter_new_priority > 50000){
1070 # The filter priority is less than 1 and
1071 # more than 10000, so return an error.
1073 kiriwrite_error("filterpriorityinvalid");
1077 # Connect to the database server.
1079 $kiriwrite_dbmodule->connect();
1081 # Check if any errors occured while connecting to the database server.
1083 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1085 # A database connection error has occured so return
1088 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1092 # Connect to the filter database.
1094 $kiriwrite_dbmodule->connectfilter();
1096 # Check if any error has occured while connecting to the filter
1099 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1101 # The filter database does not exist.
1103 kiriwrite_error("filtersdbmissing");
1105 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1107 # The filter database has invalid permissions set so return
1110 kiriwrite_error("filtersdbpermissions");
1112 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1114 # A database error has occured with the filter database.
1116 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1120 # Edit the selected filter in the filter database.
1122 $kiriwrite_dbmodule->editfilter({ FilterID => $filter_id, NewFindFilter => $filter_new_find, NewReplaceFilter => $filter_new_replace, NewFilterPriority => $filter_new_priority, NewFilterNotes => $filter_new_notes });
1124 # Check if any errors occured while editing the filter.
1126 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1128 # The filter database has invalid permissions set so return
1131 kiriwrite_error("filtersdbpermissions");
1133 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1135 # A database error has occured while using the filter database
1136 # so return an error.
1138 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1140 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1142 # The specified filter does not exist so return an error.
1144 kiriwrite_error("filterdoesnotexist");
1148 # Disconnect from the filter database.
1150 $kiriwrite_dbmodule->disconnectfilter();
1152 # Disconnect from the database server.
1154 $kiriwrite_dbmodule->disconnect();
1156 # Write a message saying that the filter was edited.
1158 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfilter}, { Style => "pageheader" });
1159 $kiriwrite_presmodule->addlinebreak();
1160 $kiriwrite_presmodule->addlinebreak();
1161 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editedfiltermessage});
1162 $kiriwrite_presmodule->addlinebreak();
1163 $kiriwrite_presmodule->addlinebreak();
1164 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist}});
1166 return $kiriwrite_presmodule->grab();
1168 } elsif ($confirm eq 0){
1170 # The action to edit a filter has not been confirmed
1171 # so write a form for editing the filter with.
1173 # Connect to the database server.
1175 $kiriwrite_dbmodule->connect();
1177 # Check if any errors occured while connecting to the database server.
1179 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1181 # A database connection error has occured so return
1184 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1188 # Connect to the database server.
1190 $kiriwrite_dbmodule->connect();
1192 # Check if any errors occured while connecting to the database server.
1194 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1196 # A database connection error has occured so return
1199 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1203 # Connect to the filter database.
1205 $kiriwrite_dbmodule->connectfilter();
1207 # Check if any error has occured while connecting to the filter
1210 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1212 # The filter database does not exist.
1214 kiriwrite_error("filtersdbmissing");
1216 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1218 # The filter database has invalid permissions set so return
1221 kiriwrite_error("filtersdbpermissions");
1223 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1225 # A database error has occured with the filter database.
1227 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1231 # Get information about the filter.
1233 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1235 # Check if any errors occured while getting information about the filter.
1237 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1239 # A database error occured while using the filter database so
1242 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1244 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1246 # The filter does not exist so return an error.
1248 kiriwrite_error("filterdoesnotexist");
1252 # Get the required information.
1254 $filter_priority = $filter_info{"FilterPriority"};
1255 $filter_find = $filter_info{"FilterFind"};
1256 $filter_replace = $filter_info{"FilterReplace"};
1257 $filter_notes = $filter_info{"FilterNotes"};
1259 # Disconnect from the filter database.
1261 $kiriwrite_dbmodule->disconnectfilter();
1263 # Disconnect from the database server.
1265 $kiriwrite_dbmodule->disconnect();
1267 # Write out the form.
1269 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{editfilter}, { Style => "pageheader" });
1270 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1271 $kiriwrite_presmodule->startbox();
1272 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1273 $kiriwrite_presmodule->addhiddendata("action", "edit");
1274 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1275 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1277 $kiriwrite_presmodule->addlinebreak();
1278 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1280 $kiriwrite_presmodule->startheader();
1281 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
1282 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
1283 $kiriwrite_presmodule->endheader();
1285 $kiriwrite_presmodule->startrow();
1286 $kiriwrite_presmodule->addcell("tablecell1");
1287 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{findfilter});
1288 $kiriwrite_presmodule->endcell();
1289 $kiriwrite_presmodule->addcell("tablecell2");
1290 $kiriwrite_presmodule->addinputbox("filterfind", { Size => 64, MaxLength => 1024, Value => $filter_find });
1291 $kiriwrite_presmodule->endcell();
1292 $kiriwrite_presmodule->endrow();
1294 $kiriwrite_presmodule->startrow();
1295 $kiriwrite_presmodule->addcell("tablecell1");
1296 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{replacefilter});
1297 $kiriwrite_presmodule->endcell();
1298 $kiriwrite_presmodule->addcell("tablecell2");
1299 $kiriwrite_presmodule->addinputbox("filterreplace", { Size => 64, MaxLength => 1024, Value => $filter_replace });
1300 $kiriwrite_presmodule->endcell();
1301 $kiriwrite_presmodule->endrow();
1303 $kiriwrite_presmodule->startrow();
1304 $kiriwrite_presmodule->addcell("tablecell1");
1305 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{priority});
1306 $kiriwrite_presmodule->endcell();
1307 $kiriwrite_presmodule->addcell("tablecell2");
1308 $kiriwrite_presmodule->addinputbox("priority", { Size => 5, MaxLength => 5, Value => $filter_priority });
1309 $kiriwrite_presmodule->startlist();
1310 $kiriwrite_presmodule->additem($kiriwrite_lang->{filter}->{noprioritygiven});
1311 $kiriwrite_presmodule->endlist();
1312 $kiriwrite_presmodule->endcell();
1313 $kiriwrite_presmodule->endrow();
1315 $kiriwrite_presmodule->startrow();
1316 $kiriwrite_presmodule->addcell("tablecell1");
1317 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{notes});
1318 $kiriwrite_presmodule->endcell();
1319 $kiriwrite_presmodule->addcell("tablecell2");
1320 $kiriwrite_presmodule->addtextbox("notes", { Columns => 50, Rows => 10});
1321 $kiriwrite_presmodule->endcell();
1322 $kiriwrite_presmodule->endrow();
1324 $kiriwrite_presmodule->endtable();
1326 $kiriwrite_presmodule->addlinebreak();
1327 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{editfilterbutton});
1328 $kiriwrite_presmodule->addtext(" | ");
1329 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
1330 $kiriwrite_presmodule->addtext(" | ");
1331 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1332 $kiriwrite_presmodule->endbox();
1333 $kiriwrite_presmodule->endform();
1335 return $kiriwrite_presmodule->grab();
1339 # A confirm value other than 0 or 1 has been
1340 # specified, so return an error.
1342 kiriwrite_error("invalidvalue");
1348 sub kiriwrite_filter_delete{
1349 #################################################################################
1350 # kiriwrite_filter_delete: Deletes a filter from the filter list. #
1354 # kiriwrite_filter_delete(filterid, confirm); #
1356 # filterid Specifies the filter line number to delete. #
1357 # confirm Confirms the deletion of the selected filter. #
1358 #################################################################################
1360 # Get the values that were passed to this subroutine.
1362 my ($filter_id, $confirm) = @_;
1364 # Check the confirm value to make sure it is no more than
1365 # one character long.
1367 kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
1369 # Check if the confirm value is blank and if it is
1370 # srt the confirm value to 0.
1374 # The confirm value does not have any value
1375 # set so set it to 0.
1381 # Check if the filter identification number is blank,
1382 # contains characters other than numbers and is more
1383 # than seven characters long.
1387 # The filter identification number is blank,
1388 # so return an error.
1390 kiriwrite_error("filteridblank");
1394 my $filter_id_numbers_check = kiriwrite_variablecheck($filter_id, "numbers", 0, 1);
1396 if ($filter_id_numbers_check eq 1){
1398 # The filter identification number contains
1399 # characters other than numbers, so return
1402 kiriwrite_error("filteridinvalid");
1406 my $filter_id_maxlength_check = kiriwrite_variablecheck($filter_id, "maxlength", 7, 1);
1408 if ($filter_id_maxlength_check eq 1){
1410 # The filter identification number given
1411 # is more than seven characters long, so
1414 kiriwrite_error("filteridtoolong");
1418 # Define some values for later.
1420 my @database_filter;
1421 my $filter_exists = 0;
1423 # Check if the confirm integer has a value of '1'.
1427 # The action to delete a filter has been confirmed.
1429 # Connect to the database server.
1431 $kiriwrite_dbmodule->connect();
1433 # Check if any errors occured while connecting to the database server.
1435 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1437 # A database connection error has occured so return
1440 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1444 # Connect to the filter database.
1446 $kiriwrite_dbmodule->connectfilter();
1448 # Check if any error has occured while connecting to the filter
1451 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1453 # The filter database does not exist.
1455 kiriwrite_error("filtersdbmissing");
1457 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1459 # The filter database has invalid permissions set so return
1462 kiriwrite_error("filtersdbpermissions");
1464 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1466 # A database error has occured with the filter database.
1468 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1472 # Delete the filter from the filter database.
1474 $kiriwrite_dbmodule->deletefilter({ FilterID => $filter_id });
1476 # Check if any errors occured while deleting the filter.
1478 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1480 # A database error has occured while trying to delete a filter so
1483 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1485 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1487 # The filter does not exist so return an error.
1489 kiriwrite_error("filterdoesnotexist");
1493 # Disconnect from the filter database.
1495 $kiriwrite_dbmodule->disconnectfilter();
1497 # Disconnect from the database server.
1499 $kiriwrite_dbmodule->disconnect();
1501 # Write a message saying that the filter was deleted
1502 # from the filter database.
1504 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfilter}, { Style => "pageheader" });
1505 $kiriwrite_presmodule->addlinebreak();
1506 $kiriwrite_presmodule->addlinebreak();
1507 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletedfiltermessage});
1508 $kiriwrite_presmodule->addlinebreak();
1509 $kiriwrite_presmodule->addlinebreak();
1510 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{returnfilterlist} });
1512 } elsif ($confirm eq 0) {
1514 # Connect to the database server.
1516 $kiriwrite_dbmodule->connect();
1518 # Check if any errors occured while connecting to the database server.
1520 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
1522 # A database connection error has occured so return
1525 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
1529 # Connect to the filter database.
1531 $kiriwrite_dbmodule->connectfilter();
1533 # Check if any error has occured while connecting to the filter
1536 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseDoesNotExist"){
1538 # The filter database does not exist.
1540 kiriwrite_error("filtersdbmissing");
1542 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseInvalidPermissionsSet"){
1544 # The filter database has invalid permissions set so return
1547 kiriwrite_error("filtersdbpermissions");
1549 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1551 # A database error has occured with the filter database.
1553 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1557 # Get information about the filter (to check if it exists).
1559 my %filter_info = $kiriwrite_dbmodule->getfilterinfo({ FilterID => $filter_id });
1561 # Check if any errors occured while getting information about the filter.
1563 if ($kiriwrite_dbmodule->geterror eq "FilterDatabaseError"){
1565 # A database error occured while using the filter database so
1568 kiriwrite_error("filtersdbdatabaseerror", $kiriwrite_dbmodule->geterror(1));
1570 } elsif ($kiriwrite_dbmodule->geterror eq "FilterDoesNotExist"){
1572 # The filter does not exist so return an error.
1574 kiriwrite_error("filterdoesnotexist");
1578 # Disconnect from the filter database.
1580 $kiriwrite_dbmodule->disconnectfilter();
1582 # Disconnect from the database
1584 # The confirm integer is '0', so continue write out
1585 # a form asking the user to confirm the deletion
1588 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefilter}, { Style => "pageheader" });
1589 $kiriwrite_presmodule->addlinebreak();
1590 $kiriwrite_presmodule->addlinebreak();
1591 $kiriwrite_presmodule->addtext($kiriwrite_lang->{filter}->{deletefiltermessage});
1592 $kiriwrite_presmodule->addlinebreak();
1593 $kiriwrite_presmodule->addlinebreak();
1594 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
1595 $kiriwrite_presmodule->startbox();
1596 $kiriwrite_presmodule->addhiddendata("mode", "filter");
1597 $kiriwrite_presmodule->addhiddendata("action", "delete");
1598 $kiriwrite_presmodule->addhiddendata("filter", $filter_id);
1599 $kiriwrite_presmodule->addhiddendata("confirm", 1);
1600 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{filter}->{deletefilterbutton});
1601 $kiriwrite_presmodule->addtext(" | ");
1602 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=filter", { Text => $kiriwrite_lang->{filter}->{deletefilterreturn} });
1603 $kiriwrite_presmodule->endbox();
1604 $kiriwrite_presmodule->endform();
1608 kiriwrite_error("invalidvalue");
1612 return $kiriwrite_presmodule->grab();