X-Git-Url: http://Server1/repobrowser/?p=kiriwrite%2F.git;a=blobdiff_plain;f=cgi-files%2FModules%2FDatabase%2FMySQL5.pm;h=5c1e5d9f2f246901b8147fa2653635721ff1121b;hp=18fe53948e3148c7bb06cd9a9625594f114ca566;hb=807fbc25c35ea3cdf16adcb2106fbb63b3511a68;hpb=ae7ec57550d2ef5f947954c6cc4e06b4e27769b1 diff --git a/cgi-files/Modules/Database/MySQL5.pm b/cgi-files/Modules/Database/MySQL5.pm index 18fe539..5c1e5d9 100644 --- a/cgi-files/Modules/Database/MySQL5.pm +++ b/cgi-files/Modules/Database/MySQL5.pm @@ -21,24 +21,24 @@ # Define the package (perl module) name. -package Kiriwrite::Database::MySQL5; +package Modules::Database::MySQL5; # Enable strict and use warnings. use strict; use warnings; -use Encode qw(); +use Encode qw(decode_utf8); # Load the following Perl modules. -use DBI; +use DBI qw(:sql_types); # Set the following values. -our $VERSION = "0.1.0"; +our $VERSION = "0.5.0"; my ($options, %options); my $database_handle; -my $string_handle; +my $statement_handle; my $error; my $errorext; my $database_filename; @@ -491,10 +491,10 @@ sub dbexists{ # Check if the table exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($filename) . '_database_info\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($filename) . '_database_info\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@table_data = $string_handle->fetchrow_array()){ + while (@table_data = $statement_handle->fetchrow_array()){ $table_exists = 1; @@ -554,9 +554,9 @@ sub disconnect{ # Disconnect from the server. - if ($string_handle){ + if ($statement_handle){ - $string_handle->finish(); + $statement_handle->finish(); } @@ -586,15 +586,15 @@ sub getdblist{ # Get the list of databases. - $string_handle = $database_handle->prepare("SHOW TABLES") or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare("SHOW TABLES") or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); my @final_table_list; my @database_table_list; my @table_name; my $table; - while (@table_name = $string_handle->fetchrow_array()){ + while (@table_name = $statement_handle->fetchrow_array()){ push(@database_table_list, decode_utf8($table_name[0])); @@ -625,49 +625,6 @@ sub getdblist{ } -sub getseconddatabaseinfo{ -################################################################################# -# getseconddatabaseinfo: Get information about the database that pages will be # -# moved or copied to. # -# # -# Usage: # -# # -# $dbmodule->getseconddatabaseinfo(); # -################################################################################# - - - # Get the database information. - - my $class = shift; - my ($databaseinfo, %databaseinfo); - my ($sqldata, @sqldata); - - $error = ""; - $errorext = ""; - - $string_handle = $database_handle->prepare('SELECT name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); - - @sqldata = $string_handle->fetchrow_array(); - - # Process the database information into a hash. - - %databaseinfo = ( - "DatabaseName" => decode_utf8($sqldata[0]), - "Description" => decode_utf8($sqldata[1]), - "Notes" => decode_utf8($sqldata[2]), - "Categories" => decode_utf8($sqldata[3]), - "Major" => decode_utf8($sqldata[4]), - "Minor" => decode_utf8($sqldata[5]), - "Revision" => decode_utf8($sqldata[6]) - ); - - $string_handle->finish(); - - return %databaseinfo; - -} - sub selectdb{ ################################################################################# # selectdb: Selects the Kiriwrite database. # @@ -708,6 +665,48 @@ sub selectdb{ } +sub getdatabaseinfo{ +################################################################################# +# getdatabaseinfo: Get information about the database. # +# # +# Usage: # +# # +# $dbmodule->getdatabaseinfo(); # +################################################################################# + + # Get the database information. + + $error = ""; + $errorext = ""; + + my $class = shift; + my ($databaseinfo, %databaseinfo); + my ($sqldata, @sqldata); + + $statement_handle = $database_handle->prepare('SELECT name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + @sqldata = $statement_handle->fetchrow_array(); + + # Process the database information into a hash. + + %databaseinfo = ( + + "DatabaseName" => decode_utf8($sqldata[0]), + "Description" => decode_utf8($sqldata[1]), + "Notes" => decode_utf8($sqldata[2]), + "Categories" => decode_utf8($sqldata[3]), + "Major" => decode_utf8($sqldata[4]), + "Minor" => decode_utf8($sqldata[5]), + "Revision" => decode_utf8($sqldata[6]) + ); + + $statement_handle->finish(); + + return %databaseinfo; + +} + sub selectseconddb{ ################################################################################# # selectseconddb: Selects a second Kiriwrite database for moving and copying # @@ -754,33 +753,34 @@ sub selectseconddb{ } -sub getdatabaseinfo{ +sub getseconddatabaseinfo{ ################################################################################# -# getdatabaseinfo: Get information about the database. # +# getseconddatabaseinfo: Get information about the database that pages will be # +# moved or copied to. # # # # Usage: # # # -# $dbmodule->getdatabaseinfo(); # +# $dbmodule->getseconddatabaseinfo(); # ################################################################################# - # Get the database information. - $error = ""; - $errorext = ""; + # Get the database information. my $class = shift; my ($databaseinfo, %databaseinfo); my ($sqldata, @sqldata); - $string_handle = $database_handle->prepare('SELECT name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $error = ""; + $errorext = ""; + + $statement_handle = $database_handle->prepare('SELECT name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - @sqldata = $string_handle->fetchrow_array(); + @sqldata = $statement_handle->fetchrow_array(); # Process the database information into a hash. %databaseinfo = ( - "DatabaseName" => decode_utf8($sqldata[0]), "Description" => decode_utf8($sqldata[1]), "Notes" => decode_utf8($sqldata[2]), @@ -790,7 +790,7 @@ sub getdatabaseinfo{ "Revision" => decode_utf8($sqldata[6]) ); - $string_handle->finish(); + $statement_handle->finish(); return %databaseinfo; @@ -848,7 +848,7 @@ sub adddatabase{ # Create the database structure (info and page tables); - $string_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_info ( + $statement_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_info ( name varchar(256) primary key, description varchar(512), notes mediumtext, @@ -857,9 +857,9 @@ sub adddatabase{ kiriwrite_version_minor int(4), kiriwrite_version_revision int(4) ) DEFAULT CHARSET=utf8') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); - $string_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_pages ( + $statement_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_pages ( filename varchar(256) primary key, pagename varchar(512), pagedescription varchar(512), @@ -869,12 +869,12 @@ sub adddatabase{ pagesettings int(1), lastmodified datetime ) DEFAULT CHARSET=utf8') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); # Convert the values into SQL query formatted values and add an entry # to the kiriwrite_database_info table. - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_info (name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision) VALUES( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbfilename) . '_database_info (name, description, notes, categories, kiriwrite_version_major, kiriwrite_version_minor, kiriwrite_version_revision) VALUES( \'' . $class->convert($dbname) . '\', \'' . $class->convert($dbdescription) . '\', \'' . $class->convert($dbnotes) . '\', @@ -883,7 +883,7 @@ sub adddatabase{ \'' . $class->convert($dbminorver) . '\', \'' . $class->convert($dbrevisionver) . '\' )') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -938,27 +938,27 @@ sub editdatabase{ # Rename the tables. - $string_handle = $database_handle->prepare('RENAME TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_info TO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info, ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages TO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_pages'); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('RENAME TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_info TO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info, ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages TO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_pages'); + $statement_handle->execute(); } # Get the current database information. - $string_handle = $database_handle->prepare('SELECT name FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT name FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - my @database_oldinfo = $string_handle->fetchrow_array(); + my @database_oldinfo = $statement_handle->fetchrow_array(); my $dboldname = decode_utf8($database_oldinfo[0]); # Update the database information. - $string_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info SET name = \'' . $class->convert($dbname) . '\', + $statement_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($dbnewfilename) . '_database_info SET name = \'' . $class->convert($dbname) . '\', description = \'' . $class->convert($dbdescription) . '\', notes = \'' . $class->convert($dbnotes) . '\', categories = \'' . $class->convert($dbcategories) . '\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -1005,15 +1005,15 @@ sub deletedatabase{ # Delete the database tables. - $string_handle = $database_handle->prepare('DROP TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_info') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('DROP TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_info') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if the _database_pages table exists and delete it if it exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_pages\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_pages\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@table_data = $string_handle->fetchrow_array()){ + while (@table_data = $statement_handle->fetchrow_array()){ $table_exists = 1; @@ -1025,8 +1025,8 @@ sub deletedatabase{ # the _database_pages table really does exist so delete it. - $string_handle = $database_handle->prepare('DROP TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('DROP TABLE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($databasename) . '_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); } @@ -1057,10 +1057,10 @@ sub connecttemplate{ # Check if the template database exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_templates\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_templates\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@templatedb_check = $string_handle->fetchrow_array()){ + while (@templatedb_check = $statement_handle->fetchrow_array()){ $templatedb_exists = 1; @@ -1098,26 +1098,50 @@ sub gettemplatelist{ # # # Usage: # # # -# $dbmodule->gettemplatelist(); # +# $dbmodule->gettemplatelist(options); # +# # +# options Specifies the following options as a hash (in any order). # +# # +# StartFrom Specifies where the list of templates will start from. # +# Limit Specifies how many templates should be retrieved. # ################################################################################# - my $error = ""; - my $errorext = ""; + $error = ""; + $errorext = ""; - my $class = shift; + my $class = shift; + my ($passedoptions) = @_; + + my $start_from = $passedoptions->{"StartFrom"}; + my $limit = $passedoptions->{"Limit"}; + + if (defined($start_from)){ - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates ORDER BY filename ASC') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + if (!$limit){ + + $limit = 0; + + } + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates ORDER BY filename ASC LIMIT ' . $start_from . ',' . $limit ) or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } else { + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates ORDER BY filename ASC') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } my @database_template; my @templates_list; my $template_filename; - while (@database_template = $string_handle->fetchrow_array()){ + while (@database_template = $statement_handle->fetchrow_array()){ # Get certain values from the array. - $template_filename = decode_utf8($database_template[0]); + $template_filename = $database_template[0]; # Add the template to the list of templates. @@ -1140,6 +1164,8 @@ sub gettemplateinfo{ # options Specifies the following options in any order. # # # # TemplateFilename Specifies the template filename to use. # +# Reduced Specifies if the reduced version of the template # +# information should be retrieved. # ################################################################################# $error = ""; @@ -1162,11 +1188,21 @@ sub gettemplateinfo{ my $template_found = 0; my $filename = $passedoptions->{"TemplateFilename"}; + my $reduced = $passedoptions->{"Reduced"}; + + if ($reduced && $reduced eq 1){ + + $statement_handle = $database_handle->prepare('SELECT filename, templatename, templatedescription, datemodified FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } else { - $string_handle = $database_handle->prepare('SELECT filename, templatename, templatedescription, templatelayout, datemodified FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename, templatename, templatedescription, templatelayout, datemodified FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@template_data = $string_handle->fetchrow_array()){ + } + + while (@template_data = $statement_handle->fetchrow_array()){ # Get certain values from the array. @@ -1200,10 +1236,32 @@ sub gettemplateinfo{ } - return %page_info; + return %page_info; } +sub gettemplatecount{ +################################################################################# +# gettemplatecount: Gets the count of templates in the template database. # +# # +# Usage: # +# # +# $dbmodule->gettemplatecount(); # +################################################################################# + + $error = ""; + $errorext = ""; + + my $class = shift; + + $statement_handle = $database_handle->prepare('SELECT COUNT(*) FROM ' . $class->convert($options{"TablePrefix"}) . '_templates') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return); + $statement_handle->execute(); + + my $count = $statement_handle->fetchrow_array(); + + return $count; + +} sub addtemplate{ ################################################################################# @@ -1211,7 +1269,7 @@ sub addtemplate{ # # # Usage: # # # -# $dbmodule->addtemplate(); # +# $dbmodule->addtemplate(options); # # # # options Specifies the following options in any order. # # # @@ -1241,10 +1299,10 @@ sub addtemplate{ # Check if the template database exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_templates\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_templates\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@templatedb_check = $string_handle->fetchrow_array()){ + while (@templatedb_check = $statement_handle->fetchrow_array()){ $templatedb_exists = 1; @@ -1255,14 +1313,14 @@ sub addtemplate{ if (!$templatedb_exists){ - $string_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_templates ( + $statement_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_templates ( filename varchar(256) primary key, templatename varchar(512), templatedescription varchar(512), templatelayout mediumtext, datemodified datetime ) DEFAULT CHARSET=utf8') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -1270,13 +1328,13 @@ sub addtemplate{ if (!$templatedb_exists){ - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ($blankfile = 1); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ($blankfile = 1); if ($blankfile eq 0){ - $string_handle->execute(); + $statement_handle->execute(); - while (@page_exists = $string_handle->fetchrow_array()){ + while (@page_exists = $statement_handle->fetchrow_array()){ $error = "TemplatePageExists"; return; @@ -1314,66 +1372,14 @@ sub addtemplate{ } - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_templates (filename, templatename, templatedescription, templatelayout, datemodified) VALUES( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_templates (filename, templatename, templatedescription, templatelayout, datemodified) VALUES( \'' . $class->convert($template_filename) . '\', \'' . $class->convert($template_name) . '\', \'' . $class->convert($template_description) . '\', \'' . $class->convert($template_layout) . '\', \'' . $class->convert($template_date) . '\' )') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); - -} - -sub deletetemplate{ -################################################################################# -# deletetemplate: Deletes a template from the template database. # -# # -# Usage: # -# # -# $dbmodule->deletetemplate(options); # -# # -# options Specifies the following options in any order. # -# # -# TemplateFilename Specifies the template filename to delete. # -################################################################################# - - $error = ""; - $errorext = ""; - - # Get the data passed to the subroutine. - - my $class = shift; - my ($passedoptions) = @_; - - my @pagedata; - my $template_filename = $passedoptions->{"TemplateFilename"}; - my $template_count = 0; - - # Check if the template exists. - - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); - - while (@pagedata = $string_handle->fetchrow_array()){ - - $template_count++; - - } - - if ($template_count eq 0){ - - # No pages were returned so return an error value. - - $error = "TemplateDoesNotExist"; - return; - - } - - # Delete the template from the template database. - - $string_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -1411,10 +1417,10 @@ sub edittemplate{ # Check if the template exists. - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@template_info = $string_handle->fetchrow_array()){ + while (@template_info = $statement_handle->fetchrow_array()){ $template_found = 1; @@ -1437,7 +1443,7 @@ sub edittemplate{ # Update the template information. - $string_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_templates SET + $statement_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_templates SET filename = \'' . $class->convert($new_template_filename) . '\', templatename = \'' . $class->convert($new_template_name) . '\', templatedescription = \'' . $class->convert($new_template_description) . '\', @@ -1445,7 +1451,59 @@ sub edittemplate{ datemodified = \'' . $class->convert($templatenewdate) . '\' WHERE filename = \'' . $class->convert($template_filename) . '\' ') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); + +} + +sub deletetemplate{ +################################################################################# +# deletetemplate: Deletes a template from the template database. # +# # +# Usage: # +# # +# $dbmodule->deletetemplate(options); # +# # +# options Specifies the following options in any order. # +# # +# TemplateFilename Specifies the template filename to delete. # +################################################################################# + + $error = ""; + $errorext = ""; + + # Get the data passed to the subroutine. + + my $class = shift; + my ($passedoptions) = @_; + + my @pagedata; + my $template_filename = $passedoptions->{"TemplateFilename"}; + my $template_count = 0; + + # Check if the template exists. + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\' LIMIT 1') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + while (@pagedata = $statement_handle->fetchrow_array()){ + + $template_count++; + + } + + if ($template_count eq 0){ + + # No pages were returned so return an error value. + + $error = "TemplateDoesNotExist"; + return; + + } + + # Delete the template from the template database. + + $statement_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_templates WHERE filename = \'' . $class->convert($template_filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); } @@ -1453,29 +1511,76 @@ sub edittemplate{ # Page subroutines. # ################################################################################# +sub getpagecount{ +################################################################################# +# getpagecount: Get the count of pages that are in the database. # +# # +# Usage: # +# # +# $dbmodule->getpagecount(); # +################################################################################# + + $error = ""; + $errorext = ""; + + my $class = shift; + + $statement_handle = $database_handle->prepare('SELECT COUNT(*) FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return); + $statement_handle->execute(); + + my $count = $statement_handle->fetchrow_array(); + + return $count; + +} + sub getpagelist{ ################################################################################# # getpagelist: Gets the list of pages from the database. # # # # Usage: # # # -# $dbmodule->getpagelist(); # +# $dbmodule->getpagelist(options); # +# # +# options Specifies the following options as a hash (in any order). # +# # +# StartFrom Start from the specified page in the database. # +# Limit Get the amount of pages given. # ################################################################################# $error = ""; $errorext = ""; my $class = shift; + my ($passedoptions) = shift; + + my $start_from = $passedoptions->{"StartFrom"}; + my $limit = $passedoptions->{"Limit"}; - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + if (defined($start_from)){ + + if (!$limit){ + + $limit = 0; + + } + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages LIMIT ' . $start_from . ',' . $limit) or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } else { + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } my @database_pagefilenames; my @database_pagefilenames_final; # Process the collected pages. - while (@database_pagefilenames = $string_handle->fetchrow_array){ + while (@database_pagefilenames = $statement_handle->fetchrow_array){ # Add each page to the list of pages in the database. @@ -1498,6 +1603,8 @@ sub getpageinfo{ # options Specifies the following options in any order. # # # # PageFilename Specifies the page filename to get the page information from. # +# Reduced Specifies if the reduced version of the page information should # +# be retrieved. # ################################################################################# $error = ""; @@ -1514,42 +1621,77 @@ sub getpageinfo{ # Get the page from the database. my $page_filename = $passedoptions->{"PageFilename"}; + my $page_reduced = $passedoptions->{"Reduced"}; - $string_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + if ($page_reduced eq 1){ - # Check if the page exists in the database. + $statement_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@data_page = $string_handle->fetchrow_array()){ + # Check if the page exists in the database. - # Get the values from the array. + while (@data_page = $statement_handle->fetchrow_array()){ - $pagefilename = decode_utf8($data_page[0]); - $pagename = decode_utf8($data_page[1]); - $pagedescription = decode_utf8($data_page[2]); - $pagesection = decode_utf8($data_page[3]); - $pagetemplate = decode_utf8($data_page[4]); - $pagedata = decode_utf8($data_page[5]); - $pagesettings = decode_utf8($data_page[6]); - $pagelastmodified = decode_utf8($data_page[7]); + # Get the values from the array. - # Put the values into the page hash. + $pagefilename = decode_utf8($data_page[0]); + $pagename = decode_utf8($data_page[1]); + $pagedescription = decode_utf8($data_page[2]); + $pagelastmodified = decode_utf8($data_page[3]); - %database_page = ( - "PageFilename" => $pagefilename, - "PageName" => $pagename, - "PageDescription" => $pagedescription, - "PageSection" => $pagesection, - "PageTemplate" => $pagetemplate, - "PageContent" => $pagedata, - "PageSettings" => $pagesettings, - "PageLastModified" => $class->dateconvert($pagelastmodified), - ); + # Put the values into the page hash. - $page_found = 1; + %database_page = ( + "PageFilename" => $pagefilename, + "PageName" => $pagename, + "PageDescription" => $pagedescription, + "PageLastModified" => $class->dateconvert($pagelastmodified), + ); - } + $page_found = 1; + + } + } else { + + $statement_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + # Check if the page exists in the database. + + while (@data_page = $statement_handle->fetchrow_array()){ + + # Get the values from the array. + + $pagefilename = decode_utf8($data_page[0]); + $pagename = decode_utf8($data_page[1]); + $pagedescription = decode_utf8($data_page[2]); + $pagesection = decode_utf8($data_page[3]); + $pagetemplate = decode_utf8($data_page[4]); + $pagedata = decode_utf8($data_page[5]); + $pagesettings = decode_utf8($data_page[6]); + $pagelastmodified = decode_utf8($data_page[7]); + + # Put the values into the page hash. + + %database_page = ( + "PageFilename" => $pagefilename, + "PageName" => $pagename, + "PageDescription" => $pagedescription, + "PageSection" => $pagesection, + "PageTemplate" => $pagetemplate, + "PageContent" => $pagedata, + "PageSettings" => $pagesettings, + "PageLastModified" => $class->dateconvert($pagelastmodified), + # ADD PageLastModifiedInternal + ); + + $page_found = 1; + + } + + } + # Check if the page did exist. if (!$page_found){ @@ -1607,13 +1749,13 @@ sub addpage{ # Check to see if the filename given already exists # in the page database. - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if a page with the filename given really does # exist. - while (@database_page = $string_handle->fetchrow_array()){ + while (@database_page = $statement_handle->fetchrow_array()){ # A page does exist so increment the count to 1. @@ -1661,7 +1803,7 @@ sub addpage{ # Add the page to the selected database. - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( \'' . $class->convert($page_filename) . '\', \'' . $class->convert($page_name) . '\', \'' . $class->convert($page_description) . '\', @@ -1671,7 +1813,7 @@ sub addpage{ \'' . $class->convert($page_settings) . '\', \'' . $class->convert($page_date) . '\' )') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -1704,10 +1846,10 @@ sub deletepage{ # Check if the page exists before deleting it. - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ $page_found = 1; @@ -1724,8 +1866,8 @@ sub deletepage{ # Delete the page. - $string_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); } @@ -1772,12 +1914,12 @@ sub editpage{ # Check if the page with the filename given exists. - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if the page really does exist. - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ # The page information is found. @@ -1794,6 +1936,35 @@ sub editpage{ } + # Check if there is a page that already exists with the new + # filename. + + $page_found = 0; + + if ($page_filename ne $page_newfilename){ + + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_newfilename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + # Check if a page really is using the new filename. + + while (@page_info = $statement_handle->fetchrow_array()){ + + # The page information is found. + + $page_found = 1; + + } + + if ($page_found eq 1){ + + $error = "PageAlreadyExists"; + return; + + } + + } + # Get the current date. my ($created_second, $created_minute, $created_hour, $created_day, $created_month, $created_year, $created_weekday, $created_yearday, $created_dst) = localtime; @@ -1801,8 +1972,8 @@ sub editpage{ # Edit the selected page. - $string_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages SET filename = \'' . $class->convert($page_newfilename) . '\', pagename = \'' . $class->convert($page_newname) . '\', pagedescription = \'' . $class->convert($page_newdescription) . '\', pagesection = \'' . $class->convert($page_newsection) . '\', pagetemplate = \'' . $class->convert($page_newtemplate) . '\', pagedata = \'' . $class->convert($page_newcontent) . '\', pagedata = \'' . $class->convert($page_newcontent) . '\', pagesettings = \'' . $class->convert($page_newsettings) . '\', lastmodified = \'' . $page_date . '\' WHERE filename = \'' . $class->convert($page_filename) . '\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages SET filename = \'' . $class->convert($page_newfilename) . '\', pagename = \'' . $class->convert($page_newname) . '\', pagedescription = \'' . $class->convert($page_newdescription) . '\', pagesection = \'' . $class->convert($page_newsection) . '\', pagetemplate = \'' . $class->convert($page_newtemplate) . '\', pagedata = \'' . $class->convert($page_newcontent) . '\', pagedata = \'' . $class->convert($page_newcontent) . '\', pagesettings = \'' . $class->convert($page_newsettings) . '\', lastmodified = \'' . $page_date . '\' WHERE filename = \'' . $class->convert($page_filename) . '\'') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); } @@ -1838,12 +2009,12 @@ sub movepage{ # Check if the page with the filename given exists. - $string_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if the page really does exist. - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ # Get the values from the array. @@ -1890,10 +2061,10 @@ sub movepage{ $page_found = 0; @page_info = (); - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ $page_found = 1; @@ -1910,7 +2081,7 @@ sub movepage{ # Add the page to the new database. - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( \'' . $class->convert($database_page{"PageFilename"}) . '\', \'' . $class->convert($database_page{"PageName"}) . '\', \'' . $class->convert($database_page{"PageDescription"}) . '\', @@ -1920,12 +2091,12 @@ sub movepage{ \'' . $class->convert($database_page{"PageSettings"}) . '\', \'' . $class->convert($database_page{"PageLastModified"}) . '\' )') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); # Delete the page from the old database. - $string_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($database_page{"PageFilename"}) . '\'') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($database_page{"PageFilename"}) . '\'') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); } @@ -1961,12 +2132,12 @@ sub copypage{ # Check if the page with the filename given exists. - $string_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "OldDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if the page really does exist. - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ # Get the values from the array. @@ -2013,10 +2184,10 @@ sub copypage{ $page_found = 0; @page_info = (); - $string_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT filename FROM ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@page_info = $string_handle->fetchrow_array()){ + while (@page_info = $statement_handle->fetchrow_array()){ $page_found = 1; @@ -2033,7 +2204,7 @@ sub copypage{ # Add the page to the new database. - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_' . $class->convert($second_database_filename) . '_database_pages (filename, pagename, pagedescription, pagesection, pagetemplate, pagedata, pagesettings, lastmodified) VALUES ( \'' . $class->convert($database_page{"PageFilename"}) . '\', \'' . $class->convert($database_page{"PageName"}) . '\', \'' . $class->convert($database_page{"PageDescription"}) . '\', @@ -2043,7 +2214,7 @@ sub copypage{ \'' . $class->convert($database_page{"PageSettings"}) . '\', \'' . $class->convert($database_page{"PageLastModified"}) . '\' )') or ( $error = "NewDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -2072,10 +2243,10 @@ sub connectfilter{ # Check if the template database exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_filters\'') or ( $error = "TemplateDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_filters\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@filterdb_check = $string_handle->fetchrow_array()){ + while (@filterdb_check = $statement_handle->fetchrow_array()){ $filterdb_exists = 1; @@ -2113,23 +2284,45 @@ sub getfilterlist{ # # # Usage: # # # -# $dbmodule->getfilterlist(); # +# $dbmodule->getfilterlist(options); # +# # +# options Specifies the following options as a hash (in any order). # +# # +# StartFrom Specifies where the list of filters should start from. # +# Limit Specifies the amount of the filters to get. # ################################################################################# $error = ""; $errorext = ""; my $class = shift; + my ($passedoptions) = shift; my @filter_list; my @filter_data; - # Get the list of filters available. + my $start_from = $passedoptions->{"StartFrom"}; + my $limit = $passedoptions->{"Limit"}; + + if (defined($start_from)){ + + if (!$limit){ + + $limit = 0; + + } + + $statement_handle = $database_handle->prepare('SELECT id, priority FROM ' . $class->convert($options{"TablePrefix"}) . '_filters ORDER BY priority ASC LIMIT ' . $start_from . ',' . $limit) or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - $string_handle = $database_handle->prepare('SELECT id, priority FROM ' . $class->convert($options{"TablePrefix"}) . '_filters ORDER BY priority ASC') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + } else { + + $statement_handle = $database_handle->prepare('SELECT id, priority FROM ' . $class->convert($options{"TablePrefix"}) . '_filters ORDER BY priority ASC') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@filter_data = $string_handle->fetchrow_array()){ + } + + while (@filter_data = $statement_handle->fetchrow_array()){ # Add the filter to the list of available filters. @@ -2141,6 +2334,29 @@ sub getfilterlist{ } +sub getfiltercount{ +################################################################################# +# getfiltercount: Gets the count of filters in the filters database. # +# # +# Usage: # +# # +# $dbmodule->getfiltercount(); # +################################################################################# + + $error = ""; + $errorext = ""; + + my $class = shift; + + $statement_handle = $database_handle->prepare('SELECT COUNT(*) FROM ' . $class->convert($options{"TablePrefix"}) . '_filters') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return); + $statement_handle->execute(); + + my $count = $statement_handle->fetchrow_array(); + + return $count; + +} + sub getfilterinfo{ ################################################################################# # getfilterinfo: Gets information about the filter. # @@ -2152,6 +2368,7 @@ sub getfilterinfo{ # options Specifies the following options in any order. # # # # FilterID Specifies the filter ID number to get information from. # +# Reduced Specifies to get the reduced version of the filter information. # ################################################################################# $error = ""; @@ -2169,19 +2386,30 @@ sub getfilterinfo{ # Get the values that are in the hash. my $filter_id = $passedoptions->{"FilterID"}; + my $reduced = $passedoptions->{"Reduced"}; - $string_handle = $database_handle->prepare('SELECT id, priority, findsetting, replacesetting, notes FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + if ($reduced && $reduced eq 1){ + + $statement_handle = $database_handle->prepare('SELECT id, priority, findsetting, replacesetting, enabled FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } else { + + $statement_handle = $database_handle->prepare('SELECT id, priority, findsetting, replacesetting, enabled, notes FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); + + } # Get the filter information. - while (@filter_data = $string_handle->fetchrow_array()){ + while (@filter_data = $statement_handle->fetchrow_array()){ $filter_info{"FilterID"} = decode_utf8($filter_data[0]); $filter_info{"FilterPriority"} = decode_utf8($filter_data[1]); $filter_info{"FilterFind"} = decode_utf8($filter_data[2]); $filter_info{"FilterReplace"} = decode_utf8($filter_data[3]); - $filter_info{"FilterNotes"} = decode_utf8($filter_data[4]); + $filter_info{"FilterEnabled"} = decode_utf8($filter_data[4]); + $filter_info{"FilterNotes"} = decode_utf8($filter_data[5]); $filter_exists = 1; @@ -2218,6 +2446,7 @@ sub addfilter{ # FindFilter Specifies the find filter to add. # # ReplaceFilter Specifies the replace filter to add. # # Priority Specifies the filter priority to use. # +# Enabled Specifies if the filter should be enabled. # # Notes Specifies the notes to use. # ################################################################################# @@ -2247,14 +2476,15 @@ sub addfilter{ my $filter_find = $passedoptions->{"FindFilter"}; my $filter_replace = $passedoptions->{"ReplaceFilter"}; my $filter_priority = $passedoptions->{"Priority"}; + my $filter_enabled = $passedoptions->{"Enabled"}; my $filter_notes = $passedoptions->{"Notes"}; # Check if the template database exists. - $string_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_filters\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_filters\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@filterdb_check = $string_handle->fetchrow_array()){ + while (@filterdb_check = $statement_handle->fetchrow_array()){ $filterdb_exists = 1; @@ -2287,29 +2517,36 @@ sub addfilter{ } + if (!$filter_enabled){ + + $filter_enabled = ""; + + } + # Check if there is really no filter table. if (!$filterdb_exists){ # Create the filter database table. - $string_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_filters ( + $statement_handle = $database_handle->prepare('CREATE TABLE ' . $class->convert($options{"TablePrefix"}) . '_filters ( id int(7) primary key, priority int(5), findsetting varchar(1024), replacesetting varchar(1024), + enabled varchar(3), notes text ) DEFAULT CHARSET=utf8') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } # Find the lowest filter identification number available. - $string_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters ORDER BY id ASC') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters ORDER BY id ASC') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@database_filters = $string_handle->fetchrow_array()){ + while (@database_filters = $statement_handle->fetchrow_array()){ $filter_id = decode_utf8($database_filters[0]); @@ -2329,12 +2566,12 @@ sub addfilter{ $new_id = $filter_id + 1; - $string_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters WHERE id = \'' . $class->convert($new_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters WHERE id = \'' . $class->convert($new_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Get the filter identification number. - while (@filterid_check = $string_handle->fetchrow_array()){ + while (@filterid_check = $statement_handle->fetchrow_array()){ $filter_found = 1; @@ -2358,11 +2595,11 @@ sub addfilter{ } - # Check if there were any filters in the filters database. + # Check if there were any filters in the filter database. if (!$filter_count && !$new_id){ - # There were no filters in the filters database so set + # There were no filters in the filter database so set # the new filter identification value to 1. $new_id = 1; @@ -2371,14 +2608,14 @@ sub addfilter{ # Add the filter to the filter database. - $string_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_filters (id, priority, findsetting, replacesetting, notes) VALUES ( + $statement_handle = $database_handle->prepare('INSERT INTO ' . $class->convert($options{"TablePrefix"}) . '_filters (id, priority, findsetting, replacesetting, notes) VALUES ( \'' . $class->convert($new_id) . '\', \'' . $class->convert($filter_priority) . '\', \'' . $class->convert($filter_find) . '\', \'' . $class->convert($filter_replace) .'\', \'' . $class->convert($filter_notes) . '\' )') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); } @@ -2397,6 +2634,7 @@ sub editfilter{ # NewFindFilter Specifies the new find filter setting. # # NewReplaceFilter Specifies the new replace filter setting. # # NewFilterPriority Specifies the new filter priority setting. # +# NewEnabled Specifies if the filter is enabled. # # NewFilterNotes Specifies the new notes for the filter. # ################################################################################# @@ -2418,16 +2656,17 @@ sub editfilter{ my $filter_newfind = $passedoptions->{"NewFindFilter"}; my $filter_newreplace = $passedoptions->{"NewReplaceFilter"}; my $filter_newpriority = $passedoptions->{"NewFilterPriority"}; + my $filter_enabled = $passedoptions->{"NewEnabled"}; my $filter_newnotes = $passedoptions->{"NewFilterNotes"}; # Check if the filter exists before editing it. - $string_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); # Check if the filter exists. - while (@filter_data = $string_handle->fetchrow_array()){ + while (@filter_data = $statement_handle->fetchrow_array()){ $filter_exists = 1; @@ -2447,13 +2686,14 @@ sub editfilter{ # Edit the selected filter. - $string_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_filters SET + $statement_handle = $database_handle->prepare('UPDATE ' . $class->convert($options{"TablePrefix"}) . '_filters SET findsetting = \'' . $class->convert($filter_newfind) . '\', replacesetting = \'' . $class->convert($filter_newreplace) . '\', priority = \'' . $class->convert($filter_newpriority) . '\', + enabled = \'' . $class->convert($filter_enabled) . '\', notes = \'' . $class->convert($filter_newnotes) . '\' WHERE id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle->execute(); return; @@ -2489,10 +2729,10 @@ sub deletefilter{ # Check if the filter exists before deleting. - $string_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('SELECT id FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); - while (@filter_data = $string_handle->fetchrow_array()){ + while (@filter_data = $statement_handle->fetchrow_array()){ $filter_exists = 1; @@ -2509,8 +2749,8 @@ sub deletefilter{ # Delete the filter from the filter database. - $string_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); - $string_handle->execute(); + $statement_handle = $database_handle->prepare('DELETE FROM ' . $class->convert($options{"TablePrefix"}) . '_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return ); + $statement_handle->execute(); }