basket_imex-10.x-dev/src/Plugin/IMEX/field/DatetimeField.php

src/Plugin/IMEX/field/DatetimeField.php
<?php

namespace Drupal\basket_imex\Plugin\IMEX\field;

use Drupal\basket_imex\Plugins\IMEXfield\BasketIMEXfieldInterface;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface;

/**
 * DatetimeField IMEX type.
 *
 * @BasketIMEXfield(
 *   id = "datetime",
 *   type = {"datetime"},
 *   name = "Datetime",
 * )
 */
class DatetimeField implements BasketIMEXfieldInterface {

  /**
   * Getting data for export.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $fieldName
   *   Field that has been updated.
   */
  public function getValues($entity, $fieldName) {
    $values = [];
    if (!empty($entity->{$fieldName})) {
      foreach ($entity->get($fieldName) as $date_row) {
        if (!is_object($date_row->date)) {
          continue;
        }
        $values[] = \Drupal::service('date.formatter')->format($date_row->date->getTimestamp(), 'custom', 'd.m.Y H:i:s');
      }
    }
    return implode(PHP_EOL, $values);
  }

  /**
   * Data array formation.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $importValue
   *   Import value.
   */
  public function setValues($entity, $importValue = '') {
    $setValue = [
      [
        'value' => '',
      ],
    ];
    if (!empty($importValue)) {
      $importValues = explode(PHP_EOL, $importValue);
      foreach ($importValues as $key => $importValue) {
        $date = new DrupalDateTime(trim($importValue));
        $date->setTimezone(new \DateTimezone(DateTimeItemInterface::STORAGE_TIMEZONE));
        $setValue[$key] = [
          'value' => $date->format(DateTimeItemInterface::DATETIME_STORAGE_FORMAT),
        ];
      }
    }
    return $setValue;
  }

  /**
   * Additional field processing after $entity update / creation.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $importValue
   *   Import value.
   */
  public function postSave($entity, $importValue = '') {}

}

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

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