class NodeSearch extends ConfigurableSearchPluginBase implements AccessibleInterface, SearchIndexingInterface, TrustedCallbackInterface (View source)

Handles searching for node entities using the Search module index.

Traits

Provides a standard way to announce deprecated properties.

Trait for \Drupal\Core\Cache\RefinableCacheableDependencyInterface.

Trait for \Drupal\Core\Cache\CacheableDependencyInterface.

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Provides a trait for the messenger service.

Constants

DERIVATIVE_SEPARATOR

A string which is used to separate base plugin IDs from the derivative ID.

ADVANCED_FORM

A constant for setting and checking the query string.

Properties

protected string $pluginId

The plugin_id.

from  PluginBase
protected array $pluginDefinition

The plugin implementation definition.

from  PluginBase
protected array $configuration

Configuration information passed into the plugin.

from  PluginBase
protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected MessengerInterface $messenger

The messenger.

protected string[] $cacheContexts

Cache contexts.

from  CacheableDependencyTrait
protected string[] $cacheTags

Cache tags.

from  CacheableDependencyTrait
protected int $cacheMaxAge

Cache max-age.

from  CacheableDependencyTrait
protected string $keywords

The keywords to use in a search.

from  SearchPluginBase
protected array $searchParameters

Array of parameters from the query string from the request.

from  SearchPluginBase
protected array $searchAttributes

Array of attributes - usually from the request object.

from  SearchPluginBase
protected string $searchPageId

The unique ID for the search page using this plugin.

from  ConfigurableSearchPluginBase
protected $deprecatedProperties {@inheritdoc}
protected Connection $database

The current database connection.

protected Connection $databaseReplica

The replica database connection.

protected EntityTypeManagerInterface $entityTypeManager

The entity type manager.

protected ModuleHandlerInterface $moduleHandler

A module manager object.

protected Config $searchSettings

A config object for 'search.settings'.

protected LanguageManagerInterface $languageManager

The language manager.

protected AccountInterface $account

The Drupal account to use for checking for access to advanced search.

protected RendererInterface $renderer

The Renderer service to format the username and node.

protected SearchIndexInterface $searchIndex

The search index.

protected array $rankings

An array of additional rankings from hook_ranking().

protected array $advanced

The list of options and info for advanced search filters.

Methods

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, Connection $database, EntityTypeManagerInterface $entity_type_manager, ModuleHandlerInterface $module_handler, Config $search_settings, LanguageManagerInterface $language_manager, RendererInterface $renderer, MessengerInterface $messenger, AccountInterface $account = NULL, Connection $database_replica = NULL, SearchIndexInterface $search_index = NULL)

Constructs a \Drupal\node\Plugin\Search\NodeSearch object.

string
getPluginId()

Gets the plugin_id of the plugin instance.

string
getBaseId()

Gets the base_plugin_id of the plugin instance.

string|null
getDerivativeId()

Gets the derivative_id of the plugin instance.

array
getPluginDefinition()

Gets the definition of the plugin implementation.

bool
isConfigurable()

Determines if the plugin is configurable.

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

messenger()

Gets the messenger.

$this
setCacheability(CacheableDependencyInterface $cacheability)

Sets cacheability; useful for value object constructors.

getCacheTags()

{@inheritdoc}

addCacheableDependency($other_object)

{@inheritdoc}

addCacheContexts(array $cache_contexts)

{@inheritdoc}

addCacheTags(array $cache_tags)

{@inheritdoc}

create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

$this
setSearch(string $keywords, array $parameters, array $attributes)

Sets the keywords, parameters, and attributes to be used by execute().

string
getKeywords()

Returns the currently set keywords of the plugin instance.

array
getParameters()

Returns the current parameters set using setSearch().

array
getAttributes()

Returns the currently set attributes (from the request).

bool
isSearchExecutable()

Verifies if the values set via setSearch() are valid and sufficient.

string|null
getType()

Returns the search index type this plugin uses.

array
buildResults()

Executes the search and builds render arrays for the result items.

searchFormAlter(array $form, FormStateInterface $form_state)

Alters the search form when being built for a given plugin.

string
suggestedTitle()

Provides a suggested title for a page of search results.

array
buildSearchUrlQuery(FormStateInterface $form_state)

