X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.class.php;h=89017e0d4fcb98bce165e2ef9d9c6e3170b998fb;hp=841da503f46454bb9ac38c458172b9c13d123e44;hb=59f8d0b60b40a88d650b7dcf7654a38e81ef2879;hpb=8de7a22ceac0fab9eb984854758608d7aeb079d3 diff --git a/phpfspot.class.php b/phpfspot.class.php index 841da50..89017e0 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 @@ -289,8 +300,19 @@ class PHPFSPOT { "; } - $result = $this->db->db_query($query_str); - return $this->db->db_fetch_object($result); + if($result = $this->db->db_query($query_str)) { + + $row = $this->db->db_fetch_object($result); + + if($this->dbver < 9) { + $row['uri'] = "file://". $row['directory_path'] ."/". $row['name']; + } + + return $row; + + } + + return null; } // get_photo_details @@ -304,10 +326,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 +409,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 +457,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 +1077,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 +1280,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 +1294,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 +1805,13 @@ class PHPFSPOT {
". $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); ?> - <?php print htmlspecialchars($details['name']); ?> + <?php print htmlspecialchars($this->parse_uri($details['uri'], 'filename')); ?> @@ -2111,6 +2138,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 ?>