From c97faef6d1c0b9388a0dea2c219259623a43ba38 Mon Sep 17 00:00:00 2001 From: Michael Roterman Date: Sat, 8 Feb 2014 22:37:00 +0100 Subject: [PATCH] Fixing up Genres, added missing Repository method. Updated PROGRESS.md to reflect current state. --- PROGRESS.md | 2 +- examples/genres/model/movies.php | 22 ++++++++++++++++++++++ lib/Tmdb/Factory/AbstractFactory.php | 5 +++-- lib/Tmdb/Factory/GenreFactory.php | 15 ++++++++++++++- lib/Tmdb/Repository/GenreRepository.php | 16 ++++++++++++++++ 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 examples/genres/model/movies.php diff --git a/PROGRESS.md b/PROGRESS.md index 19ea8693..de389686 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -20,7 +20,7 @@ The states for now defined as; | Credits | **TODO** | | Discover | Done | | Find | Review | -| Genres | Review | +| Genres | Done | | Jobs | Done | | Keywords | Review | | Lists | Partially Done * | diff --git a/examples/genres/model/movies.php b/examples/genres/model/movies.php new file mode 100644 index 00000000..ef77531b --- /dev/null +++ b/examples/genres/model/movies.php @@ -0,0 +1,22 @@ + + * @copyright (c) 2013, Michael Roterman + * @version 0.0.1 + */ +require_once('../../../vendor/autoload.php'); +require_once('../../../apikey.php'); + +$token = new \Tmdb\ApiToken(TMDB_API_KEY); +$client = new \Tmdb\Client($token); + +$repository = new \Tmdb\Repository\GenreRepository($client); +$genre = $repository->getMovies(18); + +var_dump($genre); \ No newline at end of file diff --git a/lib/Tmdb/Factory/AbstractFactory.php b/lib/Tmdb/Factory/AbstractFactory.php index 5dbe5eec..c583f2f1 100644 --- a/lib/Tmdb/Factory/AbstractFactory.php +++ b/lib/Tmdb/Factory/AbstractFactory.php @@ -60,9 +60,10 @@ protected function createGenericCollection(array $data = array(), $class) * Create a result collection * * @param array $data + * @param string $method * @return GenericCollection */ - public function createResultCollection(array $data = array()) + public function createResultCollection(array $data = array(), $method = 'create') { $collection = new ResultCollection(); @@ -83,7 +84,7 @@ public function createResultCollection(array $data = array()) } foreach($data as $item) { - $collection->add(null, $this->create($item)); + $collection->add(null, $this->$method($item)); } return $collection; diff --git a/lib/Tmdb/Factory/GenreFactory.php b/lib/Tmdb/Factory/GenreFactory.php index 835376ad..51f3f050 100644 --- a/lib/Tmdb/Factory/GenreFactory.php +++ b/lib/Tmdb/Factory/GenreFactory.php @@ -14,17 +14,30 @@ use Tmdb\Model\Collection\Genres; use Tmdb\Model\Genre; +use Tmdb\Model\Movie; class GenreFactory extends AbstractFactory { /** - * {@inheritdoc} + * @param array $data + * + * @return Genre */ public function create(array $data = array()) { return $this->hydrate(new Genre(), $data); } + /** + * @param array $data + * + * @return Movie + */ + public function createMovie(array $data = array()) + { + return $this->hydrate(new Movie(), $data); + } + /** * {@inheritdoc} */ diff --git a/lib/Tmdb/Repository/GenreRepository.php b/lib/Tmdb/Repository/GenreRepository.php index e86e51e3..e201d83d 100644 --- a/lib/Tmdb/Repository/GenreRepository.php +++ b/lib/Tmdb/Repository/GenreRepository.php @@ -14,6 +14,7 @@ use Tmdb\Factory\GenreFactory; use Tmdb\Model\Common\GenericCollection; +use Tmdb\Model\Genre; class GenreRepository extends AbstractRepository { /** @@ -42,6 +43,21 @@ public function loadCollection(array $parameters = array(), array $headers = arr ); } + /** + * Get the list of movies for a particular genre by id. By default, only movies with 10 or more votes are included. + * + * @param $id + * @param array $parameters + * @param array $headers + * @return Genre[] + */ + public function getMovies($id, array $parameters = array(), array $headers = array()) { + return $this->getFactory()->createResultCollection( + $this->getApi()->getMovies($id, $parameters, $headers), + 'createMovie' + ); + } + /** * Create an collection of an array *