Linux-DVB-DVBT-Apps-QuartzPVR
view release on metacpan or search on metacpan
install/tpl/quartzpvr-install.pl view on Meta::CPAN
}
}
}
}
## Check for listings
my $got_listings = 0 ;
$sql =<<SQL ;
SELECT * from $settings_href->{DATABASE}.listings LIMIT 1 ;
SQL
($results_aref, $status) = mysql_try_runit($app, $password, $sql) ;
if ($status == 0)
{
if (@$results_aref)
{
$got_listings = 1 ;
}
}
if ($got_listings)
{
print "Already got listings table, checking table versions...\n" ;
foreach my $table (qw/channels iplay listings multirec record recorded schedule/)
{
my $current_ver = $versions{$table} ;
my $latest_ver = $table_versions{$table} ;
if ($current_ver ne $latest_ver)
{
no strict 'refs' ;
print " * Updating table '$table'\n" ;
my $update_fn = "update_table_$table" ;
&$update_fn($app, $settings_href, $current_ver, $latest_ver) ;
}
}
## Ensure versions table exists
$sql = $app->data("versions.sql") ;
$sql =~ s/\%DATABASE\%/$settings_href->{'DATABASE'}/g ;
mysql_runit($app, $password, $sql, "MySQL error while creating versions table") ;
}
else
{
print "Creating new tables ..\n" ;
## Create tables
$sql = $app->data("sql") . $app->data("versions.sql") ;
$sql =~ s/\%DATABASE\%/$settings_href->{'DATABASE'}/g ;
mysql_runit($app, $password, $sql, "MySQL error while creating tables") ;
}
update_table_versions($app, $settings_href, \%table_versions)
}
#----------------------------------------------------------------------
sub update_table_versions
{
my ($app, $settings_href, $latest_versions_href) = @_ ;
my $table = 'versions' ;
my $sql = "" ;
foreach my $item (keys %$latest_versions_href)
{
$sql .= "UPDATE $settings_href->{DATABASE}.$table SET `version`='$latest_versions_href->{$item}' where `item` = '$item';\n" ;
}
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
mysql_runit($app, $password, $sql, "MySQL error while updating table '$table' to set latest versions") ;
}
#----------------------------------------------------------------------
sub update_table_channels
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
my $table = 'channels' ;
if ($existing_version lt '1.01')
{
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
my $sql =<<SQL ;
ALTER TABLE $settings_href->{DATABASE}.$table CHANGE `chan_type` `chan_type` set('tv','radio','hd-tv') NOT NULL DEFAULT 'tv' COMMENT 'TV or Radio' ;
SQL
mysql_runit($app, $password, $sql, "MySQL error while updating table '$table' to version $latest_version") ;
}
}
#----------------------------------------------------------------------
sub update_table_iplay
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
# no op
}
#----------------------------------------------------------------------
sub update_table_listings
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
# no op
}
#----------------------------------------------------------------------
sub update_table_multirec
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
my $table = 'multirec' ;
if ($existing_version eq '0')
{
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
my $sql =<<SQL ;
ALTER TABLE $settings_href->{DATABASE}.$table CHANGE `adapter` `adapter` VARCHAR( 16 ) NOT NULL DEFAULT '0' ;
SQL
mysql_runit($app, $password, $sql, "MySQL error while updating table '$table' to version $latest_version") ;
}
}
#----------------------------------------------------------------------
sub update_table_record
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
my $table = 'record' ;
if ($existing_version eq '0')
{
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
my $sql =<<SQL ;
ALTER TABLE $settings_href->{DATABASE}.$table DROP `episode`, DROP `num_episodes`, DROP `adapter` ;
SQL
mysql_try_runit($app, $password, $sql) ;
}
}
#----------------------------------------------------------------------
sub update_table_recorded
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
my $table = 'recorded' ;
if ($existing_version eq '0')
{
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
my $sql =<<SQL ;
ALTER TABLE $settings_href->{DATABASE}.$table CHANGE `adapter` `adapter` VARCHAR( 16 ) NOT NULL DEFAULT '0' ;
SQL
mysql_runit($app, $password, $sql, "MySQL error while updating table '$table' to version $latest_version") ;
}
}
#----------------------------------------------------------------------
sub update_table_schedule
{
my ($app, $settings_href, $existing_version, $latest_version) = @_ ;
my $table = 'schedule' ;
if ($existing_version eq '0')
{
my $password = $settings_href->{'SQL_ROOT_PASSWORD'} ;
my $sql =<<SQL ;
ALTER TABLE $settings_href->{DATABASE}.$table CHANGE `adapter` `adapter` VARCHAR( 16 ) NOT NULL DEFAULT '0' ;
SQL
mysql_runit($app, $password, $sql, "MySQL error while updating table '$table' to version $latest_version") ;
}
}
#======================================================================
# INSTALL
#======================================================================
#----------------------------------------------------------------------
# Directories
#
sub create_dirs
{
my ($app, $settings_href) = @_ ;
print "Creating directories:\n" ;
my $web_uid = getpwnam($settings_href->{'WEB_USER'}) ;
my $web_gid = getgrnam($settings_href->{'WEB_GROUP'}) ;
my $pvr_uid = getpwnam($settings_href->{'PVR_USER'}) ;
my $pvr_gid = getgrnam($settings_href->{'PVR_GROUP'}) ;
## Web
foreach my $d (qw/PVR_ROOT/)
{
my $dir = $settings_href->{$d} ;
if (! -d $dir)
{
print " * $dir .. ($settings_href->{'WEB_USER'}:$settings_href->{'WEB_GROUP'})\n" ;
if (!mkpath([$dir], 0, 0755))
{
print "ERROR unable to create dir $dir : $!" ;
exit 1 ;
}
chown $web_uid, $web_gid, $dir ;
}
}
## PVR
foreach my $d (qw/VIDEO_DIR VIDEO_TRASH AUDIO_DIR PVR_LOGDIR PVR_HOME/)
{
my $dir = $settings_href->{$d} ;
if (! -d $dir)
{
print " * $dir .. ($settings_href->{'PVR_USER'}:$settings_href->{'PVR_GROUP'})\n" ;
if (!mkpath([$dir], 0, 0755))
( run in 3.087 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )