You are here

abstract class DrupalSqlBase in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php \Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase

A base source class for Drupal migrate sources.

Mainly to let children retrieve information from the origin system in an easier way.

Hierarchy

Expanded class hierarchy of DrupalSqlBase

55 files declare their use of DrupalSqlBase
Action.php in core/modules/action/src/Plugin/migrate/source/d6/Action.php
Contains \Drupal\action\Plugin\migrate\source\d6\Action.
AggregatorFeed.php in core/modules/aggregator/src/Plugin/migrate/source/AggregatorFeed.php
Contains \Drupal\aggregator\Plugin\migrate\source\AggregatorFeed.
AggregatorItem.php in core/modules/aggregator/src/Plugin/migrate/source/AggregatorItem.php
Contains \Drupal\aggregator\Plugin\migrate\source\AggregatorItem.
Block.php in core/modules/block/src/Plugin/migrate/source/Block.php
Contains \Drupal\block\Plugin\migrate\source\Block.
BlockCustom.php in core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustom.php
Contains \Drupal\block_content\Plugin\migrate\source\d7\BlockCustom.

... See full list

File

core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php, line 27
Contains \Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase.

Namespace

Drupal\migrate_drupal\Plugin\migrate\source
View source
abstract class DrupalSqlBase extends SqlBase implements ContainerFactoryPluginInterface, RequirementsInterface, DependentPluginInterface {
  use DependencyTrait;

  /**
   * The contents of the system table.
   *
   * @var array
   */
  protected $systemData;

  /**
   * If the source provider is missing.
   *
   * @var bool
   */
  protected $requirements = TRUE;

