Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 50 |
SearchPluginBase | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
210 | |
0.00% |
0 / 50 |
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
setSearch | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
getKeywords | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getParameters | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getAttributes | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
isSearchExecutable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getType | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
buildResults | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 11 |
|||
searchFormAlter | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
suggestedTitle | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
buildSearchUrlQuery | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getHelp | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 12 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\search\Plugin\SearchPluginBase. | |
*/ | |
namespace Drupal\search\Plugin; | |
use Drupal\Core\Cache\RefinableCacheableDependencyInterface; | |
use Drupal\Core\Cache\RefinableCacheableDependencyTrait; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\Core\Plugin\PluginBase; | |
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | |
use Drupal\Component\Utility\Unicode; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Defines a base class for plugins wishing to support search. | |
*/ | |
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 = array(); | |
foreach ($results as $result) { | |
$built[] = array( | |
'#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', array('@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 = array('keys' => $keys); | |
return $query; | |
} | |
/* | |
* {@inheritdoc} | |
*/ | |
public function getHelp() { | |
// This default search help is appropriate for plugins like NodeSearch | |
// that use the SearchQuery class. | |
$help = array('list' => array( | |
'#theme' => 'item_list', | |
'#items' => array( | |
$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; | |
} | |
} |