From 53aecd1c00f2a3d134cc3be2178d0f2a154d886d Mon Sep 17 00:00:00 2001 From: Yuchen Wang Date: Tue, 29 Nov 2011 16:25:30 -0500 Subject: [PATCH] CC-3130: Disabling a Shoutcast stream causes the service type to revert back to Icecast This happens because we use same field in the db to store whether stream is disabled, and which type is it (Icecast/Shoutcast). Thus when we disable a stream, we forget about the fact that it was set to Shoutcast before. Fixed by separating out the enable/disable state from stream type. Whether a stream is enabled/disabled is stored in new fields sx_enable. Stream type is stored in the old fields, sx_output. --- .../forms/StreamSettingSubForm.php | 2 +- .../application/models/StreamSetting.php | 29 ++++++++----------- airtime_mvc/build/sql/defaultdata.sql | 7 +++-- .../airtime-2.0.0/airtime-upgrade.php | 9 ++++-- .../upgrades/airtime-2.0.0/liquidsoap.cfg.200 | 8 +++-- .../pypo/liquidsoap_scripts/liquidsoap.cfg | 8 +++-- .../pypo/liquidsoap_scripts/ls_script.liq | 6 ++-- 7 files changed, 39 insertions(+), 30 deletions(-) diff --git a/airtime_mvc/application/forms/StreamSettingSubForm.php b/airtime_mvc/application/forms/StreamSettingSubForm.php index c58e596a3..96c348775 100644 --- a/airtime_mvc/application/forms/StreamSettingSubForm.php +++ b/airtime_mvc/application/forms/StreamSettingSubForm.php @@ -43,7 +43,7 @@ class Application_Form_StreamSettingSubForm extends Zend_Form_SubForm{ $enable = new Zend_Form_Element_Checkbox('enable'); $enable->setLabel('Enabled:') - ->setValue($setting[$prefix.'_output'] != 'disabled'?1:0) + ->setValue($setting[$prefix.'_enable'] == 'true' ? 1 : 0) ->setDecorators(array('ViewHelper')); if($disable_all){ $enable->setAttrib("disabled", "disabled"); diff --git a/airtime_mvc/application/models/StreamSetting.php b/airtime_mvc/application/models/StreamSetting.php index d14843d8b..d63ce12f7 100644 --- a/airtime_mvc/application/models/StreamSetting.php +++ b/airtime_mvc/application/models/StreamSetting.php @@ -7,8 +7,8 @@ class Application_Model_StreamSetting { global $CC_DBC; $sql = "SELECT * " ."FROM cc_stream_setting " - ."WHERE keyname LIKE '%_output' " - ."AND value != 'disabled'"; + ."WHERE keyname LIKE '%_enable' " + ."AND value == true"; $rows = $CC_DBC->getAll($sql); $ids = array(); @@ -75,21 +75,18 @@ class Application_Model_StreamSetting { */ public static function setStreamSetting($data){ global $CC_DBC; - foreach($data as $key=>$d){ - if($key == "output_sound_device" || $key == "icecast_vorbis_metadata"){ + foreach ($data as $key=>$d) { + if ($key == "output_sound_device" || $key == "icecast_vorbis_metadata") { $v = $d == 1?"true":"false"; $sql = "UPDATE cc_stream_setting SET value='$v' WHERE keyname='$key'"; $CC_DBC->query($sql); - } - else{ + } else { $temp = explode('_', $key); $prefix = $temp[0]; - foreach($d as $k=>$v){ - $keyname = $prefix."_".$k; - if( $k == 'output'){ - if( $d["enable"] == 0){ - $v = 'disabled'; - } + foreach ($d as $k=>$v) { + $keyname = $prefix . "_" . $k; + if ($k == 'enable') { + $v = $d['enable'] == 1 ? 'true' : 'false'; } $v = trim($v); $sql = "UPDATE cc_stream_setting SET value='$v' WHERE keyname='$keyname'"; @@ -145,17 +142,15 @@ class Application_Model_StreamSetting { public static function getStreamEnabled($stream_id){ global $CC_DBC; - $keyname = "s".$stream_id."_output"; + $keyname = "s" . $stream_id . "_enable"; $sql = "SELECT value FROM cc_stream_setting" ." WHERE keyname = '$keyname'"; $result = $CC_DBC->GetOne($sql); - - if($result == 'disabled'){ + if ($result == 'false') { $result = false; - }else{ + } else { $result = true; } - return $result; } } diff --git a/airtime_mvc/build/sql/defaultdata.sql b/airtime_mvc/build/sql/defaultdata.sql index 4728d4ee6..48fe7efb5 100644 --- a/airtime_mvc/build/sql/defaultdata.sql +++ b/airtime_mvc/build/sql/defaultdata.sql @@ -10,6 +10,7 @@ INSERT INTO cc_pref("keystr", "valstr") VALUES('plan_level', 'disabled'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device', 'false', 'boolean'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('icecast_vorbis_metadata', 'false', 'boolean'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_enable', 'true', 'boolean'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_output', 'icecast', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_type', 'ogg', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_bitrate', '128', 'integer'); @@ -22,7 +23,8 @@ INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_url', 'ht INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_description', 'Airtime Radio! Stream #1', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_genre', 'genre', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_output', 'disabled', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_enable', 'false', 'boolean'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_output', 'icecast', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_type', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_bitrate', '', 'integer'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_host', '', 'string'); @@ -34,7 +36,8 @@ INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_url', '', INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_description', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_genre', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_output', 'disabled', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_enable', 'false', 'boolean'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_output', 'icecast', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_type', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_bitrate', '', 'integer'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_host', '', 'string'); diff --git a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php index c685f763a..9d5bb4a9d 100644 --- a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php @@ -153,7 +153,7 @@ class AirtimeDatabaseUpgrade{ private static function SetDefaultStreamSetting() { global $CC_DBC; - + echo "* Setting up default stream setting".PHP_EOL; $sql = "INSERT INTO cc_pref(keystr, valstr) VALUES('stream_type', 'ogg, mp3'); INSERT INTO cc_pref(keystr, valstr) VALUES('stream_bitrate', '24, 32, 48, 64, 96, 128, 160, 192, 224, 256, 320'); @@ -164,6 +164,7 @@ class AirtimeDatabaseUpgrade{ INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('output_sound_device', 'false', 'boolean'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('icecast_vorbis_metadata', 'false', 'boolean'); + INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_enable', 'true', 'boolean'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_output', 'icecast', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_type', 'ogg', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_bitrate', '128', 'integer'); @@ -176,7 +177,8 @@ class AirtimeDatabaseUpgrade{ INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_description', 'Airtime Radio! Stream #1', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s1_genre', 'genre', 'string'); - INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_output', 'disabled', 'string'); + INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_enable', 'false', 'boolean'); + INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_output', 'icecast', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_type', '', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_bitrate', '', 'integer'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_host', '', 'string'); @@ -188,7 +190,8 @@ class AirtimeDatabaseUpgrade{ INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_description', '', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s2_genre', '', 'string'); - INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_output', 'disabled', 'string'); + INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_enable', 'false', 'boolean'); + INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_output', 'icecast', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_type', '', 'string'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_bitrate', '', 'integer'); INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_host', '', 'string'); diff --git a/install_minimal/upgrades/airtime-2.0.0/liquidsoap.cfg.200 b/install_minimal/upgrades/airtime-2.0.0/liquidsoap.cfg.200 index 28a20a0ce..a96b9146f 100644 --- a/install_minimal/upgrades/airtime-2.0.0/liquidsoap.cfg.200 +++ b/install_minimal/upgrades/airtime-2.0.0/liquidsoap.cfg.200 @@ -7,8 +7,12 @@ ########################################### output_sound_device = false s1_output = "icecast" -s2_output = "disabled" -s3_output = "disabled" +s2_output = "icecast" +s3_output = "icecast" + +s1_enable = true +s2_enable = false +s3_enable = false s1_type = "ogg" s2_type = "ogg" diff --git a/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg b/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg index 48c4db42e..3a72bf5f9 100644 --- a/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg +++ b/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg @@ -7,8 +7,12 @@ ########################################### output_sound_device = false s1_output = "icecast" -s2_output = "disabled" -s3_output = "disabled" +s2_output = "icecast" +s3_output = "icecast" + +s1_enable = true +s2_enable = false +s3_enable = false s1_type = "ogg" s2_type = "ogg" diff --git a/python_apps/pypo/liquidsoap_scripts/ls_script.liq b/python_apps/pypo/liquidsoap_scripts/ls_script.liq index 80b4dca26..c1382be13 100644 --- a/python_apps/pypo/liquidsoap_scripts/ls_script.liq +++ b/python_apps/pypo/liquidsoap_scripts/ls_script.liq @@ -54,18 +54,18 @@ if output_sound_device then ignore(out(s)) end -if s1_output != "disabled" then +if s1_enable == true then #output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s) output_to(s1_output, s1_type, s1_bitrate, s1_host, s1_port, s1_pass, s1_mount, s1_url, s1_description, s1_genre, s1_user, s, "1") end -if s2_output != "disabled" then +if s2_enable == true then #output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s) output_to(s2_output, s2_type, s2_bitrate, s2_host, s2_port, s2_pass, s2_mount, s2_url, s2_description, s2_genre, s2_user, s, "2") end -if s3_output != "disabled" then +if s3_enable == true then #output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s) output_to(s3_output, s3_type, s3_bitrate, s3_host, s3_port, s3_pass, s3_mount, s3_url, s3_description, s3_genre, s3_user, s, "3") end