You are here

class Writer in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/zendframework/zend-feed/src/Writer/Writer.php \Zend\Feed\Writer\Writer

Hierarchy

  • class \Zend\Feed\Writer\Writer

Expanded class hierarchy of Writer

File

vendor/zendframework/zend-feed/src/Writer/Writer.php, line 14

Namespace

Zend\Feed\Writer
View source
class Writer {

  /**
   * Namespace constants
   */
  const NAMESPACE_ATOM_03 = 'http://purl.org/atom/ns#';
  const NAMESPACE_ATOM_10 = 'http://www.w3.org/2005/Atom';
  const NAMESPACE_RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
  const NAMESPACE_RSS_090 = 'http://my.netscape.com/rdf/simple/0.9/';
  const NAMESPACE_RSS_10 = 'http://purl.org/rss/1.0/';

  /**
   * Feed type constants
   */
  const TYPE_ANY = 'any';
  const TYPE_ATOM_03 = 'atom-03';
  const TYPE_ATOM_10 = 'atom-10';
  const TYPE_ATOM_ANY = 'atom';
  const TYPE_RSS_090 = 'rss-090';
  const TYPE_RSS_091 = 'rss-091';
  const TYPE_RSS_091_NETSCAPE = 'rss-091n';
  const TYPE_RSS_091_USERLAND = 'rss-091u';
  const TYPE_RSS_092 = 'rss-092';
  const TYPE_RSS_093 = 'rss-093';
  const TYPE_RSS_094 = 'rss-094';
  const TYPE_RSS_10 = 'rss-10';
  const TYPE_RSS_20 = 'rss-20';
  const TYPE_RSS_ANY = 'rss';

  /**
   * @var ExtensionManagerInterface
   */
  protected static $extensionManager = null;

  /**
   * Array of registered extensions by class postfix (after the base class
   * name) across four categories - data containers and renderers for entry
   * and feed levels.
   *
   * @var array
   */
  protected static $extensions = [
    'entry' => [],
    'feed' => [],
    'entryRenderer' => [],
    'feedRenderer' => [],
  ];

  /**
   * Set plugin loader for use with Extensions
   *
   * @param ExtensionManagerInterface
   */
  public static function setExtensionManager(ExtensionManagerInterface $extensionManager) {
    static::$extensionManager = $extensionManager;
  }

  /**
   * Get plugin manager for use with Extensions
   *
   * @return ExtensionManagerInterface
   */
  public static function getExtensionManager() {
    if (!isset(static::$extensionManager)) {
      static::setExtensionManager(new ExtensionManager());
    }
    return static::$extensionManager;
  }

  /**
   * Register an Extension by name
   *
   * @param  string $name
   * @return void
   * @throws Exception\RuntimeException if unable to resolve Extension class
   */
  public static function registerExtension($name) {
    $feedName = $name . '\\Feed';
    $entryName = $name . '\\Entry';
    $feedRendererName = $name . '\\Renderer\\Feed';
    $entryRendererName = $name . '\\Renderer\\Entry';
    $manager = static::getExtensionManager();
    if (static::isRegistered($name)) {
      if ($manager
        ->has($feedName) || $manager
        ->has($entryName) || $manager
        ->has($feedRendererName) || $manager
        ->has($entryRendererName)) {
        return;
      }
    }
    if (!$manager
      ->has($feedName) && !$manager
      ->has($entryName) && !$manager
      ->has($feedRendererName) && !$manager
      ->has($entryRendererName)) {
      throw new Exception\RuntimeException('Could not load extension: ' . $name . 'using Plugin Loader. Check prefix paths are configured and extension exists.');
    }
    if ($manager
      ->has($feedName)) {
      static::$extensions['feed'][] = $feedName;
    }
    if ($manager
      ->has($entryName)) {
      static::$extensions['entry'][] = $entryName;
    }
    if ($manager
      ->has($feedRendererName)) {
      static::$extensions['feedRenderer'][] = $feedRendererName;
    }
    if ($manager
      ->has($entryRendererName)) {
      static::$extensions['entryRenderer'][] = $entryRendererName;
    }
  }

  /**
   * Is a given named Extension registered?
   *
   * @param  string $extensionName
   * @return bool
   */
  public static function isRegistered($extensionName) {
    $feedName = $extensionName . '\\Feed';
    $entryName = $extensionName . '\\Entry';
    $feedRendererName = $extensionName . '\\Renderer\\Feed';
    $entryRendererName = $extensionName . '\\Renderer\\Entry';
    if (in_array($feedName, static::$extensions['feed']) || in_array($entryName, static::$extensions['entry']) || in_array($feedRendererName, static::$extensions['feedRenderer']) || in_array($entryRendererName, static::$extensions['entryRenderer'])) {
      return true;
    }
    return false;
  }

  /**
   * Get a list of extensions
   *
   * @return array
   */
  public static function getExtensions() {
    return static::$extensions;
  }

  /**
   * Reset class state to defaults
   *
   * @return void
   */
  public static function reset() {
    static::$extensionManager = null;
    static::$extensions = [
      'entry' => [],
      'feed' => [],
      'entryRenderer' => [],
      'feedRenderer' => [],
    ];
  }

  /**
   * Register core (default) extensions
   *
   * @return void
   */
  public static function registerCoreExtensions() {
    static::registerExtension('DublinCore');
    static::registerExtension('Content');
    static::registerExtension('Atom');
    static::registerExtension('Slash');
    static::registerExtension('WellFormedWeb');
    static::registerExtension('Threading');
    static::registerExtension('ITunes');
  }
  public static function lcfirst($str) {
    $str[0] = strtolower($str[0]);
    return $str;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Writer::$extensionManager protected static property
Writer::$extensions protected static property Array of registered extensions by class postfix (after the base class name) across four categories - data containers and renderers for entry and feed levels.
Writer::getExtensionManager public static function Get plugin manager for use with Extensions
Writer::getExtensions public static function Get a list of extensions
Writer::isRegistered public static function Is a given named Extension registered?
Writer::lcfirst public static function
Writer::NAMESPACE_ATOM_03 constant Namespace constants
Writer::NAMESPACE_ATOM_10 constant
Writer::NAMESPACE_RDF constant
Writer::NAMESPACE_RSS_090 constant
Writer::NAMESPACE_RSS_10 constant
Writer::registerCoreExtensions public static function Register core (default) extensions
Writer::registerExtension public static function Register an Extension by name
Writer::reset public static function Reset class state to defaults
Writer::setExtensionManager public static function Set plugin loader for use with Extensions
Writer::TYPE_ANY constant Feed type constants
Writer::TYPE_ATOM_03 constant
Writer::TYPE_ATOM_10 constant
Writer::TYPE_ATOM_ANY constant
Writer::TYPE_RSS_090 constant
Writer::TYPE_RSS_091 constant
Writer::TYPE_RSS_091_NETSCAPE constant
Writer::TYPE_RSS_091_USERLAND constant
Writer::TYPE_RSS_092 constant
Writer::TYPE_RSS_093 constant
Writer::TYPE_RSS_094 constant
Writer::TYPE_RSS_10 constant
Writer::TYPE_RSS_20 constant
Writer::TYPE_RSS_ANY constant