diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index f1d14a489..6c9b0bfd9 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -46,6 +46,7 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetDefaultFadeIn($values["stationDefaultFadeIn"]); Application_Model_Preference::SetDefaultFadeOut($values["stationDefaultFadeOut"]); Application_Model_Preference::SetPodcastAlbumOverride($values["podcastAlbumOverride"]); + Application_Model_Preference::SetPodcastAutoSmartblock($values["podcastAutoSmartblock"]); Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]); Application_Model_Preference::SetAllowedCorsUrls($values["allowedCorsUrls"]); Application_Model_Preference::SetDefaultLocale($values["locale"]); diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index e52b5e5cb..924264751 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -110,13 +110,28 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $podcast_album_override->setValue(Application_Model_Preference::GetPodcastAlbumOverride()); $podcast_album_override->setDescription(_('Enabling this means that podcast tracks will always contain the podcast name in their album field.')); $podcast_album_override->setSeparator(' '); //No
between radio buttons - //$third_party_api->addDecorator(new Zend_Form_Decorator_Label(array('tag' => 'dd', 'class' => 'radio-inline-list'))); $podcast_album_override->addDecorator('HtmlTag', array('tag' => 'dd', 'id'=>"podcastAlbumOverride-element", 'class' => 'radio-inline-list', )); $this->addElement($podcast_album_override); + $podcast_auto_smartblock = new Zend_Form_Element_Radio('podcastAutoSmartblock'); + $podcast_auto_smartblock->setLabel(_('Podcast Automatic Smartblock and Playlist')); + $podcast_auto_smartblock->setMultiOptions(array( + _("Disabled"), + _("Enabled"), + )); + $podcast_auto_smartblock->setValue(Application_Model_Preference::GetPodcastAutoSmartblock()); + $podcast_auto_smartblock->setDescription(_('Enabling this means that a smartblock and playlist matching the newest track of a + podcast will be created when a new podcast is added. This depends upon the Podcast Album Override to work.')); + $podcast_auto_smartblock->setSeparator(' '); //No
between radio buttons + $podcast_auto_smartblock->addDecorator('HtmlTag', array('tag' => 'dd', + 'id'=>"podcastAutoSmartblock-element", + 'class' => 'radio-inline-list', + )); + $this->addElement($podcast_auto_smartblock); + //TODO add and insert Podcast Smartblock and Playlist autogenerate options $third_party_api = new Zend_Form_Element_Radio('thirdPartyApi'); diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 296915956..4dee92700 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -376,6 +376,18 @@ class Application_Model_Preference return $val === '1' ? true : false; } + public static function SetPodcastAutoSmartblock($bool) + { + self::setValue("podcast_auto_smartblock", $bool); + } + + public static function GetPodcastAutoSmartblock() + { + $val = self::getValue("podcast_auto_smartblock"); + return $val === '1' ? true : false; + } + + public static function SetPhone($phone) { self::setValue("phone", $phone); diff --git a/airtime_mvc/application/services/PodcastService.php b/airtime_mvc/application/services/PodcastService.php index f3d9062da..1a57e6515 100644 --- a/airtime_mvc/application/services/PodcastService.php +++ b/airtime_mvc/application/services/PodcastService.php @@ -147,9 +147,10 @@ class Application_Service_PodcastService $importedPodcast->setDbAutoIngest(true); $importedPodcast->save(); - // need to add an if statement to check if this option is enabled - self::createPodcastSmartblockAndPlaylist($podcast); - + // if the autosmartblock and album override are enabled then create a smartblock and playlist matching this podcast via the album name + if (Application_Model_Preference::GetPodcastAutoSmartblock() && Application_Model_Preference::GetPodcastAlbumOverride()) { + self::createPodcastSmartblockAndPlaylist($podcast); + } return $podcast->toArray(BasePeer::TYPE_FIELDNAME); @@ -159,52 +160,52 @@ class Application_Service_PodcastService } } + /** + * @param $podcast + * This will automatically create a smartblock and playlist for this podcast. + */ + public static function createPodcastSmartblockAndPlaylist($podcast) { + $newBl = new Application_Model_Block(); + $newBl->setCreator(Application_Model_User::getCurrentUser()->getId()); + $newBl->setName($podcast->getDbTitle()); + $newBl->setDescription('Auto-generated smartblock for podcast'); + $newBl->saveType('dynamic'); + // limit the smartblock to 1 item + $row = new CcBlockcriteria(); + $row->setDbCriteria('limit'); + $row->setDbModifier('items'); + $row->setDbValue(1); + $row->setDbBlockId($newBl->getId()); + $row->save(); - // need to check that album override is either globally enabled or enabled for this podcast - // also need to check an option - // right here need to create new smartblock and playlist with same name as podcast title - $newBl = new Application_Model_Block(); - $newBl->setCreator(Application_Model_User::getCurrentUser()->getId()); - $newBl->setName($podcast->getDbTitle()); - $newBl->setDescription('Auto-generated smartblock for podcast'); - $newBl->saveType('dynamic'); - // limit the smartblock to 1 item - $row = new CcBlockcriteria(); - $row->setDbCriteria('limit'); - $row->setDbModifier('items'); - $row->setDbValue(1); - $row->setDbBlockId($newBl->getId()); - $row->save(); + // sort so that it is the newest item + $row = new CcBlockcriteria(); + $row->setDbCriteria('sort'); + $row->setDbModifier('N/A'); + $row->setDbValue('newest'); + $row->setDbBlockId($newBl->getId()); + $row->save(); - // sort so that it is the newest item - $row = new CcBlockcriteria(); - $row->setDbCriteria('sort'); - $row->setDbModifier('N/A'); - $row->setDbValue('newest'); - $row->setDbBlockId($newBl->getId()); - $row->save(); + // match the track by ensuring the album title matches the podcast + $row = new CcBlockcriteria(); + $row->setDbCriteria('album_title'); + $row->setDbModifier('is'); + $row->setDbValue($newBl->getName()); + $row->setDbBlockId($newBl->getId()); + $row->save(); - // match the track by ensuring the album title matches the podcast - $row = new CcBlockcriteria(); - $row->setDbCriteria('album_title'); - $row->setDbModifier('is'); - $row->setDbValue($newBl->getName()); - $row->setDbBlockId($newBl->getId()); - $row->save(); + $newPl = new Application_Model_Playlist(); + $newPl->setName($podcast->getDbTitle()); + $newPl->setCreator(Application_Model_User::getCurrentUser()->getId()); + $row = new CcPlaylistcontents(); + $row->setDbBlockId($newBl->getId()); + $row->setDbPlaylistId($newPl->getId()); + $row->setDbType(2); + $row->save(); + } - //TODO create a playlist that contains only this SmartBlock - - $newPl = new Application_Model_Playlist(); - $newPl->setName($podcast->getDbTitle()); - $newPl->setCreator(Application_Model_User::getCurrentUser()->getId()); - $row = new CcPlaylistcontents(); - $row->setDbBlockId($newBl->getId()); - $row->setDbPlaylistId($newPl->getId()); - $row->setDbType(2); - $row->save(); - } public static function createStationPodcast() { diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index 61dbfeabe..8e9c63562 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -33,6 +33,8 @@ element->getElement('podcastAlbumOverride')->render() ?> + element->getElement('podcastAutoSmartblock')->render() ?> + element->getElement('thirdPartyApi')->render() ?> element->getElement('allowedCorsUrls')->render() ?>