diff --git a/airtime_mvc/application/modules/rest/controllers/PodcastEpisodesController.php b/airtime_mvc/application/modules/rest/controllers/PodcastEpisodesController.php index 691506f46..b5b42f6b6 100644 --- a/airtime_mvc/application/modules/rest/controllers/PodcastEpisodesController.php +++ b/airtime_mvc/application/modules/rest/controllers/PodcastEpisodesController.php @@ -25,12 +25,6 @@ class Rest_PodcastEpisodesController extends Zend_Rest_Controller return; } try { - - $podcast = PodcastQuery::create()->findPk($id); - if (!$podcast) { - throw new PodcastNotFoundException(); - } - $totalPodcastEpisodesCount = PodcastEpisodesQuery::create() ->filterByDbPodcastId($id) ->count(); @@ -44,21 +38,9 @@ class Rest_PodcastEpisodesController extends Zend_Rest_Controller $sortColumn = $this->_getParam('sort', PodcastEpisodesPeer::ID); $sortDir = $this->_getParam('sort_dir', Criteria::ASC); - $episodes = PodcastEpisodesQuery::create() - ->filterByDbPodcastId($id) - ->setLimit($limit) - ->setOffset($offset) - ->orderBy($sortColumn, $sortDir) - ->find(); - - $episodesArray = array(); - foreach ($episodes as $episode) { - array_push($episodesArray, $episode->toArray(BasePeer::TYPE_FIELDNAME)); - } - $this->getResponse() ->setHttpResponseCode(201) - ->appendBody(json_encode($episodesArray)); + ->appendBody(json_encode($this->_service->getPodcastEpisodes($id, $offset, $limit, $sortColumn, $sortDir))); } catch (PodcastNotFoundException $e) { $this->podcastNotFoundResponse(); diff --git a/airtime_mvc/application/services/PodcastEpisodeService.php b/airtime_mvc/application/services/PodcastEpisodeService.php index 476115840..af4957929 100644 --- a/airtime_mvc/application/services/PodcastEpisodeService.php +++ b/airtime_mvc/application/services/PodcastEpisodeService.php @@ -206,14 +206,35 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir return $episode->toArray(BasePeer::TYPE_FIELDNAME); } - public function getPodcastEpisodes($podcastId) + /** + * Returns an array of Podcast episodes, with the option to paginate the results. + * + * @param $podcastId + * @param int $offset + * @param int $limit + * @param string $sortColumn + * @param string $sortDir + * @return array + * @throws PodcastNotFoundException + */ + public function getPodcastEpisodes($podcastId, + $offset=0, + $limit=10, + $sortColumn=PodcastEpisodesPeer::ID, + $sortDir=Criteria::ASC) { $podcast = PodcastQuery::create()->findPk($podcastId); if (!$podcast) { throw new PodcastNotFoundException(); } - $episodes = PodcastEpisodesQuery::create()->findByDbPodcastId($podcastId); + $episodes = PodcastEpisodesQuery::create() + ->filterByDbPodcastId($podcastId) + ->setLimit($limit) + ->setOffset($offset) + ->orderBy($sortColumn, $sortDir) + ->find(); + $episodesArray = array(); foreach ($episodes as $episode) { array_push($episodesArray, $episode->toArray(BasePeer::TYPE_FIELDNAME));