Builds the URL GET query parameters array for search.

array
getHelp()

Returns the searching help.

array
defaultConfiguration()

Gets default configuration for this plugin.

array
getConfiguration()

Gets this plugin's configuration.

setConfiguration(array $configuration)

Sets the configuration for this plugin instance.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

array
calculateDependencies()

Calculates dependencies for the configured plugin.

setSearchPageId(string $search_page_id)

Sets the ID for the search page using this plugin.

__get($name)

Allows to access deprecated/removed properties.

access(string $operation = 'view', AccountInterface $account = NULL, bool $return_as_object = FALSE)

Checks data value access.

array
execute()

Executes the search.

findResults()

Queries to find search results, and sets status messages.

array
prepareResults(StatementInterface $found)

Prepares search results for rendering.

array
removeSubmittedInfo(array $build)

Removes the submitted by information from the build array.

addNodeRankings(SelectExtender $query)

Adds the configured rankings to the search query.

updateIndex()

Updates the search index for this plugin.

array
indexNode(NodeInterface $node)

Indexes a single node.

indexClear()

Clears the search index for this plugin.

markForReindex()

Marks the search index for reindexing for this plugin.

array
indexStatus()

Reports the status of indexing.

array
parseAdvancedDefaults(array $f, string $keys)

Parses the advanced search form default values.

array
getRankings()

Gathers ranking definitions from hook_ranking().

array
buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

static string[]
trustedCallbacks()

Lists the trusted callbacks provided by the implementing class.

Details

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, Connection $database, EntityTypeManagerInterface $entity_type_manager, ModuleHandlerInterface $module_handler, Config $search_settings, LanguageManagerInterface $language_manager, RendererInterface $renderer, MessengerInterface $messenger, AccountInterface $account = NULL, Connection $database_replica = NULL, SearchIndexInterface $search_index = NULL)

Constructs a \Drupal\node\Plugin\Search\NodeSearch object.

Parameters

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin_id for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

Connection $database

The current database connection.

EntityTypeManagerInterface $entity_type_manager

The entity type manager.

ModuleHandlerInterface $module_handler

A module manager object.

Config $search_settings

A config object for 'search.settings'.

LanguageManagerInterface $language_manager

The language manager.

RendererInterface $renderer

The renderer.

MessengerInterface $messenger

The messenger.

AccountInterface $account

The $account object to use for checking for access to advanced search.

Connection $database_replica

(Optional) the replica database connection.

SearchIndexInterface $search_index

The search index.

string getPluginId()

Gets the plugin_id of the plugin instance.

Return Value

string

The plugin_id of the plugin instance.

string getBaseId()

Gets the base_plugin_id of the plugin instance.

Return Value

string

The base_plugin_id of the plugin instance.

string|null getDerivativeId()

Gets the derivative_id of the plugin instance.

Return Value

string|null

The derivative_id of the plugin instance NULL otherwise.

array getPluginDefinition()

Gets the definition of the plugin implementation.

Return Value

array

The plugin definition, as returned by the discovery object used by the plugin manager.

bool isConfigurable()

Determines if the plugin is configurable.

Return Value

bool

A boolean indicating whether the plugin is configurable.

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

Parameters

MessengerInterface $messenger

The messenger.

MessengerInterface messenger()

Gets the messenger.

Return Value

MessengerInterface

The messenger.

protected $this setCacheability(CacheableDependencyInterface $cacheability)

Sets cacheability; useful for value object constructors.

Parameters

CacheableDependencyInterface $cacheability

The cacheability to set.

Return Value

$this

getCacheTags()

{@inheritdoc}

getCacheContexts()

{@inheritdoc}

getCacheMaxAge()

{@inheritdoc}

addCacheableDependency($other_object)

{@inheritdoc}

Parameters

$other_object

addCacheContexts(array $cache_contexts)

{@inheritdoc}

Parameters

array $cache_contexts

addCacheTags(array $cache_tags)

{@inheritdoc}

Parameters

array $cache_tags

mergeCacheMaxAge($max_age)

{@inheritdoc}

Parameters

$max_age

static ContainerFactoryPluginInterface create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

Parameters

ContainerInterface $container

The container to pull out services used in the plugin.

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin ID for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

