diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-02-07 15:41:43 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-02-07 15:41:43 +0000 |
| commit | 8a612658c7b70b4232110882f5342e3ff52363d8 (patch) | |
| tree | 8a7185edc82aabed2b6e6f918ea36afc2c233a12 /lib | |
| parent | ef6b47f7c9acf0b90263bd1cfe2fa2428b1df13a (diff) | |
| download | xxv-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.pm | 43 |
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}) { |
