Security update for Core, with self-updated composer
[yaffs-website] / vendor / zendframework / zend-feed / src / Writer / StandaloneExtensionManager.php
index c9a88c76aba3cdf3059489e7e6790a14df27f371..7c40897ab9fc181abe278458d4ed8dd46fb66d46 100644 (file)
@@ -9,6 +9,8 @@
 
 namespace Zend\Feed\Writer;
 
+use Zend\Feed\Writer\Exception\InvalidArgumentException;
+
 class StandaloneExtensionManager implements ExtensionManagerInterface
 {
     private $extensions = [
@@ -47,4 +49,42 @@ class StandaloneExtensionManager implements ExtensionManagerInterface
         $class = $this->extensions[$extension];
         return new $class();
     }
+
+    /**
+     * Add an extension.
+     *
+     * @param string $name
+     * @param string $class
+     */
+    public function add($name, $class)
+    {
+        if (is_string($class)
+            && ((
+                is_a($class, Extension\AbstractRenderer::class, true)
+                || 'Feed' === substr($class, -4)
+                || 'Entry' === substr($class, -5)
+            ))
+        ) {
+            $this->extensions[$name] = $class;
+
+            return;
+        }
+
+        throw new InvalidArgumentException(sprintf(
+            'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
+            . 'or the classname must end in "Feed" or "Entry"',
+            $class,
+            __NAMESPACE__
+        ));
+    }
+
+    /**
+     * Remove an extension.
+     *
+     * @param string $name
+     */
+    public function remove($name)
+    {
+        unset($this->extensions[$name]);
+    }
 }