X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=cgi-files%2FModules%2FDatabase%2FSQLite.pm;h=28c7cba71febc787a5fea67363125b78b1b1e156;hb=9379933d4d112578e469053a691dfbb4873384f7;hp=92bce19427e861843066985d8528837af760875c;hpb=ae7ec57550d2ef5f947954c6cc4e06b4e27769b1;p=kiriwrite%2F.git diff --git a/cgi-files/Modules/Database/SQLite.pm b/cgi-files/Modules/Database/SQLite.pm index 92bce19..28c7cba 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 qw(); +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. # @@ -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,76 @@ 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 eq 1){ - # Check if the page exists in the database. + $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 ); - while (@data_page = $string_handle->fetchrow_array()){ + $string_handle->execute(); - # Get the values from the array. + # 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]; + $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; + + } - $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. + } 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 ); - %database_page = ( - "PageFilename" => $pagefilename, - "PageName" => $pagename, - "PageDescription" => $pagedescription, - "PageSection" => $pagesection, - "PageTemplate" => $pagetemplate, - "PageContent" => $pagedata, - "PageSettings" => $pagesettings, - "PageLastModified" => $class->dateconvert($pagelastmodified), - ); + $string_handle->execute(); - $page_found = 1; + # 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 +1521,33 @@ sub editpage{ } + # Check if there is a page that already exists with the new + # filename. + + 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 +1860,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; } @@ -2317,7 +2384,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 +2648,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,