Chris@0: get('database'), Chris@0: $container->get('plugin.manager.config_entity_migration') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Constructs a MessageController object. Chris@0: * Chris@0: * @param \Drupal\Core\Database\Connection $database Chris@0: * A database connection. Chris@0: * @param \Drupal\migrate_plus\Plugin\MigrationConfigEntityPluginManager $migration_config_entity_plugin_manager Chris@0: * The plugin manager for config entity-based migrations. Chris@0: */ Chris@0: public function __construct(Connection $database, MigrationConfigEntityPluginManager $migration_config_entity_plugin_manager) { Chris@0: $this->database = $database; Chris@0: $this->migrationConfigEntityPluginManager = $migration_config_entity_plugin_manager; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets an array of log level classes. Chris@0: * Chris@0: * @return array Chris@0: * An array of log level classes. Chris@0: */ Chris@0: public static function getLogLevelClassMap() { Chris@0: return [ Chris@0: MigrationInterface::MESSAGE_INFORMATIONAL => 'migrate-message-4', Chris@0: MigrationInterface::MESSAGE_NOTICE => 'migrate-message-3', Chris@0: MigrationInterface::MESSAGE_WARNING => 'migrate-message-2', Chris@0: MigrationInterface::MESSAGE_ERROR => 'migrate-message-1', Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Displays a listing of migration messages. Chris@0: * Chris@0: * Messages are truncated at 56 chars. Chris@0: * Chris@0: * @param string $migration_group Chris@0: * Machine name of the migration's group. Chris@0: * Chris@0: * @param string $migration Chris@0: * Machine name of the migration. Chris@0: * Chris@0: * @return array Chris@0: * A render array as expected by drupal_render(). Chris@0: */ Chris@0: public function overview($migration_group, $migration) { Chris@0: $rows = []; Chris@0: $classes = static::getLogLevelClassMap(); Chris@0: /** @var MigrationInterface $migration */ Chris@0: $migration = $this->migrationConfigEntityPluginManager->createInstance($migration); Chris@0: $source_id_field_names = array_keys($migration->getSourcePlugin()->getIds()); Chris@0: $column_number = 1; Chris@0: foreach ($source_id_field_names as $source_id_field_name) { Chris@0: $header[] = [ Chris@0: 'data' => $source_id_field_name, Chris@0: 'field' => 'sourceid' . $column_number++, Chris@0: 'class' => [RESPONSIVE_PRIORITY_MEDIUM], Chris@0: ]; Chris@0: } Chris@0: $header[] = [ Chris@0: 'data' => $this->t('Severity level'), Chris@0: 'field' => 'level', Chris@0: 'class' => [RESPONSIVE_PRIORITY_LOW], Chris@0: ]; Chris@0: $header[] = [ Chris@0: 'data' => $this->t('Message'), Chris@0: 'field' => 'message', Chris@0: ]; Chris@0: Chris@0: $message_table = $migration->getIdMap()->messageTableName(); Chris@0: $map_table = $migration->getIdMap()->mapTableName(); Chris@0: $query = $this->database->select($message_table, 'msg') Chris@0: ->extend('\Drupal\Core\Database\Query\PagerSelectExtender') Chris@0: ->extend('\Drupal\Core\Database\Query\TableSortExtender'); Chris@0: $query->innerJoin($map_table, 'map', 'msg.source_ids_hash=map.source_ids_hash'); Chris@0: $query->fields('msg'); Chris@0: $query->fields('map'); Chris@0: $result = $query Chris@0: ->limit(50) Chris@0: ->orderByHeader($header) Chris@0: ->execute(); Chris@0: Chris@0: foreach ($result as $message_row) { Chris@0: $column_number = 1; Chris@0: foreach ($source_id_field_names as $source_id_field_name) { Chris@0: $column_name = 'sourceid' . $column_number++; Chris@0: $row[$column_name] = $message_row->$column_name; Chris@0: } Chris@0: $row['level'] = $message_row->level; Chris@0: $row['message'] = $message_row->message; Chris@0: $row['class'] = [Html::getClass('migrate-message-' . $message_row->level), $classes[$message_row->level]]; Chris@0: $rows[] = $row; Chris@0: } Chris@0: Chris@0: $build['message_table'] = [ Chris@0: '#type' => 'table', Chris@0: '#header' => $header, Chris@0: '#rows' => $rows, Chris@0: '#attributes' => ['id' => $message_table, 'class' => [$message_table]], Chris@0: '#empty' => $this->t('No messages for this migration.'), Chris@0: ]; Chris@0: $build['message_pager'] = ['#type' => 'pager']; Chris@0: Chris@0: return $build; Chris@0: } Chris@0: Chris@0: }