8c7a160167c23d22b70db79a2c5b15a67364c98a
[yaffs-website] / web / core / modules / filter / src / Plugin / migrate / process / d6 / FilterFormatPermission.php
1 <?php
2
3 namespace Drupal\filter\Plugin\migrate\process\d6;
4
5 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
6 use Drupal\migrate\Plugin\MigrationInterface;
7 use Drupal\migrate\MigrateExecutableInterface;
8 use Drupal\migrate\Plugin\MigrateProcessInterface;
9 use Drupal\migrate\ProcessPluginBase;
10 use Drupal\migrate\Row;
11 use Symfony\Component\DependencyInjection\ContainerInterface;
12
13 /**
14  * Migrate filter format serial to string id in permission name.
15  *
16  * @MigrateProcessPlugin(
17  *   id = "filter_format_permission",
18  *   handle_multiples = TRUE
19  * )
20  */
21 class FilterFormatPermission extends ProcessPluginBase implements ContainerFactoryPluginInterface {
22
23   /**
24    * The migration plugin.
25    *
26    * @var \Drupal\migrate\Plugin\MigrateProcessInterface
27    */
28   protected $migrationPlugin;
29
30   /**
31    * {@inheritdoc}
32    */
33   public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, MigrateProcessInterface $migration_plugin) {
34     parent::__construct($configuration, $plugin_id, $plugin_definition);
35     $this->migration = $migration;
36     $this->migrationPlugin = $migration_plugin;
37   }
38
39   /**
40    * {@inheritdoc}
41    */
42   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
43     return new static(
44       $configuration,
45       $plugin_id,
46       $plugin_definition,
47       $migration,
48       $container->get('plugin.manager.migrate.process')->createInstance('migration', ['migration' => 'd6_filter_format'], $migration)
49     );
50   }
51
52   /**
53    * {@inheritdoc}
54    *
55    * Migrate filter format serial to string id in permission name.
56    */
57   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
58     $rid = $row->getSourceProperty('rid');
59     if ($formats = $row->getSourceProperty("filter_permissions:$rid")) {
60       foreach ($formats as $format) {
61         $new_id = $this->migrationPlugin->transform($format, $migrate_executable, $row, $destination_property);
62         if ($new_id) {
63           $value[] = 'use text format ' . $new_id;
64         }
65       }
66     }
67     return $value;
68   }
69
70 }