function ContentExportCommand::execute
Same name in this branch
- 11.x core/lib/Drupal/Core/DefaultContent/ContentExportCommand.php \Drupal\Core\DefaultContent\ContentExportCommand::execute()
Same name and namespace in other branches
- main core/lib/Drupal/Core/DefaultContent/ContentExportCommand.php \Drupal\Core\DefaultContent\ContentExportCommand::execute()
- main core/lib/Drupal/Core/DefaultContent/Command/ContentExportCommand.php \Drupal\Core\DefaultContent\Command\ContentExportCommand::execute()
File
-
core/
lib/ Drupal/ Core/ DefaultContent/ Command/ ContentExportCommand.php, line 65
Class
- ContentExportCommand
- Exports content entities in YAML format.
Namespace
Drupal\Core\DefaultContent\CommandCode
protected function execute(InputInterface $input, OutputInterface $output) : int {
$io = new SymfonyStyle($input, $output);
$entity_type_id = $input->getArgument('entity_type_id');
$entity_id = $input->getArgument('entity_id');
$bundles = $input->getOption('bundle');
if (!$this->entityTypeManager
->hasDefinition($entity_type_id)) {
$io->error("The entity type \"{$entity_type_id}\" does not exist.");
return Command::FAILURE;
}
if (!$this->entityTypeManager
->getDefinition($entity_type_id)
->entityClassImplements(ContentEntityInterface::class)) {
$io->error("{$entity_type_id} is not a content entity type.");
return Command::FAILURE;
}
// Confirm that all specified bundles exist.
if ($bundles) {
$unknown_bundles = array_diff($bundles, array_keys($this->entityBundleInfo
->getBundleInfo($entity_type_id)));
if ($unknown_bundles) {
$io->error("These bundles do not exist on the {$entity_type_id} entity type: " . implode(', ', $unknown_bundles));
return Command::FAILURE;
}
}
$dir = $input->getOption('dir');
$with_dependencies = $input->getOption('with-dependencies');
// If we're going to export multiple entities, or a single entity with its
// dependencies, require the `--dir` option.
if (empty($dir) && (empty($entity_id) || $with_dependencies)) {
throw new RuntimeException('The --dir option is required to export multiple entities, or a single entity with its dependencies.');
}
$count = 0;
$storage = $this->entityTypeManager
->getStorage($entity_type_id);
foreach ($this->loadEntities($storage, $entity_id, $bundles) as $entity) {
if ($with_dependencies) {
$count += $this->exporter
->exportWithDependencies($entity, $dir);
}
elseif ($dir) {
$this->exporter
->exportToFile($entity, $dir);
$count++;
}
else {
$io->write((string) $this->exporter
->export($entity));
return Command::SUCCESS;
}
}
// If we were trying to export a specific entity and it didn't get exported,
// that's an error.
if ($entity_id && $count === 0) {
$io->error("{$entity_type_id} {$entity_id} does not exist.");
if ($bundles) {
$io->caution('Maybe this entity is not one of the specified bundles: ' . implode(', ', $bundles));
}
return Command::FAILURE;
}
$message = (string) $this->formatPlural($count, 'One entity was exported to @dir.', '@count entities were exported to @dir.', [
'@dir' => $this->fileSystem
->realpath($dir),
]);
$io->success($message);
return Command::SUCCESS;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.