You are here

class QuickExportController in Content Synchronizer 8

Same name and namespace in other branches
  1. 8.2 src/Controller/QuickExportController.php \Drupal\content_synchronizer\Controller\QuickExportController
  2. 3.x src/Controller/QuickExportController.php \Drupal\content_synchronizer\Controller\QuickExportController

Class QuickExportController.

@package Drupal\content_synchronizer\Controller

Hierarchy

Expanded class hierarchy of QuickExportController

File

src/Controller/QuickExportController.php, line 19

Namespace

Drupal\content_synchronizer\Controller
View source
class QuickExportController {
  protected $url = '/admin/content';

  /**
   * Launch quick export batch.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The request.
   *
   * @return \Symfony\Component\HttpFoundation\RedirectResponse
   *   THe response.
   */
  public function quickExport(Request $request) {

    // Get the destination url.
    $this->url = $request->query
      ->has('destination') ? $request->query
      ->get('destination') : Url::fromRoute('system.admin_content')
      ->toString();
    if ($request->query
      ->has('entityTypeId') && $request->query
      ->has('entityId')) {

      /** @var Drupal\Core\Entity\Entity $entity */
      $entity = \Drupal::entityTypeManager()
        ->getStorage($request->query
        ->get('entityTypeId'))
        ->load($request->query
        ->get('entityId'));
      $writer = new ExportEntityWriter();
      $writer
        ->initFromId($entity
        ->getEntityTypeId() . '.' . $entity
        ->id());
      $batchExportProcessor = new BatchExportProcessor($writer);
      if ($entity instanceof ConfigEntityBundleBase) {
        $batchExportProcessor
          ->exportEntities(EntityExportFormBuilder::getEntitiesFromBundle($entity), [
          $this,
          'onBatchEnd',
        ]);
      }
      else {
        $batchExportProcessor
          ->exportEntities([
          $entity,
        ], [
          $this,
          'onBatchEnd',
        ]);
      }
      return batch_process('');
    }
    return new RedirectResponse($this->url);
  }

  /**
   * On batch end redirect to the form url.
   *
   * @param string $archiveUri
   *   THe archive to download.
   */
  public function onBatchEnd($archiveUri) {
    \Drupal::service(ArchiveDownloader::SERVICE_NAME)
      ->redirectWithArchivePath($this->url, $archiveUri);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
QuickExportController::$url protected property
QuickExportController::onBatchEnd public function On batch end redirect to the form url.
QuickExportController::quickExport public function Launch quick export batch.