You are here

protected function WebformTranslationManager::removeUnTranslatablePropertiesFromElement in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/WebformTranslationManager.php \Drupal\webform\WebformTranslationManager::removeUnTranslatablePropertiesFromElement()

Remove untranslatable properties form an element.

Parameters

array $element: An element.

1 call to WebformTranslationManager::removeUnTranslatablePropertiesFromElement()
WebformTranslationManager::getBaseElements in src/WebformTranslationManager.php
Get base webform elements for the site's default language.

File

src/WebformTranslationManager.php, line 210

Class

WebformTranslationManager
Defines a class to translate webform elements.

Namespace

Drupal\webform

Code

protected function removeUnTranslatablePropertiesFromElement(array &$element) {
  $element_type = isset($element['#type']) ? $element['#type'] : NULL;
  $translatable_properties = $this
    ->getTranslatableProperties($element_type);
  $element_plugin = $this->elementManager
    ->getElementInstance($element);
  foreach ($element as $property_key => $property_value) {
    $translatable_property_key = $property_key;

    // If translatable property key is a sub element (ex: subelement__title)
    // get the sub element's translatable property key.
    if (preg_match('/^.*__(.*)$/', $translatable_property_key, $match)) {
      $translatable_property_key = '#' . $match[1];
    }
    if (in_array($translatable_property_key, [
      '#options',
      '#answers',
    ]) && is_string($property_value)) {

      // Unset options and answers that are webform option ids.
      unset($element[$property_key]);
    }
    elseif ($translatable_property_key === '#element' && $element_plugin instanceof WebformCustomComposite) {
      foreach ($element[$property_key] as &$composite_element_value) {
        $this
          ->removeUnTranslatablePropertiesFromElement($composite_element_value);
      }
    }
    elseif (!isset($translatable_properties[$translatable_property_key])) {

      // Unset none translatable properties.
      unset($element[$property_key]);
    }
  }
}