You are here

public function YamlFormElementBase::getRelatedTypes in YAML Form 8

Get related element types.

Parameters

array $element: The element.

Return value

array An array containing related element types.

Overrides YamlFormElementInterface::getRelatedTypes

1 call to YamlFormElementBase::getRelatedTypes()
OptionsBase::getRelatedTypes in src/Plugin/YamlFormElement/OptionsBase.php
Get related element types.
3 methods override YamlFormElementBase::getRelatedTypes()
OptionsBase::getRelatedTypes in src/Plugin/YamlFormElement/OptionsBase.php
Get related element types.
YamlFormCompositeBase::getRelatedTypes in src/Plugin/YamlFormElement/YamlFormCompositeBase.php
Get related element types.
YamlFormMarkupBase::getRelatedTypes in src/Plugin/YamlFormElement/YamlFormMarkupBase.php
Get related element types.

File

src/YamlFormElementBase.php, line 329

Class

YamlFormElementBase
Provides a base class for a form element.

Namespace

Drupal\yamlform

Code

public function getRelatedTypes(array $element) {
  $types = [];
  $parent_classes = YamlFormReflectionHelper::getParentClasses($this, 'YamlFormElementBase');
  $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 disable or hidden.
    if (!$element_instance
      ->isEnabled() || $element_instance
      ->isHidden()) {
      continue;
    }

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

    // Compare container, 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;
}