summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-02-07 15:41:43 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-02-07 15:41:43 +0000
commit8a612658c7b70b4232110882f5342e3ff52363d8 (patch)
tree8a7185edc82aabed2b6e6f918ea36afc2c233a12 /lib
parentef6b47f7c9acf0b90263bd1cfe2fa2428b1df13a (diff)
downloadxxv-8a612658c7b70b4232110882f5342e3ff52363d8.tar.gz
xxv-8a612658c7b70b4232110882f5342e3ff52363d8.tar.bz2
* RECORDS: rdelete group of recording, join double SQL-query to single query
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/RECORDS.pm43
1 files changed, 18 insertions, 25 deletions
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index caaadc2..0ab1d2f 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -2214,35 +2214,20 @@ sub getGroupIds {
my $obj = shift || return error('No object defined!');
my $recid = shift || return error ('No recording defined!');
- my $epgid = getDataById($recid, 'RECORDS', 'RecordMD5');
- if(!$epgid) {
+ my $data = $obj->IdToData($recid);
+ unless($data) {
error sprintf("Couldn't find recording '%s'!", $recid);
return;
}
- my $epgdata = main::getModule('EPG')->getId($epgid->{eventid});
-
- my $text = $epgdata->{title};
+ my $text = $data->{title};
- my $deep = 1;
my $folder = scalar (my @a = split('/',$obj->{videodir})) + 1;
+ my $deep = scalar (my @c = split('~',$text));
+ $folder += $deep;
+ $deep += 1;
- my $where = "e.eventid = r.eventid";
- if($text) {
- $deep = scalar (my @c = split('~',$text));
- $folder += $deep;
- $deep += 1;
-
- $text =~ s/\'/\\\'/sg;
- $text =~ s/%/\\%/sg;
- $where .= qq|
-AND (
- SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) LIKE '$text'
- OR
- SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) LIKE '$text~%'
-)
-|;
-
- }
+ $text =~ s/\'/\\\'/sg;
+ $text =~ s/%/\\%/sg;
my $sql = qq|
SELECT SQL_CACHE
@@ -2251,12 +2236,20 @@ FROM
RECORDS as r,
OLDEPG as e
WHERE
- $where
+ e.eventid = r.eventid
+AND (
+ SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) LIKE ?
+ OR
+ SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) LIKE ?
+ )
GROUP BY
SUBSTRING_INDEX(r.Path, '/', IF(Length(e.subtitle)<=0, $folder + 1, $folder))
|;
- my $erg = $obj->{dbh}->selectall_arrayref($sql);
+ my $sth = $obj->{dbh}->prepare($sql);
+ $sth->execute($text,$text .'~%')
+ or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ my $erg = $sth->fetchall_arrayref();
my $ret = [];
for(@{$erg}) {