You are here

class MappedFieldProperty in Search API Field Map 8.2

Same name and namespace in other branches
  1. 8.3 src/Plugin/search_api/processor/Property/MappedFieldProperty.php \Drupal\search_api_field_map\Plugin\search_api\processor\Property\MappedFieldProperty
  2. 8 src/Plugin/search_api/processor/Property/MappedFieldProperty.php \Drupal\search_api_field_map\Plugin\search_api\processor\Property\MappedFieldProperty
  3. 4.x src/Plugin/search_api/processor/Property/MappedFieldProperty.php \Drupal\search_api_field_map\Plugin\search_api\processor\Property\MappedFieldProperty

Defines an "mapped field" property.

Hierarchy

Expanded class hierarchy of MappedFieldProperty

See also

\Drupal\search_api_field_map\Plugin\search_api\processor\MappedFields

1 file declares its use of MappedFieldProperty
MappedFields.php in src/Plugin/search_api/processor/MappedFields.php

File

src/Plugin/search_api/processor/Property/MappedFieldProperty.php, line 22

Namespace

Drupal\search_api_field_map\Plugin\search_api\processor\Property
View source
class MappedFieldProperty extends ConfigurablePropertyBase {
  use StringTranslationTrait;

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'type' => 'union',
      'fields' => [],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(FieldInterface $field, array $form, FormStateInterface $form_state) {
    $index = $field
      ->getIndex();
    $configuration = $field
      ->getConfiguration();
    $form['#attached']['library'][] = 'search_api/drupal.search_api.admin_css';
    $form['#tree'] = TRUE;
    $form['field_data'] = [
      '#type' => 'item',
      '#title' => $this
        ->t('Mapped data'),
      '#description' => $this
        ->t('Set the data to be sent to the index for each bundle in the data sources set in your index configuration. Use static values or choose tokens using the picker below.'),
    ];
    foreach ($index
      ->getDatasources() as $datasource_id => $datasource) {
      $bundles = $datasource
        ->getBundles();
      $entity_type = $datasource
        ->getEntityTypeId();

      // Make an array of all the entity types we're working with to pass to token_help.
      $entity_types[] = $entity_type;
      foreach ($bundles as $bundle_id => $bundle_label) {

        // Create a config field for each bundle in our enabled datasources.
        $form['field_data'][$entity_type][$bundle_id] = [
          '#type' => 'textfield',
          '#title' => $this
            ->t('Field data for %datasource » %bundle', [
            '%datasource' => $datasource
              ->label(),
            '%bundle' => $bundle_label,
          ]),
          '#element_validate' => array(
            'token_element_validate',
          ),
          '#token_types' => array(
            $entity_type,
          ),
        ];

        // Set the default value if something already exists in our config.
        if (isset($configuration['field_data'][$entity_type][$bundle_id])) {
          $form['field_data'][$entity_type][$bundle_id]['#default_value'] = $configuration['field_data'][$entity_type][$bundle_id];
        }
      }
    }

    // Build the token picker.
    $form['token_help'] = [
      '#theme' => 'token_tree_link',
      '#token_types' => $entity_types,
    ];
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(FieldInterface $field, array &$form, FormStateInterface $form_state) {
    $values = [
      'field_data' => array_filter($form_state
        ->getValue('field_data')),
    ];
    $field
      ->setConfiguration($values);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurablePropertyBase::getFieldDescription public function Retrieves the description for a field based on this property. Overrides ConfigurablePropertyInterface::getFieldDescription 1
ConfigurablePropertyBase::validateConfigurationForm public function Validates a configuration form for a field based on this property. Overrides ConfigurablePropertyInterface::validateConfigurationForm
DataDefinition::$definition protected property The array holding values for all definition keys.
DataDefinition::addConstraint public function Adds a validation constraint. Overrides DataDefinitionInterface::addConstraint
DataDefinition::create public static function Creates a new data definition. 5
DataDefinition::createFromDataType public static function Creates a new data definition object. Overrides DataDefinitionInterface::createFromDataType 5
DataDefinition::getClass public function Returns the class used for creating the typed data object. Overrides DataDefinitionInterface::getClass 1
DataDefinition::getConstraint public function Returns a validation constraint. Overrides DataDefinitionInterface::getConstraint
DataDefinition::getConstraints public function Returns an array of validation constraints. Overrides DataDefinitionInterface::getConstraints 1
DataDefinition::getDataType public function Returns the data type of the data. Overrides DataDefinitionInterface::getDataType 2
DataDefinition::getDescription public function Returns a human readable description. Overrides DataDefinitionInterface::getDescription
DataDefinition::getLabel public function Returns a human readable label. Overrides DataDefinitionInterface::getLabel
DataDefinition::getSetting public function Returns the value of a given setting. Overrides DataDefinitionInterface::getSetting 2
DataDefinition::getSettings public function Returns the array of settings, as required by the used class. Overrides DataDefinitionInterface::getSettings 2
DataDefinition::isComputed public function Determines whether the data value is computed. Overrides DataDefinitionInterface::isComputed
DataDefinition::isInternal public function Determines whether the data value is internal. Overrides DataDefinitionInterface::isInternal 1
DataDefinition::isReadOnly public function Determines whether the data is read-only. Overrides DataDefinitionInterface::isReadOnly
DataDefinition::isRequired public function Determines whether a data value is required. Overrides DataDefinitionInterface::isRequired
DataDefinition::offsetExists public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetGet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetSet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetUnset public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::setClass public function Sets the class used for creating the typed data object.
DataDefinition::setComputed public function Sets whether the data is computed.
DataDefinition::setConstraints public function Sets an array of validation constraints.
DataDefinition::setDataType public function Sets the data type. 1
DataDefinition::setDescription public function Sets the human-readable description.
DataDefinition::setInternal public function Sets the whether the data value should be internal.
DataDefinition::setLabel public function Sets the human-readable label.
DataDefinition::setReadOnly public function Sets whether the data is read-only.
DataDefinition::setRequired public function Sets whether the data is required.
DataDefinition::setSetting public function Sets a definition setting. 2
DataDefinition::setSettings public function Sets the array of settings, as required by the used class. 2
DataDefinition::toArray public function Returns all definition values as array.
DataDefinition::__construct public function Constructs a new data definition object. 1
DataDefinition::__sleep public function 2
MappedFieldProperty::buildConfigurationForm public function Constructs a configuration form for a field based on this property. Overrides ConfigurablePropertyInterface::buildConfigurationForm
MappedFieldProperty::defaultConfiguration public function Gets the default configuration for this property. Overrides ConfigurablePropertyBase::defaultConfiguration
MappedFieldProperty::submitConfigurationForm public function Submits a configuration form for a field based on this property. Overrides ConfigurablePropertyBase::submitConfigurationForm
ProcessorProperty::getProcessorId public function Retrieves the ID of the processor which defines this property. Overrides ProcessorPropertyInterface::getProcessorId
ProcessorProperty::isHidden public function Determines whether this property should be hidden from the UI. Overrides ProcessorPropertyInterface::isHidden
ProcessorProperty::isList public function Returns whether the data is multi-valued, i.e. a list of data items. Overrides DataDefinition::isList
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