You are here

abstract class WebformVariantBase in Webform 8.5

Same name and namespace in other branches
  1. 6.x src/Plugin/WebformVariantBase.php \Drupal\webform\Plugin\WebformVariantBase

Provides a base class for a webform variant.

Hierarchy

Expanded class hierarchy of WebformVariantBase

See also

\Drupal\webform\Plugin\WebformVariantInterface

\Drupal\webform\Plugin\WebformVariantManager

\Drupal\webform\Plugin\WebformVariantManagerInterface

Plugin API

5 files declare their use of WebformVariantBase
BrokenWebformVariant.php in src/Plugin/WebformVariant/BrokenWebformVariant.php
ExampleWebformVariant.php in modules/webform_example_variant/src/Plugin/WebformVariant/ExampleWebformVariant.php
OverrideWebformVariant.php in src/Plugin/WebformVariant/OverrideWebformVariant.php
TestWebformOffCanvasWidthVariant.php in tests/modules/webform_test_variant/src/Plugin/WebformVariant/TestWebformOffCanvasWidthVariant.php
TestWebformVariant.php in tests/modules/webform_test_variant/src/Plugin/WebformVariant/TestWebformVariant.php

File

src/Plugin/WebformVariantBase.php, line 20

Namespace

Drupal\webform\Plugin
View source
abstract class WebformVariantBase extends PluginBase implements WebformVariantInterface {
  use WebformEntityInjectionTrait;
  use WebformPluginSettingsTrait;

  /**
   * The webform variant ID.
   *
   * @var string
   */
  protected $variant_id;

  /**
   * The element key of the webform variant.
   *
   * @var string
   */
  protected $element_key = '';

  /**
   * The webform variant label.
   *
   * @var string
   */
  protected $label;

  /**
   * The webform variant notes.
   *
   * @var string
   */
  protected $notes = '';

  /**
   * The webform variant status.
   *
   * @var bool
   */
  protected $status = 1;

  /**
   * The weight of the webform variant.
   *
   * @var int|string
   */
  protected $weight = '';

