function BlockPluginId::transform

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

Set the block plugin id.

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;
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.