Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Commit of recent work in preperation for Kiriwrite 0.5.0
[kiriwrite/.git] / cgi-files / Modules / Database / SQLite.pm
index f4a9d1b..6fc34b4 100644 (file)
 
 # Define the package (perl module) name.
 
-package Kiriwrite::Database::SQLite;
+package Modules::Database::SQLite;
 
 # Enable strict and use warnings.
 
+use Modules::System::Common;
 use strict;
 use warnings;
 
@@ -34,7 +35,7 @@ use DBI qw(:sql_types);
 
 # Set the following values.
 
-our $VERSION   = "0.1.0";
+our $VERSION   = "0.5.0";
 my ($options, %options);
 my $database_handle;
 my $statement_handle;
@@ -1144,16 +1145,40 @@ sub getpagelist{
 #                                                                              #
 # Usage:                                                                       #
 #                                                                              #
-# $dbmodule->getpagelist();                                                    #
+# $dbmodule->getpagelist(options);                                             #
+#                                                                              #
+# options      Specifies the following options in any order.                   #
+#                                                                              #
+# StartFrom    Start from the specified page in the database.                  #
+# Limit                Get the amount of pages given.                                  #
 #################################################################################
 
        $error = "";
        $errorext = "";
 
-       my $class       = shift;
-       
-       $statement_handle       = $database_handle->prepare('SELECT filename FROM kiriwrite_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return );
-       $statement_handle->execute();
+       my $class               = shift;
+       my ($passedoptions)     = shift;
+
+       my $start_from  = $passedoptions->{"StartFrom"};
+       my $limit       = $passedoptions->{"Limit"};
+
+       if (defined($start_from)){
+
+               if (!$limit){
+                       
+                       $limit = 0;
+
+               }
+
+               $statement_handle       = $database_handle->prepare('SELECT filename FROM kiriwrite_database_pages LIMIT ' . $start_from . ',' . $limit) or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return );
+               $statement_handle->execute();
+
+       } else {
+
+               $statement_handle       = $database_handle->prepare('SELECT filename FROM kiriwrite_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return );
+               $statement_handle->execute();
+
+       }
 
        my @database_pagefilenames;
        my @database_pagefilenames_final;
@@ -1173,6 +1198,29 @@ sub getpagelist{
 
 }
 
+sub getpagecount{
+#################################################################################
+# getpagecount: Get the count of pages that are in the database.               #
+#                                                                              #
+# Usage:                                                                       #
+#                                                                              #
+# $dbmodule->getpagecount();                                                   #
+#################################################################################
+
+       $error = "";
+       $errorext = "";
+
+       my $class       = shift;
+
+       $statement_handle       = $database_handle->prepare('SELECT COUNT(*) FROM kiriwrite_database_pages') or ( $error = "DatabaseError", $errorext = $database_handle->errstr, return);
+       $statement_handle->execute();
+
+       my $count = $statement_handle->fetchrow_array();
+
+       return $count;
+
+}
+
 sub getpageinfo{
 #################################################################################
 # getpageinfo: Gets the page information from the filename passed.             #
@@ -1265,14 +1313,14 @@ sub getpageinfo{
                        # 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),
+                               "PageFilename"                  => $pagefilename,
+                               "PageName"                      => $pagename,
+                               "PageDescription"               => $pagedescription,
+                               "PageSection"                   => $pagesection,
+                               "PageTemplate"                  => $pagetemplate,
+                               "PageContent"                   => $pagedata,
+                               "PageSettings"                  => $pagesettings,
+                               "PageLastModified"              => $class->dateconvert($pagelastmodified)
                        );
        
                        $page_found = 1;
@@ -1832,7 +1880,7 @@ sub connectfilter{
 
        # Check if the template database exists.
 
-       my $filterdatabase_exists = main::kiriwrite_fileexists("filters.db.sqlite");
+       my $filterdatabase_exists = kiriwrite_fileexists("filters.db.sqlite");
        
        if ($filterdatabase_exists eq 1){
 
@@ -1849,7 +1897,7 @@ sub connectfilter{
 
        # Check if the permission settings for the template database are valid.
 
-       my $filterdb_permissions = main::kiriwrite_filepermissions("filters.db.sqlite", 1, 0);
+       my $filterdb_permissions = kiriwrite_filepermissions("filters.db.sqlite", 1, 0);
 
        if ($filterdb_permissions eq 1){
 
@@ -1893,25 +1941,72 @@ sub disconnectfilter{
 
 }
 
+sub getfiltercount{
+#################################################################################
+# getfiltercount: Gets the count of filters in the filters database.           #
+#                                                                              #
+# Usage:                                                                       #
+#                                                                              #
+# $dbmodule->getfiltercount();                                                 #
+#################################################################################
+
+       $error = "";
+       $errorext = "";
+
+       my $class       = shift;
+
+       $filterdb_statement_handle      = $filterdb_database_handle->prepare('SELECT COUNT(*) FROM kiriwrite_filters') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return);
+       $filterdb_statement_handle->execute();
+
+       my $count = $filterdb_statement_handle->fetchrow_array();
+
+       return $count;  
+
+}
+
 sub getfilterlist{
 #################################################################################
 # getfilterlist: Gets the list of filters in the filter database.              #
 #                                                                              #
 # Usage:                                                                       #
 #                                                                              #
-# $dbmodule->getfilterlist();                                                  #
+# $dbmodule->getfilterlist(options);                                           #
+#                                                                              #
+# StartFrom    Specifies where the list of filters should start from.          #
+# Limit                Specifies the amount of the filters to get.                     #
 #################################################################################
 
        $error = "";
        $errorext = "";
 
+       my $class               = shift;
+       my ($passedoptions)     = shift;
+       
        my @filter_list;
        my @filter_data;
 
-       # Get the list of filters available.
+       my $start_from  = $passedoptions->{"StartFrom"};
+       my $limit       = $passedoptions->{"Limit"};
 
-       $filterdb_statement_handle      = $filterdb_database_handle->prepare('SELECT id FROM kiriwrite_filters ORDER BY priority ASC') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
-       $filterdb_statement_handle->execute();
+       if (defined($start_from)){
+
+               if (!$limit){
+                       
+                       $limit = 0;
+
+               }
+
+               $filterdb_statement_handle      = $filterdb_database_handle->prepare('SELECT id FROM kiriwrite_filters ORDER BY priority ASC LIMIT ' . $start_from . ',' . $limit) or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
+               $filterdb_statement_handle->execute();
+
+       } else {
+
+               $filterdb_statement_handle      = $filterdb_database_handle->prepare('SELECT id FROM kiriwrite_filters ORDER BY priority ASC') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
+               $filterdb_statement_handle->execute();
+
+       }
+
+       # Get the list of filters available.
 
        while (@filter_data = $filterdb_statement_handle->fetchrow_array()){
 
@@ -1937,6 +2032,8 @@ sub getfilterinfo{
 # options      Specifies the following options in any order.                   #
 #                                                                              #
 # FilterID     Specifies the filter ID number to get information from.         #
+# Reduced      Specifies if the reduced version of the filter information      #
+#              should be retrieved.                                            #
 #################################################################################
 
        $error = "";
@@ -1954,9 +2051,19 @@ sub getfilterinfo{
        # Get the values that are in the hash.
 
        my $filter_id           = $passedoptions->{"FilterID"};
+       my $reduced             = $passedoptions->{"Reduced"};
+       
+       if ($reduced && $reduced eq 1){
 
-       $filterdb_statement_handle = $filterdb_database_handle->prepare('SELECT id, priority, findsetting, replacesetting, notes FROM kiriwrite_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
-       $filterdb_statement_handle->execute();
+               $filterdb_statement_handle = $filterdb_database_handle->prepare('SELECT id, priority, findsetting, replacesetting, enabled FROM kiriwrite_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
+               $filterdb_statement_handle->execute();
+
+       } else {
+
+               $filterdb_statement_handle = $filterdb_database_handle->prepare('SELECT id, priority, findsetting, replacesetting, enabled, notes FROM kiriwrite_filters where id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
+               $filterdb_statement_handle->execute();
+
+       }
 
        # Get the filter information.
 
@@ -1966,7 +2073,8 @@ sub getfilterinfo{
                $filter_info{"FilterPriority"}  = $filter_data[1];
                $filter_info{"FilterFind"}      = $filter_data[2];
                $filter_info{"FilterReplace"}   = $filter_data[3];
-               $filter_info{"FilterNotes"}     = $filter_data[4];
+               $filter_info{"FilterEnabled"}   = $filter_data[4];
+               $filter_info{"FilterNotes"}     = $filter_data[5];
 
                $filter_exists = 1;
 
@@ -2031,12 +2139,13 @@ sub addfilter{
        my $filter_find         = $passedoptions->{"FindFilter"};
        my $filter_replace      = $passedoptions->{"ReplaceFilter"};
        my $filter_priority     = $passedoptions->{"Priority"};
+       my $filter_enabled      = $passedoptions->{"Enabled"};
        my $filter_notes        = $passedoptions->{"Notes"};
 
        # Check if the filter database permissions are valid.
 
-       my $filterdb_exists = main::kiriwrite_fileexists("filters.db.sqlite", 1, 1);
-       my $filterdb_permissions = main::kiriwrite_filepermissions("filters.db.sqlite", 1, 1);
+       my $filterdb_exists = kiriwrite_fileexists("filters.db.sqlite", 1, 1);
+       my $filterdb_permissions = kiriwrite_filepermissions("filters.db.sqlite", 1, 1);
 
        if ($filterdb_permissions eq 1){
 
@@ -2074,7 +2183,13 @@ sub addfilter{
 
        }
 
-       my $directory_permissions = main::kiriwrite_filepermissions(".", 1, 1, 0);
+       if (!$filter_enabled){
+
+               $filter_enabled = "";
+
+       }
+
+       my $directory_permissions = kiriwrite_filepermissions(".", 1, 1, 0);
 
        if ($directory_permissions eq 1 && $filterdb_exists){
 
@@ -2101,6 +2216,7 @@ sub addfilter{
                        priority int(5),
                        findsetting varchar(1024),
                        replacesetting varchar(1024),
+                       enabled boolean,
                        notes text
                )') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
                $filterdb_statement_handle->execute();
@@ -2174,11 +2290,12 @@ sub addfilter{
 
        # Add the filter to the filter database.
 
-       $filterdb_statement_handle = $filterdb_database_handle->prepare('INSERT INTO kiriwrite_filters (id, priority, findsetting, replacesetting, notes) VALUES (
+       $filterdb_statement_handle = $filterdb_database_handle->prepare('INSERT INTO kiriwrite_filters (id, priority, findsetting, replacesetting, enabled, notes) VALUES (
                \'' . $class->convert($new_id) . '\',
                \'' . $class->convert($filter_priority) . '\',
                \'' . $class->convert($filter_find) . '\',
                \'' . $class->convert($filter_replace) .'\',
+               \'' . $class->convert($filter_enabled) . '\',
                \'' . $class->convert($filter_notes) . '\'
        )') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );
        $filterdb_statement_handle->execute();
@@ -2199,6 +2316,7 @@ sub editfilter{
 # NewFindFilter                Specifies the new find filter setting.                  #
 # NewReplaceFilter     Specifies the new replace filter setting.               #
 # NewFilterPriority    Specifies the new filter priority setting.              #
+# NewEnabled           Specifies if the filter should be enabled.              #
 # NewFilterNotes       Specifies the new notes for the filter.                 #
 #################################################################################
 
@@ -2220,12 +2338,13 @@ sub editfilter{
        my $filter_newfind      = $passedoptions->{"NewFindFilter"};
        my $filter_newreplace   = $passedoptions->{"NewReplaceFilter"};
        my $filter_newpriority  = $passedoptions->{"NewFilterPriority"};
+       my $filter_enabled      = $passedoptions->{"NewEnabled"};
        my $filter_newnotes     = $passedoptions->{"NewFilterNotes"};
 
        # Check if the filter database permissions are valid.
 
-       my $filterdb_exists = main::kiriwrite_fileexists("filters.db.sqlite", 1, 1);
-       my $filterdb_permissions = main::kiriwrite_filepermissions("filters.db.sqlite", 1, 1);
+       my $filterdb_exists = kiriwrite_fileexists("filters.db.sqlite", 1, 1);
+       my $filterdb_permissions = kiriwrite_filepermissions("filters.db.sqlite", 1, 1);
 
        if ($filterdb_permissions eq 1){
 
@@ -2267,6 +2386,7 @@ sub editfilter{
                findsetting = \'' . $class->convert($filter_newfind) . '\',
                replacesetting = \'' . $class->convert($filter_newreplace) . '\',
                priority = \'' . $class->convert($filter_newpriority) . '\',
+               enabled = \'' . $class->convert($filter_enabled) . '\',
                notes = \'' . $class->convert($filter_newnotes) . '\'
        WHERE id = \'' . $class->convert($filter_id) . '\'') or ( $error = "FilterDatabaseError", $errorext = $filterdb_database_handle->errstr, return );      
        $filterdb_statement_handle->execute();
@@ -2356,7 +2476,7 @@ sub connecttemplate{
 
        # Check if the template database exists.
 
-       my $templatedatabase_exists = main::kiriwrite_fileexists("templates.db.sqlite");
+       my $templatedatabase_exists = kiriwrite_fileexists("templates.db.sqlite");
        
        if ($templatedatabase_exists eq 1){
 
@@ -2373,7 +2493,7 @@ sub connecttemplate{
 
        # Check if the permission settings for the template database are valid.
 
-       my $templatedb_permissions = main::kiriwrite_filepermissions("templates.db.sqlite", 1, 0);
+       my $templatedb_permissions = kiriwrite_filepermissions("templates.db.sqlite", 1, 0);
 
        if ($templatedb_permissions eq 1){
 
@@ -2417,20 +2537,69 @@ sub disconnecttemplate{
 
 }
 
+sub gettemplatecount{
+#################################################################################
+# gettemplatecount: Gets the count of templates in the template database.      #
+#                                                                              #
+# Usage:                                                                       #
+#                                                                              #
+# $dbmodule->gettemplatecount();                                               #
+#################################################################################
+
+       $error = "";
+       $errorext = "";
+       my $class       = shift;
+       $template_statement_handle      = $template_database_handle->prepare('SELECT COUNT(*) FROM kiriwrite_templates') or ( $error = "FilterDatabaseError", $errorext = $template_database_handle->errstr, return);
+       $template_statement_handle->execute();
+       my $count = $template_statement_handle->fetchrow_array();
+       return $count;
+
+}
+
 sub gettemplatelist{
 #################################################################################
 # gettemplatelist: Gets the list of templates.                                 #
 #                                                                              #
 # Usage:                                                                       #
 #                                                                              #
-# $dbmodule->gettemplatelist();                                                        #
+# $dbmodule->gettemplatelist(options);                                         #
+#                                                                              #
+# options      Specifies the following options as a hash (in any order).       #
+#                                                                              #
+# StartFrom    Specifies where the list of templates will start from.          #
+# Limit                Specifies how many templates should be retrieved.               #
 #################################################################################
 
        $error = "";
        $errorext = "";
 
-       $template_statement_handle = $template_database_handle->prepare('SELECT filename FROM kiriwrite_templates ORDER BY filename ASC') or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
-       $template_statement_handle->execute();
+       my $class               = shift;
+       my ($passedoptions)     = @_;
+
+       my $start_from          = $passedoptions->{"StartFrom"};
+       my $limit               = $passedoptions->{"Limit"};
+
+       if (defined($start_from)){
+
+               if (!$limit){
+                       
+                       $limit = 0;
+
+               }
+
+               $template_statement_handle = $template_database_handle->prepare('SELECT filename FROM kiriwrite_templates ORDER BY filename ASC LIMIT ' . $start_from . ',' .  $limit ) or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
+               $template_statement_handle->execute();          
+
+       } else {
+
+               $template_statement_handle = $template_database_handle->prepare('SELECT filename FROM kiriwrite_templates ORDER BY filename ASC') or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
+               $template_statement_handle->execute();
+
+       }
 
        my @database_template;
        my @templates_list;
@@ -2463,6 +2632,8 @@ sub gettemplateinfo{
 # options      Specifies the following options in any order.                   #
 #                                                                              #
 # TemplateFilename     Specifies the template filename to use.                 #
+# Reduced              Specifies a reduced version of template information to  #
+#                      get.                                                    #
 #################################################################################
 
        $error = "";
@@ -2485,9 +2656,19 @@ sub gettemplateinfo{
        my $template_found = 0;
 
        my $filename    = $passedoptions->{"TemplateFilename"};
+       my $reduced     = $passedoptions->{"Reduced"};
 
-       $template_statement_handle = $template_database_handle->prepare('SELECT filename, templatename, templatedescription, templatelayout, datemodified FROM kiriwrite_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
-       $template_statement_handle->execute();
+       if ($reduced && $reduced eq 1){
+
+               $template_statement_handle = $template_database_handle->prepare('SELECT filename, templatename, templatedescription, datemodified FROM kiriwrite_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
+               $template_statement_handle->execute();
+
+       } else {
+
+               $template_statement_handle = $template_database_handle->prepare('SELECT filename, templatename, templatedescription, templatelayout, datemodified FROM kiriwrite_templates WHERE filename = \'' . $class->convert($filename) . '\'') or ( $error = "TemplateDatabaseError", $errorext = $template_database_handle->errstr, return );
+               $template_statement_handle->execute();
+
+       }
 
        while (@template_data = $template_statement_handle->fetchrow_array()){
 
@@ -2562,8 +2743,8 @@ sub addtemplate{
 
        # Check if the template database permissions are valid.
 
-       my $templatedb_exists = main::kiriwrite_fileexists("templates.db.sqlite", 1, 1);
-       my $templatedb_permissions = main::kiriwrite_filepermissions("templates.db.sqlite", 1, 1);
+       my $templatedb_exists = kiriwrite_fileexists("templates.db.sqlite", 1, 1);
+       my $templatedb_permissions = kiriwrite_filepermissions("templates.db.sqlite", 1, 1);
 
        if ($templatedb_permissions eq 1){
 
@@ -2622,7 +2803,7 @@ sub addtemplate{
 
        }
 
-       my $directory_permissions = main::kiriwrite_filepermissions(".", 1, 1, 0);
+       my $directory_permissions = kiriwrite_filepermissions(".", 1, 1, 0);
 
        if ($directory_permissions eq 1 && $templatedb_exists){
 
@@ -2656,7 +2837,7 @@ sub addtemplate{
 
                # Create a template table.
 
-               my $directory_permissions = main::kiriwrite_filepermissions(".", 1, 1, 0);
+               my $directory_permissions = kiriwrite_filepermissions(".", 1, 1, 0);
 
                if ($directory_permissions eq 1){
 
@@ -2776,8 +2957,8 @@ sub edittemplate{
 
        # Check if the template database permissions are valid.
 
-       my $templatedb_exists = main::kiriwrite_fileexists("templates.db.sqlite", 1, 1);
-       my $templatedb_permissions = main::kiriwrite_filepermissions("templates.db.sqlite", 1, 1);
+       my $templatedb_exists = kiriwrite_fileexists("templates.db.sqlite", 1, 1);
+       my $templatedb_permissions = kiriwrite_filepermissions("templates.db.sqlite", 1, 1);
 
        if ($templatedb_permissions eq 1){
 
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