Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Commit of recent work in preperation for Kiriwrite 0.5.0
[kiriwrite/.git] / cgi-files / Modules / Database / MySQL5.pm
index 18fe539..5c1e5d9 100644 (file)
 
 # 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();
 
 }
 
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy