You are here

public function WebformElementBase::getRelatedTypes in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Plugin/WebformElementBase.php \Drupal\webform\Plugin\WebformElementBase::getRelatedTypes()

Get related element types.

Parameters

array $element: The element.

Return value

array An array containing related element types.

Overrides WebformElementInterface::getRelatedTypes

1 call to WebformElementBase::getRelatedTypes()
OptionsBase::getRelatedTypes in src/Plugin/WebformElement/OptionsBase.php
Get related element types.
6 methods override WebformElementBase::getRelatedTypes()
OptionsBase::getRelatedTypes in src/Plugin/WebformElement/OptionsBase.php
Get related element types.
VerticalTabs::getRelatedTypes in src/Plugin/WebformElement/VerticalTabs.php
Get related element types.
WebformCompositeBase::getRelatedTypes in src/Plugin/WebformElement/WebformCompositeBase.php
Get related element types.
WebformComputedBase::getRelatedTypes in src/Plugin/WebformElement/WebformComputedBase.php
Get related element types.
WebformHorizontalRule::getRelatedTypes in src/Plugin/WebformElement/WebformHorizontalRule.php
Get related element types.

... See full list

File

src/Plugin/WebformElementBase.php, line 612

Class

WebformElementBase
Provides a base class for a webform element.

Namespace

Drupal\webform\Plugin

Code

public function getRelatedTypes(array $element) {
  $types = [];
  $parent_classes = WebformReflectionHelper::getParentClasses($this, 'WebformElementBase');
  $plugin_id = $this
    ->getPluginId();
  $is_container = $this
    ->isContainer($element);
  $has_multiple_values = $this
    ->hasMultipleValues($element);
  $is_multiline = $this
    ->isMultiline($element);
  $elements = $this->elementManager
    ->getInstances();
  foreach ($elements as $element_name => $element_instance) {

    // Skip self.
    if ($plugin_id === $element_instance
      ->getPluginId()) {
      continue;
    }

    // Skip disabled or hidden.
    if ($element_instance
      ->isDisabled() || $element_instance
      ->isHidden()) {
      continue;
    }

    // Compare element base (abstract) class.
    $element_instance_parent_classes = WebformReflectionHelper::getParentClasses($element_instance, 'WebformElementBase');
    if ($parent_classes[1] !== $element_instance_parent_classes[1]) {
      continue;
    }

    // Compare container, supports/has multiple values, and multiline.
    if ($is_container !== $element_instance
      ->isContainer($element)) {
      continue;
    }
    if ($has_multiple_values !== $element_instance
      ->hasMultipleValues($element)) {
      continue;
    }
    if ($is_multiline !== $element_instance
      ->isMultiline($element)) {
      continue;
    }
    $types[$element_name] = $element_instance
      ->getPluginLabel();
  }
  asort($types);
  return $types;
}