Chris@0: Extension\Atom\Entry::class, Chris@12: 'Atom\Feed' => Extension\Atom\Feed::class, Chris@12: 'Content\Entry' => Extension\Content\Entry::class, Chris@12: 'CreativeCommons\Entry' => Extension\CreativeCommons\Entry::class, Chris@12: 'CreativeCommons\Feed' => Extension\CreativeCommons\Feed::class, Chris@12: 'DublinCore\Entry' => Extension\DublinCore\Entry::class, Chris@12: 'DublinCore\Feed' => Extension\DublinCore\Feed::class, Chris@16: 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class, Chris@12: 'Podcast\Entry' => Extension\Podcast\Entry::class, Chris@12: 'Podcast\Feed' => Extension\Podcast\Feed::class, Chris@12: 'Slash\Entry' => Extension\Slash\Entry::class, Chris@12: 'Syndication\Feed' => Extension\Syndication\Feed::class, Chris@12: 'Thread\Entry' => Extension\Thread\Entry::class, Chris@12: 'WellFormedWeb\Entry' => Extension\WellFormedWeb\Entry::class, Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * Do we have the extension? Chris@0: * Chris@0: * @param string $extension Chris@0: * @return bool Chris@0: */ Chris@0: public function has($extension) Chris@0: { Chris@0: return array_key_exists($extension, $this->extensions); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Retrieve the extension Chris@0: * Chris@0: * @param string $extension Chris@0: * @return Extension\AbstractEntry|Extension\AbstractFeed Chris@0: */ Chris@0: public function get($extension) Chris@0: { Chris@0: $class = $this->extensions[$extension]; Chris@0: return new $class(); Chris@0: } Chris@12: Chris@12: /** Chris@12: * Add an extension. Chris@12: * Chris@12: * @param string $name Chris@12: * @param string $class Chris@12: */ Chris@12: public function add($name, $class) Chris@12: { Chris@12: if (is_string($class) Chris@12: && ( Chris@12: is_a($class, Extension\AbstractEntry::class, true) Chris@12: || is_a($class, Extension\AbstractFeed::class, true) Chris@12: ) Chris@12: ) { Chris@12: $this->extensions[$name] = $class; Chris@12: return; Chris@12: } Chris@12: Chris@12: throw new InvalidArgumentException(sprintf( Chris@12: 'Plugin of type %s is invalid; must implement %2$s\Extension\AbstractFeed ' Chris@12: . 'or %2$s\Extension\AbstractEntry', Chris@12: $class, Chris@12: __NAMESPACE__ Chris@12: )); Chris@12: } Chris@12: Chris@12: /** Chris@12: * Remove an extension. Chris@12: * Chris@12: * @param string $name Chris@12: */ Chris@12: public function remove($name) Chris@12: { Chris@12: unset($this->extensions[$name]); Chris@12: } Chris@0: }