issue92, fill alt-attribute with filename
[phpfspot.git] / phpfspot.class.php
index cf0fa25686073478295144508e1b2e9eb5ac2718..b9ed198e1574e3845204ce2f500af00d720b9d1b 100644 (file)
@@ -1,8 +1,28 @@
 <?php
 
+/***************************************************************************
+ *
+ * Copyright (c) by Andreas Unterkircher, unki@netshadow.at
+ * All rights reserved
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ ***************************************************************************/
+
 require_once "phpfspot_cfg.php";
 require_once "phpfspot_db.php";
-require_once "phpfspot_tmpl.php";
 
 class PHPFSPOT {
 
@@ -12,29 +32,90 @@ class PHPFSPOT {
    var $tmpl;
    var $tags;
    var $avail_tags;
-   var $current_tags;
-
+   private $dbver;
+
+   /**
+    * class constructor
+    *
+    * this function will be called on class construct
+    * and will check requirements, loads configuration,
+    * open databases and start the user session
+    */
    public function __construct()
    {
       $this->cfg = new PHPFSPOT_CFG;
 
-      $this->db = new PHPFSPOT_DB(&$this, $this->cfg->fspot_db);
+      /* set application name and version information */
+      $this->cfg->product = "phpfspot";
+      $this->cfg->version = "1.2";
+
+      $this->sort_orders= array(
+         'date_asc' => 'Date &uarr;',
+         'date_desc' => 'Date &darr;',
+         'name_asc' => 'Name &uarr;',
+         'name_desc' => 'Name &darr;'
+      );
+
+      /* Check necessary requirements */
+      if(!$this->checkRequirements()) {
+         exit(1);
+      }
+
+      $this->db  = new PHPFSPOT_DB($this, $this->cfg->fspot_db);
+      if(!is_writeable($this->cfg->fspot_db)) {
+         print $this->cfg->fspot_db ." is not writeable for user ". $this->getuid() ."\n";
+         exit(1);
+      }
+
+      $this->dbver = $this->getFspotDBVersion();
+
+      if(!is_writeable(dirname($this->cfg->phpfspot_db))) {
+         print dirname($this->cfg->phpfspot_db) .": directory is not writeable for user ". $this->getuid() ."\n";
+         exit(1);
+      }
+
+      if(!is_writeable($this->cfg->base_path ."/templates_c")) {
+         print $this->cfg->base_path ."/templates_c: directory is not writeable for user ". $this->getuid() ."\n";
+         exit(1);
+      }
+
+      $this->cfg_db = new PHPFSPOT_DB($this, $this->cfg->phpfspot_db);
+      if(!is_writeable($this->cfg->phpfspot_db)) {
+         print $this->cfg->phpfspot_db ." is not writeable for user ". $this->getuid() ."\n";
+         exit(1);
+      }
 
-      $this->cfg_db = new PHPFSPOT_DB(&$this, $this->cfg->phpfspot_db);
       $this->check_config_table();
 
+      /* include Smarty template engine */
+      if(!$this->check_readable($this->cfg->smarty_path .'/libs/Smarty.class.php')) {
+         exit(1);
+      }
+      require $this->cfg->smarty_path .'/libs/Smarty.class.php';
+      /* overload Smarty class if our own template handler */
+      require_once "phpfspot_tmpl.php";
       $this->tmpl = new PHPFSPOT_TMPL($this);
 
-      $this->get_tags();
+      /* check if all necessary indices exist */
+      $this->checkDbIndices();
 
-      session_start();
+      /* if session is not yet started, do it now */
+      if(session_id() == "")
+         session_start();
 
       if(!isset($_SESSION['tag_condition']))
          $_SESSION['tag_condition'] = 'or';
 
+      if(!isset($_SESSION['sort_order']))
+         $_SESSION['sort_order'] = 'date_asc';
+
       if(!isset($_SESSION['searchfor']))
          $_SESSION['searchfor'] = '';
 
+      // if begin_with is still set but rows_per_page is now 0, unset it
+      if(isset($_SESSION['begin_with']) && $this->cfg->rows_per_page == 0)
+         unset($_SESSION['begin_with']);
+
    } // __construct()
 
    public function __destruct()