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