db backup prior to drupal security update
[yaffs-website] / vendor / zendframework / zend-feed / src / Writer / 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\Writer;
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 writer extensions
18  *
19  * Validation checks that we have an Entry, Feed, or Extension\AbstractRenderer.
20  */
21 class ExtensionPluginManager extends AbstractPluginManager implements ExtensionManagerInterface
22 {
23     /**
24      * Aliases for default set of extension classes
25      *
26      * @var array
27      */
28     protected $aliases = [
29         'atomrendererfeed'           => Extension\Atom\Renderer\Feed::class,
30         'atomRendererFeed'           => Extension\Atom\Renderer\Feed::class,
31         'AtomRendererFeed'           => Extension\Atom\Renderer\Feed::class,
32         'AtomRenderer\Feed'          => Extension\Atom\Renderer\Feed::class,
33         'contentrendererentry'       => Extension\Content\Renderer\Entry::class,
34         'contentRendererEntry'       => Extension\Content\Renderer\Entry::class,
35         'ContentRendererEntry'       => Extension\Content\Renderer\Entry::class,
36         'ContentRenderer\Entry'      => Extension\Content\Renderer\Entry::class,
37         'dublincorerendererentry'    => Extension\DublinCore\Renderer\Entry::class,
38         'dublinCoreRendererEntry'    => Extension\DublinCore\Renderer\Entry::class,
39         'DublinCoreRendererEntry'    => Extension\DublinCore\Renderer\Entry::class,
40         'DublinCoreRenderer\Entry'   => Extension\DublinCore\Renderer\Entry::class,
41         'dublincorerendererfeed'     => Extension\DublinCore\Renderer\Feed::class,
42         'dublinCoreRendererFeed'     => Extension\DublinCore\Renderer\Feed::class,
43         'DublinCoreRendererFeed'     => Extension\DublinCore\Renderer\Feed::class,
44         'DublinCoreRenderer\Feed'    => Extension\DublinCore\Renderer\Feed::class,
45         'itunesentry'                => Extension\ITunes\Entry::class,
46         'itunesEntry'                => Extension\ITunes\Entry::class,
47         'iTunesEntry'                => Extension\ITunes\Entry::class,
48         'ItunesEntry'                => Extension\ITunes\Entry::class,
49         'Itunes\Entry'               => Extension\ITunes\Entry::class,
50         'itunesfeed'                 => Extension\ITunes\Feed::class,
51         'itunesFeed'                 => Extension\ITunes\Feed::class,
52         'iTunesFeed'                 => Extension\ITunes\Feed::class,
53         'ItunesFeed'                 => Extension\ITunes\Feed::class,
54         'Itunes\Feed'                => Extension\ITunes\Feed::class,
55         'itunesrendererentry'        => Extension\ITunes\Renderer\Entry::class,
56         'itunesRendererEntry'        => Extension\ITunes\Renderer\Entry::class,
57         'iTunesRendererEntry'        => Extension\ITunes\Renderer\Entry::class,
58         'ItunesRendererEntry'        => Extension\ITunes\Renderer\Entry::class,
59         'ItunesRenderer\Entry'       => Extension\ITunes\Renderer\Entry::class,
60         'itunesrendererfeed'         => Extension\ITunes\Renderer\Feed::class,
61         'itunesRendererFeed'         => Extension\ITunes\Renderer\Feed::class,
62         'iTunesRendererFeed'         => Extension\ITunes\Renderer\Feed::class,
63         'ItunesRendererFeed'         => Extension\ITunes\Renderer\Feed::class,
64         'ItunesRenderer\Feed'        => Extension\ITunes\Renderer\Feed::class,
65         'slashrendererentry'         => Extension\Slash\Renderer\Entry::class,
66         'slashRendererEntry'         => Extension\Slash\Renderer\Entry::class,
67         'SlashRendererEntry'         => Extension\Slash\Renderer\Entry::class,
68         'SlashRenderer\Entry'        => Extension\Slash\Renderer\Entry::class,
69         'threadingrendererentry'     => Extension\Threading\Renderer\Entry::class,
70         'threadingRendererEntry'     => Extension\Threading\Renderer\Entry::class,
71         'ThreadingRendererEntry'     => Extension\Threading\Renderer\Entry::class,
72         'ThreadingRenderer\Entry'    => Extension\Threading\Renderer\Entry::class,
73         'wellformedwebrendererentry' => Extension\WellFormedWeb\Renderer\Entry::class,
74         'wellFormedWebRendererEntry' => Extension\WellFormedWeb\Renderer\Entry::class,
75         'WellFormedWebRendererEntry' => Extension\WellFormedWeb\Renderer\Entry::class,
76         'WellFormedWebRenderer\Entry' => Extension\WellFormedWeb\Renderer\Entry::class,
77     ];
78
79     /**
80      * Factories for default set of extension classes
81      *
82      * @var array
83      */
84     protected $factories = [
85         Extension\Atom\Renderer\Feed::class           => InvokableFactory::class,
86         Extension\Content\Renderer\Entry::class       => InvokableFactory::class,
87         Extension\DublinCore\Renderer\Entry::class    => InvokableFactory::class,
88         Extension\DublinCore\Renderer\Feed::class     => InvokableFactory::class,
89         Extension\ITunes\Entry::class                 => InvokableFactory::class,
90         Extension\ITunes\Feed::class                  => InvokableFactory::class,
91         Extension\ITunes\Renderer\Entry::class        => InvokableFactory::class,
92         Extension\ITunes\Renderer\Feed::class         => InvokableFactory::class,
93         Extension\Slash\Renderer\Entry::class         => InvokableFactory::class,
94         Extension\Threading\Renderer\Entry::class     => InvokableFactory::class,
95         Extension\WellFormedWeb\Renderer\Entry::class => InvokableFactory::class,
96         // Legacy (v2) due to alias resolution; canonical form of resolved
97         // alias is used to look up the factory, while the non-normalized
98         // resolved alias is used as the requested name passed to the factory.
99         'zendfeedwriterextensionatomrendererfeed'           => InvokableFactory::class,
100         'zendfeedwriterextensioncontentrendererentry'       => InvokableFactory::class,
101         'zendfeedwriterextensiondublincorerendererentry'    => InvokableFactory::class,
102         'zendfeedwriterextensiondublincorerendererfeed'     => InvokableFactory::class,
103         'zendfeedwriterextensionitunesentry'                => InvokableFactory::class,
104         'zendfeedwriterextensionitunesfeed'                 => InvokableFactory::class,
105         'zendfeedwriterextensionitunesrendererentry'        => InvokableFactory::class,
106         'zendfeedwriterextensionitunesrendererfeed'         => InvokableFactory::class,
107         'zendfeedwriterextensionslashrendererentry'         => InvokableFactory::class,
108         'zendfeedwriterextensionthreadingrendererentry'     => InvokableFactory::class,
109         'zendfeedwriterextensionwellformedwebrendererentry' => InvokableFactory::class,
110     ];
111
112     /**
113      * Do not share instances (v2)
114      *
115      * @var bool
116      */
117     protected $shareByDefault = false;
118
119     /**
120      * Do not share instances (v3)
121      *
122      * @var bool
123      */
124     protected $sharedByDefault = false;
125
126     /**
127      * Validate the plugin (v3)
128      *
129      * Checks that the extension loaded is of a valid type.
130      *
131      * @param  mixed $plugin
132      * @return void
133      * @throws InvalidServiceException if invalid
134      */
135     public function validate($plugin)
136     {
137         if ($plugin instanceof Extension\AbstractRenderer) {
138             // we're okay
139             return;
140         }
141
142         if ('Feed' == substr(get_class($plugin), -4)) {
143             // we're okay
144             return;
145         }
146
147         if ('Entry' == substr(get_class($plugin), -5)) {
148             // we're okay
149             return;
150         }
151
152         throw new InvalidServiceException(sprintf(
153             'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
154             . 'or the classname must end in "Feed" or "Entry"',
155             (is_object($plugin) ? get_class($plugin) : gettype($plugin)),
156             __NAMESPACE__
157         ));
158     }
159
160     /**
161      * Validate plugin (v2)
162      *
163      * @param mixed $plugin
164      * @return void
165      * @throws Exception\InvalidArgumentException when invalid
166      */
167     public function validatePlugin($plugin)
168     {
169         try {
170             $this->validate($plugin);
171         } catch (InvalidServiceException $e) {
172             throw new Exception\InvalidArgumentException(sprintf(
173                 'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
174                 . 'or the classname must end in "Feed" or "Entry"',
175                 (is_object($plugin) ? get_class($plugin) : gettype($plugin)),
176                 __NAMESPACE__
177             ));
178         }
179     }
180 }