diff options
author | Andreas Unterkircher <unki@netshadow.at> | 2007-12-30 12:19:22 +0100 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2007-12-30 12:19:22 +0100 |
commit | 42421caef780487aeaa633f62ae08ec397865b68 (patch) | |
tree | 339f45ce1603219727c36872354bec941e28048a /phpfspot.class.php | |
parent | 8de7a22ceac0fab9eb984854758608d7aeb079d3 (diff) | |
parent | 18ff7e0419aebe37fcebdbfb180550acb118c0cb (diff) |
Merge branch 'master' of /var/cache/git/phpfspot
Diffstat (limited to 'phpfspot.class.php')
-rw-r--r-- | phpfspot.class.php | 94 |
1 files changed, 80 insertions, 14 deletions
diff --git a/phpfspot.class.php b/phpfspot.class.php index 841da50..5e64117 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -32,6 +32,7 @@ class PHPFSPOT { var $tmpl; var $tags; var $avail_tags; + private $dbver; /** * class constructor @@ -58,7 +59,9 @@ class PHPFSPOT { 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!"; exit(1); @@ -266,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 @@ -290,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 @@ -304,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() /** @@ -383,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)) { @@ -431,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]); @@ -1051,6 +1071,7 @@ class PHPFSPOT { { $this->tmpl->assign('version', $this->cfg->version); $this->tmpl->assign('product', $this->cfg->product); + $this->tmpl->assign('db_version', $this->dbver); $this->tmpl->show("credits.tpl"); } // showCredits() @@ -1253,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"); @@ -1267,7 +1288,7 @@ 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; @@ -1778,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> @@ -2111,6 +2132,51 @@ class PHPFSPOT { } // checkDbIndices() -} + /** + * retrive F-Spot database version + * + * this function will return the F-Spot database version number + * It is stored within the sqlite3 database in the table meta + */ + public function getFspotDBVersion() + { + if($result = $this->db->db_fetchSingleRow(" + SELECT data as version + FROM meta + WHERE + name LIKE 'F-Spot Database Version' + ")) + return $result['version']; + + return null; + + } // 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 ?> |