You are here

abstract class FlexiformFormEntityBase in Flexiform 8

Provides the base form entity plugin.

Hierarchy

Expanded class hierarchy of FlexiformFormEntityBase

4 files declare their use of FlexiformFormEntityBase
FlexiformFormEntityCurrentUser.php in src/Plugin/FlexiformFormEntity/FlexiformFormEntityCurrentUser.php
FlexiformFormEntityProvided.php in src/Plugin/FlexiformFormEntity/FlexiformFormEntityProvided.php
FlexiformFormEntityTypedDataReferencedEntity.php in src/Plugin/FlexiformFormEntity/FlexiformFormEntityTypedDataReferencedEntity.php
UserProfile.php in src/Plugin/FlexiformFormEntity/UserProfile.php

File

src/FormEntity/FlexiformFormEntityBase.php, line 13

Namespace

Drupal\flexiform\FormEntity
View source
abstract class FlexiformFormEntityBase extends ContextAwarePluginBase implements FlexiformFormEntityInterface {
  use DependencySerializationTrait;

  /**
   * The flexiform entity manager.
   *
   * @var \Drupal\flexiform\FormEntity\FlexiformFormEntityManager
   */
  protected $formEntityManager;

  /**
   * The actual context, wraps the entity item.
   *
   * @var \Drupal\Core\Plugin\Context\ContextInterface
   */
  protected $formEntityContext;

  /**
   * Whether or not the form entity has been prepared.
   *
   * @var bool
   */
  protected $prepared;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
    if (!isset($configuration['manager'])) {
      throw new \Exception('No Form Entity Manager Supplied');
    }

    // Set the form entity manager.
    $this->formEntityManager = $configuration['manager'];

    // Unset these values so they can't be accessed like normal configuration.
    unset($configuration['manager']);
    unset($configuration['namespace']);
    parent::__construct($configuration, $plugin_id, $plugin_definition);

