You are here

abstract class DatasourcePluginBase in Search API 8

Defines a base class from which other datasources may extend.

Plugins extending this class need to define a plugin definition array through annotation. These definition arrays may be altered through hook_search_api_datasource_info_alter(). The definition includes the following keys:

  • id: The unique, system-wide identifier of the datasource.
  • label: The human-readable name of the datasource, translated.
  • description: A human-readable description for the datasource, translated.

A complete plugin definition should be written as in this example:


@SearchApiDatasource(
  id = "my_datasource",
  label = @Translation("My datasource"),
  description = @Translation("Exposes my custom items as a datasource."),
)

Hierarchy

Expanded class hierarchy of DatasourcePluginBase

See also

\Drupal\search_api\Annotation\SearchApiDatasource

\Drupal\search_api\Datasource\DatasourcePluginManager

\Drupal\search_api\Datasource\DatasourceInterface

Plugin API

3 files declare their use of DatasourcePluginBase
ContentEntity.php in src/Plugin/search_api/datasource/ContentEntity.php
NoUi.php in tests/search_api_test_no_ui/src/Plugin/search_api/datasource/NoUi.php
TestDatasource.php in tests/search_api_test/src/Plugin/search_api/datasource/TestDatasource.php

File

src/Datasource/DatasourcePluginBase.php, line 39

Namespace

Drupal\search_api\Datasource
View source
abstract class DatasourcePluginBase extends IndexPluginBase implements DatasourceInterface {

