You are here

public function BlockPluginId::transform in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/block/src/Plugin/migrate/process/BlockPluginId.php \Drupal\block\Plugin\migrate\process\BlockPluginId::transform()
  2. 9 core/modules/block/src/Plugin/migrate/process/BlockPluginId.php \Drupal\block\Plugin\migrate\process\BlockPluginId::transform()

Set the block plugin id.

Overrides ProcessPluginBase::transform

File

core/modules/block/src/Plugin/migrate/process/BlockPluginId.php, line 74

Class

BlockPluginId
Plugin annotation @MigrateProcessPlugin( id = "block_plugin_id" )

Namespace

Drupal\block\Plugin\migrate\process

Code

public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
  if (is_array($value)) {
    [
      $module,
      $delta,
    ] = $value;
    switch ($module) {
      case 'aggregator':
        [
          $type,
        ] = explode('-', $delta);
        if ($type == 'feed') {
          return 'aggregator_feed_block';
        }
        break;
      case 'menu':
        return "system_menu_block:{$delta}";
      case 'block':
        if ($this->blockContentStorage) {
          $lookup_result = $this->migrateLookup
            ->lookup([
            'd6_custom_block',
            'd7_custom_block',
          ], [
            $delta,
          ]);
          if ($lookup_result) {
            $block_id = $lookup_result[0]['id'];
            return 'block_content:' . $this->blockContentStorage
              ->load($block_id)
              ->uuid();
          }
        }
        break;
      default:
        break;
    }
  }
  else {
    return $value;
  }
}