Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / src / Plugin / DMU / Rewriter / GenericDeriver.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Rewriter/GenericDeriver.php b/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Rewriter/GenericDeriver.php
new file mode 100644 (file)
index 0000000..9ca0960
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter;
+
+use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Builds derivative definitions for the generic rewriter, based on the
+ * drupalmoduleupgrader.rewriters configuration object.
+ */
+class GenericDeriver implements ContainerDeriverInterface {
+
+  /**
+   * @var array
+   */
+  protected $config;
+
+  public function __construct(array $config) {
+    $this->config = $config;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, $base_plugin_id) {
+    return new static(
+      $container->get('config.factory')->get('drupalmoduleupgrader.rewriters')->get('definitions')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDerivativeDefinition($derivative_id, $base_definition) {
+    $derivatives = $this->getDerivativeDefinitions($base_definition);
+
+    if (isset($derivatives[$derivative_id])) {
+      return $derivatives[$derivative_id];
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDerivativeDefinitions($base_definition) {
+    $derivatives = [];
+
+    foreach ($this->config as $data_type => $definition) {
+      $derivatives[$data_type] = $definition + $base_definition;
+    }
+
+    return $derivatives;
+  }
+
+}