diff --git a/airtime_mvc/application/controllers/IndexController.php b/airtime_mvc/application/controllers/IndexController.php index c9d5333e3..6b4c1b825 100644 --- a/airtime_mvc/application/controllers/IndexController.php +++ b/airtime_mvc/application/controllers/IndexController.php @@ -42,23 +42,14 @@ class IndexController extends Zend_Controller_Action //station feed episodes $stationPodcastId = Application_Model_Preference::getStationPodcastId(); - if (!empty($stationPodcastId)) { - - $podcastEpisodesService = new Application_Service_PodcastEpisodeService(); - $episodes = $podcastEpisodesService->getPodcastEpisodes($stationPodcastId); - foreach ($episodes as $e => $v) { - $episodes[$e]["track_metadata"]["track_title"] = htmlspecialchars($v["track_metadata"]["track_title"], ENT_QUOTES); - $episodes[$e]["track_metadata"]["artist_name"] = htmlspecialchars($v["track_metadata"]["artist_name"], ENT_QUOTES); - } - } else { - // Station podcast does not exist yet - // (creation is implicitly done when a new podcast is created in the dashboard) - // return empty list of episodes - $episodes = []; + $podcastEpisodesService = new Application_Service_PodcastEpisodeService(); + $episodes = $podcastEpisodesService->getPodcastEpisodes($stationPodcastId); + foreach ($episodes as $e => $v) { + $episodes[$e]["CcFiles"]["track_title"] = htmlspecialchars($v["CcFiles"]["track_title"], ENT_QUOTES); + $episodes[$e]["CcFiles"]["artist_name"] = htmlspecialchars($v["CcFiles"]["artist_name"], ENT_QUOTES); } $this->view->episodes = json_encode($episodes); - $this->view->displayRssTab = (!Application_Model_Preference::getStationPodcastPrivacy()); } diff --git a/airtime_mvc/application/controllers/LocaleController.php b/airtime_mvc/application/controllers/LocaleController.php index 48cce2567..de2b8c22e 100644 --- a/airtime_mvc/application/controllers/LocaleController.php +++ b/airtime_mvc/application/controllers/LocaleController.php @@ -120,7 +120,7 @@ class LocaleController extends Zend_Controller_Action "Input must be a number" => _("Input must be a number"), "Input must be in the format: yyyy-mm-dd" => _("Input must be in the format: yyyy-mm-dd"), "Input must be in the format: hh:mm:ss.t" => _("Input must be in the format: hh:mm:ss.t"), - "My Station Podcast" => _("My Station Podcast"), + "Station Podcast" => _("Station Podcast"), //library/plupload.js "You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?" => _("You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?"), diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index 8de93425f..d62a66d52 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -49,7 +49,7 @@ class Application_Form_EditAudioMD extends Zend_Form $this->addElement($album_title); // Description field - $description = new Zend_Form_Element_Text('description'); + $description = new Zend_Form_Element_Textarea('description'); $description->class = 'input_text'; $description->setLabel(_('Description:')) ->setFilters(array('StringTrim')) diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index f41a17b5b..874a75969 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -1518,7 +1518,12 @@ class Application_Model_Preference public static function getStationPodcastId() { - return self::getValue("station_podcast_id"); + // Create the Station podcast if it doesn't exist. + $stationPodcastId = self::getValue("station_podcast_id"); + if (empty($stationPodcastId)) { + $stationPodcastId = Application_Service_PodcastService::createStationPodcast(); + } + return $stationPodcastId; } public static function setStationPodcastId($value) diff --git a/airtime_mvc/application/modules/rest/controllers/PodcastController.php b/airtime_mvc/application/modules/rest/controllers/PodcastController.php index 51013bbe2..7ce031a99 100644 --- a/airtime_mvc/application/modules/rest/controllers/PodcastController.php +++ b/airtime_mvc/application/modules/rest/controllers/PodcastController.php @@ -28,19 +28,12 @@ class Rest_PodcastController extends Zend_Rest_Controller $sortDir = $this->_getParam('sort_dir', Criteria::ASC); $stationPodcastId = Application_Model_Preference::getStationPodcastId(); - if (!empty($stationPodcastId)) { - $query = PodcastQuery::create() - // Don't return the Station podcast - we fetch it separately - ->filterByDbId($stationPodcastId, Criteria::NOT_EQUAL) - ->setLimit($limit) - ->setOffset($offset) - ->orderBy($sortColumn, $sortDir); - } else { - $query = PodcastQuery::create() - ->setLimit($limit) - ->setOffset($offset) - ->orderBy($sortColumn, $sortDir); - } + $query = PodcastQuery::create() + // Don't return the Station podcast - we fetch it separately + ->filterByDbId($stationPodcastId, Criteria::NOT_EQUAL) + ->setLimit($limit) + ->setOffset($offset) + ->orderBy($sortColumn, $sortDir); $queryResult = $query->find(); @@ -89,7 +82,7 @@ class Rest_PodcastController extends Zend_Rest_Controller try { //$requestData = json_decode($this->getRequest()->getRawBody(), true); $requestData = $this->getRequest()->getPost(); - $podcast = PodcastFactory::create($requestData["url"]); + $podcast = Application_Service_PodcastService::createFromFeedUrl($requestData["url"]); $path = 'podcast/podcast.phtml'; $this->view->podcast = $podcast; diff --git a/airtime_mvc/application/services/PodcastEpisodeService.php b/airtime_mvc/application/services/PodcastEpisodeService.php index b9622cfa9..089c9f071 100644 --- a/airtime_mvc/application/services/PodcastEpisodeService.php +++ b/airtime_mvc/application/services/PodcastEpisodeService.php @@ -236,15 +236,15 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir } $sortDir = ($sortDir === "DESC") ? $sortDir = Criteria::DESC : Criteria::ASC; - $isStationPodcast = $podcastId === Application_Model_Preference::getStationPodcastId(); + $isStationPodcast = $podcastId == Application_Model_Preference::getStationPodcastId(); $episodes = PodcastEpisodesQuery::create() - ->joinWithCcFiles('files') ->filterByDbPodcastId($podcastId); if ($isStationPodcast) { $episodes = $episodes->setLimit($limit); } - $episodes = $episodes->setOffset($offset) + $episodes = $episodes->joinWith('PodcastEpisodes.CcFiles') + ->setOffset($offset) ->orderBy($sortColumn, $sortDir) ->find(); @@ -257,7 +257,6 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir foreach ($episodes as $episode) { /** @var PodcastEpisodes $episode */ $episodeArr = $episode->toArray(BasePeer::TYPE_FIELDNAME, true, [], true); - Logging::info($episodeArr); array_push($episodesArray, $episodeArr); } return $episodesArray; diff --git a/airtime_mvc/application/services/PodcastService.php b/airtime_mvc/application/services/PodcastService.php index 67410529a..1d015dc2a 100644 --- a/airtime_mvc/application/services/PodcastService.php +++ b/airtime_mvc/application/services/PodcastService.php @@ -161,6 +161,7 @@ class Application_Service_PodcastService // Set the download key when we create the station podcast // The value is randomly generated in the setter Application_Model_Preference::setStationPodcastDownloadKey(); + return $podcast->getDbId(); } //TODO move this somewhere where it makes sense @@ -243,6 +244,7 @@ class Application_Service_PodcastService if ($podcast) { $podcast->delete(); + // FIXME: I don't think we should be able to delete the station podcast... if ($podcastId == Application_Model_Preference::getStationPodcastId()) { Application_Model_Preference::setStationPodcastId(null); } diff --git a/airtime_mvc/application/services/PublishService.php b/airtime_mvc/application/services/PublishService.php index 50d44161a..a17125ba0 100644 --- a/airtime_mvc/application/services/PublishService.php +++ b/airtime_mvc/application/services/PublishService.php @@ -7,7 +7,7 @@ class Application_Service_PublishService { */ private static $SOURCES = array( "soundcloud" => SOUNDCLOUD, - "station_podcast" => "My Station Podcast" + "station_podcast" => "Station Podcast" ); /** diff --git a/airtime_mvc/application/views/scripts/index/index.phtml b/airtime_mvc/application/views/scripts/index/index.phtml index de7eb20ba..aa448c812 100644 --- a/airtime_mvc/application/views/scripts/index/index.phtml +++ b/airtime_mvc/application/views/scripts/index/index.phtml @@ -59,15 +59,16 @@ document.getElementById(id).width= (newwidth) + "px"; $.each(episodes ?>, function(index, value){ // map mime to format muses recognizes // TODO: this doesn't make a difference - if (value.track_metadata.mime == "audio/mp3") { - value.track_metadata.mime = "mp3"; - } else if (value.track_metadata.mime == "audio/vorbis") { - value.track_metadata.mime = "ogg"; + var metadata = value.CcFiles; + if (metadata.mime == "audio/mp3") { + metadata.mime = "mp3"; + } else if (metadata.mime == "audio/vorbis") { + metadata.mime = "ogg"; } - $("#tab-4").append("