recurring_events-2.0.x-dev/modules/recurring_events_registration/modules/recurring_events_reminders/src/Plugin/Field/FieldType/RegistrationReminders.php

modules/recurring_events_registration/modules/recurring_events_reminders/src/Plugin/Field/FieldType/RegistrationReminders.php
<?php

declare(strict_types=1);

namespace Drupal\recurring_events_reminders\Plugin\Field\FieldType;

use Drupal\Core\Field\Attribute\FieldType;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\text\Plugin\Field\FieldType\TextLongItem;

/**
 * Plugin implementation of the 'registration_reminder' field type.
 */
#[FieldType(
  id: "registration_reminders",
  label: new TranslatableMarkup("Event Registration Reminders"),
  description: new TranslatableMarkup("Stores an event registration reminders configuration"),
  default_widget: "registration_reminders",
  default_formatter: "registration_reminders",
)]
class RegistrationReminders extends TextLongItem {

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldStorageDefinitionInterface $field_definition) {
    $schema = parent::schema($field_definition);

    $schema['columns']['reminder'] = [
      'type' => 'int',
      'default' => 0,
      'unsigned' => TRUE,
    ];

    $schema['columns']['reminder_amount'] = [
      'type' => 'int',
      'default' => 0,
      'unsigned' => TRUE,
    ];

    $schema['columns']['reminder_units'] = [
      'type' => 'varchar',
      'length' => 255,
    ];

    return $schema;
  }

  /**
   * {@inheritdoc}
   */
  public function isEmpty() {
    $reminder = $this->get('reminder')->getValue();
    $reminder_amount = $this->get('reminder_amount')->getValue();
    $reminder_units = $this->get('reminder_units')->getValue();

    return parent::isEmpty() &&
      empty($reminder) &&
      empty($reminder_amount) &&
      empty($reminder_units);
  }

  /**
   * {@inheritdoc}
   */
  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
    $properties = parent::propertyDefinitions($field_definition);

    $properties['reminder'] = DataDefinition::create('boolean')
      ->setLabel(t('Enable Email Reminder'))
      ->setDescription(t('Select whether to enable email reminders for registrants.'));

    $properties['reminder_amount'] = DataDefinition::create('integer')
      ->setLabel(t('Reminder Time'))
      ->setDescription(t('Select when the reminder should be sent out.'));

    $properties['reminder_units'] = DataDefinition::create('string')
      ->setLabel(t('Reminder Time Units'))
      ->setDescription(t('Select when the reminder should be sent out (units).'));

    return $properties;
  }

}

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

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