issue99, search for filename and photo description
[phpfspot.git] / phpfspot.class.php
index a0082dd5fb7a26e87584a392e6e3b9353b054553..9a74a9a078a2484f09978f9eb5b891b7464cd8f3 100644 (file)
@@ -118,8 +118,8 @@ class PHPFSPOT {
       if(!isset($_SESSION['sort_order']))
          $_SESSION['sort_order'] = 'date_asc';
 
-      if(!isset($_SESSION['searchfor']))
-         $_SESSION['searchfor'] = '';
+      if(!isset($_SESSION['searchfor_tag']))
+         $_SESSION['searchfor_tag'] = '';
 
       // if begin_with is still set but thumbs_per_page is now 0, unset it
       if(isset($_SESSION['begin_with']) && $this->cfg->thumbs_per_page == 0)
@@ -143,7 +143,7 @@ class PHPFSPOT {
     */
    public function show()
    {
-      $this->tmpl->assign('searchfor', $_SESSION['searchfor']);
+      $this->tmpl->assign('searchfor_tag', $_SESSION['searchfor_tag']);
       $this->tmpl->assign('page_title', $this->cfg->page_title);
       $this->tmpl->assign('current_condition', $_SESSION['tag_condition']);
       $this->tmpl->assign('template_path', 'themes/'. $this->cfg->theme_name);
@@ -638,8 +638,8 @@ class PHPFSPOT {
       if(!isset($_SESSION['selected_tags']))
          $_SESSION['selected_tags'] = Array();
 
-      if(isset($_SESSION['searchfor']))
-         unset($_SESSION['searchfor']);
+      if(isset($_SESSION['searchfor_tag']))
+         unset($_SESSION['searchfor_tag']);
 
       if(!in_array($tag, $_SESSION['selected_tags']))
          array_push($_SESSION['selected_tags'], $tag);
@@ -654,8 +654,8 @@ class PHPFSPOT {
     */
    public function delTag($tag)
    {
-      if(isset($_SESSION['searchfor']))
-         unset($_SESSION['searchfor']);
+      if(isset($_SESSION['searchfor_tag']))
+         unset($_SESSION['searchfor_tag']);
 
       if(isset($_SESSION['selected_tags'])) {
          $key = array_search($tag, $_SESSION['selected_tags']);
@@ -694,17 +694,28 @@ class PHPFSPOT {
    /**
     * reset tag search
     *
-    * if any tag search has taken place, reset
-    * it now
+    * if any tag search has taken place, reset it now
     */
    public function resetTagSearch()
    {
-      if(isset($_SESSION['searchfor']))
-         unset($_SESSION['searchfor']);
+      if(isset($_SESSION['searchfor_tag']))
+         unset($_SESSION['searchfor_tag']);
 
    } // resetTagSearch()
 
-    /**
+   /**
+    * reset name search
+    *
+    * if any name search has taken place, reset it now
+    */
+   public function resetNameSearch()
+   {
+      if(isset($_SESSION['searchfor_name']))
+         unset($_SESSION['searchfor_name']);
+
+   } // resetNameSearch()
+
+   /**
     * reset date search
     *
     * if any date search has taken place, reset
@@ -741,12 +752,33 @@ class PHPFSPOT {
          ";
       } 
 
+      if(isset($_SESSION['searchfor_name'])) {
+         if($this->dbver < 9) {
+            $additional_where_cond.= "
+                  (
+                        p.name LIKE '%". $_SESSION['searchfor_name'] ."%'
+                     OR
+                        p.description LIKE '%". $_SESSION['searchfor_name'] ."%'
+                  )
+            ";
+         }
+         else {
+            $additional_where_cond.= "
+                  (
+                        basename(p.uri) LIKE '%". $_SESSION['searchfor_name'] ."%'
+                     OR
+                        p.description LIKE '%". $_SESSION['searchfor_name'] ."%'
+                  )
+            ";
+         }
+      }
+
       if(isset($_SESSION['sort_order'])) {
          $order_str = $this->get_sort_order();
       }
 
       /* return a search result */
-      if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '') {
+      if(isset($_SESSION['searchfor_tag']) && $_SESSION['searchfor_tag'] != '') {
          $query_str = "
             SELECT DISTINCT pt1.photo_id
                FROM photo_tags pt1
@@ -758,7 +790,7 @@ class PHPFSPOT {
                ON pt1.photo_id=p.id
             INNER JOIN tags t2
                ON pt2.tag_id=t2.id
-            WHERE t.name LIKE '%". $_SESSION['searchfor'] ."%' ";
+            WHERE t.name LIKE '%". $_SESSION['searchfor_tag'] ."%' ";
 
          if(isset($additional_where_cond))
             $query_str.= "AND ". $additional_where_cond ." ";
@@ -967,8 +999,8 @@ class PHPFSPOT {
       // +1 for for smarty's selection iteration
       $thumbs++;
 
-      if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '')
-         $this->tmpl->assign('searchfor', $_SESSION['searchfor']);
+      if(isset($_SESSION['searchfor_tag']) && $_SESSION['searchfor_tag'] != '')
+         $this->tmpl->assign('searchfor_tag', $_SESSION['searchfor_tag']);
 
       if(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) {
          $this->tmpl->assign('from_date', $this->ts2str($_SESSION['from_date']));
@@ -1426,11 +1458,27 @@ class PHPFSPOT {
     * getPhotoSelection() will then only return the matching
     * photos.
     */
-   public function startSearch($searchfor, $from = 0, $to = 0)
+   public function startSearch($searchfor_tag, $from = 0, $to = 0)
    {
+      if(isset($_GET['from']) && $fspot->isValidDate($_GET['from'])) {
+         $from = $_GET['from'];
+      }
+      if(isset($_GET['to']) && $fspot->isValidDate($_GET['to'])) {
+         $to = $_GET['to'];
+      }
+
+      if(isset($_GET['for_tag']) && is_string($_GET['for_tag'])) {
+         $searchfor_tag = $_GET['for_tag'];
+      }
+
+      if(isset($_GET['for_name']) && is_string($_GET['for_name'])) {
+         $searchfor_name = $_GET['for_name'];
+      }
+
       $this->get_tags();
 
-      $_SESSION['searchfor'] = $searchfor;
+      $_SESSION['searchfor_tag'] = $searchfor_tag;
+      $_SESSION['searchfor_name'] = $searchfor_name;
 
       if($from != 0)
          $_SESSION['from_date'] = strtotime($from ." 00:00:00");
@@ -1442,11 +1490,11 @@ class PHPFSPOT {
       else
          unset($_SESSION['to_date']);
 
-      if($searchfor != "") {
+      if($searchfor_tag != "") {
          /* new search, reset the current selected tags */
          $_SESSION['selected_tags'] = Array();
          foreach($this->avail_tags as $tag) {
-            if(preg_match('/'. $searchfor .'/i', $this->tags[$tag]))
+            if(preg_match('/'. $searchfor_tag .'/i', $this->tags[$tag]))
                array_push($_SESSION['selected_tags'], $tag);
          }
       }
@@ -2086,6 +2134,7 @@ class PHPFSPOT {
    {
       if(isset($_SESSION['slideshow_img']))
          unset($_SESSION['slideshow_img']);
+
    } // resetSlideShow()
    
    /***