class SearchPluginBase

Same name and namespace in other branches
  1. 9 core/modules/search/src/Plugin/SearchPluginBase.php \Drupal\search\Plugin\SearchPluginBase
  2. 8.9.x core/modules/search/src/Plugin/SearchPluginBase.php \Drupal\search\Plugin\SearchPluginBase
  3. 10 core/modules/search/src/Plugin/SearchPluginBase.php \Drupal\search\Plugin\SearchPluginBase

Defines a base class for plugins wishing to support search.

Hierarchy

Expanded class hierarchy of SearchPluginBase

2 files declare their use of SearchPluginBase
HelpSearch.php in core/modules/help/src/Plugin/Search/HelpSearch.php
UserSearch.php in core/modules/user/src/Plugin/Search/UserSearch.php

File

core/modules/search/src/Plugin/SearchPluginBase.php, line 16

Namespace

Drupal\search\Plugin
View source
abstract class SearchPluginBase extends PluginBase implements ContainerFactoryPluginInterface, SearchInterface, RefinableCacheableDependencyInterface {
    use RefinableCacheableDependencyTrait;
    
    /**
     * The keywords to use in a search.
     *
     * @var string
     */
    protected $keywords;
    
    /**
     * Array of parameters from the query string from the request.
     *
     * @var array
     */
    protected $searchParameters;
    
    /**
     * Array of attributes - usually from the request object.
     *
     * @var array
     */
    protected $searchAttributes;
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
        return new static($configuration, $plugin_id, $plugin_definition);
    }
    
    /**
     * {@inheritdoc}
     */
    public function setSearch($keywords, array $parameters, array $attributes) {
        $this->keywords = (string) $keywords;
        $this->searchParameters = $parameters;
        $this->searchAttributes = $attributes;
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getKeywords() {
        return $this->keywords;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getParameters() {
        return $this->searchParameters;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getAttributes() {
        return $this->searchAttributes;
    }
    
    /**
     * {@inheritdoc}
     */
    public function isSearchExecutable() {
        // Default implementation suitable for plugins that only use keywords.
        return !empty($this->keywords);
    }
    
    /**
     * {@inheritdoc}
     */
    public function getType() {
        return NULL;
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildResults() {
        $results = $this->execute();
        $built = [];
        foreach ($results as $result) {
            $built[] = [
                '#theme' => 'search_result',
                '#result' => $result,
                '#plugin_id' => $this->getPluginId(),
            ];
        }
        return $built;
    }
    
    /**
     * {@inheritdoc}
     */
    public function searchFormAlter(array &$form, FormStateInterface $form_state) {
        // Empty default implementation.
    }
    
    /**
     * {@inheritdoc}
     */
    public function suggestedTitle() {
        // If the user entered a search string, truncate it and append it to the
        // title.
        if (!empty($this->keywords)) {
            return $this->t('Search for @keywords', [
                '@keywords' => Unicode::truncate($this->keywords, 60, TRUE, TRUE),
            ]);
        }
        // Use the default 'Search' title.
        return $this->t('Search');
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildSearchUrlQuery(FormStateInterface $form_state) {
        // Grab the keywords entered in the form and put them as 'keys' in the GET.
        $keys = trim($form_state->getValue('keys'));
        $query = [
            'keys' => $keys,
        ];
        return $query;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getHelp() {
        // This default search help is appropriate for plugins like NodeSearch
        // that use the SearchQuery class.
        $help = [
            'list' => [
                '#theme' => 'item_list',
                '#items' => [
                    $this->t('Search looks for exact, case-insensitive keywords; keywords shorter than a minimum length are ignored.'),
                    $this->t('Use upper-case OR to get more results. Example: cat OR dog (content contains either "cat" or "dog").'),
                    $this->t('You can use upper-case AND to require all words, but this is the same as the default behavior. Example: cat AND dog (same as cat dog, content must contain both "cat" and "dog").'),
                    $this->t('Use quotes to search for a phrase. Example: "the cat eats mice".'),
                    $this->t('You can precede keywords by - to exclude them; you must still have at least one "positive" keyword. Example: cat -dog (content must contain cat and cannot contain dog).'),
                ],
            ],
        ];
        return $help;
    }
    
    /**
     * {@inheritdoc}
     */
    public function usesAdminTheme() {
        return $this->pluginDefinition['use_admin_theme'];
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
CacheableDependencyTrait::$cacheContexts protected property Cache contexts.
CacheableDependencyTrait::$cacheMaxAge protected property Cache max-age.
CacheableDependencyTrait::$cacheTags protected property Cache tags.
CacheableDependencyTrait::getCacheContexts public function 4
CacheableDependencyTrait::getCacheMaxAge public function 4
CacheableDependencyTrait::getCacheTags public function 4
CacheableDependencyTrait::setCacheability protected function Sets cacheability; useful for value object constructors.
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2
RefinableCacheableDependencyTrait::addCacheableDependency public function 1
RefinableCacheableDependencyTrait::addCacheContexts public function
RefinableCacheableDependencyTrait::addCacheTags public function
RefinableCacheableDependencyTrait::mergeCacheMaxAge public function
SearchInterface::execute public function Executes the search. 4
SearchPluginBase::$keywords protected property The keywords to use in a search.
SearchPluginBase::$searchAttributes protected property Array of attributes - usually from the request object.
SearchPluginBase::$searchParameters protected property Array of parameters from the query string from the request.
SearchPluginBase::buildResults public function Executes the search and builds render arrays for the result items. Overrides SearchInterface::buildResults 1
SearchPluginBase::buildSearchUrlQuery public function Builds the URL GET query parameters array for search. Overrides SearchInterface::buildSearchUrlQuery 1
SearchPluginBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 3
SearchPluginBase::getAttributes public function Returns the currently set attributes (from the request). Overrides SearchInterface::getAttributes
SearchPluginBase::getHelp public function Returns the searching help. Overrides SearchInterface::getHelp 1
SearchPluginBase::getKeywords public function Returns the currently set keywords of the plugin instance. Overrides SearchInterface::getKeywords
SearchPluginBase::getParameters public function Returns the current parameters set using setSearch(). Overrides SearchInterface::getParameters
SearchPluginBase::getType public function Returns the search index type this plugin uses. Overrides SearchInterface::getType 2
SearchPluginBase::isSearchExecutable public function Verifies if the values set via setSearch() are valid and sufficient. Overrides SearchInterface::isSearchExecutable 2
SearchPluginBase::searchFormAlter public function Alters the search form when being built for a given plugin. Overrides SearchInterface::searchFormAlter 1
SearchPluginBase::setSearch public function Sets the keywords, parameters, and attributes to be used by execute(). Overrides SearchInterface::setSearch 1
SearchPluginBase::suggestedTitle public function Provides a suggested title for a page of search results. Overrides SearchInterface::suggestedTitle
SearchPluginBase::usesAdminTheme public function Returns whether or not search results should be displayed in admin theme. Overrides SearchInterface::usesAdminTheme

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.