From 713bc497466a364c97c27398c0264699c4db2c9a Mon Sep 17 00:00:00 2001
From: plegall '; print_r($search); echo '
';
global $conf;
$forbidden = get_sql_condition_FandF(
array
@@ -213,6 +214,37 @@ function get_regular_search_results($search, $images_where='')
$items = array();
$tag_items = array();
+ if (isset($search['fields']['search_in_tags']))
+ {
+ $word_clauses = array();
+ foreach ($search['fields']['allwords']['words'] as $word)
+ {
+ $word_clauses[] = "name LIKE '%".$word."%'";
+ }
+
+ $query = '
+SELECT
+ id
+ FROM '.TAGS_TABLE.'
+ WHERE '.implode(' OR ', $word_clauses).'
+;';
+ // echo ''.$query.'
';
+ $tag_ids = query2array($query, null, 'id');
+
+ if (!isset($search['fields']['tags']))
+ {
+ $search['fields']['tags'] = array(
+ 'words' => $tag_ids,
+ 'mode' => 'OR',
+ );
+ }
+ else
+ {
+ $search['fields']['tags']['words'] = array_merge($search['fields']['tags']['words'], $tag_ids);
+ }
+ // echo ''; print_r($search); echo '
';
+ }
+
if (isset($search['fields']['tags']))
{
$tag_items = get_image_ids_for_tags(
diff --git a/search.php b/search.php
index 9d33c7b3c..f8f0a1949 100644
--- a/search.php
+++ b/search.php
@@ -72,6 +72,11 @@ if (isset($_POST['submit']))
'mode' => $_POST['mode'],
'fields' => $_POST['fields'],
);
+
+ if (isset($_POST['search_in_tags']))
+ {
+ $search['fields']['search_in_tags'] = true;
+ }
}
if (isset($_POST['tags']))
diff --git a/themes/default/template/search.tpl b/themes/default/template/search.tpl
index 1a12e9832..4129746bd 100644
--- a/themes/default/template/search.tpl
+++ b/themes/default/template/search.tpl
@@ -47,6 +47,9 @@ jQuery(document).ready(function() {
+{if isset($TAGS)}
+
+{/if}
'; print_r($search); echo ''; - global $conf; + global $conf, $logger; + + $logger->debug(__FUNCTION__, 'search', $search); + $forbidden = get_sql_condition_FandF( array ( @@ -228,21 +230,11 @@ SELECT FROM '.TAGS_TABLE.' WHERE '.implode(' OR ', $word_clauses).' ;'; - // echo '
'.$query.''; $tag_ids = query2array($query, null, 'id'); - if (!isset($search['fields']['tags'])) - { - $search['fields']['tags'] = array( - 'words' => $tag_ids, - 'mode' => 'OR', - ); - } - else - { - $search['fields']['tags']['words'] = array_merge($search['fields']['tags']['words'], $tag_ids); - } - // echo '
'; print_r($search); echo ''; + $search_in_tags_items = get_image_ids_for_tags($tag_ids, 'OR'); + + $logger->debug(__FUNCTION__.' '.count($search_in_tags_items).' items in $search_in_tags_items'); } if (isset($search['fields']['tags'])) @@ -251,6 +243,8 @@ SELECT $search['fields']['tags']['words'], $search['fields']['tags']['mode'] ); + + $logger->debug(__FUNCTION__.' '.count($tag_items).' items in $tag_items'); } $search_clause = get_sql_search_clause($search); @@ -269,6 +263,18 @@ SELECT DISTINCT(id) $query .= $forbidden.' '.$conf['order_by']; $items = array_from_query($query, 'id'); + + $logger->debug(__FUNCTION__.' '.count($items).' items in $items'); + } + + if (isset($search_in_tags_items)) + { + $items = array_unique( + array_merge( + $items, + $search_in_tags_items + ) + ); } if ( !empty($tag_items) ) @@ -276,7 +282,7 @@ SELECT DISTINCT(id) switch ($search['mode']) { case 'AND': - if (empty($search_clause)) + if (empty($search_clause) and !isset($search_in_tags_items)) { $items = $tag_items; } @@ -286,7 +292,6 @@ SELECT DISTINCT(id) } break; case 'OR': - $before_count = count($items); $items = array_unique( array_merge( $items, -- cgit v1.2.3