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