path_redirect_import-8.x-1.0-beta4/src/Form/ExportRedirectForm.php
src/Form/ExportRedirectForm.php
<?php
namespace Drupal\path_redirect_import\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\path_redirect_import\MigratePluginTrait;
use Drupal\path_redirect_import\RedirectExport;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Provides a form to export redirects.
*/
class ExportRedirectForm extends FormBase {
use MigratePluginTrait;
use SampleCsvFormTrait;
/**
* The redirect export service.
*
* @var \Drupal\path_redirect_import\RedirectExport
*/
protected $redirectExport;
/**
* Constructs a MigrateRedirectForm object.
*
* @param \Drupal\path_redirect_import\RedirectExport $redirect_export
* The redirect export service.
*/
public function __construct(RedirectExport $redirect_export) {
$this->redirectExport = $redirect_export;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('path_redirect_import.redirect_export')
);
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'migrate_redirect_export_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['table'] = $this->getSampleCsvTable($this->t('A CSV will be exported with this structure:'));
$form['actions'] = [
'#type' => 'actions',
'#weight' => 100,
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Export data'),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) {
// No need to validate the form;.
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
// Nothing to send from form for now.
$this->batchPreparation();
}
/**
* Batch processing function.
*/
public function batchPreparation() {
$operations = $this->redirectExport->getBatchOperations();
if (count($operations) > 0) {
$batch = [
'operations' => $operations,
'title' => $this->t('Exporting redirect entities to file'),
'init_message' => $this->t('Process started.'),
'progress_message' => $this->t('Exporting...'),
'error_message' => $this->t('An error occurred while exporting redirect entities.'),
'finished' => RedirectExport::class . '::batchFinishedExport',
];
batch_set($batch);
}
else {
$this->messenger()->addError($this->t('There are no redirects to export.'));
}
}
}
