first commit for custom module

This commit is contained in:
2025-10-29 11:39:26 +01:00
parent 6f35e0066a
commit f8930f9fc2
3 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
views.field.view_computed_date_unique:
type: views_field
label: 'Computed Date Unique'

View File

@@ -0,0 +1,52 @@
<?php
namespace Drupal\popsu_uniqdate\Plugin\Field\FieldType;
use Drupal\Core\Entity\FieldableEntityInterface;
// use Drupal\Core\Field\EntityReferenceFieldItemList;
// use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface;
use Drupal\datetime\Plugin\Field\FieldType\DateTimeFieldItemList;
use Drupal\Core\Field\FieldItemList;
use Drupal\Core\TypedData\TypedDataInterface;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\TypedData\ComputedItemListTrait;
// https://www.drupal.org/node/2112677
// https://www.cornel.co/article/entity-reference-computed-field-example-drupal
// https://www.caxy.com/blog/drupal-custom-form-and-computed-fields
class ComputedUniqDate extends DateTimeFieldItemList
{
use ComputedItemListTrait;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* {@inheritdoc}
*/
public function __construct(BaseFieldDefinition $definition, $name, TypedDataInterface $parent) {
parent::__construct($definition, $name, $parent);
$this->entityTypeManager = \Drupal::entityTypeManager();
}
/**
* Compute the values.
*/
protected function computeValue() {
// $query = \Drupal::entityQuery('node')
$entity = $this->getEntity();
// $storage = \Drupal::service('entity_type.manager')->getStorage('node');
$dates = $entity->get('field_date')->getValue();
asort($dates);
$last_date = array_pop($dates);
$this->list[0] = $this->createItem(0, $last_date);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Drupal\popsu_uniqdate\Plugin\views\field;
use Drupal\views\ResultRow;
use Drupal\views\Plugin\views\field\FieldPluginBase;
/**
* A handler to provide proper displays for profile current company.
*
* @ingroup views_field_handlers
*
* @ViewsField("views_computed_date_unique")
*/
class ViewsComputedDateUnique extends FieldPluginBase {
/**
* {@inheritdoc}
*/
public function render(ResultRow $values) {
$entity = $values->_entity;
$uniqdate = $entity->get('computed_date_unique')->getValue();
return $uniqdate[0]['value'];
// $dates = $entity->get('field_date')->getvalue();
// asort($dates);
// return array_pop($dates);
}
/**
* {@inheritdoc}
*/
public function query() {
// This function exists to override parent query function.
// Do nothing.
}
}