class PluginHelper in Search API Autocomplete 8
Provides methods for creating autocomplete search plugins.
Hierarchy
- class \Drupal\search_api_autocomplete\Utility\PluginHelper implements PluginHelperInterface
Expanded class hierarchy of PluginHelper
1 file declares its use of PluginHelper
- ViewsTest.php in tests/
src/ Kernel/ ViewsTest.php
1 string reference to 'PluginHelper'
1 service uses PluginHelper
File
- src/
Utility/ PluginHelper.php, line 14
Namespace
Drupal\search_api_autocomplete\UtilityView source
class PluginHelper implements PluginHelperInterface {
/**
* The suggester plugin manager.
*
* @var \Drupal\search_api_autocomplete\Suggester\SuggesterManager
*/
protected $suggesterPluginManager;
/**
* The search plugin manager.
*
* @var \Drupal\search_api_autocomplete\Search\SearchPluginManager
*/
protected $searchPluginManager;
/**
* Constructs a PluginHelper object.
*
* @param \Drupal\search_api_autocomplete\Suggester\SuggesterManager $suggester_plugin_manager
* The suggester plugin manager.
* @param \Drupal\search_api_autocomplete\Search\SearchPluginManager $search_plugin_manager
* The search plugin manager.
*/
public function __construct(SuggesterManager $suggester_plugin_manager, SearchPluginManager $search_plugin_manager) {
$this->suggesterPluginManager = $suggester_plugin_manager;
$this->searchPluginManager = $search_plugin_manager;
}
/**
* Creates a plugin object for the given search.
*
* @param \Drupal\search_api_autocomplete\SearchInterface $search
* The search for which to create the plugins.
* @param string $type
* The type of plugin to create: "suggester" or "search".
* @param string $plugin_id
* The plugin's ID.
* @param array $configuration
* (optional) The configuration to set for the plugin.
*
* @return \Drupal\search_api_autocomplete\Plugin\PluginInterface
* The new plugin object.
*
* @throws \Drupal\search_api_autocomplete\SearchApiAutocompleteException
* Thrown if an unknown $type or $plugin_id is given.
*/
protected function createPlugin(SearchInterface $search, $type, $plugin_id, array $configuration = []) {
if (!isset($this->{$type . "PluginManager"})) {
throw new SearchApiAutocompleteException("Unknown plugin type '{$type}'");
}
try {
$configuration['#search'] = $search;
return $this->{$type . "PluginManager"}
->createInstance($plugin_id, $configuration);
} catch (PluginException $e) {
throw new SearchApiAutocompleteException("Unknown {$type} plugin with ID '{$plugin_id}'", 0, $e);
}
}
/**
* Creates multiple plugin objects for the given search.
*
* @param \Drupal\search_api_autocomplete\SearchInterface $search
* The search for which to create the plugins.
* @param string $type
* The type of plugin to create: "suggester" or "search".
* @param string[]|null $plugin_ids
* (optional) The IDs of the plugins to create, or NULL to create instances
* for all known plugins of this type.
* @param array $configurations
* (optional) The configurations to set for the plugins, keyed by plugin ID.
* Missing configurations are either taken from the search's stored settings,
* if they are present there, or default to an empty array.
*
* @return \Drupal\search_api_autocomplete\Plugin\PluginInterface[]
* The created plugin objects.
*
* @throws \Drupal\search_api_autocomplete\SearchApiAutocompleteException
* Thrown if an unknown $type is given.
*/
protected function createPlugins(SearchInterface $search, $type, array $plugin_ids = NULL, array $configurations = []) {
if (!isset($this->{$type . "PluginManager"})) {
throw new SearchApiAutocompleteException("Unknown plugin type '{$type}'");
}
if ($plugin_ids === NULL) {
$plugin_ids = array_keys($this->{$type . "PluginManager"}
->getDefinitions());
}
$plugins = [];
$search_settings = $search
->get($type . '_settings');
foreach ($plugin_ids as $plugin_id) {
$configuration = [];
if (isset($configurations[$plugin_id])) {
$configuration = $configurations[$plugin_id];
}
elseif (isset($search_settings[$plugin_id])) {
$configuration = $search_settings[$plugin_id];
}
try {
$plugins[$plugin_id] = $this
->createPlugin($search, $type, $plugin_id, $configuration);
} catch (SearchApiAutocompleteException $e) {
// Ignore unknown plugins.
}
}
return $plugins;
}
/**
* {@inheritdoc}
*/
public function createSuggesterPlugin(SearchInterface $search, $plugin_id, array $configuration = []) {
return $this
->createPlugin($search, 'suggester', $plugin_id, $configuration);
}
/**
* {@inheritdoc}
*/
public function createSearchPlugin(SearchInterface $search, $plugin_id, array $configuration = []) {
return $this
->createPlugin($search, 'search', $plugin_id, $configuration);
}
/**
* {@inheritdoc}
*/
public function createSuggesterPlugins(SearchInterface $search, array $plugin_ids = NULL, array $configurations = []) {
return $this
->createPlugins($search, 'suggester', $plugin_ids, $configurations);
}
/**
* {@inheritdoc}
*/
public function createSearchPluginsForIndex($index_id) {
$definitions = $this->searchPluginManager
->getDefinitions();
$searches = [];
foreach ($definitions as $search_id => $definition) {
if (!empty($definition['index']) && $definition['index'] !== $index_id) {
continue;
}
/** @var \Drupal\search_api_autocomplete\Search\SearchPluginInterface $search */
$search = $this->searchPluginManager
->createInstance($search_id);
if ($search
->getIndexId() === $index_id) {
$searches[$search_id] = $search;
}
}
return $searches;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PluginHelper:: |
protected | property | The search plugin manager. | |
PluginHelper:: |
protected | property | The suggester plugin manager. | |
PluginHelper:: |
protected | function | Creates a plugin object for the given search. | |
PluginHelper:: |
protected | function | Creates multiple plugin objects for the given search. | |
PluginHelper:: |
public | function |
Creates a search plugin object for the given search. Overrides PluginHelperInterface:: |
|
PluginHelper:: |
public | function |
Creates objects for all search plugins associated with the given index. Overrides PluginHelperInterface:: |
|
PluginHelper:: |
public | function |
Creates a suggester plugin object for the given search. Overrides PluginHelperInterface:: |
|
PluginHelper:: |
public | function |
Creates multiple suggester plugin objects for the given search. Overrides PluginHelperInterface:: |
|
PluginHelper:: |
public | function | Constructs a PluginHelper object. |