summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2010-08-24 17:27:10 +0000
committerAndreas Brachold <vdr07@deltab.de>2010-08-24 17:27:10 +0000
commite503819f62d4156bb9a9e194d79624ef217da921 (patch)
tree83c4997701dfb64e0b4cee47be880312d917357a /lib
parent1d05d26b9065a1b7c202a7878668c7bace17b986 (diff)
downloadxxv-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.pm5
-rw-r--r--lib/XXV/MODULES/CONFIG.pm5
-rw-r--r--lib/XXV/MODULES/EPG.pm62
-rw-r--r--lib/XXV/MODULES/EVENTS.pm2
-rw-r--r--lib/XXV/MODULES/RECORDS.pm102
-rw-r--r--lib/XXV/MODULES/SHARE.pm2
-rw-r--r--lib/XXV/MODULES/TIMERS.pm15
-rw-r--r--lib/XXV/MODULES/USER.pm38
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;