function drush_gathercontent_import in GatherContent 8.3
Same name and namespace in other branches
- 8.5 gathercontent.drush.inc \drush_gathercontent_import()
- 8.4 gathercontent.drush.inc \drush_gathercontent_import()
- 7.3 gathercontent.drush.inc \drush_gathercontent_import()
Implements drush_COMMAND().
File
- ./
gathercontent.drush.inc, line 172 - Drush command to cli config import.
Code
function drush_gathercontent_import($mapping_id = NULL, $node_update_method = 'always_update', $status_id = '', $parent_menu_item = NULL) {
if ($mapping_id === NULL) {
/** @var \Drupal\gathercontent\Entity\MappingInterface[] $gc_mappings */
$gc_mappings = \Drupal::entityTypeManager()
->getStorage('gathercontent_mapping')
->loadMultiple();
$options = [];
foreach ($gc_mappings as $gc_mapping) {
$options[$gc_mapping
->id()] = $gc_mapping
->id() . ' | ' . $gc_mapping
->getGathercontentProject() . ' | ' . $gc_mapping
->getGathercontentTemplate();
}
$mapping_id = drush_choice($options, dt('Select a mapping ID: '));
}
if (!$mapping_id) {
return drush_set_error('gathercontent_unknown_mapping_id', dt('Unknown mapping ID.'));
}
$operation = Operation::create([
'type' => 'import',
]);
$operation
->save();
$mapping = Mapping::load($mapping_id);
$project_id = $mapping
->getGathercontentProjectId();
$template_id = $mapping
->getGathercontentTemplateId();
$content_obj = new Content();
$content = $content_obj
->getContents($project_id);
$publish = drush_get_option('publish', \Drupal::config('gathercontent.import')
->get('node_default_status'));
$publish = $publish ? '1' : '0';
$operations = [];
foreach ($content as $item) {
if ($item->template_id === $template_id) {
$operations[] = [
'gathercontent_import_process',
[
$item->id,
$status_id,
$operation
->uuid(),
$publish,
$node_update_method,
$parent_menu_item,
],
];
}
}
$sql = drush_sql_get_class();
if (!in_array('batch', $sql
->listTables())) {
$bs = \Drupal::service('batch.storage');
$db = \Drupal::database()
->schema();
$db
->createTable('batch', $bs
->schemaDefinition());
}
$batch = [
'title' => dt('Importing'),
'init_message' => dt('Starting import'),
'error_message' => dt('An unrecoverable error has occurred. You can find the error message below. It is advised to copy it to the clipboard for reference.'),
'progressive' => TRUE,
'operations' => $operations,
'finished' => 'gathercontent_drush_import_process_finished',
];
batch_set($batch);
drush_backend_batch_process();
$mappings = [];
$result = \Drupal::entityQuery('gathercontent_operation_item')
->condition('operation_uuid', $operation
->uuid())
->execute();
if (!empty($result)) {
$imported_items = OperationItem::loadMultiple($result);
/** @var \Drupal\gathercontent\Entity\OperationItem $imported_item */
foreach ($imported_items as $imported_item) {
$mappings[$imported_item
->id()] = [
'id' => $imported_item
->id(),
'item_name' => $imported_item->item_name->value,
'node_status' => $imported_item
->getItemStatus(),
'import_status' => $imported_item
->getStatus(),
];
}
}
return $mappings;
}