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

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

declare(strict_types=1);

namespace Drupal\data_pipelines\Plugin\DatasetTransform;

use Drupal\Component\Utility\Random;
use Drupal\data_pipelines\Attribute\DatasetTransform;
use Drupal\data_pipelines\DatasetData;
use Drupal\data_pipelines\Transform\TransformPluginBase;

/**
 * Defines a transform that concatenates records.
 */
#[DatasetTransform(
  id: 'concat',
  records: TRUE,
)]
class Concat extends TransformPluginBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return parent::defaultConfiguration() + [
      'separator' => ' ',
      'fields' => [],
      'as' => (new Random())->name(),
    ];
  }

  /**
   * {@inheritdoc}
   */
  protected function doTransformRecord(DatasetData $record): DatasetData {
    $as = $this->configuration['as'];
    $record = parent::doTransformRecord($record);
    if (!$this->configuration['fields']) {
      return $record;
    }
    $value = [];
    foreach ($this->configuration['fields'] as $field_name) {
      if ($record->offsetExists($field_name)) {
        $value[] = $record[$field_name];
      }
    }
    $record[$as] = implode($this->configuration['separator'], $value);
    return $record;
  }

}

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

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