diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2010-08-24 17:27:10 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2010-08-24 17:27:10 +0000 |
| commit | e503819f62d4156bb9a9e194d79624ef217da921 (patch) | |
| tree | 83c4997701dfb64e0b4cee47be880312d917357a /lib | |
| parent | 1d05d26b9065a1b7c202a7878668c7bace17b986 (diff) | |
| download | xxv-e503819f62d4156bb9a9e194d79624ef217da921.tar.gz xxv-e503819f62d4156bb9a9e194d79624ef217da921.tar.bz2 | |
SHARE: show level on any skins
CONFIG: show moduls description on editing preferences
USER: refactoring createTmpDir
RECORDS: refactoring status handler
SHARE: change order of topten view
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/XXV/MODULES/CHANNELS.pm | 5 | ||||
| -rw-r--r-- | lib/XXV/MODULES/CONFIG.pm | 5 | ||||
| -rw-r--r-- | lib/XXV/MODULES/EPG.pm | 62 | ||||
| -rw-r--r-- | lib/XXV/MODULES/EVENTS.pm | 2 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 102 | ||||
| -rw-r--r-- | lib/XXV/MODULES/SHARE.pm | 2 | ||||
| -rw-r--r-- | lib/XXV/MODULES/TIMERS.pm | 15 | ||||
| -rw-r--r-- | lib/XXV/MODULES/USER.pm | 38 |
8 files changed, 156 insertions, 75 deletions
diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm index 200e649..9b3ae67 100644 --- a/lib/XXV/MODULES/CHANNELS.pm +++ b/lib/XXV/MODULES/CHANNELS.pm @@ -118,13 +118,14 @@ sub status { my $lastReportTime = shift || 0; my $sql = "SELECT SQL_CACHE count(*) from CHANNELS"; - my $gesamt = $self->{dbh}->selectrow_arrayref($sql)->[0]; + my $total = $self->{dbh}->selectrow_arrayref($sql)->[0]; $sql = "SELECT SQL_CACHE count(*) from CHANNELGROUPS"; my $groups = $self->{dbh}->selectrow_arrayref($sql)->[0]; return { - message => sprintf(gettext('The system has saved %d channels from %d groups'), $gesamt, $groups), + message => sprintf(gettext('The system has saved %d channels from %d groups'), $total, $groups), + complete => $total }; } diff --git a/lib/XXV/MODULES/CONFIG.pm b/lib/XXV/MODULES/CONFIG.pm index b09d81f..9e67804 100644 --- a/lib/XXV/MODULES/CONFIG.pm +++ b/lib/XXV/MODULES/CONFIG.pm @@ -167,7 +167,10 @@ sub edit { ); } - $console->link({text => sprintf(gettext('%s manual'), $sector), url => "?cmd=doc&data=$sector"}) + my $desc = $mod->{MOD}->{Description}; + $desc =~ s/[\.\r\n].*$//g; # remove last part + + $console->link({text => $desc . " - " . sprintf(gettext("%s manual") , $sector) . " ..." , url => "?cmd=doc&data=$sector"}) if($console->typ eq 'HTML'); $cfg = $console->question(sprintf(gettext('Edit configuration %s'), $sector), $questions, $data); diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm index cbf72ae..8dd2fa9 100644 --- a/lib/XXV/MODULES/EPG.pm +++ b/lib/XXV/MODULES/EPG.pm @@ -134,7 +134,7 @@ sub status { my $newEntrys = 0; { - my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from EPG"); + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from EPG"); if(!$sth->execute()) { error sprintf("Couldn't execute query: %s.",$sth->errstr); @@ -145,7 +145,7 @@ sub status { } { - my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from EPG where UNIX_TIMESTAMP(addtime) > ?"); + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from EPG where UNIX_TIMESTAMP(addtime) > ?"); if(!$sth->execute($lastReportTime)) { error sprintf("Couldn't execute query: %s.",$sth->errstr); @@ -158,6 +158,7 @@ sub status { return { message => sprintf(gettext('EPG table contains %d entries and since the last login on %s %d new entries.'), $total, datum($lastReportTime), $newEntrys), + complete => $total }; } @@ -419,7 +420,7 @@ sub compareEpgData { if(ref $waiter); # First - read database - my $sql = qq|SELECT SQL_CACHE eventid, title, subtitle, length(description) as ldescription, duration, UNIX_TIMESTAMP(starttime) as starttime, UNIX_TIMESTAMP(vpstime) as vpstime, video, audio, image from EPG where vid = ? and channel_id = ? |; + my $sql = qq|SELECT SQL_CACHE eventid, title, subtitle, length(description) as ldescription, duration, UNIX_TIMESTAMP(starttime) as starttime, UNIX_TIMESTAMP(vpstime) as vpstime, video, audio, image from EPG where vid = ? and channel_id = ? |; my $sth = $self->{dbh}->prepare($sql); $sth->execute($vid, $channel) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); @@ -727,7 +728,12 @@ sub search { WHERE t.eventid = e.eventid LIMIT 1) as __running, e.video as __video, - e.audio as __audio + e.audio as __audio, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level from EPG as e, CHANNELS as c @@ -851,7 +857,12 @@ SELECT SQL_CACHE NOW() between t.starttime and t.stoptime AND (t.flags & 1) FROM TIMERS as t WHERE t.eventid = e.eventid - LIMIT 1) as __running + LIMIT 1) as __running, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level from EPG as e, CHANNELS as c where @@ -971,7 +982,12 @@ SELECT SQL_CACHE LIMIT 1) as __running, e.image as __Image, UNIX_TIMESTAMP(e.vpstime) as __PDC, - e.channel_id as __channel_id + e.channel_id as __channel_id, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level from $table as e,CHANNELS as c where @@ -1118,7 +1134,12 @@ SELECT SQL_CACHE FROM TIMERS as t WHERE t.eventid = e.eventid LIMIT 1) as __running, - IF(e.vpstime!=0,DATE_FORMAT(e.vpstime, '%H:%i'),'') as __PDC + IF(e.vpstime!=0,DATE_FORMAT(e.vpstime, '%H:%i'),'') as __PDC, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level FROM EPG as e, CHANNELS as c, NEXTEPG as n, CHANNELGROUPS as g WHERE @@ -1264,7 +1285,12 @@ SELECT SQL_CACHE FROM TIMERS as t WHERE t.eventid = e.eventid LIMIT 1) as __running, - IF(e.vpstime!=0,DATE_FORMAT(e.vpstime, '%H:%i'),'') as __PDC + IF(e.vpstime!=0,DATE_FORMAT(e.vpstime, '%H:%i'),'') as __PDC, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level FROM EPG as e, CHANNELS as c, CHANNELGROUPS as g WHERE @@ -1400,7 +1426,12 @@ SELECT SQL_CACHE NOW() between t.starttime and t.stoptime AND (t.flags & 1) FROM TIMERS as t WHERE t.eventid = e.eventid - LIMIT 1) as __running + LIMIT 1) as __running, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level FROM EPG as e, CHANNELS as c WHERE @@ -1507,7 +1538,12 @@ SELECT SQL_CACHE WHERE t.eventid = e.eventid LIMIT 1) as __running, c.vid as __vid, - c.pos as __position + c.pos as __position, + ( SELECT + s.level + FROM SHARE as s + WHERE s.eventid = e.eventid + LIMIT 1) as __level FROM EPG as e, CHANNELS as c, CHANNELGROUPS as g WHERE @@ -1652,7 +1688,7 @@ sub getId { foreach my $table (qw/EPG OLDEPG/) { # EPG - my $sql = sprintf('SELECT SQL_CACHE %s from %s WHERE eventid = ?',$fields, $table); + my $sql = sprintf('SELECT SQL_CACHE %s from %s WHERE eventid = ?',$fields, $table); my $sth = $self->{dbh}->prepare($sql); $sth->execute($id) or return error "Couldn't execute query: $sth->errstr."; @@ -1689,7 +1725,7 @@ sub suggest { WHERE channel_id = c.id AND e.vid = c.vid - AND ( e.title LIKE ? ) + AND ( e.title LIKE ? ) $ch GROUP BY title @@ -1702,7 +1738,7 @@ UNION WHERE channel_id = c.id AND e.vid = c.vid - AND ( e.subtitle LIKE ? ) + AND ( e.subtitle LIKE ? ) $ch GROUP BY title diff --git a/lib/XXV/MODULES/EVENTS.pm b/lib/XXV/MODULES/EVENTS.pm index cd6345b..4f798b5 100644 --- a/lib/XXV/MODULES/EVENTS.pm +++ b/lib/XXV/MODULES/EVENTS.pm @@ -181,7 +181,7 @@ sub _init { ); return 1; - }, "EVENTS: Look for event entrys in modules ...", 3); + }, "EVENTS: Look for event entrys in modules ...", 2); return 1; } diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index 80bc31d..b9d9286 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -167,7 +167,7 @@ sub module { rconvert => { description => gettext("Convert recording 'rid'"), short => 'rc', - callback => sub{ $self->convert(@_) }, + callback => sub{ $self->reccmds(@_) }, Level => 'user', DenyClass => 'redit', }, @@ -378,6 +378,58 @@ sub _init { 1; } +# ------------------ +sub status { +# ------------------ + my $self = shift || return error('No object defined!'); + my $lastReportTime = shift; + + my $total = 0; + my $unseen = 0; + { + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count,SUM(FIND_IN_SET('new',status)) as unseen from RECORDS"); + if(!$sth->execute()) + { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + } else { + my $erg = $sth->fetchrow_hashref(); + $total = $erg->{count} if($erg && $erg->{count}); + $unseen = $erg->{unseen} if($erg && $erg->{unseen}); + } + } + my $sql = qq| +SELECT SQL_CACHE + r.hash as __Id, + r.eventid as __EventId, + e.title, + e.subtitle, + FROM_UNIXTIME(e.duration,'%h:%i:%s') as Duration, + e.starttime as __RecordStart +FROM + RECORDS as r, + OLDEPG as e +WHERE + e.eventid = r.eventid + and UNIX_TIMESTAMP(e.starttime) > ? +ORDER BY + e.starttime asc +|; + + my $sth = $self->{dbh}->prepare($sql); + $sth->execute($lastReportTime) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + my $fields = $sth->{'NAME'}; + my $erg = $sth->fetchall_arrayref(); + unshift(@$erg, $fields); + return { + message => sprintf(gettext('%d new recordings since last report time %s'), + (scalar @$erg -1), datum($lastReportTime)) + ,table => $erg + ,complete => $total + ,unseen => $unseen + }; +} + sub _watch_recorder { my $self = shift || return error('No object defined!'); @@ -760,7 +812,7 @@ sub _readData { my $db_data; unless($forceUpdate) { # read database for compare with vdr data - my $sql = qq|SELECT SQL_CACHE r.eventid as eventid, r.id as id, + my $sql = qq|SELECT SQL_CACHE r.eventid as eventid, r.id as id, UNIX_TIMESTAMP(e.starttime) as starttime, e.duration, r.status, CONCAT_WS("~",e.title,e.subtitle) as title, @@ -1349,7 +1401,7 @@ sub _infofile { my $filever = shift; my $f; - if($filever == 2) { + if($filever && $filever == 2) { $f = "info"; } else { $f = "info.vdr"; @@ -1716,7 +1768,7 @@ sub createOldEventId { audio => $info->{audio} || "", }; - $attr->{eventid} = $self->{dbh}->selectrow_arrayref('SELECT SQL_CACHE max(eventid)+1 from OLDEPG')->[0]; + $attr->{eventid} = $self->{dbh}->selectrow_arrayref('SELECT SQL_CACHE max(eventid)+1 from OLDEPG')->[0]; $attr->{eventid} = 0x70000000 if(not defined $attr->{eventid} or $attr->{eventid} < 0x6FFFFFFF ); lg sprintf('Create event "%s" into OLDEPG', $subtitle ? $title .'~'. $subtitle : $title); @@ -2470,7 +2522,7 @@ WHERE } $info->{aux} = $self->{keywords}->mergexml($info->{aux},'keywords',$info->{keywords}); - + $info->{filever} = $rec->{filever}; $self->saveinfo($rec->{path},$info) or return con_err($console,sprintf(gettext("Couldn't write file '%s' : %s"), $self->_infofile($rec->{path},$rec->{filever}),$!)); @@ -2594,7 +2646,7 @@ sub _loadreccmds { } # ------------------ -sub convert { +sub reccmds { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); @@ -2696,44 +2748,6 @@ WHERE } # ------------------ -sub status { -# ------------------ - my $self = shift || return error('No object defined!'); - my $lastReportTime = shift; - - my $sql = qq| -SELECT SQL_CACHE - r.hash as __Id, - r.eventid as __EventId, - e.title, - e.subtitle, - FROM_UNIXTIME(e.duration,'%h:%i:%s') as Duration, - e.starttime as __RecordStart -FROM - RECORDS as r, - OLDEPG as e -WHERE - e.eventid = r.eventid - and UNIX_TIMESTAMP(e.starttime) > ? -ORDER BY - e.starttime asc -|; - - my $sth = $self->{dbh}->prepare($sql); - $sth->execute($lastReportTime) - or return error sprintf("Couldn't execute query: %s.",$sth->errstr); - my $fields = $sth->{'NAME'}; - my $erg = $sth->fetchall_arrayref(); - unshift(@$erg, $fields); - return { - message => sprintf(gettext('%d new recordings since last report time %s'), - (scalar @$erg -1), datum($lastReportTime)), - table => $erg, - }; -} - - -# ------------------ sub IdToData { # ------------------ my $self = shift || return error('No object defined!'); diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm index 3c2b8d4..7c4bd6b 100644 --- a/lib/XXV/MODULES/SHARE.pm +++ b/lib/XXV/MODULES/SHARE.pm @@ -402,7 +402,7 @@ sub TopTen { AND e.channel_id = c.Id AND ((UNIX_TIMESTAMP(e.starttime) + e.duration) > UNIX_TIMESTAMP()) order by - rank desc + rank desc, level desc |; diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm index 6e7b084..8b63d92 100644 --- a/lib/XXV/MODULES/TIMERS.pm +++ b/lib/XXV/MODULES/TIMERS.pm @@ -265,19 +265,25 @@ sub status { my $lastReportTime = shift || 0; my $total = 0; + my $running = 0; { - my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from TIMERS"); + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count + ,sum(NOW() between starttime and stoptime) as running + from TIMERS WHERE (flags & 1)"); if(!$sth->execute()) { error sprintf("Couldn't execute query: %s.",$sth->errstr); } else { my $erg = $sth->fetchrow_hashref(); $total = $erg->{count} if($erg && $erg->{count}); + $running = $erg->{running} if($erg && $erg->{running}); } } return { - message => sprintf(gettext('%d timer exists.'), $total), + message => sprintf(gettext('%d active timer exists.'), $total) + ,complete => $total + ,running => $running }; } @@ -1243,8 +1249,7 @@ sub _list { 'channel' => gettext('Channel'), 'start' => gettext('Start'), 'stop' => gettext('Stop'), - 'title' => gettext('Title'), - 'priority' => gettext('Priority') + 'title' => gettext('Title') ); my $sql = qq| @@ -1257,7 +1262,7 @@ SELECT SQL_CACHE DATE_FORMAT(t.starttime, '%H:%i') as \'$f{'start'}\', DATE_FORMAT(t.stoptime, '%H:%i') as \'$f{'stop'}\', t.file as \'$f{'title'}\', - t.priority as \'$f{'priority'}\', + t.priority as __priority, t.collision as __collision, t.eventid as __eventid, t.autotimerid as __autotimerid, diff --git a/lib/XXV/MODULES/USER.pm b/lib/XXV/MODULES/USER.pm index 00e13e6..34375f3 100644 --- a/lib/XXV/MODULES/USER.pm +++ b/lib/XXV/MODULES/USER.pm @@ -1194,18 +1194,40 @@ sub userTmp { my $self = shift || return error('No object defined!'); my $user = shift || return error('No username defined!'); - # /var/cache/xxv/temp/xpix/$PID - my $dir = sprintf('%s/%s/%d', $self->{tempimages} , $user, $$); + # /var/cache/xxv/temp/user/$PID + my $dir = $self->createTmpDir($user, $$); - unless(-d $dir) { - mkpath($dir) or error "Couldn't mkpath $dir : $!"; + if($dir) { + # Nach Logout oder beenden von xxv das temp löschen + main::toCleanUp($user, sub{ deleteDir($dir) }, 'logout') + unless(main::toCleanUp($user, undef, 'exists')); # ein CB registrieren } - # Nach Logout oder beenden von xxv das temp löschen - main::toCleanUp($user, sub{ deleteDir($dir) }, 'logout') - unless(main::toCleanUp($user, undef, 'exists')); # ein CB registrieren - return $dir; } + +sub createTmpDir { + my $self = shift || return error('No object defined!'); + my $dir = shift || return error('No user defined!'); + my $pid = shift; + + my $path; + if($pid) { + # /var/cache/xxv/temp/dir/$PID + $path = sprintf('%s/%s/%d', $self->{tempimages} , $dir, $pid); + } else { + # /var/cache/xxv/temp/dir + $path = sprintf('%s/%s', $self->{tempimages} , $dir); + } + + unless(-d $path) { + unless(mkpath($path)) { + error "Couldn't mkpath $path : $!"; + return undef; + } + } + + return $path; +} 1; |
