You are here

public function SavedSearchType::getNotificationPluginFieldDefinitions in Search API Saved Searches 8

Retrieves all field definitions defined by notification plugins.

Return value

\Drupal\Core\Field\FieldDefinitionInterface[] All field definitions defined by notification plugins for this type, keyed by field name.

Overrides SavedSearchTypeInterface::getNotificationPluginFieldDefinitions

File

src/Entity/SavedSearchType.php, line 399

Class

SavedSearchType
Provides an entity type for configuring how searches can be saved.

Namespace

Drupal\search_api_saved_searches\Entity

Code

public function getNotificationPluginFieldDefinitions() {
  $fields = [];

  // Collect field definitions from our plugins.
  foreach ($this
    ->getNotificationPlugins() as $plugin_id => $plugin) {
    $plugin_fields = $plugin
      ->getFieldDefinitions();

    // Determine the plugin's provider.
    $definition = $plugin
      ->getPluginDefinition();
    $provider = NULL;
    if ($definition instanceof PluginDefinitionInterface) {
      $provider = $definition
        ->getProvider();
    }
    elseif (is_array($definition)) {
      $provider = $definition['provider'];
    }

    // Set some common settings on the field definitions.
    foreach ($plugin_fields as $field_name => $field) {
      $field
        ->setName($field_name);
      $field
        ->setTargetEntityTypeId('search_api_saved_search');
      $field
        ->setProvider($provider);
      $field
        ->setSetting('notification_plugin', $plugin_id);
    }
    $fields += $plugin_fields;
  }
  return $fields;
}