headless_cms-1.0.3/modules/headless_cms_notify/headless_cms_notify.basefields.inc
modules/headless_cms_notify/headless_cms_notify.basefields.inc
<?php
/**
* @file
* Basefields.
*/
declare(strict_types=1);
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\field\FieldStorageConfigInterface;
use Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyMessageDiscoveryService;
/**
* Defines basefields for the consumer entity.
*
* Adds fields for preview and revision URLs.
*/
function headless_cms_notify_consumer_basefields_01(): array {
$fields = [];
/** @var \Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyMessageDiscoveryService $discovery */
$discovery = \Drupal::service(HeadlessNotifyMessageDiscoveryService::class);
$messageTypeOptions = array_reduce($discovery->getMessageTypes(), function ($carry, $item) {
$carry[$item->messageTypeId] = $item->messageTypeLabel;
return $carry;
}, []);
$fields['headless_cms_notify_enabled'] = BaseFieldDefinition::create('boolean')
->setLabel(new TranslatableMarkup('Enabled'))
->setDescription(new TranslatableMarkup('Whether notifications are enabled for this consumer.'))
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'boolean',
'weight' => 5,
])
->setDisplayOptions('form', [
'type' => 'boolean_checkbox',
'weight' => 5,
])
->setRevisionable(TRUE)
->setTranslatable(FALSE)
->setRequired(FALSE)
->setDefaultValue(FALSE);
$fields['headless_cms_notify_transport'] = BaseFieldDefinition::create('entity_reference')
->setLabel(new TranslatableMarkup('Transport'))
->setDescription(new TranslatableMarkup('The transport to use for sending notifications.'))
->setSetting('target_type', 'headless_notify_transport')
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'entity_reference_label',
'weight' => 6,
])
->setDisplayOptions('form', [
'type' => 'options_select',
'weight' => 6,
])
->setRevisionable(TRUE)
->setTranslatable(FALSE)
->setRequired(FALSE)
->setDefaultValue(FALSE);
$fields['headless_cms_notify_notification_types'] = BaseFieldDefinition::create('list_string')
->setLabel(new TranslatableMarkup('Notification Types'))
->setDescription(new TranslatableMarkup('Select which types of notifications should be sent.'))
->setCardinality(FieldStorageConfigInterface::CARDINALITY_UNLIMITED)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'list_default',
'weight' => 7,
])
->setDisplayOptions('form', [
'type' => 'options_buttons',
'weight' => 7,
])
->setSetting('allowed_values', $messageTypeOptions)
->setRevisionable(TRUE)
->setTranslatable(FALSE)
->setRequired(FALSE)
->setDefaultValue(FALSE);
$fields['headless_cms_notify_entity_types'] = BaseFieldDefinition::create('list_string')
->setLabel(new TranslatableMarkup('Entity Notifications'))
->setDescription(new TranslatableMarkup('Notifications about entity operations are sent for the selected entity types.'))
->setCardinality(FieldStorageConfigInterface::CARDINALITY_UNLIMITED)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'list_default',
'weight' => 6,
])
->setDisplayOptions('form', [
'type' => 'options_buttons',
'weight' => 6,
])
->setSetting('allowed_values_function', 'headless_cms_notify_entity_type_values')
->setRevisionable(TRUE)
->setTranslatable(FALSE)
->setRequired(FALSE)
->setDefaultValue(FALSE);
return $fields;
}
/**
* Get allowed_values for each known entity type.
*/
function headless_cms_notify_entity_type_values(): array {
$values = [];
foreach (\Drupal::entityTypeManager()->getDefinitions() as $entityType) {
$values[$entityType->id()] = sprintf('[%s] - %s', $entityType->id(), $entityType->getLabel());
}
return $values;
}
