annotate vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Feed.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children 5311817fb629
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@0 3 * Zend Framework (http://framework.zend.com/)
Chris@0 4 *
Chris@0 5 * @link http://github.com/zendframework/zf2 for the canonical source repository
Chris@0 6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
Chris@0 7 * @license http://framework.zend.com/license/new-bsd New BSD License
Chris@0 8 */
Chris@0 9
Chris@0 10 namespace Zend\Feed\Reader\Extension\Podcast;
Chris@0 11
Chris@0 12 use DOMText;
Chris@0 13 use Zend\Feed\Reader\Extension;
Chris@0 14
Chris@0 15 /**
Chris@0 16 */
Chris@0 17 class Feed extends Extension\AbstractFeed
Chris@0 18 {
Chris@0 19 /**
Chris@0 20 * Get the entry author
Chris@0 21 *
Chris@0 22 * @return string
Chris@0 23 */
Chris@0 24 public function getCastAuthor()
Chris@0 25 {
Chris@0 26 if (isset($this->data['author'])) {
Chris@0 27 return $this->data['author'];
Chris@0 28 }
Chris@0 29
Chris@0 30 $author = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)');
Chris@0 31
Chris@0 32 if (!$author) {
Chris@0 33 $author = null;
Chris@0 34 }
Chris@0 35
Chris@0 36 $this->data['author'] = $author;
Chris@0 37
Chris@0 38 return $this->data['author'];
Chris@0 39 }
Chris@0 40
Chris@0 41 /**
Chris@0 42 * Get the entry block
Chris@0 43 *
Chris@0 44 * @return string
Chris@0 45 */
Chris@0 46 public function getBlock()
Chris@0 47 {
Chris@0 48 if (isset($this->data['block'])) {
Chris@0 49 return $this->data['block'];
Chris@0 50 }
Chris@0 51
Chris@0 52 $block = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)');
Chris@0 53
Chris@0 54 if (!$block) {
Chris@0 55 $block = null;
Chris@0 56 }
Chris@0 57
Chris@0 58 $this->data['block'] = $block;
Chris@0 59
Chris@0 60 return $this->data['block'];
Chris@0 61 }
Chris@0 62
Chris@0 63 /**
Chris@0 64 * Get the entry category
Chris@0 65 *
Chris@0 66 * @return array|null
Chris@0 67 */
Chris@0 68 public function getItunesCategories()
Chris@0 69 {
Chris@0 70 if (isset($this->data['categories'])) {
Chris@0 71 return $this->data['categories'];
Chris@0 72 }
Chris@0 73
Chris@0 74 $categoryList = $this->xpath->query($this->getXpathPrefix() . '/itunes:category');
Chris@0 75
Chris@0 76 $categories = [];
Chris@0 77
Chris@0 78 if ($categoryList->length > 0) {
Chris@0 79 foreach ($categoryList as $node) {
Chris@0 80 $children = null;
Chris@0 81
Chris@0 82 if ($node->childNodes->length > 0) {
Chris@0 83 $children = [];
Chris@0 84
Chris@0 85 foreach ($node->childNodes as $childNode) {
Chris@0 86 if (!($childNode instanceof DOMText)) {
Chris@0 87 $children[$childNode->getAttribute('text')] = null;
Chris@0 88 }
Chris@0 89 }
Chris@0 90 }
Chris@0 91
Chris@0 92 $categories[$node->getAttribute('text')] = $children;
Chris@0 93 }
Chris@0 94 }
Chris@0 95
Chris@0 96 if (!$categories) {
Chris@0 97 $categories = null;
Chris@0 98 }
Chris@0 99
Chris@0 100 $this->data['categories'] = $categories;
Chris@0 101
Chris@0 102 return $this->data['categories'];
Chris@0 103 }
Chris@0 104
Chris@0 105 /**
Chris@0 106 * Get the entry explicit
Chris@0 107 *
Chris@0 108 * @return string
Chris@0 109 */
Chris@0 110 public function getExplicit()
Chris@0 111 {
Chris@0 112 if (isset($this->data['explicit'])) {
Chris@0 113 return $this->data['explicit'];
Chris@0 114 }
Chris@0 115
Chris@0 116 $explicit = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)');
Chris@0 117
Chris@0 118 if (!$explicit) {
Chris@0 119 $explicit = null;
Chris@0 120 }
Chris@0 121
Chris@0 122 $this->data['explicit'] = $explicit;
Chris@0 123
Chris@0 124 return $this->data['explicit'];
Chris@0 125 }
Chris@0 126
Chris@0 127 /**
Chris@0 128 * Get the entry image
Chris@0 129 *
Chris@0 130 * @return string
Chris@0 131 */
Chris@0 132 public function getItunesImage()
Chris@0 133 {
Chris@0 134 if (isset($this->data['image'])) {
Chris@0 135 return $this->data['image'];
Chris@0 136 }
Chris@0 137
Chris@0 138 $image = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)');
Chris@0 139
Chris@0 140 if (!$image) {
Chris@0 141 $image = null;
Chris@0 142 }
Chris@0 143
Chris@0 144 $this->data['image'] = $image;
Chris@0 145
Chris@0 146 return $this->data['image'];
Chris@0 147 }
Chris@0 148
Chris@0 149 /**
Chris@0 150 * Get the entry keywords
Chris@0 151 *
Chris@0 152 * @return string
Chris@0 153 */
Chris@0 154 public function getKeywords()
Chris@0 155 {
Chris@0 156 if (isset($this->data['keywords'])) {
Chris@0 157 return $this->data['keywords'];
Chris@0 158 }
Chris@0 159
Chris@0 160 $keywords = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)');
Chris@0 161
Chris@0 162 if (!$keywords) {
Chris@0 163 $keywords = null;
Chris@0 164 }
Chris@0 165
Chris@0 166 $this->data['keywords'] = $keywords;
Chris@0 167
Chris@0 168 return $this->data['keywords'];
Chris@0 169 }
Chris@0 170
Chris@0 171 /**
Chris@0 172 * Get the entry's new feed url
Chris@0 173 *
Chris@0 174 * @return string
Chris@0 175 */
Chris@0 176 public function getNewFeedUrl()
Chris@0 177 {
Chris@0 178 if (isset($this->data['new-feed-url'])) {
Chris@0 179 return $this->data['new-feed-url'];
Chris@0 180 }
Chris@0 181
Chris@0 182 $newFeedUrl = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:new-feed-url)');
Chris@0 183
Chris@0 184 if (!$newFeedUrl) {
Chris@0 185 $newFeedUrl = null;
Chris@0 186 }
Chris@0 187
Chris@0 188 $this->data['new-feed-url'] = $newFeedUrl;
Chris@0 189
Chris@0 190 return $this->data['new-feed-url'];
Chris@0 191 }
Chris@0 192
Chris@0 193 /**
Chris@0 194 * Get the entry owner
Chris@0 195 *
Chris@0 196 * @return string
Chris@0 197 */
Chris@0 198 public function getOwner()
Chris@0 199 {
Chris@0 200 if (isset($this->data['owner'])) {
Chris@0 201 return $this->data['owner'];
Chris@0 202 }
Chris@0 203
Chris@0 204 $owner = null;
Chris@0 205
Chris@0 206 $email = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:email)');
Chris@0 207 $name = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:name)');
Chris@0 208
Chris@0 209 if (!empty($email)) {
Chris@0 210 $owner = $email . (empty($name) ? '' : ' (' . $name . ')');
Chris@0 211 } elseif (!empty($name)) {
Chris@0 212 $owner = $name;
Chris@0 213 }
Chris@0 214
Chris@0 215 if (!$owner) {
Chris@0 216 $owner = null;
Chris@0 217 }
Chris@0 218
Chris@0 219 $this->data['owner'] = $owner;
Chris@0 220
Chris@0 221 return $this->data['owner'];
Chris@0 222 }
Chris@0 223
Chris@0 224 /**
Chris@0 225 * Get the entry subtitle
Chris@0 226 *
Chris@0 227 * @return string
Chris@0 228 */
Chris@0 229 public function getSubtitle()
Chris@0 230 {
Chris@0 231 if (isset($this->data['subtitle'])) {
Chris@0 232 return $this->data['subtitle'];
Chris@0 233 }
Chris@0 234
Chris@0 235 $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)');
Chris@0 236
Chris@0 237 if (!$subtitle) {
Chris@0 238 $subtitle = null;
Chris@0 239 }
Chris@0 240
Chris@0 241 $this->data['subtitle'] = $subtitle;
Chris@0 242
Chris@0 243 return $this->data['subtitle'];
Chris@0 244 }
Chris@0 245
Chris@0 246 /**
Chris@0 247 * Get the entry summary
Chris@0 248 *
Chris@0 249 * @return string
Chris@0 250 */
Chris@0 251 public function getSummary()
Chris@0 252 {
Chris@0 253 if (isset($this->data['summary'])) {
Chris@0 254 return $this->data['summary'];
Chris@0 255 }
Chris@0 256
Chris@0 257 $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)');
Chris@0 258
Chris@0 259 if (!$summary) {
Chris@0 260 $summary = null;
Chris@0 261 }
Chris@0 262
Chris@0 263 $this->data['summary'] = $summary;
Chris@0 264
Chris@0 265 return $this->data['summary'];
Chris@0 266 }
Chris@0 267
Chris@0 268 /**
Chris@0 269 * Register iTunes namespace
Chris@0 270 *
Chris@0 271 */
Chris@0 272 protected function registerNamespaces()
Chris@0 273 {
Chris@0 274 $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
Chris@0 275 }
Chris@0 276 }