annotate vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Entry.php @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents c75dbcec494b
children 12f9dff5fda9
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@2 3 * @see https://github.com/zendframework/zend-feed for the canonical source repository
Chris@2 4 * @copyright Copyright (c) 2005-2018 Zend Technologies USA Inc. (https://www.zend.com)
Chris@2 5 * @license https://github.com/zendframework/zend-feed/blob/master/LICENSE.md New BSD License
Chris@0 6 */
Chris@0 7
Chris@0 8 namespace Zend\Feed\Reader\Extension\Podcast;
Chris@0 9
Chris@0 10 use Zend\Feed\Reader\Extension;
Chris@0 11
Chris@0 12 class Entry extends Extension\AbstractEntry
Chris@0 13 {
Chris@0 14 /**
Chris@0 15 * Get the entry author
Chris@0 16 *
Chris@0 17 * @return string
Chris@0 18 */
Chris@0 19 public function getCastAuthor()
Chris@0 20 {
Chris@0 21 if (isset($this->data['author'])) {
Chris@0 22 return $this->data['author'];
Chris@0 23 }
Chris@0 24
Chris@0 25 $author = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)');
Chris@0 26
Chris@2 27 if (! $author) {
Chris@0 28 $author = null;
Chris@0 29 }
Chris@0 30
Chris@0 31 $this->data['author'] = $author;
Chris@0 32
Chris@0 33 return $this->data['author'];
Chris@0 34 }
Chris@0 35
Chris@0 36 /**
Chris@0 37 * Get the entry block
Chris@0 38 *
Chris@0 39 * @return string
Chris@0 40 */
Chris@0 41 public function getBlock()
Chris@0 42 {
Chris@0 43 if (isset($this->data['block'])) {
Chris@0 44 return $this->data['block'];
Chris@0 45 }
Chris@0 46
Chris@0 47 $block = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)');
Chris@0 48
Chris@2 49 if (! $block) {
Chris@0 50 $block = null;
Chris@0 51 }
Chris@0 52
Chris@0 53 $this->data['block'] = $block;
Chris@0 54
Chris@0 55 return $this->data['block'];
Chris@0 56 }
Chris@0 57
Chris@0 58 /**
Chris@0 59 * Get the entry duration
Chris@0 60 *
Chris@0 61 * @return string
Chris@0 62 */
Chris@0 63 public function getDuration()
Chris@0 64 {
Chris@0 65 if (isset($this->data['duration'])) {
Chris@0 66 return $this->data['duration'];
Chris@0 67 }
Chris@0 68
Chris@0 69 $duration = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:duration)');
Chris@0 70
Chris@2 71 if (! $duration) {
Chris@0 72 $duration = null;
Chris@0 73 }
Chris@0 74
Chris@0 75 $this->data['duration'] = $duration;
Chris@0 76
Chris@0 77 return $this->data['duration'];
Chris@0 78 }
Chris@0 79
Chris@0 80 /**
Chris@0 81 * Get the entry explicit
Chris@0 82 *
Chris@0 83 * @return string
Chris@0 84 */
Chris@0 85 public function getExplicit()
Chris@0 86 {
Chris@0 87 if (isset($this->data['explicit'])) {
Chris@0 88 return $this->data['explicit'];
Chris@0 89 }
Chris@0 90
Chris@0 91 $explicit = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)');
Chris@0 92
Chris@2 93 if (! $explicit) {
Chris@0 94 $explicit = null;
Chris@0 95 }
Chris@0 96
Chris@0 97 $this->data['explicit'] = $explicit;
Chris@0 98
Chris@0 99 return $this->data['explicit'];
Chris@0 100 }
Chris@0 101
Chris@0 102 /**
Chris@0 103 * Get the entry keywords
Chris@0 104 *
Chris@2 105 * @deprecated since 2.10.0; itunes:keywords is no longer part of the
Chris@2 106 * iTunes podcast RSS specification.
Chris@0 107 * @return string
Chris@0 108 */
Chris@0 109 public function getKeywords()
Chris@0 110 {
Chris@2 111 trigger_error(
Chris@2 112 'itunes:keywords has been deprecated in the iTunes podcast RSS specification,'
Chris@2 113 . ' and should not be relied on.',
Chris@2 114 \E_USER_DEPRECATED
Chris@2 115 );
Chris@2 116
Chris@0 117 if (isset($this->data['keywords'])) {
Chris@0 118 return $this->data['keywords'];
Chris@0 119 }
Chris@0 120
Chris@0 121 $keywords = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)');
Chris@0 122
Chris@2 123 if (! $keywords) {
Chris@0 124 $keywords = null;
Chris@0 125 }
Chris@0 126
Chris@0 127 $this->data['keywords'] = $keywords;
Chris@0 128
Chris@0 129 return $this->data['keywords'];
Chris@0 130 }
Chris@0 131
Chris@0 132 /**
Chris@0 133 * Get the entry subtitle
Chris@0 134 *
Chris@0 135 * @return string
Chris@0 136 */
Chris@0 137 public function getSubtitle()
Chris@0 138 {
Chris@0 139 if (isset($this->data['subtitle'])) {
Chris@0 140 return $this->data['subtitle'];
Chris@0 141 }
Chris@0 142
Chris@0 143 $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)');
Chris@0 144
Chris@2 145 if (! $subtitle) {
Chris@0 146 $subtitle = null;
Chris@0 147 }
Chris@0 148
Chris@0 149 $this->data['subtitle'] = $subtitle;
Chris@0 150
Chris@0 151 return $this->data['subtitle'];
Chris@0 152 }
Chris@0 153
Chris@0 154 /**
Chris@0 155 * Get the entry summary
Chris@0 156 *
Chris@0 157 * @return string
Chris@0 158 */
Chris@0 159 public function getSummary()
Chris@0 160 {
Chris@0 161 if (isset($this->data['summary'])) {
Chris@0 162 return $this->data['summary'];
Chris@0 163 }
Chris@0 164
Chris@0 165 $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)');
Chris@0 166
Chris@2 167 if (! $summary) {
Chris@0 168 $summary = null;
Chris@0 169 }
Chris@0 170
Chris@0 171 $this->data['summary'] = $summary;
Chris@0 172
Chris@0 173 return $this->data['summary'];
Chris@0 174 }
Chris@0 175
Chris@0 176 /**
Chris@2 177 * Get the entry image
Chris@2 178 *
Chris@2 179 * @return string
Chris@2 180 */
Chris@2 181 public function getItunesImage()
Chris@2 182 {
Chris@2 183 if (isset($this->data['image'])) {
Chris@2 184 return $this->data['image'];
Chris@2 185 }
Chris@2 186
Chris@2 187 $image = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)');
Chris@2 188
Chris@2 189 if (! $image) {
Chris@2 190 $image = null;
Chris@2 191 }
Chris@2 192
Chris@2 193 $this->data['image'] = $image;
Chris@2 194
Chris@2 195 return $this->data['image'];
Chris@2 196 }
Chris@2 197
Chris@2 198 /**
Chris@2 199 * Get the episode number
Chris@2 200 *
Chris@2 201 * @return null|int
Chris@2 202 */
Chris@2 203 public function getEpisode()
Chris@2 204 {
Chris@2 205 if (isset($this->data['episode'])) {
Chris@2 206 return $this->data['episode'];
Chris@2 207 }
Chris@2 208
Chris@2 209 $episode = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episode)');
Chris@2 210
Chris@2 211 if (! $episode) {
Chris@2 212 $episode = null;
Chris@2 213 }
Chris@2 214
Chris@2 215 $this->data['episode'] = null === $episode ? $episode : (int) $episode;
Chris@2 216
Chris@2 217 return $this->data['episode'];
Chris@2 218 }
Chris@2 219
Chris@2 220 /**
Chris@2 221 * Get the episode number
Chris@2 222 *
Chris@2 223 * @return string One of "full", "trailer", or "bonus"; defaults to "full".
Chris@2 224 */
Chris@2 225 public function getEpisodeType()
Chris@2 226 {
Chris@2 227 if (isset($this->data['episodeType'])) {
Chris@2 228 return $this->data['episodeType'];
Chris@2 229 }
Chris@2 230
Chris@2 231 $type = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episodeType)');
Chris@2 232
Chris@2 233 if (! $type) {
Chris@2 234 $type = 'full';
Chris@2 235 }
Chris@2 236
Chris@2 237 $this->data['episodeType'] = (string) $type;
Chris@2 238
Chris@2 239 return $this->data['episodeType'];
Chris@2 240 }
Chris@2 241
Chris@2 242 /**
Chris@2 243 * Is the episode closed captioned?
Chris@2 244 *
Chris@2 245 * Returns true only if itunes:isClosedCaptioned has the value 'Yes'.
Chris@2 246 *
Chris@2 247 * @return bool
Chris@2 248 */
Chris@2 249 public function isClosedCaptioned()
Chris@2 250 {
Chris@2 251 if (isset($this->data['isClosedCaptioned'])) {
Chris@2 252 return $this->data['isClosedCaptioned'];
Chris@2 253 }
Chris@2 254
Chris@2 255 $status = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:isClosedCaptioned)');
Chris@2 256
Chris@2 257 $this->data['isClosedCaptioned'] = $status === 'Yes';
Chris@2 258
Chris@2 259 return $this->data['isClosedCaptioned'];
Chris@2 260 }
Chris@2 261
Chris@2 262 /**
Chris@2 263 * Get the season number
Chris@2 264 *
Chris@2 265 * @return null|int
Chris@2 266 */
Chris@2 267 public function getSeason()
Chris@2 268 {
Chris@2 269 if (isset($this->data['season'])) {
Chris@2 270 return $this->data['season'];
Chris@2 271 }
Chris@2 272
Chris@2 273 $season = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:season)');
Chris@2 274
Chris@2 275 if (! $season) {
Chris@2 276 $season = null;
Chris@2 277 }
Chris@2 278
Chris@2 279 $this->data['season'] = null === $season ? $season : (int) $season;
Chris@2 280
Chris@2 281 return $this->data['season'];
Chris@2 282 }
Chris@2 283
Chris@2 284 /**
Chris@0 285 * Register iTunes namespace
Chris@0 286 *
Chris@0 287 */
Chris@0 288 protected function registerNamespaces()
Chris@0 289 {
Chris@0 290 $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
Chris@0 291 }
Chris@0 292 }