X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.class.php;h=d67c7e39dc4f1b1543296ce209ed7e0071a4beaa;hp=9ec2254d9184887b3b20eb770b150bb82699cd2e;hb=5ea211de598c1e02a9f5ccb04b83a81ed9b41117;hpb=c6c2fa93297693a7c02a5e5419a26609ec7e97bd
diff --git a/phpfspot.class.php b/phpfspot.class.php
index 9ec2254..d67c7e3 100644
--- a/phpfspot.class.php
+++ b/phpfspot.class.php
@@ -44,6 +44,10 @@ class PHPFSPOT {
{
$this->cfg = new PHPFSPOT_CFG;
+ /* set application name and version information */
+ $this->cfg->product = "phpfspot";
+ $this->cfg->version = "1.2";
+
/* Check necessary requirements */
if(!$this->checkRequirements()) {
exit(1);
@@ -181,7 +185,7 @@ class PHPFSPOT {
*
* this function will get all available tags from
* the f-spot database and store them within two
- * arrays within this clase for later usage. in
+ * arrays within this class for later usage. in
* fact, if the user requests (hide_tags) it will
* opt-out some of them.
*
@@ -203,13 +207,23 @@ class PHPFSPOT {
$tag_id = $row['id'];
$tag_name = $row['name'];
- /* check if config requests to ignore this tag */
+ /* if the user has specified to ignore this tag in phpfspot's
+ configuration, ignore it here so it does not get added to
+ the tag list.
+ */
if(in_array($row['name'], $this->cfg->hide_tags))
continue;
+ /* if the user has specified to only show certain tags which
+ are specified in phpfspot's configuration, ignore all others
+ so they will not be added to the tag list.
+ */
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags) &&
+ !in_array($row['name'], $this->cfg->show_tags))
+ continue;
+
$this->tags[$tag_id] = $tag_name;
$this->avail_tags[$count] = $tag_id;
-
$count++;
}
@@ -224,12 +238,30 @@ class PHPFSPOT {
*/
public function get_photo_details($idx)
{
- $result = $this->db->db_query("
- SELECT *
- FROM photos
- WHERE id='". $idx ."'
- ");
-
+ $query_str = "
+ SELECT p.id, p.name, p.time, p.directory_path, p.description
+ FROM photos p
+ ";
+
+ /* if show_tags is set, only return details for photos which
+ are specified to be shown
+ */
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "
+ INNER JOIN photo_tags pt
+ ON p.id=pt.photo_id
+ INNER JOIN tags t
+ ON pt.tag_id=t.id
+ WHERE p.id='". $idx ."'
+ AND t.name IN ('".implode("','",$this->cfg->show_tags)."')";
+ }
+ else {
+ $query_str.= "
+ WHERE p.id='". $idx ."'
+ ";
+ }
+
+ $result = $this->db->db_query($query_str);
return $this->db->db_fetch_object($result);
} // get_photo_details
@@ -466,7 +498,9 @@ class PHPFSPOT {
// uncomment if you want sizes in whole %:
$size = ceil($size);
- $output.= "". $this->tags[$key] .", ";
+ if(isset($this->tags[$key])) {
+ $output.= "". $this->tags[$key] .", ";
+ }
}
@@ -624,6 +658,11 @@ class PHPFSPOT {
if(isset($additional_where_cond))
$query_str.= "AND ". $additional_where_cond ." ";
+
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "AND t.name IN ('".implode("','",$this->cfg->show_tags)."')";
+ }
+
if(isset($order_str))
$query_str.= $order_str;
@@ -643,14 +682,21 @@ class PHPFSPOT {
if($_SESSION['tag_condition'] == 'or') {
$query_str = "
- SELECT DISTINCT photo_id
+ SELECT DISTINCT pt.photo_id
FROM photo_tags pt
INNER JOIN photos p
ON p.id=pt.photo_id
+ INNER JOIN tags t
+ ON pt.tag_id=t.id
WHERE pt.tag_id IN (". $selected .")
";
if(isset($additional_where_cond))
$query_str.= "AND ". $additional_where_cond ." ";
+
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "AND t.name IN ('".implode("','",$this->cfg->show_tags)."')";
+ }
+
if(isset($order_str))
$query_str.= $order_str;
}
@@ -676,6 +722,13 @@ class PHPFSPOT {
FROM photo_tags pt1
";
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "
+ INNER JOIN tags t
+ ON pt1.tag_id=t.id
+ ";
+ }
+
for($i = 0; $i < count($_SESSION['selected_tags']); $i++) {
$query_str.= "
INNER JOIN photo_tags pt". ($i+2) ."
@@ -694,8 +747,14 @@ class PHPFSPOT {
}
if(isset($additional_where_cond))
$query_str.= "AND ". $additional_where_cond;
+
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "AND t.name IN ('".implode("','",$this->cfg->show_tags). "')";
+ }
+
if(isset($order_str))
$query_str.= $order_str;
+
}
$result = $this->db->db_query($query_str);
@@ -711,9 +770,16 @@ class PHPFSPOT {
FROM photo_tags pt
INNER JOIN photos p
ON p.id=pt.photo_id
+ INNER JOIN tags t
+ ON pt.tag_id=t.id
";
if(isset($additional_where_cond))
$query_str.= "WHERE ". $additional_where_cond ." ";
+
+ if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
+ $query_str.= "AND t.name IN ('".implode("','",$this->cfg->show_tags). "')";
+ }
+
if(isset($order_str))
$query_str.= $order_str;
@@ -1909,14 +1975,15 @@ class PHPFSPOT {
*/
public function get_thumb_path($width, $photo)
{
- $sub_path = substr($this->getMD5($photo), 0, 2);
+ $md5 = $this->getMD5($photo);
+ $sub_path = substr($md5, 0, 2);
return $this->cfg->thumb_path
. "/"
. $sub_path
. "/"
. $width
. "_"
- . $this->getMD5($photo);
+ . $md5;
} // get_thumb_path()