  /**
   * {@inheritdoc}
   */
  public function getPropertyDefinitions() {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function load($id) {
    $items = $this
      ->loadMultiple([
      $id,
    ]);
    return $items ? reset($items) : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function loadMultiple(array $ids) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function getItemLabel(ComplexDataInterface $item) {
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getItemBundle(ComplexDataInterface $item) {
    return $this
      ->getPluginId();
  }

  /**
   * {@inheritdoc}
   */
  public function getItemLanguage(ComplexDataInterface $item) {
    if ($item instanceof TranslatableInterface) {
      return $item
        ->language()
        ->getId();
    }
    $item = $item
      ->getValue();
    if ($item instanceof TranslatableInterface) {
      return $item
        ->language()
        ->getId();
    }
    return Language::LANGCODE_NOT_SPECIFIED;
  }

  /**
   * {@inheritdoc}
   */
  public function getItemUrl(ComplexDataInterface $item) {
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function checkItemAccess(ComplexDataInterface $item, AccountInterface $account = NULL) {
    @trigger_error('\\Drupal\\search_api\\Datasource\\DatasourceInterface::checkItemAccess() is deprecated in search_api:8.x-1.14 and is removed from search_api:2.0.0. Use getItemAccessResult() instead. See https://www.drupal.org/node/3051902', E_USER_DEPRECATED);
    return $this
      ->getItemAccessResult($item, $account)
      ->isAllowed();
  }

  /**
   * {@inheritdoc}
   */
  public function getItemAccessResult(ComplexDataInterface $item, AccountInterface $account = NULL) {
    return AccessResult::allowed();
  }

  /**
   * {@inheritdoc}
   */
  public function getViewModes($bundle = NULL) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function getBundles() {
    return [
      $this
        ->getPluginId() => $this
        ->label(),
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function viewItem(ComplexDataInterface $item, $view_mode, $langcode = NULL) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function viewMultipleItems(array $items, $view_mode, $langcode = NULL) {
    $build = [];
    foreach ($items as $key => $item) {
      $build[$key] = $this
        ->viewItem($item, $view_mode, $langcode);
    }
    return $build;
  }

  /**
   * {@inheritdoc}
   */
  public function getEntityTypeId() {
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getItemIds($page = NULL) {
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function canContainEntityReferences() : bool {
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function getAffectedItemsForEntityChange(EntityInterface $entity, array $foreign_entity_relationship_map, EntityInterface $original_entity = NULL) : array {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function getFieldDependencies(array $fields) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function getListCacheContexts() {
    return [];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurablePluginBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies 6
ConfigurablePluginBase::calculatePluginDependencies Deprecated protected function Calculates and adds dependencies of a specific plugin instance.
ConfigurablePluginBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 4
ConfigurablePluginBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration 11
ConfigurablePluginBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
ConfigurablePluginBase::getDescription public function Returns the plugin's description. Overrides ConfigurablePluginInterface::getDescription
ConfigurablePluginBase::getPluginDependencies Deprecated protected function Calculates and returns dependencies of a specific plugin instance.
ConfigurablePluginBase::label public function Returns the label for use on the administration pages. Overrides ConfigurablePluginInterface::label
ConfigurablePluginBase::moduleHandler Deprecated protected function Wraps the module handler.
ConfigurablePluginBase::onDependencyRemoval public function Informs the plugin that some of its dependencies are being removed. Overrides ConfigurablePluginInterface::onDependencyRemoval 5
ConfigurablePluginBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration 3
ConfigurablePluginBase::themeHandler Deprecated protected function Wraps the theme handler.
DatasourceInterface::getItemId public function Retrieves the unique ID of an object from this datasource. 3
DatasourcePluginBase::canContainEntityReferences public function Determines whether this datasource can contain entity references. Overrides DatasourceInterface::canContainEntityReferences 1
DatasourcePluginBase::checkItemAccess public function Checks whether a user has permission to view the given item. Overrides DatasourceInterface::checkItemAccess
DatasourcePluginBase::getAffectedItemsForEntityChange public function Identifies items affected by a change to a referenced entity. Overrides DatasourceInterface::getAffectedItemsForEntityChange 1
DatasourcePluginBase::getBundles public function Retrieves the bundles associated to this datasource. Overrides DatasourceInterface::getBundles 1
DatasourcePluginBase::getEntityTypeId public function Retrieves the entity type ID of items from this datasource, if any. Overrides DatasourceInterface::getEntityTypeId 1
DatasourcePluginBase::getFieldDependencies public function Retrieves any dependencies of the given fields. Overrides DatasourceInterface::getFieldDependencies 1
DatasourcePluginBase::getItemAccessResult public function Checks whether a user has permission to view the given item. Overrides DatasourceInterface::getItemAccessResult 1
DatasourcePluginBase::getItemBundle public function Retrieves the item's bundle. Overrides DatasourceInterface::getItemBundle 1
DatasourcePluginBase::getItemIds public function Returns a list of IDs of items from this datasource. Overrides DatasourceInterface::getItemIds 1
DatasourcePluginBase::getItemLabel public function Retrieves a human-readable label for an item. Overrides DatasourceInterface::getItemLabel 1
DatasourcePluginBase::getItemLanguage public function Retrieves the item's language. Overrides DatasourceInterface::getItemLanguage 1
DatasourcePluginBase::getItemUrl public function Retrieves a URL at which the item can be viewed on the web. Overrides DatasourceInterface::getItemUrl 1
DatasourcePluginBase::getListCacheContexts public function Returns the list cache contexts associated with this datasource. Overrides DatasourceInterface::getListCacheContexts 1
DatasourcePluginBase::getPropertyDefinitions public function Retrieves the properties exposed by the underlying complex data type. Overrides DatasourceInterface::getPropertyDefinitions 2
DatasourcePluginBase::getViewModes public function Returns the available view modes for this datasource. Overrides DatasourceInterface::getViewModes 1
DatasourcePluginBase::load public function Loads an item. Overrides DatasourceInterface::load
DatasourcePluginBase::loadMultiple public function Loads multiple items. Overrides DatasourceInterface::loadMultiple 2
DatasourcePluginBase::viewItem public function Returns the render array for the provided item and view mode. Overrides DatasourceInterface::viewItem 1
DatasourcePluginBase::viewMultipleItems public function Returns the render array for the provided items and view mode. Overrides DatasourceInterface::viewMultipleItems 1
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DependencyTrait::$dependencies protected property The object's dependencies.
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency.
HideablePluginBase::isHidden public function Determines whether this plugin should be hidden in the UI. Overrides HideablePluginInterface::isHidden 1
IndexPluginBase::$index protected property The index this processor is configured for.
IndexPluginBase::getIndex public function Retrieves the index this plugin is configured for. Overrides IndexPluginInterface::getIndex
IndexPluginBase::setIndex public function Sets the index this plugin is configured for. Overrides IndexPluginInterface::setIndex
IndexPluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides ConfigurablePluginBase::__construct 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginDependencyTrait::calculatePluginDependencies protected function Calculates and adds dependencies of a specific plugin instance. Aliased as: traitCalculatePluginDependencies 1
PluginDependencyTrait::getPluginDependencies protected function Calculates and returns dependencies of a specific plugin instance. Aliased as: traitGetPluginDependencies
PluginDependencyTrait::moduleHandler protected function Wraps the module handler. Aliased as: traitModuleHandler 1
PluginDependencyTrait::themeHandler protected function Wraps the theme handler. Aliased as: traitThemeHandler 1
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.