issue92, fill alt-attribute with filename
[phpfspot.git] / phpfspot.class.php
index edf3965d6706cfef5929b0a39a4d65144854835d..b9ed198e1574e3845204ce2f500af00d720b9d1b 100644 (file)
@@ -165,10 +165,10 @@ class PHPFSPOT {
                   $_SESSION['start_action'] = 'showp';
                }
                if(isset($_GET['from_date']) && $this->isValidDate($_GET['from_date'])) {
-                  $_SESSION['from_date'] = strtotime($_GET['from_date']);
+                  $_SESSION['from_date'] = strtotime($_GET['from_date'] ." 00:00:00");
                }
                if(isset($_GET['to_date']) && $this->isValidDate($_GET['to_date'])) {
-                  $_SESSION['to_date'] = strtotime($_GET['to_date']);
+                  $_SESSION['to_date'] = strtotime($_GET['to_date'] ." 23:59:59");
                }
                break;
             case 'export':
@@ -472,30 +472,29 @@ class PHPFSPOT {
 
       $this->tmpl->assign('extern_link', $extern_link);
 
-      if(file_exists($thumb_path)) {
+      if(!file_exists($thumb_path)) {
+         $this->_error("Can't open file ". $thumb_path ."\n");
+         return;
+      }
 
-         $info = getimagesize($thumb_path);
+      $info = getimagesize($thumb_path);
 
-         $this->tmpl->assign('description', $details['description']);
-         $this->tmpl->assign('image_name', $this->parse_uri($details['uri'], 'filename'));
+      $this->tmpl->assign('description', $details['description']);
+      $this->tmpl->assign('image_name', $this->parse_uri($details['uri'], 'filename'));
 
-         $this->tmpl->assign('width', $info[0]);
-         $this->tmpl->assign('height', $info[1]);
-         $this->tmpl->assign('ExifMadeOn', $meta_date);
-         $this->tmpl->assign('ExifMadeWith', $meta_make);
-         $this->tmpl->assign('ExifOrigResolution', $meta_res);
-         $this->tmpl->assign('ExifFileSize', $meta_size);
-    
-         $this->tmpl->assign('image_url', 'phpfspot_img.php?idx='. $photo ."&width=". $this->cfg->photo_width);
-         $this->tmpl->assign('image_url_full', 'phpfspot_img.php?idx='. $photo);
+      $this->tmpl->assign('width', $info[0]);
+      $this->tmpl->assign('height', $info[1]);
+      $this->tmpl->assign('ExifMadeOn', $meta_date);
+      $this->tmpl->assign('ExifMadeWith', $meta_make);
+      $this->tmpl->assign('ExifOrigResolution', $meta_res);
+      $this->tmpl->assign('ExifFileSize', $meta_size);
+      $this->tmpl->assign('image_url', 'phpfspot_img.php?idx='. $photo ."&width=". $this->cfg->photo_width);
+      $this->tmpl->assign('image_url_full', 'phpfspot_img.php?idx='. $photo);
+      $this->tmpl->assign('image_filename', $this->parse_uri($details['uri'], 'filename'));
 
-         $this->tmpl->assign('tags', $this->get_photo_tags($photo));
-         $this->tmpl->assign('current', $current);
-      }
-      else {
-         $this->_error("Can't open file ". $thumb_path ."\n");
-         return;
-      }
+      $this->tmpl->assign('tags', $this->get_photo_tags($photo));
+      $this->tmpl->assign('current', $current);
 
       if($previous_img) {
          $this->tmpl->assign('previous_url', "javascript:showImage(". $previous_img .");");
@@ -866,13 +865,14 @@ class PHPFSPOT {
 
       /* return all available photos */
       $query_str = "
-         SELECT DISTINCT photo_id
-            FROM photo_tags pt
-         INNER JOIN photos p
+         SELECT p.id
+         FROM photos p
+         LEFT JOIN photo_tags pt
             ON p.id=pt.photo_id
-         INNER JOIN tags t
+         LEFT JOIN tags t
             ON pt.tag_id=t.id
       ";
+
       if(isset($additional_where_cond)) 
          $query_str.= "WHERE ". $additional_where_cond ." ";
 
@@ -885,7 +885,7 @@ class PHPFSPOT {
 
       $result = $this->db->db_query($query_str);
       while($row = $this->db->db_fetch_object($result)) {
-         array_push($matched_photos, $row['photo_id']);
+         array_push($matched_photos, $row['id']);
       }
       return $matched_photos;
 
@@ -1094,6 +1094,8 @@ class PHPFSPOT {
       $this->tmpl->assign('rss_link', $rss_link);
       $this->tmpl->assign('count', $count);
       $this->tmpl->assign('width', $this->cfg->thumb_width);
+      $this->tmpl->assign('thumb_container_width', $this->cfg->thumb_width+20);
+      $this->tmpl->assign('thumb_container_height', $this->cfg->thumb_height);
       $this->tmpl->assign('images', $images);
       $this->tmpl->assign('img_width', $img_width);
       $this->tmpl->assign('img_height', $img_height);
@@ -1180,9 +1182,9 @@ class PHPFSPOT {
 
       // If requested width is more then the actual image width,
       // do not generate a thumbnail, instead safe the original
-      // as thumbnail but with lower quality
-
-      if($width >= $cur_width) {
+      // as thumbnail but with lower quality. But if the image
+      // is to heigh too, then we still have to resize it.
+      if($width >= $cur_width && $cur_height < $this->cfg->thumb_height) {
          $result = imagejpeg($src_img, $thumb_image, 75);
          imagedestroy($src_img);
          return true;
@@ -1306,7 +1308,7 @@ class PHPFSPOT {
     * 2. Check if the md5sum of the original file has changed
     * 3. Generate the thumbnails if needed
     */
-   public function gen_thumb($idx = 0, $force = 0)
+   public function gen_thumb($idx = 0, $force = 0, $overwrite = false)
    {
       $error = 0;
 
@@ -1339,6 +1341,8 @@ class PHPFSPOT {
       $changes = false;
 
       foreach($resolutions as $resolution) {
+   
+         $generate_it = false;
 
          $thumb_sub_path = substr($file_md5, 0, 2);
          $thumb_path = $this->cfg->thumb_path ."/". $thumb_sub_path ."/". $resolution ."_". $file_md5;
@@ -1349,15 +1353,14 @@ class PHPFSPOT {
 
          /* if the thumbnail file doesn't exist, create it */
          if(!file_exists($thumb_path)) {
-
-            $this->_debug(" ". $resolution ."px");
-            if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
-               $error = 1;
-
-            $changes = true;
+            $generate_it = true;
          }
          /* if the file hasn't changed there is no need to regen the thumb */
          elseif($file_md5 != $this->getMD5($idx) || $force) {
+            $generate_it = true;
+         }
+
+         if($generate_it || $overwrite) {
 
             $this->_debug(" ". $resolution ."px");
             if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
@@ -1440,12 +1443,14 @@ class PHPFSPOT {
       $this->get_tags();
 
       $_SESSION['searchfor'] = $searchfor;
+
       if($from != 0)
-         $_SESSION['from_date'] = strtotime($from);
+         $_SESSION['from_date'] = strtotime($from ." 00:00:00");
       else
          unset($_SESSION['from_date']);
+
       if($to != 0)
-         $_SESSION['to_date'] = strtotime($to);
+         $_SESSION['to_date'] = strtotime($to ." 23:59:59");
       else
          unset($_SESSION['to_date']);
 
@@ -1632,6 +1637,11 @@ class PHPFSPOT {
          print "PEAR Calendar package is missing<br />\n";
          $missing = true;
       }
+      @include_once 'Console/Getopt.php';
+      if(isset($php_errormsg) && preg_match('/Failed opening.*for inclusion/i', $php_errormsg)) {
+         print "PEAR Console_Getopt package is missing<br />\n";
+         $missing = true;
+      }
       ini_restore('track_errors');
 
       if(isset($missing))