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 }