X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=vendor%2Fzendframework%2Fzend-feed%2Fsrc%2FWriter%2FExtension%2FITunes%2FFeed.php;fp=vendor%2Fzendframework%2Fzend-feed%2Fsrc%2FWriter%2FExtension%2FITunes%2FFeed.php;h=2acf80fc9be99a841608ba0a1b680122682698d1;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php new file mode 100644 index 000000000..2acf80fc9 --- /dev/null +++ b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php @@ -0,0 +1,360 @@ +stringWrapper = StringUtils::getWrapper($this->encoding); + } + + /** + * Set feed encoding + * + * @param string $enc + * @return Feed + */ + public function setEncoding($enc) + { + $this->stringWrapper = StringUtils::getWrapper($enc); + $this->encoding = $enc; + return $this; + } + + /** + * Get feed encoding + * + * @return string + */ + public function getEncoding() + { + return $this->encoding; + } + + /** + * Set a block value of "yes" or "no". You may also set an empty string. + * + * @param string + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesBlock($value) + { + if (! ctype_alpha($value) && strlen($value) > 0) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only' + . ' contain alphabetic characters'); + } + if ($this->stringWrapper->strlen($value) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only' + . ' contain a maximum of 255 characters'); + } + $this->data['block'] = $value; + return $this; + } + + /** + * Add feed authors + * + * @param array $values + * @return Feed + */ + public function addItunesAuthors(array $values) + { + foreach ($values as $value) { + $this->addItunesAuthor($value); + } + return $this; + } + + /** + * Add feed author + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function addItunesAuthor($value) + { + if ($this->stringWrapper->strlen($value) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "author" may only' + . ' contain a maximum of 255 characters each'); + } + if (! isset($this->data['authors'])) { + $this->data['authors'] = []; + } + $this->data['authors'][] = $value; + return $this; + } + + /** + * Set feed categories + * + * @param array $values + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesCategories(array $values) + { + if (! isset($this->data['categories'])) { + $this->data['categories'] = []; + } + foreach ($values as $key => $value) { + if (! is_array($value)) { + if ($this->stringWrapper->strlen($value) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->data['categories'][] = $value; + } else { + if ($this->stringWrapper->strlen($key) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->data['categories'][$key] = []; + foreach ($value as $val) { + if ($this->stringWrapper->strlen($val) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->data['categories'][$key][] = $val; + } + } + } + return $this; + } + + /** + * Set feed image (icon) + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesImage($value) + { + if (! Uri::factory($value)->isValid()) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "image" may only' + . ' be a valid URI/IRI'); + } + if (! in_array(substr($value, -3), ['jpg', 'png'])) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "image" may only' + . ' use file extension "jpg" or "png" which must be the last three' + . ' characters of the URI (i.e. no query string or fragment)'); + } + $this->data['image'] = $value; + return $this; + } + + /** + * Set feed cumulative duration + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesDuration($value) + { + $value = (string) $value; + if (! ctype_digit($value) + && ! preg_match("/^\d+:[0-5]{1}[0-9]{1}$/", $value) + && ! preg_match("/^\d+:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/", $value) + ) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "duration" may only' + . ' be of a specified [[HH:]MM:]SS format'); + } + $this->data['duration'] = $value; + return $this; + } + + /** + * Set "explicit" flag + * + * @param bool $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesExplicit($value) + { + if (! in_array($value, ['yes', 'no', 'clean'])) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "explicit" may only' + . ' be one of "yes", "no" or "clean"'); + } + $this->data['explicit'] = $value; + return $this; + } + + /** + * Set feed keywords + * + * @param array $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesKeywords(array $value) + { + if (count($value) > 12) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only' + . ' contain a maximum of 12 terms'); + } + $concat = implode(',', $value); + if ($this->stringWrapper->strlen($concat) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only' + . ' have a concatenated length of 255 chars where terms are delimited' + . ' by a comma'); + } + $this->data['keywords'] = $value; + return $this; + } + + /** + * Set new feed URL + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesNewFeedUrl($value) + { + if (! Uri::factory($value)->isValid()) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "newFeedUrl" may only' + . ' be a valid URI/IRI'); + } + $this->data['newFeedUrl'] = $value; + return $this; + } + + /** + * Add feed owners + * + * @param array $values + * @return Feed + */ + public function addItunesOwners(array $values) + { + foreach ($values as $value) { + $this->addItunesOwner($value); + } + return $this; + } + + /** + * Add feed owner + * + * @param array $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function addItunesOwner(array $value) + { + if (! isset($value['name']) || ! isset($value['email'])) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" must' + . ' be an array containing keys "name" and "email"'); + } + if ($this->stringWrapper->strlen($value['name']) > 255 + || $this->stringWrapper->strlen($value['email']) > 255 + ) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" may only' + . ' contain a maximum of 255 characters each for "name" and "email"'); + } + if (! isset($this->data['owners'])) { + $this->data['owners'] = []; + } + $this->data['owners'][] = $value; + return $this; + } + + /** + * Set feed subtitle + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesSubtitle($value) + { + if ($this->stringWrapper->strlen($value) > 255) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "subtitle" may only' + . ' contain a maximum of 255 characters'); + } + $this->data['subtitle'] = $value; + return $this; + } + + /** + * Set feed summary + * + * @param string $value + * @return Feed + * @throws Writer\Exception\InvalidArgumentException + */ + public function setItunesSummary($value) + { + if ($this->stringWrapper->strlen($value) > 4000) { + throw new Writer\Exception\InvalidArgumentException('invalid parameter: "summary" may only' + . ' contain a maximum of 4000 characters'); + } + $this->data['summary'] = $value; + return $this; + } + + /** + * Overloading: proxy to internal setters + * + * @param string $method + * @param array $params + * @return mixed + * @throws Writer\Exception\BadMethodCallException + */ + public function __call($method, array $params) + { + $point = lcfirst(substr($method, 9)); + if (! method_exists($this, 'setItunes' . ucfirst($point)) + && ! method_exists($this, 'addItunes' . ucfirst($point)) + ) { + throw new Writer\Exception\BadMethodCallException( + 'invalid method: ' . $method + ); + } + if (! array_key_exists($point, $this->data) || empty($this->data[$point])) { + return; + } + return $this->data[$point]; + } +}