Color.php

Same filename in this branch
  1. 8.9.x core/modules/color/src/Plugin/migrate/destination/Color.php
  2. 8.9.x core/lib/Drupal/Core/Render/Element/Color.php
  3. 8.9.x core/lib/Drupal/Component/Utility/Color.php
Same filename in other branches
  1. 9 core/modules/color/src/Plugin/migrate/destination/Color.php
  2. 9 core/modules/color/src/Plugin/migrate/source/d7/Color.php
  3. 9 core/lib/Drupal/Core/Render/Element/Color.php
  4. 9 core/lib/Drupal/Component/Utility/Color.php
  5. 10 core/lib/Drupal/Core/Render/Element/Color.php
  6. 10 core/lib/Drupal/Component/Utility/Color.php
  7. 11.x core/lib/Drupal/Core/Render/Element/Color.php
  8. 11.x core/lib/Drupal/Component/Utility/Color.php

Namespace

Drupal\color\Plugin\migrate\source\d7

File

core/modules/color/src/Plugin/migrate/source/d7/Color.php

View source
<?php

namespace Drupal\color\Plugin\migrate\source\d7;

use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
use Drupal\Core\Extension\ThemeHandler;
use Drupal\migrate\Row;
use Drupal\migrate_drupal\Plugin\migrate\source\VariableMultiRow;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\State\StateInterface;
use Drupal\migrate\Plugin\MigrationInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Drupal 7 color source from database.
 *
 * @MigrateSource(
 *   id = "d7_color",
 *   source_module = "color"
 * )
 */
class Color extends VariableMultiRow {
    use DeprecatedServicePropertyTrait;
    
    /**
     * {@inheritdoc}
     */
    protected $deprecatedProperties = [
        'entityManager' => 'entity.manager',
    ];
    
    /**
     * The theme handler.
     *
     * @var \Drupal\Core\Extension\ThemeHandler
     */
    protected $themeHandler;
    
    /**
     * {@inheritdoc}
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, EntityTypeManagerInterface $entity_type_manager, ThemeHandler $theme_handler) {
        parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state, $entity_type_manager);
        $this->themeHandler = $theme_handler;
    }
    
    /**
     * {@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_type.manager'), $container->get('theme_handler'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function query() {
        // Get color data for all themes.
        $query = $this->select('variable', 'v')
            ->fields('v', [
            'name',
            'value',
        ])
            ->condition('name', 'color_%', 'LIKE');
        return $query;
    }
    
    /**
     * {@inheritdoc}
     */
    public function prepareRow(Row $row) {
        $themes = $this->themeHandler
            ->listInfo();
        $themes_installed = [];
        
        /** @var \Drupal\Core\Extension\Extension $theme */
        foreach ($themes as $theme) {
            if ($theme->status) {
                $themes_installed[] = $theme->getName();
            }
        }
        // The name is of the form 'color_theme_variable'.
        $name = explode('_', $row->getSourceProperty('name'));
        // Set theme_installed if this source theme is installed.
        if (in_array($name[1], $themes_installed)) {
            $row->setSourceProperty('theme_installed', TRUE);
        }
        return parent::prepareRow($row);
    }
    
    /**
     * {@inheritdoc}
     */
    public function fields() {
        return [
            'name' => $this->t('A color variable for a theme.'),
            'value' => $this->t('The value of a color variable.'),
        ];
    }

}

Classes

Title Deprecated Summary
Color Drupal 7 color source from database.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.