summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-12-18 15:36:41 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-12-18 15:36:41 +0000
commitb32e9ad19dd2ee50f3ad814fb39640ada6704d18 (patch)
tree1547b571e93b02cb555ac4d9ed00a7c7a695064e /lib
parentc7ad2a741f2a025c685ad0c039176aba4b35e224 (diff)
downloadxxv-b32e9ad19dd2ee50f3ad814fb39640ada6704d18.tar.gz
xxv-b32e9ad19dd2ee50f3ad814fb39640ada6704d18.tar.bz2
* CHRONICLE: Request[#3911] chrs: Enhance search with logical operators
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/CHRONICLE.pm10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/XXV/MODULES/CHRONICLE.pm b/lib/XXV/MODULES/CHRONICLE.pm
index a3c177d..005307d 100644
--- a/lib/XXV/MODULES/CHRONICLE.pm
+++ b/lib/XXV/MODULES/CHRONICLE.pm
@@ -196,10 +196,9 @@ sub search {
my $self = shift;
my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
- my $quest = shift || return $console->err(gettext("No 'string' to search for! Please use chrsearch 'text'."));
+ my $text = shift || return $console->err(gettext("No 'string' to search for! Please use chrsearch 'text'."));
- $quest =~ s/\'/\./sg;
- $quest =~ s/\+/\\\\\+/sg;
+ my $query = buildsearch("title",$text);
my %f = (
'id' => gettext('Service'),
@@ -220,12 +219,11 @@ SELECT SQL_CACHE
DATE_FORMAT(CHRONICLE.starttime, '%H:%i') as \'$f{'start'}\',
DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(CHRONICLE.starttime) + CHRONICLE.duration), '%H:%i') as \'$f{'stop'}\'
FROM CHRONICLE
-WHERE CHRONICLE.title RLIKE ?
-ORDER BY CHRONICLE.starttime
|;
+ $sql .= sprintf("WHERE %s ORDER BY CHRONICLE.starttime",$query->{query});
my $fields = fields($self->{dbh}, $sql);
my $sth = $self->{dbh}->prepare($sql);
- $sth->execute($quest)
+ $sth->execute(@{$query->{term}})
or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
my $erg = $sth->fetchall_arrayref();
unshift(@$erg, $fields);