1<?php
2
3namespace Moinax\TvDb;
4
5/**
6 * Serie object
7 *
8 * @package TvDb
9 * @author Jérôme Poskin <moinax@gmail.com>
10 */
11class Serie
12{
13    /**
14     * @var int
15     */
16    public $id;
17
18    /**
19     * @var string
20     */
21    public $language;
22
23    /**
24     * @var string
25     */
26    public $name;
27
28    /**
29     * @var string
30     */
31    public $banner;
32
33    /**
34     * @var string
35     */
36    public $overview;
37
38    /**
39     * @var \DateTime|null
40     */
41    public $firstAired;
42
43    /**
44     * @var string
45     */
46    public $imdbId;
47
48    /**
49     * @var array
50     */
51    public $actors = array();
52
53    /**
54     * @var string
55     */
56    public $airsDayOfWeek = '';
57
58    /**
59     * @var string
60     */
61    public $airsTime = '';
62
63    /**
64     * @var string
65     */
66    public $contentRating = '';
67
68    /**
69     * @var array
70     */
71    public $genres = array();
72
73    /**
74     * @var string
75     */
76    public $network = '';
77
78    /**
79     * @var float
80     */
81    public $rating = '';
82
83    /**
84     * @var int
85     */
86    public $ratingCount = 0;
87
88    /**
89     * @var int
90     */
91    public $runtime = 0;
92
93    /**
94     * @var string
95     */
96    public $status = '';
97
98    /**
99     * @var \DateTime
100     */
101    public $added;
102
103    /**
104     * @var int
105     */
106    public $addedBy;
107
108    /**
109     * @var string
110     */
111    public $fanArt = '';
112
113    /**
114     * @var \DateTime
115     */
116    public $lastUpdated;
117
118    /**
119     * @var string
120     */
121    public $poster = '';
122
123    /**
124     * @var string
125     */
126    public $zap2ItId = '';
127
128    /**
129     * @var array
130     */
131    public $aliasNames = array();
132
133    /**
134     * Constructor
135     *
136     * @access public
137     * @param \SimpleXMLElement $data A simplexml element created from thetvdb.com's xml data for the tv show
138     * @return \Moinax\TvDb\Serie
139     */
140    public function __construct($data)
141    {
142        $this->id = (int)$data->id;
143        $this->language = (string)$data->Language;
144        if(isset($data->language)) {
145            $this->language = (string)$data->language;
146        }
147        $this->name = (string)$data->SeriesName;
148        $this->banner = (string)$data->banner;
149        $this->overview = (string)$data->Overview;
150        $this->firstAired = (string)$data->FirstAired !== '' ? new \DateTime((string)$data->FirstAired) : null;
151        $this->imdbId = (string)$data->IMDB_ID;
152        $this->actors = (array)Client::removeEmptyIndexes(explode('|', (string)$data->Actors));
153        $this->airsDayOfWeek = (string)$data->Airs_DayOfWeek;
154        $this->airsTime = (string)$data->Airs_Time;
155        $this->contentRating = (string)$data->ContentRating;
156        $this->genres = (array)Client::removeEmptyIndexes(explode('|', (string)$data->Genre));
157        $this->network = (string)$data->Network;
158        $this->rating = (float)$data->Rating;
159        $this->ratingCount = (int)$data->RatingCount;
160        $this->runtime = (int)$data->Runtime;
161        $this->status = (string)$data->Status;
162        $this->added = new \DateTime((string)$data->added);
163        $this->addedBy = (int)$data->addedBy;
164        $this->fanArt = (string)$data->fanart;
165        $this->lastUpdated = \DateTime::createFromFormat('U', (int)$data->lastupdated);
166        $this->poster = (string)$data->poster;
167        $this->zap2ItId = (string)$data->zap2it_id;
168        if(isset($data->AliasNames)) {
169            $this->aliasNames = (array)Client::removeEmptyIndexes(explode('|', (string)$data->AliasNames));
170        }
171    }
172}
173