issue85, fix SQL error when trying to sort photos by name on newer F-Spot database...
[phpfspot.git] / phpfspot.class.php
index ba3668759757b1bbf2c86be97c34e2b8e0abe984..b3ad278458a350089ae2ea5ac6e09107e1d9be0b 100644 (file)
@@ -92,7 +92,9 @@ class PHPFSPOT {
       /* 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';
@@ -423,10 +425,12 @@ class PHPFSPOT {
 
       if(!file_exists($orig_path)) {
          $this->_error("Photo ". $orig_path ." does not exist!<br />\n");
+         return;
       }
 
       if(!is_readable($orig_path)) {
          $this->_error("Photo ". $orig_path ." is not readable for user ". $this->getuid() ."<br />\n");
+         return;
       }
 
       /* If the thumbnail doesn't exist yet, try to create it */
@@ -889,8 +893,9 @@ class PHPFSPOT {
       }
       elseif($this->cfg->rows_per_page > 0) {
 
-         if(!$_SESSION['begin_with'] || $_SESSION['begin_with'] == 0)
+         if(!isset($_SESSION['begin_with']) || $_SESSION['begin_with'] == 0) {
             $begin_with = 0;
+         }
          else {
 
             $begin_with = $_SESSION['begin_with'];
@@ -923,30 +928,33 @@ class PHPFSPOT {
 
       for($i = $begin_with; $i < $end_with; $i++) {
 
-         $images[$rows][$cols] = $photos[$i];
-         $img_id[$rows][$cols] = $i;
-         $img_name[$rows][$cols] = htmlspecialchars($this->getPhotoName($photos[$i], 15));
-         $img_title[$rows][$cols] = "Click to view photo ". htmlspecialchars($this->getPhotoName($photos[$i], 0));
+         if(isset($photos[$i])) {
 
-         $thumb_path = $this->get_thumb_path($this->cfg->thumb_width, $photos[$i]);
+            $images[$rows][$cols] = $photos[$i];
+            $img_id[$rows][$cols] = $i;
+            $img_name[$rows][$cols] = htmlspecialchars($this->getPhotoName($photos[$i], 15));
+            $img_title[$rows][$cols] = "Click to view photo ". htmlspecialchars($this->getPhotoName($photos[$i], 0));
 
-         if(file_exists($thumb_path)) {
-            $info = getimagesize($thumb_path); 
-            $img_width[$rows][$cols] = $info[0];
-            $img_height[$rows][$cols] = $info[1];
-         }
+            $thumb_path = $this->get_thumb_path($this->cfg->thumb_width, $photos[$i]);
 
-         if($cols == $this->cfg->thumbs_per_row-1) {
-            $cols = 0;
-            $rows++;
-            $images[$rows] = Array();
-            $img_width[$rows] = Array();
-            $img_height[$rows] = Array();
-         }
-         else {
-            $cols++;
-         }
-      } 
+            if(file_exists($thumb_path)) {
+               $info = getimagesize($thumb_path); 
+               $img_width[$rows][$cols] = $info[0];
+               $img_height[$rows][$cols] = $info[1];
+            }
+
+            if($cols == $this->cfg->thumbs_per_row-1) {
+               $cols = 0;
+               $rows++;
+               $images[$rows] = Array();
+               $img_width[$rows] = Array();
+               $img_height[$rows] = Array();
+            }
+            else {
+               $cols++;
+            }
+         } 
+      }
 
       // +1 for for smarty's selection iteration
       $rows++;
@@ -965,6 +973,8 @@ class PHPFSPOT {
 
       /* do we have to display the page selector ? */
       if($this->cfg->rows_per_page != 0) {
+
+         $page_select = "";
       
          /* calculate the page switchers */
          $previous_start = $begin_with - ($this->cfg->rows_per_page * $this->cfg->thumbs_per_row);
@@ -1851,7 +1861,7 @@ class PHPFSPOT {
    private function getCurrentTags()
    {
       $current_tags = "";
-      if($_SESSION['selected_tags'] != "") {
+      if(isset($_SESSION['selected_tags']) && $_SESSION['selected_tags'] != "") {
          foreach($_SESSION['selected_tags'] as $tag)
             $current_tags.= $tag .",";
          $current_tags = substr($current_tags, 0, strlen($current_tags)-1);
@@ -1941,10 +1951,20 @@ class PHPFSPOT {
             return " ORDER BY p.time DESC";
             break;
          case 'name_asc':
-            return " ORDER BY p.name ASC";
+            if($this->dbver < 9) {
+               return " ORDER BY p.name ASC";
+            }
+            else {
+               return " ORDER BY p.uri ASC";
+            }
             break;
          case 'name_desc':
-            return " ORDER BY p.name DESC";
+            if($this->dbver < 9) {
+               return " ORDER BY p.name DESC";
+            }
+            else {
+               return " ORDER BY p.uri DESC";
+            }
             break;
       }