You are here

Entry.php in Zircon Profile 8

File

vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Entry.php
View source
<?php

/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */
namespace Zend\Feed\Writer\Extension\ITunes;

use Zend\Feed\Writer;
use Zend\Feed\Writer\Extension;
use Zend\Stdlib\StringUtils;
use Zend\Stdlib\StringWrapper\StringWrapperInterface;

/**
*/
class Entry {

  /**
   * Array of Feed data for rendering by Extension's renderers
   *
   * @var array
   */
  protected $data = [];

  /**
   * Encoding of all text values
   *
   * @var string
   */
  protected $encoding = 'UTF-8';

  /**
   * The used string wrapper supporting encoding
   *
   * @var StringWrapperInterface
   */
  protected $stringWrapper;
  public function __construct() {
    $this->stringWrapper = StringUtils::getWrapper($this->encoding);
  }

  /**
   * Set feed encoding
   *
   * @param  string $enc
   * @return Entry
   */
  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 Entry
   * @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;
  }

  /**
   * Add authors to itunes entry
   *
   * @param  array $values
   * @return Entry
   */
  public function addItunesAuthors(array $values) {
    foreach ($values as $value) {
      $this
        ->addItunesAuthor($value);
    }
    return $this;
  }

  /**
   * Add author to itunes entry
   *
   * @param  string $value
   * @return Entry
   * @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 duration
   *
   * @param  int $value
   * @return Entry
   * @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 Entry
   * @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 keywords
   *
   * @param  array $value
   * @return Entry
   * @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 subtitle
   *
   * @param  string $value
   * @return Entry
   * @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 summary
   *
   * @param  string $value
   * @return Entry
   * @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 to itunes specific setters
   *
   * @param  string $method
   * @param  array $params
   * @throws Writer\Exception\BadMethodCallException
   * @return mixed
   */
  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];
  }

}

Classes

Namesort descending Description
Entry