class ExportCommand in Commerce Demo 8
Same name and namespace in other branches
- 8.2 src/Command/ExportCommand.php \Drupal\commerce_demo\Command\ExportCommand
Class ExportCommand.
@package Drupal\commerce_demo
@DrupalCommand ( extension="commerce_demo", extensionType="module" )
Hierarchy
- class \Drupal\commerce_demo\Command\ExportCommand extends \Symfony\Component\Console\Command\Command uses \Drupal\Console\Core\Command\Shared\CommandTrait
Expanded class hierarchy of ExportCommand
1 string reference to 'ExportCommand'
1 service uses ExportCommand
File
- src/
Command/ ExportCommand.php, line 34
Namespace
Drupal\commerce_demo\CommandView source
class ExportCommand extends Command {
use CommandTrait;
/**
* The content exporter.
*
* @var \Drupal\commerce_demo\ContentExporter
*/
protected $contentExporter;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The entity type bundle info.
*
* @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface
*/
protected $entityTypeBundleInfo;
/**
* Constructs a new ExportCommand object.
*
* @param \Drupal\commerce_demo\ContentExporter $content_exporter
* The content exporter.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
* The entity type bundle info.
*/
public function __construct(ContentExporter $content_exporter, EntityTypeManagerInterface $entity_type_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info) {
parent::__construct();
$this->contentExporter = $content_exporter;
$this->entityTypeManager = $entity_type_manager;
$this->entityTypeBundleInfo = $entity_type_bundle_info;
}
/**
* {@inheritdoc}
*/
protected function configure() {
$this
->setName('commerce_demo:export')
->setDescription($this
->trans('commands.commerce_demo.export.description'))
->addOption('directory', '', InputOption::VALUE_OPTIONAL, $this
->trans('commands.commerce_demo.export.options.directory'))
->addArgument('entity_type', InputArgument::REQUIRED, $this
->trans('commands.commerce_demo.export.arguments.entity_type'))
->addArgument('bundle', InputArgument::REQUIRED, $this
->trans('commands.commerce_demo.export.arguments.bundle'));
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output) {
$entity_type_id = $input
->getArgument('entity_type');
$bundle = $input
->getArgument('bundle');
$directory = $input
->getOption('directory');
if ($directory && strpos($directory, -1, 1) != '/') {
$directory .= '/';
}
// Add the bundle to the filename only if the entity type has one.
$filename = $entity_type_id;
$entity_type = $this->entityTypeManager
->getDefinition($entity_type_id);
if ($entity_type
->getKey('bundle')) {
$filename .= '.' . $bundle;
}
$destination = $directory . $filename . '.yml';
$export = $this->contentExporter
->exportAll($entity_type_id, $bundle);
file_put_contents($destination, Yaml::encode($export));
$io = new DrupalStyle($input, $output);
$io
->writeln(sprintf($this
->trans('commands.commerce_demo.export.messages.success'), $destination));
}
/**
* {@inheritdoc}
*/
protected function interact(InputInterface $input, OutputInterface $output) {
$helper = $this
->getHelper('question');
$entity_types = $this->entityTypeManager
->getDefinitions();
$entity_types = array_filter($entity_types, function (EntityType $entity_type) {
return $entity_type
->entityClassImplements(ContentEntityInterface::class);
});
$entity_types = array_map(function (EntityType $entity_type) {
return $entity_type
->getLabel();
}, $entity_types);
// --entity_type argument.
$entity_type_id = $input
->getArgument('entity_type');
if (!$entity_type_id) {
$question = new ChoiceQuestion($this
->trans('commands.commerce_demo.export.questions.entity_type'), $entity_types);
$entity_type_id = $helper
->ask($input, $output, $question);
}
$input
->setArgument('entity_type', $entity_type_id);
// --bundle argument.
$bundles = $this->entityTypeBundleInfo
->getBundleInfo($entity_type_id);
$bundles = array_map(function ($bundle) {
return $bundle['label'];
}, $bundles);
if (count($bundles) === 1) {
$bundle_keys = array_keys($bundles);
$bundle = reset($bundle_keys);
}
else {
$bundle = $input
->getArgument('bundle');
if (!$bundle) {
$question = new ChoiceQuestion($this
->trans('commands.commerce_demo.export.questions.bundle'), $bundles);
$bundle = $helper
->ask($input, $output, $question);
}
}
$input
->setArgument('bundle', $bundle);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ExportCommand:: |
protected | property | The content exporter. | |
ExportCommand:: |
protected | property | The entity type bundle info. | |
ExportCommand:: |
protected | property | The entity type manager. | |
ExportCommand:: |
protected | function | ||
ExportCommand:: |
protected | function | ||
ExportCommand:: |
protected | function | ||
ExportCommand:: |
public | function | Constructs a new ExportCommand object. |