  /**
   * The entity manager.
   *
   * @var \Drupal\Core\Entity\EntityManagerInterface
   */
  protected $entityManager;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, EntityManagerInterface $entity_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state);
    $this->entityManager = $entity_manager;
  }

  /**
   * Retrieves all system data information from origin system.
   *
   * @return array
   *   List of system table information keyed by type and name.
   */
  public function getSystemData() {
    if (!isset($this->systemData)) {
      $this->systemData = array();
      try {
        $results = $this
          ->select('system', 's')
          ->fields('s')
          ->execute();
        foreach ($results as $result) {
          $this->systemData[$result['type']][$result['name']] = $result;
        }
      } catch (\Exception $e) {

        // The table might not exist for example in tests.
      }
    }
    return $this->systemData;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
      ->get('state'), $container
      ->get('entity.manager'));
  }

  /**
   * {@inheritdoc}
   */
  public function checkRequirements() {
    if ($this->pluginDefinition['requirements_met'] === TRUE) {
      if (isset($this->pluginDefinition['source_provider'])) {
        if ($this
          ->moduleExists($this->pluginDefinition['source_provider'])) {
          if (isset($this->pluginDefinition['minimum_schema_version']) && !$this
            ->getModuleSchemaVersion($this->pluginDefinition['source_provider']) < $this->pluginDefinition['minimum_schema_version']) {
            throw new RequirementsException('Required minimum schema version ' . $this->pluginDefinition['minimum_schema_version'], [
              'minimum_schema_version' => $this->pluginDefinition['minimum_schema_version'],
            ]);
          }
        }
        else {
          throw new RequirementsException('Missing source provider ' . $this->pluginDefinition['source_provider'], [
            'source_provider' => $this->pluginDefinition['source_provider'],
          ]);
        }
      }
    }
  }

  /**
   * Get a module schema_version value in the source installation.
   *
   * @param string $module
   *   Name of module.
   *
   * @return mixed
   *   The current module schema version on the origin system table or FALSE if
   *   not found.
   */
  protected function getModuleSchemaVersion($module) {
    $system_data = $this
      ->getSystemData();
    return isset($system_data['module'][$module]['schema_version']) ? $system_data['module'][$module]['schema_version'] : FALSE;
  }

  /**
   * Check to see if a given module is enabled in the source installation.
   *
   * @param string $module
   *   Name of module to check.
   *
   * @return bool
   *   TRUE if module is enabled on the origin system, FALSE if not.
   */
  protected function moduleExists($module) {
    $system_data = $this
      ->getSystemData();
    return !empty($system_data['module'][$module]['status']);
  }

  /**
   * Read a variable from a Drupal database.
   *
   * @param $name
   *   Name of the variable.
   * @param $default
   *   The default value.
   * @return mixed
   */
  protected function variableGet($name, $default) {
    try {
      $result = $this
        ->select('variable', 'v')
        ->fields('v', array(
        'value',
      ))
        ->condition('name', $name)
        ->execute()
        ->fetchField();
    } catch (\Exception $e) {
      $result = FALSE;
    }
    return $result !== FALSE ? unserialize($result) : $default;
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {

    // Generic handling for Drupal source plugin constants.
    if (isset($this->configuration['constants']['entity_type'])) {
      $this
        ->addDependency('module', $this->entityManager
        ->getDefinition($this->configuration['constants']['entity_type'])
        ->getProvider());
    }
    if (isset($this->configuration['constants']['module'])) {
      $this
        ->addDependency('module', $this->configuration['constants']['module']);
    }
    return $this->dependencies;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DependencyTrait::$dependencies protected property The object's dependencies. 1
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency.
DrupalSqlBase::$entityManager protected property The entity manager.
DrupalSqlBase::$requirements protected property If the source provider is missing.
DrupalSqlBase::$systemData protected property The contents of the system table.
DrupalSqlBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies 1
DrupalSqlBase::checkRequirements public function Checks if requirements for this plugin are OK. Overrides RequirementsInterface::checkRequirements
DrupalSqlBase::create public static function Creates an instance of the plugin. Overrides SqlBase::create
DrupalSqlBase::getModuleSchemaVersion protected function Get a module schema_version value in the source installation.
DrupalSqlBase::getSystemData public function Retrieves all system data information from origin system.
DrupalSqlBase::moduleExists protected function Check to see if a given module is enabled in the source installation.
DrupalSqlBase::variableGet protected function Read a variable from a Drupal database.
DrupalSqlBase::__construct public function Constructs a Drupal\Component\Plugin\PluginBase object. Overrides SqlBase::__construct 1
MigrateSourceInterface::fields public function Returns available fields on the source. 64
MigrateSourceInterface::getIds public function Defines the source fields uniquely identifying a source row. None of these fields should contain a NULL value - if necessary, use prepareRow() or hook_migrate_prepare_row() to rewrite NULL values to appropriate empty values (such as '' or 0). 64
PluginBase::$configuration protected property Configuration information passed into the plugin. 2
PluginBase::$pluginDefinition protected property The plugin implementation definition.
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
SourcePluginBase::$cache protected property
SourcePluginBase::$cacheCounts protected property Whether this instance should cache the source count.
SourcePluginBase::$cacheKey protected property Key to use for caching counts.
SourcePluginBase::$currentRow protected property The current row from the query
SourcePluginBase::$currentSourceIds protected property The primary key of the current row
SourcePluginBase::$highWaterProperty protected property The name and type of the highwater property in the source.
SourcePluginBase::$idMap protected property
SourcePluginBase::$iterator protected property
SourcePluginBase::$mapRowAdded protected property By default, next() will directly read the map row and add it to the data row. A source plugin implementation may do this itself (in particular, the SQL source can incorporate the map table into the query) - if so, it should set this TRUE so we…
SourcePluginBase::$migration protected property
SourcePluginBase::$moduleHandler protected property
SourcePluginBase::$originalHighWater protected property The high water mark at the beginning of the import operation.
SourcePluginBase::$skipCount protected property Whether this instance should not attempt to count the source.
SourcePluginBase::$trackChanges protected property If TRUE, we will maintain hashed source rows to determine whether incoming data has changed.
SourcePluginBase::aboveHighwater protected function Check if the incoming data is newer than what we've previously imported.
SourcePluginBase::current public function
SourcePluginBase::getCache protected function Get the cache object.
SourcePluginBase::getCurrentIds public function Getter for currentSourceIds data member.
SourcePluginBase::getIterator protected function Returns the iterator that will yield the row arrays to be processed.
SourcePluginBase::getModuleHandler protected function Get the module handler.
SourcePluginBase::key public function Get the iterator key.
SourcePluginBase::next public function The migration iterates over rows returned by the source plugin. This method determines the next row which will be processed and imported into the system.
SourcePluginBase::prepareRow public function Add additional data to the row. Overrides MigrateSourceInterface::prepareRow 33
SourcePluginBase::rewind public function Rewind the iterator.
SourcePluginBase::rowChanged protected function Check if the incoming row has changed since our last import.
SourcePluginBase::valid public function Whether the iterator is currently valid.
SqlBase::$database protected property 1
SqlBase::$query protected property 59
SqlBase::$state protected property State service for retrieving database info.
SqlBase::count public function Get the source count. Overrides SourcePluginBase::count 4
SqlBase::getDatabase public function Get the database connection object. 1
SqlBase::initializeIterator protected function Implementation of MigrateSource::performRewind(). Overrides SourcePluginBase::initializeIterator 18
SqlBase::mapJoinable protected function Check if we can join against the map table. 1
SqlBase::prepareQuery protected function A helper for adding tags and metadata to the query.
SqlBase::query abstract public function 59
SqlBase::select protected function Wrapper for database select.
SqlBase::setUpDatabase protected function Get a connection to the referenced database, adding the connection if necessary.
SqlBase::__toString public function Print the query string when the object is used a string. Overrides MigrateSourceInterface::__toString
StringTranslationTrait::$stringTranslation protected property The string translation service.
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.