summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2009-11-15 16:48:26 +0000
committerAndreas Brachold <vdr07@deltab.de>2009-11-15 16:48:26 +0000
commitb3acde23784ba09f5575e2de00223b6ee15aaa18 (patch)
tree4c416653fbe96d62e1f0f3cd2db275e0e291cdc8 /lib
parentd48498579ceaa0ab4a9b4ae8f2a6a95b0ee89311 (diff)
downloadxxv-b3acde23784ba09f5575e2de00223b6ee15aaa18.tar.gz
xxv-b3acde23784ba09f5575e2de00223b6ee15aaa18.tar.bz2
* Fix: Avoid destroy muggle database connection on fork
* AUTOTIMER: adjust timer before assign new autotimer * MUSIC: add option data=all:1 to deliver all tracks * HTTP: allow skins with swf files * CHANNELS: allow clist for guest users * TIMERS: adjust inactive timer too
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/AUTOTIMER.pm2
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm1
-rw-r--r--lib/XXV/MODULES/HTTPD.pm3
-rw-r--r--lib/XXV/MODULES/MUSIC.pm11
-rw-r--r--lib/XXV/MODULES/RECORDS.pm4
-rw-r--r--lib/XXV/MODULES/ROBOT.pm4
-rw-r--r--lib/XXV/MODULES/TIMERS.pm3
-rw-r--r--lib/XXV/OUTPUT/Html.pm9
8 files changed, 31 insertions, 6 deletions
diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm
index ff95466..238c1e5 100644
--- a/lib/XXV/MODULES/AUTOTIMER.pm
+++ b/lib/XXV/MODULES/AUTOTIMER.pm
@@ -407,6 +407,8 @@ sub _autotimerLookup {
my $now = time;
# Get Timersmodule
my $modT = main::getModule('TIMERS');
+ $modT->_readData();
+
foreach my $id (sort keys %$att) {
my $a = $att->{$id};
diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm
index 966ee0c..2874532 100644
--- a/lib/XXV/MODULES/CHANNELS.pm
+++ b/lib/XXV/MODULES/CHANNELS.pm
@@ -84,7 +84,6 @@ sub module {
description => gettext("List channels from database 'cname'"),
short => 'cl',
callback => sub{ $self->list(@_) },
- Level => 'user',
},
cnew => {
description => gettext("Create new channel"),
diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm
index b93530c..f0f3414 100644
--- a/lib/XXV/MODULES/HTTPD.pm
+++ b/lib/XXV/MODULES/HTTPD.pm
@@ -31,7 +31,8 @@ my $mime = {
mpeg => ["video/x-mpeg", 'nopack','attachment'],
mov => ["video/quicktime", 'nopack','attachment'],
wmv => ["video/x-ms-wmv", 'nopack','attachment'],
- flv => ["video/x-flv", 'nopack','attachment']
+ flv => ["video/x-flv", 'nopack','attachment'],
+ swf => ["application/x-shockwave-flash", 'nopack','attachment']
};
# This module method must exist for XXV
diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm
index 5c0af3e..74bd08e 100644
--- a/lib/XXV/MODULES/MUSIC.pm
+++ b/lib/XXV/MODULES/MUSIC.pm
@@ -614,7 +614,9 @@ sub list {
};
my $t;
- if($typ eq 'genre') {
+ if($typ eq 'all') {
+
+ } elsif($typ eq 'genre') {
$t = ($self->{mdbh} ? 'tracks.'.$translate->{$typ} : uc($typ));
# caching genres
@@ -632,7 +634,9 @@ sub list {
$t = ($self->{mdbh} ? 'tracks.'.$translate->{$typ} : uc($typ));
}
- if($typ eq 'genre' && $self->{mdbh}) {
+ if($typ eq 'all') {
+ $search = '1';
+ } elsif($typ eq 'genre' && $self->{mdbh}) {
$search = sprintf("%s LIKE ?", $t); #?%
push(@{$term},$text.'%');
} else {
@@ -861,6 +865,9 @@ sub stream {
if($child == 0) {
$self->{SOCK}->close;
$self->{dbh}->{InactiveDestroy} = 1;
+ if($self->{mdbh}) {
+ $self->{mdbh}->{InactiveDestroy} = 1;
+ }
foreach my $file (@uniqu) {
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index c531192..1836416 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -968,6 +968,10 @@ sub _readData {
} elsif ($child > 0) {
} elsif ($child == 0) {
+ my $modM = main::getModule('MUSIC');
+ if($modM->{mdbh}) {
+ $modM->{mdbh}->{InactiveDestroy} = 1;
+ }
$self->{dbh}->{InactiveDestroy} = 1;
my $dbh = $self->{dbh}->clone();
error(sprintf("Couldn't clone database handle : %s",$!)) unless($dbh);
diff --git a/lib/XXV/MODULES/ROBOT.pm b/lib/XXV/MODULES/ROBOT.pm
index 6b732da..4ed0f9b 100644
--- a/lib/XXV/MODULES/ROBOT.pm
+++ b/lib/XXV/MODULES/ROBOT.pm
@@ -117,6 +117,10 @@ sub start {
defined(my $child = fork()) or die "Couldn't fork: $!";
if($child == 0) {
$obj->{dbh}->{InactiveDestroy} = 1;
+ my $modM = main::getModule('MUSIC');
+ if($modM->{mdbh}) {
+ $modM->{mdbh}->{InactiveDestroy} = 1;
+ }
# create a new browser
my $count = 0;
foreach my $args (@{$obj->{jobs}->{$rname}}) {
diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm
index 64353f4..6e7b084 100644
--- a/lib/XXV/MODULES/TIMERS.pm
+++ b/lib/XXV/MODULES/TIMERS.pm
@@ -1469,8 +1469,7 @@ SELECT SQL_CACHE t.id, t.vid, t.pos, t.flags, t.channel, t.priority, t.lifetime,
ABS(UNIX_TIMESTAMP(t.stoptime)-(UNIX_TIMESTAMP(t.eventstarttime) + t.eventduration)) as lag
FROM TIMERS as t, EPG as e
- WHERE (flags & 1)
- AND e.eventid > 0
+ WHERE e.eventid > 0
AND t.eventid = e.eventid
AND (
(((t.flags & 4) = 0) AND e.starttime != t.eventstarttime)
diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm
index 7ad6e64..0d3cfeb 100644
--- a/lib/XXV/OUTPUT/Html.pm
+++ b/lib/XXV/OUTPUT/Html.pm
@@ -194,6 +194,7 @@ sub parseTemplateFile {
debug => 0, # Avoid losing encoding like utf8
verbose => $self->{debug},
user => $self->{USER}->{Name},
+ sid => $self->{USER}->{sid},
charset => $self->{charset},
skin => $self->{SkinName},
# query the current locale
@@ -747,6 +748,10 @@ sub _stream {
}
elsif ($child == 0) {
$self->{dbh}->{InactiveDestroy} = 1;
+ my $modM = main::getModule('MUSIC');
+ if($modM->{mdbh}) {
+ $modM->{mdbh}->{InactiveDestroy} = 1;
+ }
eval
{
local $SIG{'__DIE__'};
@@ -825,6 +830,10 @@ sub proxy {
}
elsif ($child == 0) {
$self->{dbh}->{InactiveDestroy} = 1;
+ my $modM = main::getModule('MUSIC');
+ if($modM->{mdbh}) {
+ $modM->{mdbh}->{InactiveDestroy} = 1;
+ }
eval {
local $SIG{'__DIE__'};
lg(sprintf("Send request %s",$request));