Return Value

ContainerFactoryPluginInterface

Returns an instance of this plugin.

$this setSearch(string $keywords, array $parameters, array $attributes)

Sets the keywords, parameters, and attributes to be used by execute().

Parameters

string $keywords

The keywords to use in a search.

array $parameters

Array of parameters as an associative array. This is expected to be the query string from the current request.

array $attributes

Array of attributes, usually from the current request object.

Return Value

$this

A search plugin object for chaining.

string getKeywords()

Returns the currently set keywords of the plugin instance.

Return Value

string

The keywords.

array getParameters()

Returns the current parameters set using setSearch().

Return Value

array

The parameters.

array getAttributes()

Returns the currently set attributes (from the request).

Return Value

array

The attributes.

bool isSearchExecutable()

Verifies if the values set via setSearch() are valid and sufficient.

Return Value

bool

TRUE if the search settings are valid and sufficient to execute a search, and FALSE if not.

string|null getType()

Returns the search index type this plugin uses.

Return Value

string|null

The type used by this search plugin in the search index, or NULL if this plugin does not use the search index.

array buildResults()

Executes the search and builds render arrays for the result items.

Return Value

array

An array of render arrays of search result items (generally each item has '#theme' set to 'search_result'), or an empty array if there are no results.

searchFormAlter(array $form, FormStateInterface $form_state)

Alters the search form when being built for a given plugin.

The core search module only invokes this method on active module plugins when building a form for them in \Drupal\search\Form\SearchPageForm::buildForm(). A plugin implementing this will also need to implement the buildSearchUrlQuery() method.

Parameters

array $form

Nested array of form elements that comprise the form.

FormStateInterface $form_state

The current state of the form. The arguments that \Drupal::formBuilder()->getForm() was originally called with are available in the array $form_state->getBuildInfo()['args'].

string suggestedTitle()

Provides a suggested title for a page of search results.

Return Value

string

The translated suggested page title.

array buildSearchUrlQuery(FormStateInterface $form_state)

Builds the URL GET query parameters array for search.

When the search form is submitted, a redirect is generated with the search input as GET query parameters. Plugins using the searchFormAlter() method to add form elements to the search form will need to override this method to gather the form input and add it to the GET query parameters.

Parameters

FormStateInterface $form_state

The form state, with submitted form information.

Return Value

array

An array of GET query parameters containing all relevant form values to process the search. The 'keys' element must be present in order to trigger generation of search results, even if it is empty or unused by the search plugin.

array getHelp()

Returns the searching help.

Return Value

array

Render array for the searching help.

array defaultConfiguration()

Gets default configuration for this plugin.

Return Value

array

An associative array with the default configuration.

array getConfiguration()

Gets this plugin's configuration.

Return Value

array

An array of this plugin's configuration.

setConfiguration(array $configuration)

Sets the configuration for this plugin instance.

Parameters

array $configuration

An associative array containing the plugin's configuration.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

array calculateDependencies()

Calculates dependencies for the configured plugin.

Dependencies are saved in the plugin's configuration entity and are used to determine configuration synchronization order. For example, if the plugin integrates with specific user roles, this method should return an array of dependencies listing the specified roles.

Return Value

array

An array of dependencies grouped by type (config, content, module, theme). For example: @code array( 'config' => array('user.role.anonymous', 'user.role.authenticated'), 'content' => array('node:article:f0a189e6-55fb-47fb-8005-5bef81c44d6d'), 'module' => array('node', 'user'), 'theme' => array('seven'), ); @endcode

ConfigurableSearchPluginInterface setSearchPageId(string $search_page_id)

Sets the ID for the search page using this plugin.

Parameters

string $search_page_id

The search page ID.

Return Value

ConfigurableSearchPluginInterface

__get($name)

Allows to access deprecated/removed properties.

This method must be public.

Parameters

$name

bool|AccessResultInterface access(string $operation = 'view', AccountInterface $account = NULL, bool $return_as_object = FALSE)

Checks data value access.

Parameters

string $operation

The operation to be performed.

AccountInterface $account

(optional) The user for which to check access, or NULL to check access for the current user. Defaults to NULL.

bool $return_as_object

(optional) Defaults to FALSE.

Return Value

