Mercurial > hg > isophonics-drupal-site
comparison vendor/zendframework/zend-feed/src/Reader/ExtensionPluginManager.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\Reader; | |
11 | |
12 use Zend\ServiceManager\AbstractPluginManager; | |
13 use Zend\ServiceManager\Exception\InvalidServiceException; | |
14 use Zend\ServiceManager\Factory\InvokableFactory; | |
15 | |
16 /** | |
17 * Plugin manager implementation for feed reader extensions based on the | |
18 * AbstractPluginManager. | |
19 * | |
20 * Validation checks that we have an Extension\AbstractEntry or | |
21 * Extension\AbstractFeed. | |
22 */ | |
23 class ExtensionPluginManager extends AbstractPluginManager | |
24 { | |
25 /** | |
26 * Aliases for default set of extension classes | |
27 * | |
28 * @var array | |
29 */ | |
30 protected $aliases = [ | |
31 'atomentry' => Extension\Atom\Entry::class, | |
32 'atomEntry' => Extension\Atom\Entry::class, | |
33 'AtomEntry' => Extension\Atom\Entry::class, | |
34 'atomfeed' => Extension\Atom\Feed::class, | |
35 'atomFeed' => Extension\Atom\Feed::class, | |
36 'AtomFeed' => Extension\Atom\Feed::class, | |
37 'contententry' => Extension\Content\Entry::class, | |
38 'contentEntry' => Extension\Content\Entry::class, | |
39 'ContentEntry' => Extension\Content\Entry::class, | |
40 'creativecommonsentry' => Extension\CreativeCommons\Entry::class, | |
41 'creativeCommonsEntry' => Extension\CreativeCommons\Entry::class, | |
42 'CreativeCommonsEntry' => Extension\CreativeCommons\Entry::class, | |
43 'creativecommonsfeed' => Extension\CreativeCommons\Feed::class, | |
44 'creativeCommonsFeed' => Extension\CreativeCommons\Feed::class, | |
45 'CreativeCommonsFeed' => Extension\CreativeCommons\Feed::class, | |
46 'dublincoreentry' => Extension\DublinCore\Entry::class, | |
47 'dublinCoreEntry' => Extension\DublinCore\Entry::class, | |
48 'DublinCoreEntry' => Extension\DublinCore\Entry::class, | |
49 'dublincorefeed' => Extension\DublinCore\Feed::class, | |
50 'dublinCoreFeed' => Extension\DublinCore\Feed::class, | |
51 'DublinCoreFeed' => Extension\DublinCore\Feed::class, | |
52 'podcastentry' => Extension\Podcast\Entry::class, | |
53 'podcastEntry' => Extension\Podcast\Entry::class, | |
54 'PodcastEntry' => Extension\Podcast\Entry::class, | |
55 'podcastfeed' => Extension\Podcast\Feed::class, | |
56 'podcastFeed' => Extension\Podcast\Feed::class, | |
57 'PodcastFeed' => Extension\Podcast\Feed::class, | |
58 'slashentry' => Extension\Slash\Entry::class, | |
59 'slashEntry' => Extension\Slash\Entry::class, | |
60 'SlashEntry' => Extension\Slash\Entry::class, | |
61 'syndicationfeed' => Extension\Syndication\Feed::class, | |
62 'syndicationFeed' => Extension\Syndication\Feed::class, | |
63 'SyndicationFeed' => Extension\Syndication\Feed::class, | |
64 'threadentry' => Extension\Thread\Entry::class, | |
65 'threadEntry' => Extension\Thread\Entry::class, | |
66 'ThreadEntry' => Extension\Thread\Entry::class, | |
67 'wellformedwebentry' => Extension\WellFormedWeb\Entry::class, | |
68 'wellFormedWebEntry' => Extension\WellFormedWeb\Entry::class, | |
69 'WellFormedWebEntry' => Extension\WellFormedWeb\Entry::class, | |
70 ]; | |
71 | |
72 /** | |
73 * Factories for default set of extension classes | |
74 * | |
75 * @var array | |
76 */ | |
77 protected $factories = [ | |
78 Extension\Atom\Entry::class => InvokableFactory::class, | |
79 Extension\Atom\Feed::class => InvokableFactory::class, | |
80 Extension\Content\Entry::class => InvokableFactory::class, | |
81 Extension\CreativeCommons\Entry::class => InvokableFactory::class, | |
82 Extension\CreativeCommons\Feed::class => InvokableFactory::class, | |
83 Extension\DublinCore\Entry::class => InvokableFactory::class, | |
84 Extension\DublinCore\Feed::class => InvokableFactory::class, | |
85 Extension\Podcast\Entry::class => InvokableFactory::class, | |
86 Extension\Podcast\Feed::class => InvokableFactory::class, | |
87 Extension\Slash\Entry::class => InvokableFactory::class, | |
88 Extension\Syndication\Feed::class => InvokableFactory::class, | |
89 Extension\Thread\Entry::class => InvokableFactory::class, | |
90 Extension\WellFormedWeb\Entry::class => InvokableFactory::class, | |
91 // Legacy (v2) due to alias resolution; canonical form of resolved | |
92 // alias is used to look up the factory, while the non-normalized | |
93 // resolved alias is used as the requested name passed to the factory. | |
94 'zendfeedreaderextensionatomentry' => InvokableFactory::class, | |
95 'zendfeedreaderextensionatomfeed' => InvokableFactory::class, | |
96 'zendfeedreaderextensioncontententry' => InvokableFactory::class, | |
97 'zendfeedreaderextensioncreativecommonsentry' => InvokableFactory::class, | |
98 'zendfeedreaderextensioncreativecommonsfeed' => InvokableFactory::class, | |
99 'zendfeedreaderextensiondublincoreentry' => InvokableFactory::class, | |
100 'zendfeedreaderextensiondublincorefeed' => InvokableFactory::class, | |
101 'zendfeedreaderextensionpodcastentry' => InvokableFactory::class, | |
102 'zendfeedreaderextensionpodcastfeed' => InvokableFactory::class, | |
103 'zendfeedreaderextensionslashentry' => InvokableFactory::class, | |
104 'zendfeedreaderextensionsyndicationfeed' => InvokableFactory::class, | |
105 'zendfeedreaderextensionthreadentry' => InvokableFactory::class, | |
106 'zendfeedreaderextensionwellformedwebentry' => InvokableFactory::class, | |
107 ]; | |
108 | |
109 /** | |
110 * Do not share instances (v2) | |
111 * | |
112 * @var bool | |
113 */ | |
114 protected $shareByDefault = false; | |
115 | |
116 /** | |
117 * Do not share instances (v3) | |
118 * | |
119 * @var bool | |
120 */ | |
121 protected $sharedByDefault = false; | |
122 | |
123 /** | |
124 * Validate the plugin | |
125 * | |
126 * Checks that the extension loaded is of a valid type. | |
127 * | |
128 * @param mixed $plugin | |
129 * @return void | |
130 * @throws Exception\InvalidArgumentException if invalid | |
131 */ | |
132 public function validate($plugin) | |
133 { | |
134 if ($plugin instanceof Extension\AbstractEntry | |
135 || $plugin instanceof Extension\AbstractFeed | |
136 ) { | |
137 // we're okay | |
138 return; | |
139 } | |
140 | |
141 throw new InvalidServiceException(sprintf( | |
142 'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed ' | |
143 . 'or %s\Extension\AbstractEntry', | |
144 (is_object($plugin) ? get_class($plugin) : gettype($plugin)), | |
145 __NAMESPACE__, | |
146 __NAMESPACE__ | |
147 )); | |
148 } | |
149 | |
150 /** | |
151 * Validate the plugin (v2) | |
152 * | |
153 * @param mixed $plugin | |
154 * @return void | |
155 * @throws Exception\InvalidArgumentException if invalid | |
156 */ | |
157 public function validatePlugin($plugin) | |
158 { | |
159 try { | |
160 $this->validate($plugin); | |
161 } catch (InvalidServiceException $e) { | |
162 throw new Exception\InvalidArgumentException(sprintf( | |
163 'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed ' | |
164 . 'or %s\Extension\AbstractEntry', | |
165 (is_object($plugin) ? get_class($plugin) : gettype($plugin)), | |
166 __NAMESPACE__, | |
167 __NAMESPACE__ | |
168 )); | |
169 } | |
170 } | |
171 } |