Chris@0: data['author'])) { Chris@0: return $this->data['author']; Chris@0: } Chris@0: Chris@0: $author = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)'); Chris@0: Chris@12: if (! $author) { Chris@0: $author = null; Chris@0: } Chris@0: Chris@0: $this->data['author'] = $author; Chris@0: Chris@0: return $this->data['author']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get the entry block Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getBlock() Chris@0: { Chris@0: if (isset($this->data['block'])) { Chris@0: return $this->data['block']; Chris@0: } Chris@0: Chris@0: $block = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)'); Chris@0: Chris@12: if (! $block) { Chris@0: $block = null; Chris@0: } Chris@0: Chris@0: $this->data['block'] = $block; Chris@0: Chris@0: return $this->data['block']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get the entry duration Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getDuration() Chris@0: { Chris@0: if (isset($this->data['duration'])) { Chris@0: return $this->data['duration']; Chris@0: } Chris@0: Chris@0: $duration = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:duration)'); Chris@0: Chris@12: if (! $duration) { Chris@0: $duration = null; Chris@0: } Chris@0: Chris@0: $this->data['duration'] = $duration; Chris@0: Chris@0: return $this->data['duration']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get the entry explicit Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getExplicit() Chris@0: { Chris@0: if (isset($this->data['explicit'])) { Chris@0: return $this->data['explicit']; Chris@0: } Chris@0: Chris@0: $explicit = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)'); Chris@0: Chris@12: if (! $explicit) { Chris@0: $explicit = null; Chris@0: } Chris@0: Chris@0: $this->data['explicit'] = $explicit; Chris@0: Chris@0: return $this->data['explicit']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get the entry keywords Chris@0: * Chris@16: * @deprecated since 2.10.0; itunes:keywords is no longer part of the Chris@16: * iTunes podcast RSS specification. Chris@0: * @return string Chris@0: */ Chris@0: public function getKeywords() Chris@0: { Chris@16: trigger_error( Chris@16: 'itunes:keywords has been deprecated in the iTunes podcast RSS specification,' Chris@16: . ' and should not be relied on.', Chris@16: \E_USER_DEPRECATED Chris@16: ); Chris@16: Chris@0: if (isset($this->data['keywords'])) { Chris@0: return $this->data['keywords']; Chris@0: } Chris@0: Chris@0: $keywords = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)'); Chris@0: Chris@12: if (! $keywords) { Chris@0: $keywords = null; Chris@0: } Chris@0: Chris@0: $this->data['keywords'] = $keywords; Chris@0: Chris@0: return $this->data['keywords']; Chris@0: } Chris@0: Chris@0: /** Chris@18: * Get the entry title Chris@18: * Chris@18: * @return string Chris@18: */ Chris@18: public function getTitle() Chris@18: { Chris@18: if (isset($this->data['title'])) { Chris@18: return $this->data['title']; Chris@18: } Chris@18: Chris@18: $title = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:title)'); Chris@18: Chris@18: if (! $title) { Chris@18: $title = null; Chris@18: } Chris@18: Chris@18: $this->data['title'] = $title; Chris@18: Chris@18: return $this->data['title']; Chris@18: } Chris@18: Chris@18: /** Chris@0: * Get the entry subtitle Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getSubtitle() Chris@0: { Chris@0: if (isset($this->data['subtitle'])) { Chris@0: return $this->data['subtitle']; Chris@0: } Chris@0: Chris@0: $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)'); Chris@0: Chris@12: if (! $subtitle) { Chris@0: $subtitle = null; Chris@0: } Chris@0: Chris@0: $this->data['subtitle'] = $subtitle; Chris@0: Chris@0: return $this->data['subtitle']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get the entry summary Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getSummary() Chris@0: { Chris@0: if (isset($this->data['summary'])) { Chris@0: return $this->data['summary']; Chris@0: } Chris@0: Chris@0: $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)'); Chris@0: Chris@12: if (! $summary) { Chris@0: $summary = null; Chris@0: } Chris@0: Chris@0: $this->data['summary'] = $summary; Chris@0: Chris@0: return $this->data['summary']; Chris@0: } Chris@0: Chris@0: /** Chris@16: * Get the entry image Chris@16: * Chris@16: * @return string Chris@16: */ Chris@16: public function getItunesImage() Chris@16: { Chris@16: if (isset($this->data['image'])) { Chris@16: return $this->data['image']; Chris@16: } Chris@16: Chris@16: $image = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)'); Chris@16: Chris@16: if (! $image) { Chris@16: $image = null; Chris@16: } Chris@16: Chris@16: $this->data['image'] = $image; Chris@16: Chris@16: return $this->data['image']; Chris@16: } Chris@16: Chris@16: /** Chris@16: * Get the episode number Chris@16: * Chris@16: * @return null|int Chris@16: */ Chris@16: public function getEpisode() Chris@16: { Chris@16: if (isset($this->data['episode'])) { Chris@16: return $this->data['episode']; Chris@16: } Chris@16: Chris@16: $episode = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episode)'); Chris@16: Chris@16: if (! $episode) { Chris@16: $episode = null; Chris@16: } Chris@16: Chris@16: $this->data['episode'] = null === $episode ? $episode : (int) $episode; Chris@16: Chris@16: return $this->data['episode']; Chris@16: } Chris@16: Chris@16: /** Chris@16: * Get the episode number Chris@16: * Chris@16: * @return string One of "full", "trailer", or "bonus"; defaults to "full". Chris@16: */ Chris@16: public function getEpisodeType() Chris@16: { Chris@16: if (isset($this->data['episodeType'])) { Chris@16: return $this->data['episodeType']; Chris@16: } Chris@16: Chris@16: $type = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episodeType)'); Chris@16: Chris@16: if (! $type) { Chris@16: $type = 'full'; Chris@16: } Chris@16: Chris@16: $this->data['episodeType'] = (string) $type; Chris@16: Chris@16: return $this->data['episodeType']; Chris@16: } Chris@16: Chris@16: /** Chris@16: * Is the episode closed captioned? Chris@16: * Chris@16: * Returns true only if itunes:isClosedCaptioned has the value 'Yes'. Chris@16: * Chris@16: * @return bool Chris@16: */ Chris@16: public function isClosedCaptioned() Chris@16: { Chris@16: if (isset($this->data['isClosedCaptioned'])) { Chris@16: return $this->data['isClosedCaptioned']; Chris@16: } Chris@16: Chris@16: $status = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:isClosedCaptioned)'); Chris@16: Chris@16: $this->data['isClosedCaptioned'] = $status === 'Yes'; Chris@16: Chris@16: return $this->data['isClosedCaptioned']; Chris@16: } Chris@16: Chris@16: /** Chris@16: * Get the season number Chris@16: * Chris@16: * @return null|int Chris@16: */ Chris@16: public function getSeason() Chris@16: { Chris@16: if (isset($this->data['season'])) { Chris@16: return $this->data['season']; Chris@16: } Chris@16: Chris@16: $season = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:season)'); Chris@16: Chris@16: if (! $season) { Chris@16: $season = null; Chris@16: } Chris@16: Chris@16: $this->data['season'] = null === $season ? $season : (int) $season; Chris@16: Chris@16: return $this->data['season']; Chris@16: } Chris@16: Chris@16: /** Chris@0: * Register iTunes namespace Chris@0: * Chris@0: */ Chris@0: protected function registerNamespaces() Chris@0: { Chris@0: $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); Chris@0: } Chris@0: }