[mythtv] [PATCH] Mythweb Delete Channels
Eric Hokanson
pceric at holly.colostate.edu
Tue Apr 27 01:30:50 EDT 2004
I was surprised to see no way to delete channels from within Mythweb so
I wrote a patch to work with the current Channels->Settings. I have two
versions of this patch. I have a simple patch that just removes the
entries from the database. This removes the "important" factors like
showing in the guide and channel surfing, however, it obviously leaves
xmltv to still grab channel info from the internet but the data is so
small I really don't think it matters. Just to see how it would work I
wrote a more advanced patch to also append "not" to your source.xmltv
file but this of course requires additional configuration and touches
more files. Choose which ever feels best.
Eric Hokanson
-------------- next part --------------
diff -ur mythweb-0.14-old\settings_channels.php mythweb-0.14\settings_channels.php
--- mythweb-0.14-old\settings_channels.php Sat Nov 22 02:59:16 2003
+++ mythweb-0.14\settings_channels.php Mon Apr 26 23:16:54 2004
@@ -15,22 +15,28 @@
// Figure out the chanid, or leave
if (!preg_match('/^channum_(\\d+)$/', $key, $match)) continue;
list($match, $chanid) = $match;
- // First, grab values that can be empty
- $query = 'UPDATE channel SET freqid='.escape($_POST['freqid_'.$chanid]) .','
- .'finetune='.escape($_POST['finetune_'.$chanid]) .','
- .'videofilters='.escape($_POST['videofilters_'.$chanid]).','
- .'brightness='.escape($_POST['brightness_'.$chanid]) .','
- .'contrast='.escape($_POST['contrast_'.$chanid]) .','
- .'colour='.escape($_POST['colour_'.$chanid]) .','
- .'hue='.escape($_POST['hue_'.$chanid]) .','
- .'recpriority='.escape($_POST['recpriority_'.$chanid]);
+ // First, delete any unwanted channels
+ if ($_POST['delete_'.$chanid] == "true") {
+ $query = 'DELETE FROM channel';
+ }
+ else {
+ // Not deleting so grab values that can be empty
+ $query = 'UPDATE channel SET freqid='.escape($_POST['freqid_'.$chanid]) .','
+ .'finetune='.escape($_POST['finetune_'.$chanid]) .','
+ .'videofilters='.escape($_POST['videofilters_'.$chanid]).','
+ .'brightness='.escape($_POST['brightness_'.$chanid]) .','
+ .'contrast='.escape($_POST['contrast_'.$chanid]) .','
+ .'colour='.escape($_POST['colour_'.$chanid]) .','
+ .'hue='.escape($_POST['hue_'.$chanid]) .','
+ .'recpriority='.escape($_POST['recpriority_'.$chanid]);
// next, the fields that need to have a value, so we won't change them if they were emptied
- if ($_POST['channum_'.$chanid])
- $query .= ',channum='.escape($_POST['channum_'.$chanid]);
- if ($_POST['callsign_'.$chanid])
- $query .= ',callsign='.escape($_POST['callsign_'.$chanid]);
- if ($_POST['name_'.$chanid])
- $query .= ',name='.escape($_POST['name_'.$chanid]);
+ if ($_POST['channum_'.$chanid])
+ $query .= ',channum='.escape($_POST['channum_'.$chanid]);
+ if ($_POST['callsign_'.$chanid])
+ $query .= ',callsign='.escape($_POST['callsign_'.$chanid]);
+ if ($_POST['name_'.$chanid])
+ $query .= ',name='.escape($_POST['name_'.$chanid]);
+ }
// Submit the query
$result = mysql_query($query.' WHERE chanid='.escape($chanid))
or trigger_error('SQL Error: '.mysql_error(), FATAL);
diff -ur mythweb-0.14-old\themes\Default\settings_channels.php mythweb-0.14\themes\Default\settings_channels.php
--- mythweb-0.14-old\themes\Default\settings_channels.php Sat Nov 22 02:59:16 2003
+++ mythweb-0.14\themes\Default\settings_channels.php Mon Apr 26 12:33:15 2004
@@ -20,6 +20,7 @@
<table width="100%" border="0" cellpadding="4" cellspacing="2" class="list small">
<tr class="menu" align="center">
+ <td width="4%">delete</td>
<td width="4%">sourceid</td>
<td width="5%">channum</td>
<td width="12%">callsign</td>
@@ -27,14 +28,15 @@
<td width="5%">freqid</td>
<td width="5%">finetune</td>
<td width="5%">videofilters</td>
- <td width="8%">brightness</td>
- <td width="8%">contrast</td>
- <td width="8%">colour</td>
- <td width="8%">hue</td>
+ <td width="7%">brightness</td>
+ <td width="7%">contrast</td>
+ <td width="7%">colour</td>
+ <td width="7%">hue</td>
<td width="5%">recpriority</td>
</tr><?php
foreach ($Channels as $channel) {
?><tr class="settings" align="center">
+ <td><input type="checkbox" name="delete_<?php echo $channel['chanid']?>" id="delete_<?php echo $channel['chanid']?>" value="true"></td>
<td><?php echo htmlentities($channel['sourceid'])?></td>
<td><input type="text" size="3" name="channum_<?php echo $channel['chanid']?>" id="channum_<?php echo $channel['chanid']?>" value="<?php echo htmlentities($channel['channum'])?>"></td>
<td><input type="text" size="15" name="callsign_<?php echo $channel['chanid']?>" id="callsign_<?php echo $channel['chanid']?>" value="<?php echo htmlentities($channel['callsign'])?>"></td>
-------------- next part --------------
diff -ur mythweb-0.14-old\config\conf.php mythweb-0.14\config\conf.php
--- mythweb-0.14-old\config\conf.php Tue Jan 27 20:16:42 2004
+++ mythweb-0.14\config\conf.php Mon Apr 26 12:36:16 2004
@@ -35,6 +35,9 @@
// Path to the mythvideo "covers" directory
define('video_img_path', '');
+
+// Path to the mythtv channel file (this must be writable by PHP!)
+ define('channel_source_path', '/home/mythtv/.mythtv/channels.xmltv');
// Movie word
define('movie_word', 'Movie');
diff -ur mythweb-0.14-old\includes\channels.php mythweb-0.14\includes\channels.php
--- mythweb-0.14-old\includes\channels.php Thu Jan 15 21:36:04 2004
+++ mythweb-0.14\includes\channels.php Mon Apr 26 15:23:24 2004
@@ -43,6 +43,27 @@
}
/*
+ delete_channel:
+ Comments out the channel from the /.mythtv/<sourcename>.xmltv file by inserting the word "not " (including the space) in front of the unwanted entry.
+*/
+ function delete_channel($channum,$channame) {
+ $lines = file(channel_info_path);
+ foreach ($lines as $line_num => $line) {
+ if (strpos($line,"channel: $channum $channame") !== false)
+ $lines[$line_num] = "not $line";
+ }
+ if ($handle = fopen(channel_info_path, "w")) {
+ foreach ($lines as $line) {
+ fputs($handle, $line) or trigger_error("Can't write channel file!");
+ }
+ fclose($handle);
+ }
+ else {
+ trigger_error("Can't open channel source file for writing, check permissions and try again.");
+ }
+ }
+
+/*
Channel:
A class to hold all channel-related data
*/
diff -ur mythweb-0.14-old\settings_channels.php mythweb-0.14\settings_channels.php
--- mythweb-0.14-old\settings_channels.php Sat Nov 22 02:59:16 2003
+++ mythweb-0.14\settings_channels.php Mon Apr 26 23:42:33 2004
@@ -15,22 +15,29 @@
// Figure out the chanid, or leave
if (!preg_match('/^channum_(\\d+)$/', $key, $match)) continue;
list($match, $chanid) = $match;
- // First, grab values that can be empty
- $query = 'UPDATE channel SET freqid='.escape($_POST['freqid_'.$chanid]) .','
- .'finetune='.escape($_POST['finetune_'.$chanid]) .','
- .'videofilters='.escape($_POST['videofilters_'.$chanid]).','
- .'brightness='.escape($_POST['brightness_'.$chanid]) .','
- .'contrast='.escape($_POST['contrast_'.$chanid]) .','
- .'colour='.escape($_POST['colour_'.$chanid]) .','
- .'hue='.escape($_POST['hue_'.$chanid]) .','
- .'recpriority='.escape($_POST['recpriority_'.$chanid]);
+ // First, delete any unwanted channels
+ if ($_POST['delete_'.$chanid] == "true") {
+ delete_channel($_POST['channum_'.$chanid],$_POST['callsign_'.$chanid]);
+ $query = 'DELETE FROM channel';
+ }
+ else {
+ // Not deleting so grab values that can be empty
+ $query = 'UPDATE channel SET freqid='.escape($_POST['freqid_'.$chanid]) .','
+ .'finetune='.escape($_POST['finetune_'.$chanid]) .','
+ .'videofilters='.escape($_POST['videofilters_'.$chanid]).','
+ .'brightness='.escape($_POST['brightness_'.$chanid]) .','
+ .'contrast='.escape($_POST['contrast_'.$chanid]) .','
+ .'colour='.escape($_POST['colour_'.$chanid]) .','
+ .'hue='.escape($_POST['hue_'.$chanid]) .','
+ .'recpriority='.escape($_POST['recpriority_'.$chanid]);
// next, the fields that need to have a value, so we won't change them if they were emptied
- if ($_POST['channum_'.$chanid])
- $query .= ',channum='.escape($_POST['channum_'.$chanid]);
- if ($_POST['callsign_'.$chanid])
- $query .= ',callsign='.escape($_POST['callsign_'.$chanid]);
- if ($_POST['name_'.$chanid])
- $query .= ',name='.escape($_POST['name_'.$chanid]);
+ if ($_POST['channum_'.$chanid])
+ $query .= ',channum='.escape($_POST['channum_'.$chanid]);
+ if ($_POST['callsign_'.$chanid])
+ $query .= ',callsign='.escape($_POST['callsign_'.$chanid]);
+ if ($_POST['name_'.$chanid])
+ $query .= ',name='.escape($_POST['name_'.$chanid]);
+ }
// Submit the query
$result = mysql_query($query.' WHERE chanid='.escape($chanid))
or trigger_error('SQL Error: '.mysql_error(), FATAL);
diff -ur mythweb-0.14-old\themes\Default\settings_channels.php mythweb-0.14\themes\Default\settings_channels.php
--- mythweb-0.14-old\themes\Default\settings_channels.php Sat Nov 22 02:59:16 2003
+++ mythweb-0.14\themes\Default\settings_channels.php Mon Apr 26 12:33:15 2004
@@ -20,6 +20,7 @@
<table width="100%" border="0" cellpadding="4" cellspacing="2" class="list small">
<tr class="menu" align="center">
+ <td width="4%">delete</td>
<td width="4%">sourceid</td>
<td width="5%">channum</td>
<td width="12%">callsign</td>
@@ -27,14 +28,15 @@
<td width="5%">freqid</td>
<td width="5%">finetune</td>
<td width="5%">videofilters</td>
- <td width="8%">brightness</td>
- <td width="8%">contrast</td>
- <td width="8%">colour</td>
- <td width="8%">hue</td>
+ <td width="7%">brightness</td>
+ <td width="7%">contrast</td>
+ <td width="7%">colour</td>
+ <td width="7%">hue</td>
<td width="5%">recpriority</td>
</tr><?php
foreach ($Channels as $channel) {
?><tr class="settings" align="center">
+ <td><input type="checkbox" name="delete_<?php echo $channel['chanid']?>" id="delete_<?php echo $channel['chanid']?>" value="true"></td>
<td><?php echo htmlentities($channel['sourceid'])?></td>
<td><input type="text" size="3" name="channum_<?php echo $channel['chanid']?>" id="channum_<?php echo $channel['chanid']?>" value="<?php echo htmlentities($channel['channum'])?>"></td>
<td><input type="text" size="15" name="callsign_<?php echo $channel['chanid']?>" id="callsign_<?php echo $channel['chanid']?>" value="<?php echo htmlentities($channel['callsign'])?>"></td>
More information about the mythtv-dev
mailing list