X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.class.php;h=f611391ae044ed2a234ef942ab622bd009c287b9;hp=a5b4a4da7cfc045c89c87fa354ca689c6e952801;hb=refs%2Fheads%2Fmaster;hpb=1a7ed49f072b8f99b85c48e19ec99e9d0213797e diff --git a/phpfspot.class.php b/phpfspot.class.php index a5b4a4d..f611391 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -505,8 +505,8 @@ class PHPFSPOT { photos p "; } - else { - /* rating value got introduced */ + elseif($this->dbver < 17) { + /* rating value got introduced */ $query_str = " SELECT p.id as id, @@ -518,6 +518,19 @@ class PHPFSPOT { photos p "; } + else { + /* path & filename now splited in base_uri & filename */ + $query_str = " + SELECT + p.id as id, + p.base_uri ||'/'|| p.filename as uri, + p.time as time, + p.description as description, + p.rating as rating + FROM + photos p + "; + } } /* if show_tags is set, only return details of photos which are @@ -538,24 +551,30 @@ class PHPFSPOT { "; } - if($row = $this->db->db_fetchSingleRow($query_str)) { + if(!$row = $this->db->db_fetchSingleRow($query_str)) + return null; - /* before F-Spot db version 9 there was no uri column but - seperated fields for directory_path and name (= filename). - */ - if($this->dbver < 9) { - $row['uri'] = "file://". $row['directory_path'] ."/". $row['name']; - } + /* before F-Spot db version 9 there was no uri column but + seperated fields for directory_path and name (= filename). + */ + if($this->dbver < 9) { + $row['uri'] = "file://". $row['directory_path'] ."/". $row['name']; + } + /* starting with dbversion >= 17 we need to rawurldecode() uri */ + elseif($this->dbver >= 17) { + $row['uri'] = rawurldecode($row['uri']); + } - /* if version-idx has not yet been set, get the latest photo version */ - if(!isset($version_idx) || !$this->is_valid_version($idx, $version_idx)) - $version_idx = $this->get_latest_version($idx); + /* if version-idx has not yet been set, get the latest photo version */ + if(!isset($version_idx) || !$this->is_valid_version($idx, $version_idx)) + $version_idx = $this->get_latest_version($idx); - /* if an alternative version has been requested. But we - support this only for F-Spot database versions from - v9. - */ - if($version_idx > 0 && $this->dbver >= 9) { + /* if an alternative version has been requested. But we + support this only for F-Spot database versions from + v9. + */ + if($version_idx > 0 && $this->dbver >= 9) { + if ($this->dbver < 17) { /* check for alternative versions */ if($version = $this->db->db_fetchSingleRow(" SELECT @@ -571,12 +590,27 @@ class PHPFSPOT { $row['uri'] = $version['uri']; } } + else { + /* path & filename now splited in base_uri & filename */ + if($version = $this->db->db_fetchSingleRow(" + SELECT + version_id, + name, + base_uri || '/'||filename as uri + FROM + photo_versions + WHERE + photo_id LIKE '". $idx ."' + AND + version_id LIKE '". $version_idx ."'")) { - return $row; - + $row['name'] = $version['name']; + $row['uri'] = rawurldecode($version['uri']); + } + } } - return null; + return $row; } // get_photo_details() @@ -1245,7 +1279,7 @@ class PHPFSPOT { ) "; } - else { + if($this->dbver < 17) { $additional_where_cond.= " ( basename(p.uri) LIKE '%". $_SESSION['searchfor_name'] ."%' @@ -1254,6 +1288,15 @@ class PHPFSPOT { ) "; } + else { + $additional_where_cond.= " + ( + p.filename LIKE '%". $_SESSION['searchfor_name'] ."%' + OR + p.description LIKE '%". $_SESSION['searchfor_name'] ."%' + ) + "; + } } /* limit result based on rate-search */ @@ -1727,13 +1770,13 @@ class PHPFSPOT { case 4: /* bottom, right */ $flip_vert = true; break; case 5: /* left side, top */ - $rotate = 90; $flip_vert = true; break; + $rotate = 270; $flip_vert = true; break; case 6: /* right side, top */ - $rotate = 90; break; + $rotate = 270; break; case 7: /* left side, bottom */ - $rotate = 270; $flip_vert = true; break; + $rotate = 90; $flip_vert = true; break; case 8: /* right side, bottom */ - $rotate = 270; break; + $rotate = 90; break; } } @@ -3458,23 +3501,24 @@ class PHPFSPOT { */ public function parse_uri($uri, $mode) { - if(($components = parse_url($uri)) !== false) { + if(($components = parse_url($uri)) === false) + return $uri; - switch($mode) { - case 'filename': - return basename($components['path']); - break; - case 'dirname': - return dirname($components['path']); - break; - case 'fullpath': - return $components['path']; - break; - } + switch($mode) { + case 'filename': + return basename($components['path']); + break; + case 'dirname': + return dirname($components['path']); + break; + case 'fullpath': + return $components['path']; + break; + default: + $this->throwError("unknown mode ". $mode); + break; } - return $uri; - } // parse_uri() /**