Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / src / Plugin / DMU / Converter / HookPermission.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Converter/HookPermission.php b/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Converter/HookPermission.php
new file mode 100644 (file)
index 0000000..6949f90
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Converter;
+
+use Drupal\Component\Render\MarkupInterface;
+use Drupal\drupalmoduleupgrader\ConverterBase;
+use Drupal\drupalmoduleupgrader\TargetInterface;
+
+/**
+ * @Converter(
+ *  id = "hook_permission",
+ *  description = @Translation("Converts static implementations of hook_permission() to YAML."),
+ *  hook = "hook_permission"
+ * )
+ */
+class HookPermission extends ConverterBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function convert(TargetInterface $target) {
+    $permissions = $this->executeHook($target, $this->pluginDefinition['hook']);
+    $this->writeInfo($target, 'permissions', $this->castTranslatables($permissions));
+  }
+
+  /**
+   * Casts translatable string objects in a permissions array to strings.
+   *
+   * @param array $permissions
+   *   An array of permissions, as returned by hook_permission().
+   *
+   * @return array
+   *   The permissions array, with all TranslatableString objects casted to
+   *   strings.
+   */
+  protected function castTranslatables($permissions) {
+    array_walk_recursive($permissions, function (&$value) {
+      if ($value instanceof MarkupInterface) {
+        $value = (string) $value;
+      }
+    });
+
+    return $permissions;
+  }
+
+}