Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Yet even more additions and corrections.
[kiriwrite/.git] / cgi-files / Modules / Database / SQLite.pm
index 270f8fa..77366c4 100644 (file)
@@ -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;
@@ -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;
@@ -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,
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