Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / zendframework / zend-feed / src / Writer / Writer.php
1 <?php
2 /**
3  * Zend Framework (http://framework.zend.com/)
4  *
5  * @link      http://github.com/zendframework/zf2 for the canonical source repository
6  * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
7  * @license   http://framework.zend.com/license/new-bsd New BSD License
8  */
9
10 namespace Zend\Feed\Writer;
11
12 /**
13 */
14 class Writer
15 {
16     /**
17      * Namespace constants
18      */
19     const NAMESPACE_ATOM_03  = 'http://purl.org/atom/ns#';
20     const NAMESPACE_ATOM_10  = 'http://www.w3.org/2005/Atom';
21     const NAMESPACE_RDF      = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
22     const NAMESPACE_RSS_090  = 'http://my.netscape.com/rdf/simple/0.9/';
23     const NAMESPACE_RSS_10   = 'http://purl.org/rss/1.0/';
24
25     /**
26      * Feed type constants
27      */
28     const TYPE_ANY              = 'any';
29     const TYPE_ATOM_03          = 'atom-03';
30     const TYPE_ATOM_10          = 'atom-10';
31     const TYPE_ATOM_ANY         = 'atom';
32     const TYPE_RSS_090          = 'rss-090';
33     const TYPE_RSS_091          = 'rss-091';
34     const TYPE_RSS_091_NETSCAPE = 'rss-091n';
35     const TYPE_RSS_091_USERLAND = 'rss-091u';
36     const TYPE_RSS_092          = 'rss-092';
37     const TYPE_RSS_093          = 'rss-093';
38     const TYPE_RSS_094          = 'rss-094';
39     const TYPE_RSS_10           = 'rss-10';
40     const TYPE_RSS_20           = 'rss-20';
41     const TYPE_RSS_ANY          = 'rss';
42
43     /**
44      * @var ExtensionManagerInterface
45      */
46     protected static $extensionManager = null;
47
48     /**
49      * Array of registered extensions by class postfix (after the base class
50      * name) across four categories - data containers and renderers for entry
51      * and feed levels.
52      *
53      * @var array
54      */
55     protected static $extensions = [
56         'entry'         => [],
57         'feed'          => [],
58         'entryRenderer' => [],
59         'feedRenderer'  => [],
60     ];
61
62     /**
63      * Set plugin loader for use with Extensions
64      *
65      * @param ExtensionManagerInterface
66      */
67     public static function setExtensionManager(ExtensionManagerInterface $extensionManager)
68     {
69         static::$extensionManager = $extensionManager;
70     }
71
72     /**
73      * Get plugin manager for use with Extensions
74      *
75      * @return ExtensionManagerInterface
76      */
77     public static function getExtensionManager()
78     {
79         if (! isset(static::$extensionManager)) {
80             static::setExtensionManager(new ExtensionManager());
81         }
82         return static::$extensionManager;
83     }
84
85     /**
86      * Register an Extension by name
87      *
88      * @param  string $name
89      * @return void
90      * @throws Exception\RuntimeException if unable to resolve Extension class
91      */
92     public static function registerExtension($name)
93     {
94         $feedName          = $name . '\Feed';
95         $entryName         = $name . '\Entry';
96         $feedRendererName  = $name . '\Renderer\Feed';
97         $entryRendererName = $name . '\Renderer\Entry';
98         $manager           = static::getExtensionManager();
99         if (static::isRegistered($name)) {
100             if ($manager->has($feedName)
101                 || $manager->has($entryName)
102                 || $manager->has($feedRendererName)
103                 || $manager->has($entryRendererName)
104             ) {
105                 return;
106             }
107         }
108         if (! $manager->has($feedName)
109             && ! $manager->has($entryName)
110             && ! $manager->has($feedRendererName)
111             && ! $manager->has($entryRendererName)
112         ) {
113             throw new Exception\RuntimeException(sprintf(
114                 'Could not load extension "%s" using Plugin Loader. '
115                 . 'Check prefix paths are configured and extension exists.',
116                 $name
117             ));
118         }
119         if ($manager->has($feedName)) {
120             static::$extensions['feed'][] = $feedName;
121         }
122         if ($manager->has($entryName)) {
123             static::$extensions['entry'][] = $entryName;
124         }
125         if ($manager->has($feedRendererName)) {
126             static::$extensions['feedRenderer'][] = $feedRendererName;
127         }
128         if ($manager->has($entryRendererName)) {
129             static::$extensions['entryRenderer'][] = $entryRendererName;
130         }
131     }
132
133     /**
134      * Is a given named Extension registered?
135      *
136      * @param  string $extensionName
137      * @return bool
138      */
139     public static function isRegistered($extensionName)
140     {
141         $feedName          = $extensionName . '\Feed';
142         $entryName         = $extensionName . '\Entry';
143         $feedRendererName  = $extensionName . '\Renderer\Feed';
144         $entryRendererName = $extensionName . '\Renderer\Entry';
145         if (in_array($feedName, static::$extensions['feed'])
146             || in_array($entryName, static::$extensions['entry'])
147             || in_array($feedRendererName, static::$extensions['feedRenderer'])
148             || in_array($entryRendererName, static::$extensions['entryRenderer'])
149         ) {
150             return true;
151         }
152         return false;
153     }
154
155     /**
156      * Get a list of extensions
157      *
158      * @return array
159      */
160     public static function getExtensions()
161     {
162         return static::$extensions;
163     }
164
165     /**
166      * Reset class state to defaults
167      *
168      * @return void
169      */
170     public static function reset()
171     {
172         static::$extensionManager = null;
173         static::$extensions   = [
174             'entry'         => [],
175             'feed'          => [],
176             'entryRenderer' => [],
177             'feedRenderer'  => [],
178         ];
179     }
180
181     /**
182      * Register core (default) extensions
183      *
184      * @return void
185      */
186     public static function registerCoreExtensions()
187     {
188         static::registerExtension('DublinCore');
189         static::registerExtension('Content');
190         static::registerExtension('Atom');
191         static::registerExtension('Slash');
192         static::registerExtension('WellFormedWeb');
193         static::registerExtension('Threading');
194         static::registerExtension('ITunes');
195     }
196
197     public static function lcfirst($str)
198     {
199         $str[0] = strtolower($str[0]);
200         return $str;
201     }
202 }