summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Unterkircher <unki@netshadow.at>2008-01-13 17:28:30 +0100
committerAndreas Unterkircher <unki@netshadow.at>2008-01-13 17:28:30 +0100
commit213a12dbb00c60ff1873cfec86c9f9c35d86253f (patch)
tree8dc0e16fe168dced4d2d5e3145b01e847e118d3c
parentc1820df7b1f282211fc6554190b0aab600001ced (diff)
issue99, search for filename and photo description
Signed-off-by: Andreas Unterkircher <unki@netshadow.at>
-rw-r--r--phpfspot.class.php89
-rw-r--r--phpfspot.js14
-rw-r--r--rpc.php10
-rw-r--r--themes/default/templates/search.tpl11
4 files changed, 91 insertions, 33 deletions
diff --git a/phpfspot.class.php b/phpfspot.class.php
index a0082dd..9a74a9a 100644
--- a/phpfspot.class.php
+++ b/phpfspot.class.php
@@ -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()
/***
diff --git a/phpfspot.js b/phpfspot.js
index abf9c43..d11f524 100644
--- a/phpfspot.js
+++ b/phpfspot.js
@@ -92,7 +92,8 @@ function setCheckedValue(condition, value) {
function startSearch()
{
- var searchfor = document.getElementsByName('searchfor')[0].value
+ var searchfor_tag = document.getElementsByName('searchfor_tag')[0].value;
+ var searchfor_name = document.getElementsByName('searchfor_name')[0].value;
from_year = document.getElementById('fromyear').value;
from_month = document.getElementById('frommonth').value;
@@ -105,8 +106,12 @@ function startSearch()
var request = 'rpc.php?action=search';
- if(searchfor != "") {
- request = request + '&for=' + searchfor;
+ if(searchfor_tag != "") {
+ request = request + '&for_tag=' + searchfor_tag;
+ }
+
+ if(searchfor_name != "") {
+ request = request + '&for_name=' + searchfor_name;
}
if(document.getElementsByName('consider_date')[0].checked == true) {
@@ -147,7 +152,8 @@ function setViewMode(mode)
function clearSearch()
{
- document.getElementsByName('searchfor')[0].value = '';
+ document.getElementsByName('searchfor_tag')[0].value = '';
+ document.getElementsByName('searchfor_name')[0].value = '';
if(document.getElementsByName('consider_date')[0].checked == true) {
document.getElementsByName('consider_date')[0].checked = false;
diff --git a/rpc.php b/rpc.php
index 6c94e8f..1f8698e 100644
--- a/rpc.php
+++ b/rpc.php
@@ -75,6 +75,7 @@ class PHPFSPOT_RPC {
case 'reset':
$fspot->resetTagSearch();
+ $fspot->resetNameSearch();
$fspot->resetTags();
$fspot->resetDateSearch();
$fspot->resetPhotoView();
@@ -101,14 +102,7 @@ class PHPFSPOT_RPC {
break;
case 'search':
- $fspot->startSearch($_GET['for'], $_GET['from'], $_GET['to']);
-
- if((isset($_GET['from']) && $fspot->isValidDate($_GET['from'])) &&
- (isset($_GET['to']) && $fspot->isValidDate($_GET['to']))) {
- }
- else {
- $fspot->startSearch($_GET['for']);
- }
+ $fspot->startSearch($_GET['for']);
break;
case 'update_sort_order':
diff --git a/themes/default/templates/search.tpl b/themes/default/templates/search.tpl
index 2030bdc..10800e1 100644
--- a/themes/default/templates/search.tpl
+++ b/themes/default/templates/search.tpl
@@ -7,7 +7,16 @@
<tr>
<td>Tag:</td>
<td>
- <input type="text" name="searchfor" value="{$searchfor}" size="15" />
+ <input type="text" name="searchfor_tag" value="{$searchfor_tag}" size="15" />
+ </td>
+ <td>
+ <input type="image" class="submit" src="resources/doit.png" alt="start search" title="start search" onclick="click(this);" />
+ </td>
+ </tr>
+ <tr>
+ <td>Name:</td>
+ <td>
+ <input type="text" name="searchfor_name" value="{$searchfor_name}" size="15" />
</td>
<td>
<input type="image" class="submit" src="resources/doit.png" alt="start search" title="start search" onclick="click(this);" />