1: <?php
2: namespace Duyplus\TMDBApi\Classes\Data;
3:
4: use Duyplus\TMDBApi\Classes\Data\Company;
5: use Duyplus\TMDBApi\Classes\Data\Genre;
6: use Duyplus\TMDBApi\Classes\Data\Person;
7: use Duyplus\TMDBApi\Classes\Data\Review;
8:
9: class Movie extends ApiBaseObject
10: {
11: // Media Type
12: const MEDIA_TYPE_MOVIE = 'movie';
13:
14: /**
15: * Get the Movie's title
16: *
17: * @return string
18: */
19: public function getTitle()
20: {
21: return $this->crawl['title'];
22: }
23:
24: /**
25: * Get the Movie's tagline
26: *
27: * @return string
28: */
29: public function getTagline()
30: {
31: return $this->crawl['tagline'];
32: }
33:
34: /**
35: * Get the Movie Director's IDs
36: *
37: * @return array
38: */
39: public function getDirectorIds()
40: {
41: $director_ids = [];
42:
43: $crew = $this->crawl['credits']['crew'];
44:
45: foreach ($crew as $crew_member) {
46: if ($crew_member['job'] === 'Director') {
47: $director_ids[] = $crew_member['id'];
48: }
49: }
50:
51: return $director_ids;
52: }
53:
54: /**
55: * Get the Trailers
56: *
57: * @return array
58: */
59: public function getTrailers()
60: {
61: if (isset($this->crawl['trailers'])) {
62: return $this->crawl['trailers'];
63: }
64:
65: return [];
66: }
67:
68: /**
69: * Get the Trailer
70: *
71: * @return string
72: */
73: public function getTrailer()
74: {
75: $trailers = $this->getTrailers();
76:
77: if (count($trailers) > 0) {
78: $trailer = $trailers[0];
79: return $trailer['url'];
80: }
81:
82: return '';
83: }
84:
85: /**
86: * Get the Movie's Genres
87: *
88: * @return Genre[]
89: */
90: public function getGenres()
91: {
92: $genres = [];
93:
94: foreach ($this->crawl['genres'] as $data) {
95: $genres[] = new Genre($data);
96: }
97:
98: return $genres;
99: }
100:
101: /**
102: * Get the Movie's Reviews
103: *
104: * @return Review[]
105: */
106: public function getReviews()
107: {
108: $reviews = [];
109:
110: if (!empty($this->crawl['reviews']['results'])) {
111: foreach ($this->crawl['reviews']['results'] as $data) {
112: $reviews[] = new Review($data);
113: }
114: }
115:
116: return $reviews;
117: }
118:
119: /**
120: * Get the Movie's Companies
121: *
122: * @return Company[]
123: */
124: public function getCompanies()
125: {
126: $companies = [];
127:
128: if (!empty($this->crawl['production_companies'])) {
129: foreach ($this->crawl['production_companies'] as $data) {
130: $companies[] = new Company($data);
131: }
132: }
133:
134: return $companies;
135: }
136:
137: /**
138: * Set the TMDB API
139: *
140: * @param \Duyplus\TMDBApi\TMDB $tmdb TMDB API Object
141: */
142: public function setAPI($tmdb)
143: {
144: $this->_tmdb = $tmdb;
145: }
146:
147: /**
148: * Get the Movie's Cast
149: *
150: * @return Person[]
151: */
152: public function getCast()
153: {
154: $cast = [];
155:
156: foreach ($this->crawl['credits']['cast'] as $data) {
157: $cast[] = new Person($data);
158: }
159:
160: return $cast;
161: }
162:
163: /**
164: * Get the JSON representation of the Movie
165: *
166: * @return string
167: */
168: public function getJSON()
169: {
170: return json_encode($this->crawl, JSON_PRETTY_PRINT);
171: }
172:
173: /**
174: * Get the Media Type
175: *
176: * @return string
177: */
178: public function getMediaType()
179: {
180: return self::MEDIA_TYPE_MOVIE;
181: }
182: }