data_pipelines-1.x-dev/src/Plugin/DatasetTransform/MapValues.php

src/Plugin/DatasetTransform/MapValues.php
<?php

declare(strict_types=1);

namespace Drupal\data_pipelines\Plugin\DatasetTransform;

use Drupal\data_pipelines\Attribute\DatasetTransform;
use Drupal\data_pipelines\DatasetData;
use Drupal\data_pipelines\Transform\TransformPluginBase;

/**
 * Defines a transform that maps values.
 */
#[DatasetTransform(
  id: 'map',
  fields: TRUE,
)]
class MapValues extends TransformPluginBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return parent::defaultConfiguration() + [
      'map' => [],
    ];
  }

  /**
   * {@inheritdoc}
   */
  protected function doTransformField(string $field_name, DatasetData $record): DatasetData {
    $map = $this->configuration['map'];
    $record = parent::doTransformField($field_name, $record);
    if ($record->offsetExists($field_name)) {
      $value = $record[$field_name];
      if (array_key_exists($value, $map)) {
        $record[$field_name] = $map[$value];
      }
      return $record;
    }
    return $record;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc