headless_cms-1.0.3/modules/headless_cms_notify/headless_cms_notify.module

modules/headless_cms_notify/headless_cms_notify.module
<?php

/**
 * @file
 * Module file.
 */

declare(strict_types=1);

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Url;
use Drupal\headless_cms\HeadlessCmsUtility;
use Drupal\headless_cms_notify\HeadlessNotificationEntityOperation;
use Drupal\headless_cms_notify\HeadlessNotifyService;

require_once 'headless_cms_notify.basefields.inc';

/**
 * Implements hook_entity_base_field_info().
 */
function headless_cms_notify_entity_base_field_info(EntityTypeInterface $entity_type) {
  $fields = [];

  if ($entity_type->id() === 'consumer') {
    $fields = array_merge($fields, headless_cms_notify_consumer_basefields_01());
  }

  return $fields;
}

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Add consumer specific form alterations.
 */
function headless_cms_notify_form_consumer_form_alter(&$form, FormStateInterface &$form_state, $form_id) {
  HeadlessCmsUtility::alterConsumerForm($form);

  $form['headless_cms_notify_transport']['widget']['#description'] = new TranslatableMarkup(
    'The transport to use for sending notifications. <a href=":url">Manage transports here</a>.', [
      ':url' => Url::fromRoute('entity.headless_notify_transport.collection')->toString(),
    ]
  );

  $form['headless_cms_notify_enabled']['#weight'] = -10;
  $form['headless_cms_notify_transport']['#weight'] = -9;
  $form['headless_cms_notify_notification_types']['#weight'] = -8;
  $form['headless_cms_notify_entity_types']['#weight'] = -7;
  $form['headless_cms_notify_entity_types']['widget']['#attributes']['class'][] = 'contained-form-checkboxes';

  // Show message if no transports are available.
  if (count($form['headless_cms_notify_transport']['widget']['#options']) === 0) {
    $form['headless_cms_notify_transport'] = [
      '#type' => 'fieldset',
      '#title' => new TranslatableMarkup('No transports available'),
      '#description' => new TranslatableMarkup('No transports are available. Please <a href=":url">add a transport</a>.', [
        ':url' => Url::fromRoute('entity.headless_notify_transport.add_form')->toString(),
      ]),
      '#weight' => -9,
    ];
  }

  $form['additional_settings']['headless_cms_settings']['notify_settings'] = [
    '#type' => 'details',
    '#title' => new TranslatableMarkup('Notify'),
    '#open' => TRUE,

    'headless_cms_notify_enabled' => $form['headless_cms_notify_enabled'],
    'headless_cms_notify_transport' => $form['headless_cms_notify_transport'],
    'headless_cms_notify_notification_types' => $form['headless_cms_notify_notification_types'],
    'headless_cms_notify_entity_types' => $form['headless_cms_notify_entity_types'],
  ];

  unset($form['headless_cms_notify_enabled']);
  unset($form['headless_cms_notify_transport']);
  unset($form['headless_cms_notify_notification_types']);
  unset($form['headless_cms_notify_entity_types']);
}

/**
 * Implements hook_options_list_alter().
 */
function headless_cms_notify_options_list_alter(array &$options, array $context) {
  // Check if this is our transport field.
  if ($context['fieldDefinition']->getName() === 'headless_cms_notify_transport') {
    $storage = \Drupal::entityTypeManager()->getStorage('headless_notify_transport');
    /** @var \Drupal\headless_cms_notify\Entity\HeadlessNotifyTransportInterface[] $entities */
    $entities = $storage->loadMultiple();

    $options = [];
    foreach ($entities as $entity) {
      $pluginLabel = $entity->getTransportPlugin()->getLabel();
      $label = $entity->label();

      $options[$entity->id()] = sprintf('%s (%s)', $label, $pluginLabel);
    }
  }
}

/**
 * Handle any entity insert.
 */
function headless_cms_notify_entity_insert(EntityInterface $entity) {
  /** @var \Drupal\headless_cms_notify\HeadlessNotifyService $service */
  $service = \Drupal::service(HeadlessNotifyService::class);

  $service->sendEntityOperationNotification(HeadlessNotificationEntityOperation::Create, $entity);
}

/**
 * Handle eny entity update.
 */
function headless_cms_notify_entity_update(EntityInterface $entity) {
  if ($entity->isNew()) {
    return;
  }

  /** @var \Drupal\headless_cms_notify\HeadlessNotifyService $service */
  $service = \Drupal::service(HeadlessNotifyService::class);

  $service->sendEntityOperationNotification(HeadlessNotificationEntityOperation::Update, $entity);
}

/**
 * Handle any entity delete.
 */
function headless_cms_notify_entity_delete(EntityInterface $entity) {
  /** @var \Drupal\headless_cms_notify\HeadlessNotifyService $service */
  $service = \Drupal::service(HeadlessNotifyService::class);

  $service->sendEntityOperationNotification(HeadlessNotificationEntityOperation::Delete, $entity);
}

/**
 * Handle cache rebuild.
 */
function headless_cms_notify_rebuild() {
  /** @var \Drupal\headless_cms_notify\HeadlessNotifyService $service */
  $service = \Drupal::service(HeadlessNotifyService::class);

  $service->sendCacheRebuildNotification();
}

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

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