Mercurial > hg > isophonics-drupal-site
comparison vendor/zendframework/zend-feed/src/Writer/Writer.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
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 } |