12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace Drupal\search;
- use Drupal\Core\Database\Query\Condition;
- /**
- * Extends the core SearchQuery to be able to gets its protected values.
- */
- class ViewsSearchQuery extends SearchQuery {
- /**
- * Returns the conditions property.
- *
- * @return array
- * The query conditions.
- */
- public function &conditions() {
- return $this->conditions;
- }
- /**
- * Returns the words property.
- *
- * @return array
- * The positive search keywords.
- */
- public function words() {
- return $this->words;
- }
- /**
- * Returns the simple property.
- *
- * @return bool
- * TRUE if it is a simple query, and FALSE if it is complicated (phrases
- * or LIKE).
- */
- public function simple() {
- return $this->simple;
- }
- /**
- * Returns the matches property.
- *
- * @return int
- * The number of matches needed.
- */
- public function matches() {
- return $this->matches;
- }
- /**
- * Executes and returns the protected parseSearchExpression method.
- */
- public function publicParseSearchExpression() {
- return $this->parseSearchExpression();
- }
- /**
- * Replaces the original condition with a custom one from views recursively.
- *
- * @param string $search
- * The searched value.
- * @param string $replace
- * The value which replaces the search value.
- * @param array $condition
- * The query conditions array in which the string is replaced. This is an
- * item from a \Drupal\Core\Database\Query\Condition::conditions array,
- * which must have a 'field' element.
- */
- public function conditionReplaceString($search, $replace, &$condition) {
- if ($condition['field'] instanceof Condition) {
- $conditions =& $condition['field']->conditions();
- foreach ($conditions as $key => &$subcondition) {
- if (is_numeric($key)) {
- // As conditions can be nested, the function has to be called
- // recursively.
- $this->conditionReplaceString($search, $replace, $subcondition);
- }
- }
- }
- else {
- $condition['field'] = str_replace($search, $replace, $condition['field']);
- }
- }
- }
|