# Load the following Perl modules.
-use DBI;
+use DBI qw(:sql_types);
# Set the following values.
my ($options, %options);
my $database_handle;
my $string_handle;
-my $second_database_handle;
-my $second_string_handle;
+my $error = "";
+my $errorext = "";
my $database_filename;
my $second_database_filename;
+my $second_database_handle;
+my $second_string_handle;
my $templatedb_loaded = 0;
my $templatedb_exists = 1;
my $template_string_handle;
my $filterdb_exists = 1;
my $filterdb_string_handle;
my $filterdb_database_handle;
-my $error = "";
-my $errorext = "";
+
#################################################################################
# Generic Subroutines. #
foreach $database (@data_directory){
- $database =~ s/.db.sqlite$//g;
+ $database =~ s/.db.sqlite$//og;
$database_filename_friendly = $database;
#$database_filename_length = length($database);
- #$database_filename_friendly = substr($database, 0, $database_filename_length - 3);
+ #$database_filename_friendly = substr($database, 0, $database_filename_length - 10);
push(@data_directory_final, $database_filename_friendly);
}
# 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 kiriwrite_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return );
- $string_handle->execute();
+ if (!$page_reduced){
- # Check if the page exists in the database.
+ $page_reduced = 0;
- while (@data_page = $string_handle->fetchrow_array()){
+ }
- # Get the values from the array.
+ if ($page_reduced eq 1){
- $pagefilename = $data_page[0];
- $pagename = $data_page[1];
- $pagedescription = $data_page[2];
- $pagesection = $data_page[3];
- $pagetemplate = $data_page[4];
- $pagedata = $data_page[5];
- $pagesettings = $data_page[6];
- $pagelastmodified = $data_page[7];
+ $string_handle = $database_handle->prepare('SELECT filename, pagename, pagedescription, lastmodified FROM kiriwrite_database_pages WHERE filename = \'' . $class->convert($page_filename) . '\' LIMIT 1') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return );
- # Put the values into the page hash.
+ $string_handle->execute();
- %database_page = (
- "PageFilename" => $pagefilename,
- "PageName" => $pagename,
- "PageDescription" => $pagedescription,
- "PageSection" => $pagesection,
- "PageTemplate" => $pagetemplate,
- "PageContent" => $pagedata,
- "PageSettings" => $pagesettings,
- "PageLastModified" => $class->dateconvert($pagelastmodified),
- );
+ # Check if the page exists in the database.
- $page_found = 1;
+ while (@data_page = $string_handle->fetchrow_array()){
+
+ # Get the values from the array.
+
+ $pagefilename = $data_page[0];
+ $pagename = $data_page[1];
+ $pagedescription = $data_page[2];
+ $pagelastmodified = $data_page[3];
+
+ # Put the values into the page hash.
+
+ %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 kiriwrite_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 = $data_page[0];
+ $pagename = $data_page[1];
+ $pagedescription = $data_page[2];
+ $pagesection = $data_page[3];
+ $pagetemplate = $data_page[4];
+ $pagedata = $data_page[5];
+ $pagesettings = $data_page[6];
+ $pagelastmodified = $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 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 kiriwrite_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 = "PageExists";
+ 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;
# Connect to the template database.
$filterdb_database_handle = DBI->connect("dbi:SQLite:dbname=filters.db.sqlite");
- $database_handle->{unicode} = 1;
+ $filterdb_database_handle->{unicode} = 1;
$filterdb_loaded = 1;
}
}
- # 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;
# Connect to the template database.
$template_database_handle = DBI->connect("dbi:SQLite:dbname=templates.db.sqlite");
- $database_handle->{unicode} = 1;
+ $template_database_handle->{unicode} = 1;
$templatedb_loaded = 1;
}
# Create a template table.
- my $directory_permissions = main::kiriwrite_filepermissions(".", 1, 1, 0);
+ my $directory_permissions = main::kiriwrite_filepermissions(".", 1, 1, 0);
- if ($directory_permissions eq 1){
+ if ($directory_permissions eq 1){
- # The template database cannot be created because of invalid directory
- # permissions so return an error.
+ # The template database cannot be created because of invalid directory
+ # permissions so return an error.
- $error = "TemplateDatabaseFileUncreateable";
- return;
+ $error = "TemplateDatabaseFileUncreateable";
+ return;
- }
+ }
$template_string_handle = $template_database_handle->prepare('create table kiriwrite_templates(
filename varchar(256) primary key,