You are here

public function Webform::deleteElement in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Entity/Webform.php \Drupal\webform\Entity\Webform::deleteElement()

Remove an element.

Parameters

string $key: The element's key.

Overrides WebformInterface::deleteElement

File

src/Entity/Webform.php, line 1930

Class

Webform
Defines the webform entity.

Namespace

Drupal\webform\Entity

Code

public function deleteElement($key) {
  $element = $this
    ->getElementDecoded($key);

  // Delete element from the elements render array.
  $elements = $this
    ->getElementsDecoded();
  $sub_element_keys = $this
    ->deleteElementRecursive($elements, $key);
  $this
    ->setElements($elements);

  // Delete the variants.
  $is_variant = isset($element['#type']) && $element['#type'] === 'webform_variant';
  if ($is_variant) {
    $variants = $this
      ->getVariants(NULL, NULL, $key);
    foreach ($variants as $variant) {
      $this
        ->deleteWebformVariant($variant);
    }
  }

  // Delete submission element key data.
  \Drupal::database()
    ->delete('webform_submission_data')
    ->condition('webform_id', $this
    ->id())
    ->condition('name', $sub_element_keys, 'IN')
    ->execute();
}