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\Reader;
|
Chris@0
|
11
|
Chris@12
|
12 use Zend\Feed\Reader\Exception\InvalidArgumentException;
|
Chris@12
|
13
|
Chris@0
|
14 class StandaloneExtensionManager implements ExtensionManagerInterface
|
Chris@0
|
15 {
|
Chris@0
|
16 private $extensions = [
|
Chris@12
|
17 'Atom\Entry' => Extension\Atom\Entry::class,
|
Chris@12
|
18 'Atom\Feed' => Extension\Atom\Feed::class,
|
Chris@12
|
19 'Content\Entry' => Extension\Content\Entry::class,
|
Chris@12
|
20 'CreativeCommons\Entry' => Extension\CreativeCommons\Entry::class,
|
Chris@12
|
21 'CreativeCommons\Feed' => Extension\CreativeCommons\Feed::class,
|
Chris@12
|
22 'DublinCore\Entry' => Extension\DublinCore\Entry::class,
|
Chris@12
|
23 'DublinCore\Feed' => Extension\DublinCore\Feed::class,
|
Chris@16
|
24 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class,
|
Chris@16
|
25 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class,
|
Chris@12
|
26 'Podcast\Entry' => Extension\Podcast\Entry::class,
|
Chris@12
|
27 'Podcast\Feed' => Extension\Podcast\Feed::class,
|
Chris@12
|
28 'Slash\Entry' => Extension\Slash\Entry::class,
|
Chris@12
|
29 'Syndication\Feed' => Extension\Syndication\Feed::class,
|
Chris@12
|
30 'Thread\Entry' => Extension\Thread\Entry::class,
|
Chris@12
|
31 'WellFormedWeb\Entry' => Extension\WellFormedWeb\Entry::class,
|
Chris@0
|
32 ];
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * Do we have the extension?
|
Chris@0
|
36 *
|
Chris@0
|
37 * @param string $extension
|
Chris@0
|
38 * @return bool
|
Chris@0
|
39 */
|
Chris@0
|
40 public function has($extension)
|
Chris@0
|
41 {
|
Chris@0
|
42 return array_key_exists($extension, $this->extensions);
|
Chris@0
|
43 }
|
Chris@0
|
44
|
Chris@0
|
45 /**
|
Chris@0
|
46 * Retrieve the extension
|
Chris@0
|
47 *
|
Chris@0
|
48 * @param string $extension
|
Chris@0
|
49 * @return Extension\AbstractEntry|Extension\AbstractFeed
|
Chris@0
|
50 */
|
Chris@0
|
51 public function get($extension)
|
Chris@0
|
52 {
|
Chris@0
|
53 $class = $this->extensions[$extension];
|
Chris@0
|
54 return new $class();
|
Chris@0
|
55 }
|
Chris@12
|
56
|
Chris@12
|
57 /**
|
Chris@12
|
58 * Add an extension.
|
Chris@12
|
59 *
|
Chris@12
|
60 * @param string $name
|
Chris@12
|
61 * @param string $class
|
Chris@12
|
62 */
|
Chris@12
|
63 public function add($name, $class)
|
Chris@12
|
64 {
|
Chris@12
|
65 if (is_string($class)
|
Chris@12
|
66 && (
|
Chris@12
|
67 is_a($class, Extension\AbstractEntry::class, true)
|
Chris@12
|
68 || is_a($class, Extension\AbstractFeed::class, true)
|
Chris@12
|
69 )
|
Chris@12
|
70 ) {
|
Chris@12
|
71 $this->extensions[$name] = $class;
|
Chris@12
|
72 return;
|
Chris@12
|
73 }
|
Chris@12
|
74
|
Chris@12
|
75 throw new InvalidArgumentException(sprintf(
|
Chris@12
|
76 'Plugin of type %s is invalid; must implement %2$s\Extension\AbstractFeed '
|
Chris@12
|
77 . 'or %2$s\Extension\AbstractEntry',
|
Chris@12
|
78 $class,
|
Chris@12
|
79 __NAMESPACE__
|
Chris@12
|
80 ));
|
Chris@12
|
81 }
|
Chris@12
|
82
|
Chris@12
|
83 /**
|
Chris@12
|
84 * Remove an extension.
|
Chris@12
|
85 *
|
Chris@12
|
86 * @param string $name
|
Chris@12
|
87 */
|
Chris@12
|
88 public function remove($name)
|
Chris@12
|
89 {
|
Chris@12
|
90 unset($this->extensions[$name]);
|
Chris@12
|
91 }
|
Chris@0
|
92 }
|