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 )