You are here

class SetWebformFieldValue in RULES WEBFORM 8

Same name and namespace in other branches
  1. 3.x src/Plugin/RulesAction/SetWebformFieldValue.php \Drupal\rules_webform\Plugin\RulesAction\SetWebformFieldValue

Action for altering of webform submission value.

This action can be used in all webform events. The difference is that for 'Submission update' event 'Save' is not needed. Because this event fires from hook_webform_submission_presave(). To know in which event this action uses we store event name in "event_name" context. "event_name" sets programmatically in hook_form_FORM_ID_alter(). Therefore its field is hidden on action edit form.

Plugin annotation


@RulesAction(
  id = "set_webform_field_value",
  label = @Translation("Set webform field value"),
  category = @Translation("A Webform"),
  context_definitions = {
    "field" = @ContextDefinition("any",
      label = @Translation("Webform field"),
      required = TRUE,
      assignment_restriction = "selector"
    ),
    "value" = @ContextDefinition("any",
      label = @Translation("Value"),
      required = TRUE
    ),
    "event_name" = @ContextDefinition("string")
  }
)

Hierarchy

Expanded class hierarchy of SetWebformFieldValue

File

src/Plugin/RulesAction/SetWebformFieldValue.php, line 36

Namespace

Drupal\rules_webform\Plugin\RulesAction
View source
class SetWebformFieldValue extends RulesActionBase {

  /**
   * Set a webform field value.
   *
   * @param mixed $field
   *   A webform field.
   * @param mixed $value
   *   New value of a webform field.
   * @param string $event_name
   *   An event name.
   */
  protected function doExecute($field, $value, $event_name) {
    $submission = \Drupal::state()
      ->get('rules_webform.submission');

    // Do nothing if a submission has been removed by
    // 'delete_webform_submission' action.
    if (!isset($submission) || !$event_name) {
      return;
    }
    $data = $submission
      ->getData();
    $field_name = $this
      ->getContexts()['field']
      ->getContextData()
      ->getName();
    if (array_key_exists($field_name, $data)) {
      $data[$field_name] = $value;
      $submission
        ->setData($data);

      // The 'submission_update' event fires from
      // hook_webform_submission_presave(). Therefore we don't have to save
      // changes. Saving is needed for events like 'webform_submit' and others.
      if ($event_name != 'updating_submission') {
        $submission
          ->save();
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurationAccessControlTrait::checkConfigurationAccess public function Checks configuration permission.
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::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::__construct public function Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides PluginBase::__construct 4
ContextAwarePluginBase::__get public function Implements magic __get() method.
ContextProviderTrait::$providedContext protected property The data objects that are provided by this plugin.
ContextProviderTrait::getProvidedContext public function
ContextProviderTrait::getProvidedContextDefinition public function
ContextProviderTrait::getProvidedContextDefinitions public function
ContextProviderTrait::setProvidedValue public function
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
ExecutablePluginTrait::getLabelValue protected function Get the translated label from the plugin definition.
ExecutablePluginTrait::summary public function Get the translated summary from the label annotation. 4
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.
RulesActionBase::$configuration protected property The plugin configuration. Overrides PluginBase::$configuration
RulesActionBase::access public function Checks object access. Overrides RulesActionInterface::access
RulesActionBase::assertMetadata public function Asserts additional metadata for the selected data. Overrides ContextAwarePluginInterface::assertMetadata
RulesActionBase::autoSaveContext public function Returns a list of context names that should be auto-saved after execution. Overrides RulesActionInterface::autoSaveContext 14
RulesActionBase::calculateDependencies public function @todo this documentation is not actually inherited from any interface. Do we need this empty implementation?
RulesActionBase::defaultConfiguration public function @todo this documentation is not actually inherited from any interface. Do we need this empty implementation?
RulesActionBase::execute public function Executes the plugin. Overrides ExecutableInterface::execute 2
RulesActionBase::executeMultiple public function @todo this documentation is not actually inherited from any interface. Do we need this empty implementation?
RulesActionBase::getConfiguration public function @todo this documentation is not actually inherited from any interface.
RulesActionBase::getContextValue public function Gets the value for a defined context. Overrides ContextAwarePluginBase::getContextValue
RulesActionBase::refineContextDefinitions public function Refines used and provided context definitions based upon context values. Overrides ContextAwarePluginInterface::refineContextDefinitions 5
RulesActionBase::setConfiguration public function @todo this documentation is not actually inherited from any interface.
SetWebformFieldValue::doExecute protected function Set a webform field value.
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