You are here

class ExportController in Term CSV Export Import 8.3

Same name and namespace in other branches
  1. 8 src/Controller/ExportController.php \Drupal\term_csv_export_import\Controller\ExportController
  2. 8.2 src/Controller/ExportController.php \Drupal\term_csv_export_import\Controller\ExportController

Class ExportController.

Hierarchy

Expanded class hierarchy of ExportController

1 file declares its use of ExportController
ExportForm.php in src/Form/ExportForm.php

File

src/Controller/ExportController.php, line 11

Namespace

Drupal\term_csv_export_import\Controller
View source
class ExportController extends ControllerBase {

  /**
   * The vocabulary storage.
   *
   * @var \Drupal\taxonomy\Entity\Vocabulary
   */
  protected $vocabulary;

  /**
   * The taxonomy term storage.
   *
   * @var \Drupal\taxonomy\TermStorageInterface
   */
  protected $termStorage;

  /**
   * Export Variable.
   *
   * @var \Drupal\Core\Config\StorageInterface
   */
  public $export;

  /**
   * {@inheritdoc}
   */
  public function __construct(TermStorage $term_storage, $vocabulary) {
    $this->termStorage = $term_storage;
    $this->vocabulary = $vocabulary;
  }

  /**
   * {@inheritdoc}
   */
  public function execute($include_ids, $include_headers, $include_fields) {
    $terms = $this->termStorage
      ->loadTree($this->vocabulary);
    $fp = fopen('php://memory', 'rw');
    $standardTaxonomyFields = [
      'tid',
      'uuid',
      'langcode',
      'vid',
      'name',
      'status',
      'revision_id',
      'description__value',
      'description__format',
      'weight',
      'parent_name',
      'parent',
      'changed',
      'default_langcode',
      'path',
    ];
    $to_export = [];
    if ($include_headers) {
      $to_export = [
        'name',
        'status',
        'description__value',
        'description__format',
        'weight',
        'parent_name',
      ];
      if ($include_ids) {
        $to_export = array_merge([
          'tid',
          'uuid',
        ], $to_export);
        $to_export[] = 'parent_tid';
        array_splice($to_export, 4, 0, 'revision_id');
      }
      if ($include_fields) {
        $to_export[] = 'fields';
      }
    }
    fputcsv($fp, $to_export);
    foreach ($terms as $term) {
      $parents = $this->termStorage
        ->loadParents($term->tid);
      $parent_names = '';
      $parent_ids = '';
      $to_export = [];
      if (!empty($parents)) {
        foreach ($parents as $parent) {
          $parent_names .= $parent
            ->getName() . ';';
          $parent_ids .= $parent
            ->id() . ';';
        }
      }
      $to_export = [
        $term->name,
        $term->status,
        $term->description__value,
        $term->description__format,
        $term->weight,
        $parent_names,
      ];
      if ($include_ids) {
        $to_export = array_merge([
          $term->tid,
          $this->termStorage
            ->load($term->tid)
            ->uuid(),
        ], $to_export);
        $to_export[] = $parent_ids;
        array_splice($to_export, 4, 0, $this->termStorage
          ->load($term->tid)
          ->getRevisionId());
      }
      if ($include_fields) {
        $field_export = [];
        foreach ($this->termStorage
          ->load($term->tid)
          ->getFields() as $field) {
          if (!in_array($field
            ->getName(), $standardTaxonomyFields)) {
            foreach ($field
              ->getValue() as $values) {
              foreach ($values as $value) {

                // Skip type ($key) here. More complicated, seems unnecessary.
                $field_export[$field
                  ->getName()][] = $value;
              }
            }
          }
        }
        $fields = http_build_query($field_export);
        $to_export[] = $fields;
      }
      fputcsv($fp, $to_export);
    }
    rewind($fp);
    while (!feof($fp)) {
      $this->export .= fread($fp, 8192);
    }
    fclose($fp);
    return $this->export;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityManager protected property The entity manager.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create 40
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityManager Deprecated protected function Retrieves the entity manager service.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
ControllerBase::state protected function Returns the state storage service.
ExportController::$export public property Export Variable.
ExportController::$termStorage protected property The taxonomy term storage.
ExportController::$vocabulary protected property The vocabulary storage.
ExportController::execute public function
ExportController::__construct public function
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.