publication_date-8.x-2.x-dev/src/Plugin/Field/FieldType/PublicationDateFieldItemList.php

src/Plugin/Field/FieldType/PublicationDateFieldItemList.php
<?php

namespace Drupal\publication_date\Plugin\Field\FieldType;

use Drupal\Core\Entity\EntityPublishedInterface;
use Drupal\Core\Field\ChangedFieldItemList;

/**
 * Defines a item list class for publication date fields.
 */
class PublicationDateFieldItemList extends ChangedFieldItemList {

  /**
   * {@inheritdoc}
   */
  public function preSave() {
    parent::preSave();
    if ($this->isEmpty()) {
      $entity = $this->getEntity();
      if ($entity instanceof EntityPublishedInterface && $entity->isPublished()) {
        $this->set(0, ['value' => \Drupal::time()->getRequestTime()]);
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function __get($property_name) {
    if ($property_name === 'published_at_or_now' && $this->isEmpty()) {
      $this->set(0, ['value' => NULL]);
    }
    return parent::__get($property_name);
  }

}

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

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