make get_random_tag_photo() behave correct when show_tags is set, fixes #81
[phpfspot.git] / phpfspot.class.php
index 18c1c52..ba33c89 100644 (file)
@@ -404,7 +404,7 @@ class PHPFSPOT {
          $query_str="
             SELECT
                DISTINCT t1.id as id, t1.name as name
-            FROM  
+            FROM
                photo_tags pt1
             INNER JOIN photo_tags
                pt2 ON pt1.photo_id=pt2.photo_id
@@ -3139,30 +3139,36 @@ class PHPFSPOT {
    {
       $all = Array();
 
-      $query_str = "
-         SELECT p.id
-         FROM photos p
-         INNER JOIN photo_tags pt
-            ON p.id=pt.photo_id
-      ";
-
       if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
          $query_str.= "
-            INNER JOIN tags t
-               ON pt.tag_id=t.id
-         ";
+            SELECT
+               DISTINCT pt1.photo_id as id
+            FROM
+               photo_tags pt1
+            INNER JOIN photo_tags
+               pt2 ON pt1.photo_id=pt2.photo_id
+            INNER JOIN tags t1
+               ON t1.id=pt1.tag_id
+            INNER JOIN tags t2
+               ON t2.id=pt2.tag_id
+            WHERE
+               pt1.tag_id LIKE '". $tagidx ."'
+            AND
+               t2.name IN  ('".implode("','",$this->cfg->show_tags)."')
+            ORDER BY
+               t1.sort_priority ASC";
+      }
+      else {
+         $query_str = "
+            SELECT
+               p.id
+            FROM
+               photos p
+            INNER JOIN photo_tags pt
+               ON p.id=pt.photo_id
+            WHERE
+               pt.tag_id LIKE '". $tagidx ."'";
       }
-      $query_str.= "
-         WHERE
-            pt.tag_id LIKE '". $tagidx ."'
-      ";
-
-      /*if(isset($this->cfg->show_tags) && !empty($this->cfg->show_tags)) {
-         $query_str.= "
-           AND
-               t.name IN ('".implode("','",$this->cfg->show_tags)."')
-         ";
-      }*/
 
       $result = $this->db->db_query($query_str);