use strict;
use warnings;
-use Encode qw();
+use Encode qw(decode_utf8);
# Load the following Perl modules.
}
-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. #
}
+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);
+
+ $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();
+
+ @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 selectseconddb{
#################################################################################
# selectseconddb: Selects a second Kiriwrite database for moving and copying #
}
-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 );
+ $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]),
# #
# Usage: #
# #
-# $dbmodule->addtemplate(); #
+# $dbmodule->addtemplate(options); #
# #
# options Specifies the following options in any order. #
# #
}
-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();
-
-}
-
sub edittemplate{
#################################################################################
# editttemplate: Edits a Kiriwrite template. #
}
+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();
+
+}
+
#################################################################################
# Page subroutines. #
#################################################################################
# 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 = "";
# 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.
+ $string_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 );
+ $string_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 = $string_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 {
+
+ $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();
+
+ # Check if the page exists in the database.
+
+ while (@data_page = $string_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),
+ );
+
+ $page_found = 1;
+
+ }
+
+ }
+
# Check if the page did exist.
if (!$page_found){
}
+ # Check if there is a page that already exists with the new
+ # filename.
+
+ $page_found = 0;
+
+ if ($page_filename ne $page_newfilename){
+
+ $string_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 );
+ $string_handle->execute();
+
+ # Check if a page really is using the new filename.
+
+ while (@page_info = $string_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;
# 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 = $database_handle->prepare('SHOW TABLES LIKE \'' . $class->convert($options{"TablePrefix"}) . '_filters\'') or ( $error = "FilterDatabaseError", $errorext = $database_handle->errstr, return );
$string_handle->execute();
while (@filterdb_check = $string_handle->fetchrow_array()){
}
- # 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;