annotate vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Entry.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@16 3 * @see https://github.com/zendframework/zend-feed for the canonical source repository
Chris@16 4 * @copyright Copyright (c) 2005-2018 Zend Technologies USA Inc. (https://www.zend.com)
Chris@16 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@12 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@12 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@12 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@12 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@16 105 * @deprecated since 2.10.0; itunes:keywords is no longer part of the
Chris@16 106 * iTunes podcast RSS specification.
Chris@0 107 * @return string
Chris@0 108 */
Chris@0 109 public function getKeywords()
Chris@0 110 {
Chris@16 111 trigger_error(
Chris@16 112 'itunes:keywords has been deprecated in the iTunes podcast RSS specification,'
Chris@16 113 . ' and should not be relied on.',
Chris@16 114 \E_USER_DEPRECATED
Chris@16 115 );
Chris@16 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@12 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@18 133 * Get the entry title
Chris@18 134 *
Chris@18 135 * @return string
Chris@18 136 */
Chris@18 137 public function getTitle()
Chris@18 138 {
Chris@18 139 if (isset($this->data['title'])) {
Chris@18 140 return $this->data['title'];
Chris@18 141 }
Chris@18 142
Chris@18 143 $title = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:title)');
Chris@18 144
Chris@18 145 if (! $title) {
Chris@18 146 $title = null;
Chris@18 147 }
Chris@18 148
Chris@18 149 $this->data['title'] = $title;
Chris@18 150
Chris@18 151 return $this->data['title'];
Chris@18 152 }
Chris@18 153
Chris@18 154 /**
Chris@0 155 * Get the entry subtitle
Chris@0 156 *
Chris@0 157 * @return string
Chris@0 158 */
Chris@0 159 public function getSubtitle()
Chris@0 160 {
Chris@0 161 if (isset($this->data['subtitle'])) {
Chris@0 162 return $this->data['subtitle'];
Chris@0 163 }
Chris@0 164
Chris@0 165 $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)');
Chris@0 166
Chris@12 167 if (! $subtitle) {
Chris@0 168 $subtitle = null;
Chris@0 169 }
Chris@0 170
Chris@0 171 $this->data['subtitle'] = $subtitle;
Chris@0 172
Chris@0 173 return $this->data['subtitle'];
Chris@0 174 }
Chris@0 175
Chris@0 176 /**
Chris@0 177 * Get the entry summary
Chris@0 178 *
Chris@0 179 * @return string
Chris@0 180 */
Chris@0 181 public function getSummary()
Chris@0 182 {
Chris@0 183 if (isset($this->data['summary'])) {
Chris@0 184 return $this->data['summary'];
Chris@0 185 }
Chris@0 186
Chris@0 187 $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)');
Chris@0 188
Chris@12 189 if (! $summary) {
Chris@0 190 $summary = null;
Chris@0 191 }
Chris@0 192
Chris@0 193 $this->data['summary'] = $summary;
Chris@0 194
Chris@0 195 return $this->data['summary'];
Chris@0 196 }
Chris@0 197
Chris@0 198 /**
Chris@16 199 * Get the entry image
Chris@16 200 *
Chris@16 201 * @return string
Chris@16 202 */
Chris@16 203 public function getItunesImage()
Chris@16 204 {
Chris@16 205 if (isset($this->data['image'])) {
Chris@16 206 return $this->data['image'];
Chris@16 207 }
Chris@16 208
Chris@16 209 $image = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)');
Chris@16 210
Chris@16 211 if (! $image) {
Chris@16 212 $image = null;
Chris@16 213 }
Chris@16 214
Chris@16 215 $this->data['image'] = $image;
Chris@16 216
Chris@16 217 return $this->data['image'];
Chris@16 218 }
Chris@16 219
Chris@16 220 /**
Chris@16 221 * Get the episode number
Chris@16 222 *
Chris@16 223 * @return null|int
Chris@16 224 */
Chris@16 225 public function getEpisode()
Chris@16 226 {
Chris@16 227 if (isset($this->data['episode'])) {
Chris@16 228 return $this->data['episode'];
Chris@16 229 }
Chris@16 230
Chris@16 231 $episode = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episode)');
Chris@16 232
Chris@16 233 if (! $episode) {
Chris@16 234 $episode = null;
Chris@16 235 }
Chris@16 236
Chris@16 237 $this->data['episode'] = null === $episode ? $episode : (int) $episode;
Chris@16 238
Chris@16 239 return $this->data['episode'];
Chris@16 240 }
Chris@16 241
Chris@16 242 /**
Chris@16 243 * Get the episode number
Chris@16 244 *
Chris@16 245 * @return string One of "full", "trailer", or "bonus"; defaults to "full".
Chris@16 246 */
Chris@16 247 public function getEpisodeType()
Chris@16 248 {
Chris@16 249 if (isset($this->data['episodeType'])) {
Chris@16 250 return $this->data['episodeType'];
Chris@16 251 }
Chris@16 252
Chris@16 253 $type = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:episodeType)');
Chris@16 254
Chris@16 255 if (! $type) {
Chris@16 256 $type = 'full';
Chris@16 257 }
Chris@16 258
Chris@16 259 $this->data['episodeType'] = (string) $type;
Chris@16 260
Chris@16 261 return $this->data['episodeType'];
Chris@16 262 }
Chris@16 263
Chris@16 264 /**
Chris@16 265 * Is the episode closed captioned?
Chris@16 266 *
Chris@16 267 * Returns true only if itunes:isClosedCaptioned has the value 'Yes'.
Chris@16 268 *
Chris@16 269 * @return bool
Chris@16 270 */
Chris@16 271 public function isClosedCaptioned()
Chris@16 272 {
Chris@16 273 if (isset($this->data['isClosedCaptioned'])) {
Chris@16 274 return $this->data['isClosedCaptioned'];
Chris@16 275 }
Chris@16 276
Chris@16 277 $status = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:isClosedCaptioned)');
Chris@16 278
Chris@16 279 $this->data['isClosedCaptioned'] = $status === 'Yes';
Chris@16 280
Chris@16 281 return $this->data['isClosedCaptioned'];
Chris@16 282 }
Chris@16 283
Chris@16 284 /**
Chris@16 285 * Get the season number
Chris@16 286 *
Chris@16 287 * @return null|int
Chris@16 288 */
Chris@16 289 public function getSeason()
Chris@16 290 {
Chris@16 291 if (isset($this->data['season'])) {
Chris@16 292 return $this->data['season'];
Chris@16 293 }
Chris@16 294
Chris@16 295 $season = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:season)');
Chris@16 296
Chris@16 297 if (! $season) {
Chris@16 298 $season = null;
Chris@16 299 }
Chris@16 300
Chris@16 301 $this->data['season'] = null === $season ? $season : (int) $season;
Chris@16 302
Chris@16 303 return $this->data['season'];
Chris@16 304 }
Chris@16 305
Chris@16 306 /**
Chris@0 307 * Register iTunes namespace
Chris@0 308 *
Chris@0 309 */
Chris@0 310 protected function registerNamespaces()
Chris@0 311 {
Chris@0 312 $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
Chris@0 313 }
Chris@0 314 }