  /**
   * The configuration factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * Constructs a WebformVariantBase object.
   *
   * IMPORTANT:
   * Webform variants are initialized and serialized when they are attached to a
   * webform. Make sure not include any services as a dependency injection
   * that directly connect to the database. This will prevent
   * "LogicException: The database connection is not serializable." exceptions
   * from being thrown when a form is serialized via an Ajax callback and/or
   * form build.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The configuration factory.
   *
   * @see \Drupal\webform\Entity\Webform::getVariants
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this
      ->setConfiguration($configuration);
    $this->configFactory = $config_factory;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('config.factory'));
  }

  /**
   * {@inheritdoc}
   */
  public function getSummary() {
    return [
      '#theme' => 'webform_variant_' . $this->pluginId . '_summary',
      '#settings' => $this->configuration,
      '#variant' => $this,
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function label() {
    return $this
      ->getLabel();
  }

  /**
   * {@inheritdoc}
   */
  public function description() {
    return $this->pluginDefinition['description'];
  }

  /**
   * {@inheritdoc}
   */
  public function getMachineNameReplacePattern() {
    return $this->pluginDefinition['machine_name_replace_pattern'];
  }

  /**
   * {@inheritdoc}
   */
  public function getMachineNameReplace() {
    return $this->pluginDefinition['machine_name_replace'];
  }

  /**
   * {@inheritdoc}
   */
  public function getVariantId() {
    return $this->variant_id;
  }

  /**
   * {@inheritdoc}
   */
  public function setVariantId($variant_id) {
    $this->variant_id = $variant_id;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getElementKey() {
    return $this->element_key;
  }

  /**
   * {@inheritdoc}
   */
  public function setElementKey($element_key) {
    $this->element_key = $element_key;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setLabel($label) {
    $this->label = $label;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getLabel() {
    return $this->label;
  }

  /**
   * {@inheritdoc}
   */
  public function setNotes($notes) {
    $this->notes = $notes;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getNotes() {
    return $this->notes;
  }

  /**
   * {@inheritdoc}
   */
  public function setStatus($status) {
    $this->status = $status;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getStatus() {
    return $this->status;
  }

  /**
   * {@inheritdoc}
   */
  public function setWeight($weight) {
    $this->weight = $weight;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getWeight() {
    return $this->weight;
  }

  /**
   * {@inheritdoc}
   */
  public function enable() {
    return $this
      ->setStatus(TRUE);
  }

  /**
   * {@inheritdoc}
   */
  public function disable() {
    return $this
      ->setStatus(FALSE);
  }

  /**
   * {@inheritdoc}
   */
  public function isExcluded() {
    return $this->configFactory
      ->get('webform.settings')
      ->get('variant.excluded_variants.' . $this->pluginDefinition['id']) ? TRUE : FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function isEnabled() {
    return $this->status ? TRUE : FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function isDisabled() {
    return !$this
      ->isEnabled();
  }

  /**
   * {@inheritdoc}
   */
  public function isApplicable(WebformInterface $webform) {
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return [
      'id' => $this
        ->getPluginId(),
      'label' => $this
        ->getLabel(),
      'notes' => $this
        ->getNotes(),
      'variant_id' => $this
        ->getVariantId(),
      'element_key' => $this
        ->getElementKey(),
      'status' => $this
        ->getStatus(),
      'weight' => $this
        ->getWeight(),
      'settings' => $this->configuration,
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    $configuration += [
      'variant_id' => '',
      'element_key' => '',
      'label' => '',
      'notes' => '',
      'status' => 1,
      'weight' => '',
      'settings' => [],
    ];
    $this->configuration = $configuration['settings'] + $this
      ->defaultConfiguration();
    $this->variant_id = $configuration['variant_id'];
    $this->element_key = $configuration['element_key'];
    $this->label = $configuration['label'];
    $this->notes = $configuration['notes'];
    $this->status = $configuration['status'];
    $this->weight = $configuration['weight'];
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
  }

  /**
   * {@inheritdoc}
   */
  public function getOffCanvasWidth() {
    return WebformDialogHelper::DIALOG_NORMAL;
  }

  /**
   * {@inheritdoc}
   */
  public function applyVariant() {
    $webform = $this
      ->getWebform();

    // Do not apply variant if it is not applicable to the webform.
    if (!$this
      ->isApplicable($webform)) {
      return FALSE;
    }

    // Apply variant here.
    return TRUE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
WebformEntityInjectionTrait::$webform protected property The webform.
WebformEntityInjectionTrait::$webformSubmission protected property The webform submission.
WebformEntityInjectionTrait::getWebform public function Get the webform that this handler is attached to.
WebformEntityInjectionTrait::getWebformSubmission public function Set webform and webform submission entity.
WebformEntityInjectionTrait::resetEntities public function Reset webform and webform submission entity.
WebformEntityInjectionTrait::setEntities public function
WebformEntityInjectionTrait::setWebform public function Set the webform that this is handler is attached to.
WebformEntityInjectionTrait::setWebformSubmission public function Get the webform submission that this handler is handling.
WebformPluginSettingsTrait::getSetting public function
WebformPluginSettingsTrait::getSettings public function
WebformPluginSettingsTrait::setSetting public function
WebformPluginSettingsTrait::setSettings public function
WebformVariantBase::$configFactory protected property The configuration factory.
WebformVariantBase::$element_key protected property The element key of the webform variant.
WebformVariantBase::$label protected property The webform variant label.
WebformVariantBase::$notes protected property The webform variant notes.
WebformVariantBase::$status protected property The webform variant status.
WebformVariantBase::$variant_id protected property The webform variant ID.
WebformVariantBase::$weight protected property The weight of the webform variant.
WebformVariantBase::applyVariant public function Apply variant to the webform. Overrides WebformVariantInterface::applyVariant 3
WebformVariantBase::buildConfigurationForm public function Form constructor. Overrides PluginFormInterface::buildConfigurationForm 3
WebformVariantBase::calculateDependencies public function
WebformVariantBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 1
WebformVariantBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration 3
WebformVariantBase::description public function Returns the webform variant description. Overrides WebformVariantInterface::description
WebformVariantBase::disable public function Disables the webform variant. Overrides WebformVariantInterface::disable
WebformVariantBase::enable public function Enables the webform variant. Overrides WebformVariantInterface::enable
WebformVariantBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
WebformVariantBase::getElementKey public function Returns the element key of the webform variant. Overrides WebformVariantInterface::getElementKey
WebformVariantBase::getLabel public function Returns the label of the webform variant. Overrides WebformVariantInterface::getLabel
WebformVariantBase::getMachineNameReplace public function Returns the webform variant machine name replacement character. Overrides WebformVariantInterface::getMachineNameReplace
WebformVariantBase::getMachineNameReplacePattern public function Returns the webform variant machine name replacement pattern. Overrides WebformVariantInterface::getMachineNameReplacePattern
WebformVariantBase::getNotes public function Returns notes of the webform variant. Overrides WebformVariantInterface::getNotes
WebformVariantBase::getOffCanvasWidth public function Get configuration form's off-canvas width. Overrides WebformVariantInterface::getOffCanvasWidth 1
WebformVariantBase::getStatus public function Returns the status of the webform variant. Overrides WebformVariantInterface::getStatus
WebformVariantBase::getSummary public function Returns a render array summarizing the configuration of the webform variant. Overrides WebformVariantInterface::getSummary 1
WebformVariantBase::getVariantId public function Returns the unique ID representing the webform variant. Overrides WebformVariantInterface::getVariantId
WebformVariantBase::getWeight public function Returns the weight of the webform variant. Overrides WebformVariantInterface::getWeight
WebformVariantBase::isApplicable public function Determine if this variant is applicable to the webform. Overrides WebformVariantInterface::isApplicable 2
WebformVariantBase::isDisabled public function Returns the webform variant disabled indicator. Overrides WebformVariantInterface::isDisabled
WebformVariantBase::isEnabled public function Returns the webform variant enabled indicator. Overrides WebformVariantInterface::isEnabled 1
WebformVariantBase::isExcluded public function Checks if the variant is excluded via webform.settings. Overrides WebformVariantInterface::isExcluded
WebformVariantBase::label public function Returns the webform variant label. Overrides WebformVariantInterface::label
WebformVariantBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
WebformVariantBase::setElementKey public function Sets the element key of this webform variant. Overrides WebformVariantInterface::setElementKey
WebformVariantBase::setLabel public function Sets the label for this webform variant. Overrides WebformVariantInterface::setLabel
WebformVariantBase::setNotes public function Set notes for this webform variant. Overrides WebformVariantInterface::setNotes
WebformVariantBase::setStatus public function Sets the status for this webform variant. Overrides WebformVariantInterface::setStatus
WebformVariantBase::setVariantId public function Sets the id for this webform variant. Overrides WebformVariantInterface::setVariantId
WebformVariantBase::setWeight public function Sets the weight for this webform variant. Overrides WebformVariantInterface::setWeight
WebformVariantBase::submitConfigurationForm public function Form submission handler. Overrides PluginFormInterface::submitConfigurationForm 3
WebformVariantBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm 1
WebformVariantBase::__construct public function Constructs a WebformVariantBase object. Overrides PluginBase::__construct 1