From a2d725f2b904f6653328e028490b0a61cc9ac612 Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Thu, 15 Oct 2015 11:33:09 -0400 Subject: [PATCH] Fix podcast episode ingest --- .../modules/rest/controllers/PodcastController.php | 4 ++-- airtime_mvc/application/services/PodcastService.php | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/modules/rest/controllers/PodcastController.php b/airtime_mvc/application/modules/rest/controllers/PodcastController.php index 03a1cfbde..96b362c48 100644 --- a/airtime_mvc/application/modules/rest/controllers/PodcastController.php +++ b/airtime_mvc/application/modules/rest/controllers/PodcastController.php @@ -6,7 +6,7 @@ class Rest_PodcastController extends Zend_Rest_Controller { /** - * @var Application_Service_PodcastService + * @var Application_Service_PodcastEpisodeService */ protected $_service; @@ -124,7 +124,7 @@ class Rest_PodcastController extends Zend_Rest_Controller // to prevent the user from trying to download them again while Celery is running $episodes = $this->_service->addPodcastEpisodePlaceholders($requestData["podcast"]["id"], $requestData["podcast"]["episodes"]); - //$this->_service->downloadEpisodes($episodes); + $this->_service->downloadEpisodes($episodes); $podcast = Application_Service_PodcastService::updatePodcastFromArray($id, $requestData); $this->getResponse() diff --git a/airtime_mvc/application/services/PodcastService.php b/airtime_mvc/application/services/PodcastService.php index dc6a0ce03..5c1322768 100644 --- a/airtime_mvc/application/services/PodcastService.php +++ b/airtime_mvc/application/services/PodcastService.php @@ -194,15 +194,24 @@ class Application_Service_PodcastService * @return array */ private static function _generatePodcastArray($podcast, $rss) { - $podcastArray = $podcast->toArray(BasePeer::TYPE_FIELDNAME); + $ingestedEpisodes = PodcastEpisodesQuery::create() + ->findByDbPodcastId($podcast->getDbId()); + $episodeIds = array(); + foreach ($ingestedEpisodes as $e) { + array_push($episodeIds, $e->getDbEpisodeGuid()); + } + $podcastArray = $podcast->toArray(BasePeer::TYPE_FIELDNAME); $podcastArray["episodes"] = array(); foreach ($rss->get_items() as $item) { /** @var SimplePie_Item $item */ array_push($podcastArray["episodes"], array( "guid" => $item->get_id(), + "ingested" => in_array($item->get_id(), $episodeIds), "title" => $item->get_title(), - "author" => $item->get_author()->get_name(), + // From the RSS spec best practices: + // 'An item's author element provides the e-mail address of the person who wrote the item' + "author" => $item->get_author()->get_email(), "description" => $item->get_description(), "pub_date" => $item->get_date("Y-m-d H:i:s"), "link" => $item->get_link(),