Chris@0
|
1 <?php
|
Chris@0
|
2 /**
|
Chris@0
|
3 * Zend Framework (http://framework.zend.com/)
|
Chris@0
|
4 *
|
Chris@0
|
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
|
Chris@0
|
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
Chris@0
|
7 * @license http://framework.zend.com/license/new-bsd New BSD License
|
Chris@0
|
8 */
|
Chris@0
|
9
|
Chris@0
|
10 namespace Zend\Feed\Writer;
|
Chris@0
|
11
|
Chris@12
|
12 use Zend\Feed\Writer\Exception\InvalidArgumentException;
|
Chris@12
|
13
|
Chris@0
|
14 class StandaloneExtensionManager implements ExtensionManagerInterface
|
Chris@0
|
15 {
|
Chris@0
|
16 private $extensions = [
|
Chris@0
|
17 'Atom\Renderer\Feed' => Extension\Atom\Renderer\Feed::class,
|
Chris@0
|
18 'Content\Renderer\Entry' => Extension\Content\Renderer\Entry::class,
|
Chris@0
|
19 'DublinCore\Renderer\Entry' => Extension\DublinCore\Renderer\Entry::class,
|
Chris@0
|
20 'DublinCore\Renderer\Feed' => Extension\DublinCore\Renderer\Feed::class,
|
Chris@0
|
21 'ITunes\Entry' => Extension\ITunes\Entry::class,
|
Chris@0
|
22 'ITunes\Feed' => Extension\ITunes\Feed::class,
|
Chris@0
|
23 'ITunes\Renderer\Entry' => Extension\ITunes\Renderer\Entry::class,
|
Chris@0
|
24 'ITunes\Renderer\Feed' => Extension\ITunes\Renderer\Feed::class,
|
Chris@0
|
25 'Slash\Renderer\Entry' => Extension\Slash\Renderer\Entry::class,
|
Chris@0
|
26 'Threading\Renderer\Entry' => Extension\Threading\Renderer\Entry::class,
|
Chris@0
|
27 'WellFormedWeb\Renderer\Entry' => Extension\WellFormedWeb\Renderer\Entry::class,
|
Chris@0
|
28 ];
|
Chris@0
|
29
|
Chris@0
|
30 /**
|
Chris@0
|
31 * Do we have the extension?
|
Chris@0
|
32 *
|
Chris@0
|
33 * @param string $extension
|
Chris@0
|
34 * @return bool
|
Chris@0
|
35 */
|
Chris@0
|
36 public function has($extension)
|
Chris@0
|
37 {
|
Chris@0
|
38 return array_key_exists($extension, $this->extensions);
|
Chris@0
|
39 }
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * Retrieve the extension
|
Chris@0
|
43 *
|
Chris@0
|
44 * @param string $extension
|
Chris@0
|
45 * @return mixed
|
Chris@0
|
46 */
|
Chris@0
|
47 public function get($extension)
|
Chris@0
|
48 {
|
Chris@0
|
49 $class = $this->extensions[$extension];
|
Chris@0
|
50 return new $class();
|
Chris@0
|
51 }
|
Chris@12
|
52
|
Chris@12
|
53 /**
|
Chris@12
|
54 * Add an extension.
|
Chris@12
|
55 *
|
Chris@12
|
56 * @param string $name
|
Chris@12
|
57 * @param string $class
|
Chris@12
|
58 */
|
Chris@12
|
59 public function add($name, $class)
|
Chris@12
|
60 {
|
Chris@12
|
61 if (is_string($class)
|
Chris@12
|
62 && ((
|
Chris@12
|
63 is_a($class, Extension\AbstractRenderer::class, true)
|
Chris@12
|
64 || 'Feed' === substr($class, -4)
|
Chris@12
|
65 || 'Entry' === substr($class, -5)
|
Chris@12
|
66 ))
|
Chris@12
|
67 ) {
|
Chris@12
|
68 $this->extensions[$name] = $class;
|
Chris@12
|
69
|
Chris@12
|
70 return;
|
Chris@12
|
71 }
|
Chris@12
|
72
|
Chris@12
|
73 throw new InvalidArgumentException(sprintf(
|
Chris@12
|
74 'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
|
Chris@12
|
75 . 'or the classname must end in "Feed" or "Entry"',
|
Chris@12
|
76 $class,
|
Chris@12
|
77 __NAMESPACE__
|
Chris@12
|
78 ));
|
Chris@12
|
79 }
|
Chris@12
|
80
|
Chris@12
|
81 /**
|
Chris@12
|
82 * Remove an extension.
|
Chris@12
|
83 *
|
Chris@12
|
84 * @param string $name
|
Chris@12
|
85 */
|
Chris@12
|
86 public function remove($name)
|
Chris@12
|
87 {
|
Chris@12
|
88 unset($this->extensions[$name]);
|
Chris@12
|
89 }
|
Chris@0
|
90 }
|