bool|AccessResultInterface

The access result. Returns a boolean if $return_as_object is FALSE (this is the default) and otherwise an AccessResultInterface object. When a boolean is returned, the result of AccessInterface::isAllowed() is returned, i.e. TRUE means access is explicitly allowed, FALSE means access is either explicitly forbidden or "no opinion".

array execute()

Executes the search.

Return Value

array

A structured list of search results.

protected StatementInterface|null findResults()

Queries to find search results, and sets status messages.

This method can assume that $this->isSearchExecutable() has already been checked and returned TRUE.

Return Value

StatementInterface|null

Results from search query execute() method, or NULL if the search failed.

protected array prepareResults(StatementInterface $found)

Prepares search results for rendering.

Parameters

StatementInterface $found

Results found from a successful search query execute() method.

Return Value

array

Array of search result item render arrays (empty array if no results).

array removeSubmittedInfo(array $build)

Removes the submitted by information from the build array.

This information is being removed from the rendered node that is used to build the search result snippet. It just doesn't make sense to have it displayed in the snippet.

Parameters

array $build

The build array.

Return Value

array

The modified build array.

protected addNodeRankings(SelectExtender $query)

Adds the configured rankings to the search query.

Parameters

SelectExtender $query

A query object that has been extended with the Search DB Extender.

updateIndex()

Updates the search index for this plugin.

This method is called every cron run if the plugin has been set as an active search module on the Search settings page (admin/config/search/pages). It allows your module to add items to the built-in search index by calling the index() method on the search.index service class, or to add them to your module's own indexing mechanism.

When implementing this method, your module should index content items that were modified or added since the last run. There is a time limit for cron, so it is advisable to limit how many items you index per run using config('search.settings')->get('index.cron_limit') or with your own setting. And since the cron run could time out and abort in the middle of your run, you should update any needed internal bookkeeping on when items have last been indexed as you go rather than waiting to the end of indexing.

protected array indexNode(NodeInterface $node)

Indexes a single node.

Parameters

NodeInterface $node

The node to index.

Return Value

array

An array of words to update after indexing.

indexClear()

Clears the search index for this plugin.

When a request is made to clear all items from the search index related to this plugin, this method will be called. If this plugin uses the default search index, this method can call clear($type) method on the search.index service class to remove indexed items from the search database.

markForReindex()

Marks the search index for reindexing for this plugin.

When a request is made to mark all items from the search index related to this plugin for reindexing, this method will be called. If this plugin uses the default search index, this method can call markForReindex($type) method on the search.index service class to mark the items in the search database for reindexing.

array indexStatus()

Reports the status of indexing.

The core search module only invokes this method on active module plugins. Implementing modules do not need to check whether they are active when calculating their return values.

Return Value

array

An associative array with the key-value pairs:

  • remaining: The number of items left to index.
  • total: The total number of items to index.

protected array parseAdvancedDefaults(array $f, string $keys)

Parses the advanced search form default values.

Parameters

array $f

The 'f' query parameter set up in self::buildUrlSearchQuery(), which contains the advanced query values.

string $keys

The search keywords string, which contains some information from the advanced search form.

Return Value

array

Array of default form values for the advanced search form, including a modified 'keys' element for the bare search keywords.

protected array getRankings()

Gathers ranking definitions from hook_ranking().

Return Value

array

An array of ranking definitions.

array buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

Plugin forms are embedded in other forms. In order to know where the plugin form is located in the parent form, #parents and #array_parents must be known, but these are not available during the initial build phase. In order to have these properties available when building the plugin form's elements, let this method return a form element that has a #process callback and build the rest of the form in the callback. By the time the callback is executed, the element's #parents and #array_parents properties will have been set by the form API. For more documentation on #parents and

array_parents, see \Drupal\Core\Render\Element\FormElement.

Parameters

array $form

An associative array containing the initial structure of the plugin form.

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Return Value

array

The form structure.

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

static string[] trustedCallbacks()

Lists the trusted callbacks provided by the implementing class.

Trusted callbacks are public methods on the implementing class and can be invoked via \Drupal\Core\Security\DoTrustedCallbackTrait::doTrustedCallback().

Return Value

string[]

List of method names implemented by the class that can be used as trusted callbacks.