diff --git a/airtime_mvc/application/common/TuneIn.php b/airtime_mvc/application/common/TuneIn.php new file mode 100644 index 000000000..54dedc516 --- /dev/null +++ b/airtime_mvc/application/common/TuneIn.php @@ -0,0 +1,29 @@ +setLastPlayedTime($now); + + // Push metadata to TuneIn + if (Application_Model_Preference::getTuneinEnabled()) { + $filePropelOrm = $file->getPropelOrm(); + $title = urlencode($filePropelOrm->getDbTrackTitle()); + $artist = urlencode($filePropelOrm->getDbArtistName()); + Application_Common_TuneIn::sendMetadataToTunein($title, $artist); + } } } else { // webstream diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index b06a9e1ed..e4615c02d 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -56,14 +56,19 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetStationLogo($imagePath); } - Application_Model_Preference::SetUploadToSoundcloudOption($values["UploadToSoundcloudOption"]); + Application_Model_Preference::setTuneinEnabled($values["enable_tunein"]); + Application_Model_Preference::setTuneinStationId($values["tunein_station_id"]); + Application_Model_Preference::setTuneinPartnerKey($values["tunein_partner_key"]); + Application_Model_Preference::setTuneinPartnerId($values["tunein_partner_id"]); + + /*Application_Model_Preference::SetUploadToSoundcloudOption($values["UploadToSoundcloudOption"]); Application_Model_Preference::SetSoundCloudDownloadbleOption($values["SoundCloudDownloadbleOption"]); Application_Model_Preference::SetSoundCloudUser($values["SoundCloudUser"]); Application_Model_Preference::SetSoundCloudPassword($values["SoundCloudPassword"]); Application_Model_Preference::SetSoundCloudTags($values["SoundCloudTags"]); Application_Model_Preference::SetSoundCloudGenre($values["SoundCloudGenre"]); Application_Model_Preference::SetSoundCloudTrackType($values["SoundCloudTrackType"]); - Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]); + Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]);*/ $this->view->statusMsg = "
". _("Preferences updated.")."
"; $this->view->form = $form; diff --git a/airtime_mvc/application/forms/Preferences.php b/airtime_mvc/application/forms/Preferences.php index 3e5158413..3226d558d 100644 --- a/airtime_mvc/application/forms/Preferences.php +++ b/airtime_mvc/application/forms/Preferences.php @@ -21,6 +21,10 @@ class Application_Form_Preferences extends Zend_Form $this->addSubForm($general_pref, 'preferences_general'); + //tunein form + $tuneinPreferences = new Application_Form_TuneInPreferences(); + $this->addSubForm($tuneinPreferences, 'preferences_tunein'); + $soundcloud_pref = new Application_Form_SoundcloudPreferences(); $this->addSubForm($soundcloud_pref, 'preferences_soundcloud'); diff --git a/airtime_mvc/application/forms/TuneInPreferences.php b/airtime_mvc/application/forms/TuneInPreferences.php new file mode 100644 index 000000000..d97a557e9 --- /dev/null +++ b/airtime_mvc/application/forms/TuneInPreferences.php @@ -0,0 +1,44 @@ +setDecorators(array( + array('ViewScript', array('viewScript' => 'form/preferences_tunein.phtml')) + )); + + $enableTunein = new Zend_Form_Element_Checkbox("enable_tunein"); + $enableTunein->setLabel(_("Push metadata to your station on TuneIn?")); + $enableTunein->setValue(Application_Model_Preference::getTuneinEnabled()); + $enableTunein->setAttrib("class", "block-display"); + $this->addElement($enableTunein); + + // TODO: figure out how to make this validator work + $validator = new ConditionalNotEmpty(array( + 'enable_tunein' => 1 + )); + + $tuneinStationId = new Zend_Form_Element_Text("tunein_station_id"); + $tuneinStationId->setLabel(_("Station ID:")); + $tuneinStationId->setValue(Application_Model_Preference::getTuneinStationId()); + $tuneinStationId->setAttrib("class", "input_text"); + $tuneinStationId->addValidator($validator); + $this->addElement($tuneinStationId); + + $tuneinPartnerKey = new Zend_Form_Element_Text("tunein_partner_key"); + $tuneinPartnerKey->setLabel(_("Partner Key:")); + $tuneinPartnerKey->setValue(Application_Model_Preference::getTuneinPartnerKey()); + $tuneinPartnerKey->setAttrib("class", "input_text"); + $tuneinPartnerKey->addValidator($validator); + $this->addElement($tuneinPartnerKey); + + $tuneinPartnerId = new Zend_Form_Element_Text("tunein_partner_id"); + $tuneinPartnerId->setLabel(_("Partner Id:")); + $tuneinPartnerId->setValue(Application_Model_Preference::getTuneinPartnerId()); + $tuneinPartnerId->setAttrib("class", "input_text"); + $tuneinPartnerId->addValidator($validator); + $this->addElement($tuneinPartnerId); + } +} \ No newline at end of file diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 64263b94c..1387d326b 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -1453,4 +1453,44 @@ class Application_Model_Preference { return self::getValue("provisioning_status"); } + + public static function setTuneinEnabled($value) + { + self::setValue("tunein_enabled", $value); + } + + public static function getTuneinEnabled() + { + return self::getValue("tunein_enabled"); + } + + public static function setTuneinPartnerKey($value) + { + self::setValue("tunein_partner_key", $value); + } + + public static function getTuneinPartnerKey() + { + return self::getValue("tunein_partner_key"); + } + + public static function setTuneinPartnerId($value) + { + self::setValue("tunein_partner_id", $value); + } + + public static function getTuneinPartnerId() + { + return self::getValue("tunein_partner_id"); + } + + public static function setTuneinStationId($value) + { + self::setValue("tunein_station_id", $value); + } + + public static function getTuneinStationId() + { + return self::getValue("tunein_station_id"); + } } diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml index 0ffe1ea9d..9029a5c17 100644 --- a/airtime_mvc/application/views/scripts/form/preferences.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences.phtml @@ -4,6 +4,11 @@ element->getSubform('preferences_general') ?> +

