add a "already exist" when thumbnails are created on the command line. without it...
[phpfspot.git] / phpfspot.class.php
index 6d357e5ad155902320f42b722de050868df2a744..5e641172d6c0157cb0ec1d2a3892cb3961bc5a8a 100644 (file)
@@ -269,10 +269,18 @@ class PHPFSPOT {
     */
    public function get_photo_details($idx)
    {
-      $query_str = "
-         SELECT p.id, p.name, p.time, p.directory_path, p.description
-         FROM photos p
-      ";
+      if($this->dbver < 9) {
+         $query_str = "
+            SELECT p.id, p.name, p.time, p.directory_path, p.description
+            FROM photos p
+         ";
+      }
+      else {
+         $query_str = "
+            SELECT p.id, p.uri, p.time, p.description
+            FROM photos p
+         ";
+      }
 
       /* if show_tags is set, only return details for photos which
          are specified to be shown
@@ -293,6 +301,11 @@ class PHPFSPOT {
       }
 
       $result = $this->db->db_query($query_str);
+
+      if($this->dbver < 9) {
+         $result['uri'] = "file://". $result['directory_path'] ."/". $result['name'];
+      }
+
       return $this->db->db_fetch_object($result);
 
    } // get_photo_details
@@ -307,10 +320,14 @@ class PHPFSPOT {
    public function getPhotoName($idx, $limit = 0)
    {
       if($details = $this->get_photo_details($idx)) {
-         $name = $this->shrink_text($details['name'], $limit);
-         return $name;
+         if($long_name = $this->parse_uri($details['uri'], 'filename')) {
+            $name = $this->shrink_text($long_name, $limit);
+            return $name;
+         }
       }
 
+      return null;
+
    } // getPhotoName()
 
    /**
@@ -386,7 +403,7 @@ class PHPFSPOT {
          return;
       }
 
-      $orig_path = $this->translate_path($details['directory_path']) ."/". $details['name'];
+      $orig_path = $this->translate_path($this->parse_uri($details['uri'], 'fullpath'));
       $thumb_path = $this->get_thumb_path($this->cfg->photo_width, $photo);
 
       if(!file_exists($orig_path)) {
@@ -434,7 +451,7 @@ class PHPFSPOT {
          $info = getimagesize($thumb_path);
 
          $this->tmpl->assign('description', $details['description']);
-         $this->tmpl->assign('image_name', $details['name']);
+         $this->tmpl->assign('image_name', $this->parse_uri($details['uri'], 'filename'));
 
          $this->tmpl->assign('width', $info[0]);
          $this->tmpl->assign('height', $info[1]);
@@ -1257,7 +1274,7 @@ class PHPFSPOT {
       $details = $this->get_photo_details($idx);
 
       /* calculate file MD5 sum */
-      $full_path = $this->translate_path($details['directory_path'])  ."/". $details['name'];
+      $full_path = $this->translate_path($this->parse_uri($details['uri'], 'fullpath'));
 
       if(!file_exists($full_path)) {
          $this->_error("File ". $full_path ." does not exist\n");
@@ -1271,7 +1288,9 @@ class PHPFSPOT {
 
       $file_md5 = md5_file($full_path);
 
-      $this->_debug("Image [". $idx ."] ". $this->shrink_text($details['name'], 20) ." Thumbnails:");
+      $this->_debug("Image [". $idx ."] ". $this->shrink_text($this->parse_uri($details['uri'], 'filename'), 20) ." Thumbnails:");
+
+      $changes = false;
 
       foreach($resolutions as $resolution) {
 
@@ -1288,6 +1307,8 @@ class PHPFSPOT {
             $this->_debug(" ". $resolution ."px");
             if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
                $error = 1;
+
+            $changes = true;
          }
          /* if the file hasn't changed there is no need to regen the thumb */
          elseif($file_md5 != $this->getMD5($idx) || $force) {
@@ -1296,9 +1317,14 @@ class PHPFSPOT {
             if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
                $error = 1;
 
+            $changes = true;
          }
       }
 
+      if(!$changes) {
+         $this->_debug(" already exist");
+      }
+
       /* set the new/changed MD5 sum for the current photo */
       if(!$error) {
          $this->setMD5($idx, $file_md5);
@@ -1773,13 +1799,13 @@ class PHPFSPOT {
 <br>
 ". $details['description']);
 
-         $orig_path = $this->translate_path($details['directory_path']) ."/". $details['name'];
+         $orig_path = $this->translate_path($this->parse_uri($details['uri'], 'fullpath'));
          $meta = $this->get_meta_informations($orig_path);
          $meta_date = isset($meta['FileDateTime']) ? $meta['FileDateTime'] : filemtime($orig_path);
 
 ?>
   <item>
-   <title><?php print htmlspecialchars($details['name']); ?></title>
+   <title><?php print htmlspecialchars($this->parse_uri($details['uri'], 'filename')); ?></title>
    <link><?php print htmlspecialchars($orig_url); ?></link>
    <guid><?php print htmlspecialchars($orig_url); ?></guid>
    <dc:date.Taken><?php print strftime("%Y-%m-%dT%H:%M:%S+00:00", $meta_date); ?></dc:date.Taken>
@@ -2126,6 +2152,31 @@ class PHPFSPOT {
 
    } // getFspotDBVersion()
 
+   /**
+    * parse the provided URI and will returned the
+    * requested chunk
+    */
+   public function parse_uri($uri, $mode)
+   {
+      if(($components = parse_url($uri)) !== false) {
+
+         switch($mode) {
+            case 'filename':
+               return basename($components['path']);
+               break;
+            case 'dirname':
+               return dirname($components['path']);
+               break;
+            case 'fullpath':
+               return $components['path'];
+               break;
+         }
+      }
+
+      return $uri;
+
+   } // parse_uri()
+
 } // class PHPFSPOT
 
 ?>