    // Load in the required contexts for this plugin.
    if (!empty($configuration['context_mapping'])) {
      foreach ($configuration['context_mapping'] as $key => $context_namespace) {
        $context = $this->formEntityManager
          ->getContext($context_namespace);
        $this->context[$key] = $context;
      }
    }
  }

  /**
   * Check whether a given entity matches bundle required.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity to check the bundle on.
   *
   * @return bool
   *   Whether the bundle matches the expected.
   */
  protected function checkBundle(EntityInterface $entity) {
    return !$entity
      ->getEntityType()
      ->hasKey('bundle') || $entity
      ->bundle() == $this
      ->getBundle();
  }

  /**
   * {@inheritdoc}
   */
  public function getLabel() {
    return !empty($this->configuration['label']) ? $this->configuration['label'] : $this->pluginDefinition['label'];
  }

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

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

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

  /**
   * {@inheritdoc}
   */
  public function getFormEntityContextDefinition() {
    return $this->formEntityContext
      ->getContextDefinition();
  }

  /**
   * Get the Entity.
   */
  public abstract function getEntity();

  /**
   * Save the entity.
   *
   * If subclasses need to do more as part of saving, they should override
   * ::doSave().
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity to save.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   *   Errors during the entity save.
   */
  public final function saveEntity(EntityInterface $entity) {
    if (!isset($this->configuration['save_on_submit']) || $this->configuration['save_on_submit']) {
      $this
        ->doSave($entity);
    }
  }

  /**
   * Perform the save on the entity.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity to save.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   *   Errors during the entity save.
   */
  protected function doSave(EntityInterface $entity) {
    $entity
      ->save();
  }

  /**
   * Prepare a configuration form.
   */
  public function configurationForm(array $form, FormStateInterface $form_state) {
    $form['save_on_submit'] = [
      '#type' => 'checkbox',
      '#title' => t('Save this Entity when the form is submitted.'),
      '#default_value' => isset($this->configuration['save_on_submit']) ? $this->configuration['save_on_submit'] : TRUE,
    ];
    $form['context_mapping'] = [
      '#type' => 'container',
      '#tree' => TRUE,
    ];
    if (empty($this->pluginDefinition['context']) || !is_array($this->pluginDefinition['context'])) {
      return $form;
    }
    foreach ($this->pluginDefinition['context'] as $key => $context_definition) {
      $matching_contexts = $this
        ->contextHandler()
        ->getMatchingContexts($this->formEntityManager
        ->getContexts(), $context_definition);
      $context_options = [];
      foreach ($matching_contexts as $context) {
        $context_options[$context
          ->getEntityNamespace()] = $context
          ->getContextDefinition()
          ->getLabel();
      }
      $form['context_mapping'][$key] = [
        '#type' => 'select',
        '#title' => $context_definition
          ->getLabel(),
        '#options' => $context_options,
        '#default_value' => !empty($this->configuration['context_mapping'][$key]) ? $this->configuration['context_mapping'][$key] : NULL,
      ];
    }
    return $form;
  }

  /**
   * Validate the configuration form.
   */
  public function configurationFormValidate(array $form, FormStateInterface $form_state) {
  }

  /**
   * Submit the configuration form.
   */
  public function configurationFormSubmit(array $form, FormStateInterface $form_state) {
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContextAwarePluginBase::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginBase::$contexts Deprecated private property Data objects representing the contexts passed in the plugin configuration.
ContextAwarePluginBase::contextHandler protected function Wraps the context handler.
ContextAwarePluginBase::createContextFromConfiguration protected function Overrides ContextAwarePluginBase::createContextFromConfiguration
ContextAwarePluginBase::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts 9
ContextAwarePluginBase::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge 7
ContextAwarePluginBase::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyInterface::getCacheTags 4
ContextAwarePluginBase::getContext public function This code is identical to the Component in order to pick up a different Context class. Overrides ContextAwarePluginBase::getContext
ContextAwarePluginBase::getContextDefinition public function Overrides ContextAwarePluginBase::getContextDefinition
ContextAwarePluginBase::getContextDefinitions public function Overrides ContextAwarePluginBase::getContextDefinitions
ContextAwarePluginBase::getContextMapping public function Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::getContextMapping
ContextAwarePluginBase::getContexts public function Gets the defined contexts. Overrides ContextAwarePluginInterface::getContexts
ContextAwarePluginBase::getContextValue public function Gets the value for a defined context. Overrides ContextAwarePluginInterface::getContextValue
ContextAwarePluginBase::getContextValues public function Gets the values for all defined contexts. Overrides ContextAwarePluginInterface::getContextValues
ContextAwarePluginBase::setContext public function Set a context on this plugin. Overrides ContextAwarePluginBase::setContext
ContextAwarePluginBase::setContextMapping public function Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::setContextMapping
ContextAwarePluginBase::setContextValue public function Sets the value for a defined context. Overrides ContextAwarePluginBase::setContextValue
ContextAwarePluginBase::validateContexts public function Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface::validateContexts
ContextAwarePluginBase::__get public function Implements magic __get() method.
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
FlexiformFormEntityBase::$formEntityContext protected property The actual context, wraps the entity item.
FlexiformFormEntityBase::$formEntityManager protected property The flexiform entity manager.
FlexiformFormEntityBase::$prepared protected property Whether or not the form entity has been prepared.
FlexiformFormEntityBase::checkBundle protected function Check whether a given entity matches bundle required.
FlexiformFormEntityBase::configurationForm public function Prepare a configuration form. Overrides FlexiformFormEntityInterface::configurationForm 3
FlexiformFormEntityBase::configurationFormSubmit public function Submit the configuration form. Overrides FlexiformFormEntityInterface::configurationFormSubmit
FlexiformFormEntityBase::configurationFormValidate public function Validate the configuration form. Overrides FlexiformFormEntityInterface::configurationFormValidate
FlexiformFormEntityBase::doSave protected function Perform the save on the entity. 1
FlexiformFormEntityBase::getBundle public function Get the bundle. Overrides FlexiformFormEntityInterface::getBundle 2
FlexiformFormEntityBase::getEntity abstract public function Get the Entity. 4
FlexiformFormEntityBase::getEntityType public function Get the entity type. Overrides FlexiformFormEntityInterface::getEntityType 2
FlexiformFormEntityBase::getFormEntityContext public function Get the context. Overrides FlexiformFormEntityInterface::getFormEntityContext
FlexiformFormEntityBase::getFormEntityContextDefinition public function Get the context definition. Overrides FlexiformFormEntityInterface::getFormEntityContextDefinition
FlexiformFormEntityBase::getLabel public function Get the label for this plugin. Overrides FlexiformFormEntityInterface::getLabel
FlexiformFormEntityBase::saveEntity final public function Save the entity.
FlexiformFormEntityBase::__construct public function Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides ContextAwarePluginBase::__construct 3
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.
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2