first tag search functionality
[phpfspot.git] / phpfspot.class.php
index 7bccc9e8672489dd294d2c538c9ba1dc03e00230..b635b30256da6c1174dca62f24e429437262db9e 100644 (file)
@@ -32,6 +32,9 @@ class PHPFSPOT {
       if(!isset($_SESSION['tag_condition']))
          $_SESSION['tag_condition'] = 'or';
 
+      if(!isset($_SESSION['searchfor']))
+         $_SESSION['searchfor'] = '';
+
    } // __construct()
 
    public function __destruct()
@@ -41,6 +44,7 @@ class PHPFSPOT {
 
    public function show()
    {
+      $this->tmpl->assign('searchfor', $_SESSION['searchfor']);
       $this->tmpl->assign('page_title', $this->cfg->page_title);
       $this->tmpl->assign('current_condition', $_SESSION['tag_condition']);
       $this->tmpl->show("index.tpl");
@@ -261,7 +265,11 @@ class PHPFSPOT {
 
    public function showPhotoIndex()
    {
-      $photos = $this->getAllTagPhotos();
+      if($_SESSION['searchfor'] == '')
+         $photos = $this->getAllTagPhotos();
+      else
+         $photos = $this->getSearchResult($_SESSION['searchfor']);
+
       $count = count($photos);
 
       $rows = 0;
@@ -480,6 +488,35 @@ class PHPFSPOT {
 
    } // setTagCondition()
 
+   public function startSearch($searchfor)
+   {
+      $_SESSION['searchfor'] = $searchfor;
+
+   } // showSearchResult()
+
+   public function getSearchResult($for)
+   {
+      $tagged_photos = Array();
+
+      $result = $this->db->db_query("
+         SELECT DISTINCT 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 t.name LIKE '%". $for ."%'
+            ORDER BY p.time ASC
+      ");
+
+      while($row = $this->db->db_fetch_object($result)) {
+         array_push($tagged_photos, $row['photo_id']);
+      }
+
+      return $tagged_photos;
+
+   } // getSearchResult()
+
 }
 
 ?>