X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=cgi-files%2FModules%2FDatabase%2FSQLite.pm;h=77366c490bc42136d09ea5c9285da15e7a9fea62;hb=f4287e42a5e96cffe70d84a3c659d5be3eab46d5;hp=f179a623883639c9367bb4b66d7588c44e809475;hpb=fae62c16cf66ea474ae619b0abf1b5e4af048978;p=kiriwrite%2F.git diff --git a/cgi-files/Modules/Database/SQLite.pm b/cgi-files/Modules/Database/SQLite.pm index f179a62..77366c4 100644 --- a/cgi-files/Modules/Database/SQLite.pm +++ b/cgi-files/Modules/Database/SQLite.pm @@ -30,7 +30,7 @@ use warnings; # Load the following Perl modules. -use DBI; +use DBI qw(:sql_types); # Set the following values. @@ -38,10 +38,12 @@ our $VERSION = "0.1.0"; 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; @@ -50,8 +52,7 @@ my $filterdb_loaded = 0; my $filterdb_exists = 1; my $filterdb_string_handle; my $filterdb_database_handle; -my $error = ""; -my $errorext = ""; + ################################################################################# # Generic Subroutines. # @@ -604,11 +605,11 @@ sub getdblist{ 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); } @@ -1183,6 +1184,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 = ""; @@ -1199,39 +1202,82 @@ 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 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; + + } } @@ -1481,6 +1527,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){ + + $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; @@ -1793,7 +1868,7 @@ sub connectfilter{ # 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; } @@ -2086,11 +2161,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; @@ -2317,7 +2392,7 @@ sub connecttemplate{ # 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; } @@ -2581,17 +2656,17 @@ sub addtemplate{ # 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,