+
+ element->getSubform('preferences_tunein') ?> +
+ element->submit->render() ?> diff --git a/airtime_mvc/application/views/scripts/form/preferences_tunein.phtml b/airtime_mvc/application/views/scripts/form/preferences_tunein.phtml new file mode 100644 index 000000000..a3cdb0d83 --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/preferences_tunein.phtml @@ -0,0 +1,11 @@ +
+
+ element->getElement('enable_tunein')->render() ?> + + element->getElement('tunein_station_id')->render() ?> + + element->getElement('tunein_partner_key')->render() ?> + + element->getElement('tunein_partner_id')->render() ?> +
+
\ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index 1dffe24d2..d1aea4091 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -63,6 +63,30 @@ function setMailServerInputReadonly() { setMsAuthenticationFieldsReadonly(requiresAuthCB); } +function setTuneInSettingsListener() { + var enableTunein = $("#enable_tunein"); + enableTunein.click(function(event){ + setTuneInSettingsReadonly(); + }); +} + +function setTuneInSettingsReadonly() { + var enableTunein = $("#enable_tunein"); + var stationId = $("#tunein_station_id"); + var partnerKey = $("#tunein_partner_key"); + var partnerId = $("#tunein_partner_id"); + + if (enableTunein.is(':checked')) { + stationId.removeAttr("readonly"); + partnerKey.removeAttr("readonly"); + partnerId.removeAttr("readonly"); + } else { + stationId.attr("readonly", "readonly"); + partnerKey.attr("readonly", "readonly"); + partnerId.attr("readonly", "readonly"); + } +} + /* * Enable/disable mail server authentication fields */ @@ -151,4 +175,6 @@ $(document).ready(function() { setConfigureMailServerListener(); setEnableSystemEmailsListener(); setCollapsibleWidgetJsCode(); + setTuneInSettingsReadonly(); + setTuneInSettingsListener(); });