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