Commit 9faec459 authored by Eric Chew's avatar Eric Chew Committed by Thomas Seidl
Browse files

Issue #3354906 by ericchew, drunken monkey, miedward: Fixed regression in...

Issue #3354906 by ericchew, drunken monkey, miedward: Fixed regression in Views argument plugins (date and All Terms).
parent e0de2d46
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
Search API 1.x, dev (xxxx-xx-xx):
---------------------------------
- #3354906 by ericchew, drunken monkey, miedward: Fixed regression in Views
  argument plugins (date and All Terms).
- #3332036 by drunken monkey, Chris64: Fixed too narrow Drush version constraint
  in composer.json.
- #3217772 by seutje, vector_ray, drunken monkey, Marios Anagnostopoulos: Added
+2 −2
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ class SearchApiAllTerms extends SearchApiTerm {
    // present (to simplify the code below a bit).
    $vocabulary_fields += ['' => []];
    $values = $multi_field_values = [];
    $term_conditions = $this->query->createConditionGroup($conjunction, [], TRUE);
    $term_conditions = $this->query->createAndAddConditionGroup($conjunction);
    foreach ($terms as $term) {
      // Set filters for all term reference fields which don't specify a
      // vocabulary, as well as for all fields specifying the term's vocabulary.
@@ -181,7 +181,7 @@ class SearchApiAllTerms extends SearchApiTerm {
    }
    foreach ($multi_field_values as $value => $fields) {
      $flipped_conjunction = $conjunction === 'AND' ? 'OR' : 'AND';
      $group = $this->query->createConditionGroup($flipped_conjunction, [], FALSE);
      $group = $this->query->createConditionGroup($flipped_conjunction);
      $term_conditions->addConditionGroup($group);
      foreach ($fields as $field) {
        $group->addCondition($field, $value, $not_negated ? '=' : '<>');
+2 −2
Original line number Diff line number Diff line
@@ -79,12 +79,12 @@ class SearchApiDate extends SearchApiStandard {
    }

    if (!empty($this->value)) {
      $outer_conditions = $this->query->createConditionGroup($outer_conjunction, [], TRUE);
      $outer_conditions = $this->query->createAndAddConditionGroup($outer_conjunction);
      // @todo Refactor to use only a single nested filter, and only if
      //   necessary. $value_conditions will currently only ever contain a
      //   single child – a condition or a nested filter with two conditions.
      foreach ($this->value as $value) {
        $value_conditions = $this->query->createConditionGroup($inner_conjunction, [], FALSE);
        $value_conditions = $this->query->createConditionGroup($inner_conjunction);
        $outer_conditions->addConditionGroup($value_conditions);
        $values = explode(';', $value);
        $values = array_map([$this, 'getTimestamp'], $values);
+8 −8
Original line number Diff line number Diff line
@@ -7,7 +7,6 @@ use Drupal\search_api\Plugin\views\argument\SearchApiAllTerms;
use Drupal\search_api\Plugin\views\query\SearchApiQuery;
use Drupal\search_api\Query\Condition;
use Drupal\search_api\Query\ConditionGroup;
use Drupal\search_api\Query\ConditionGroupInterface;
use Drupal\taxonomy\TermInterface;
use Drupal\Tests\UnitTestCase;
use PHPUnit\Framework\Assert;
@@ -108,18 +107,19 @@ class AllTermsArgumentTest extends UnitTestCase {
   */
  public function testConditionalFilter() {
    $query = $this->createMock(SearchApiQuery::class);
    $query->method('createConditionGroup')
    $query->method('createAndAddConditionGroup')
      ->willReturnCallback(function (string $conjunction, array $tags) {
        Assert::assertEmpty($tags);
        if (isset($this->conditionGroup)) {
          return new ConditionGroup($conjunction);
        }
        Assert::assertEmpty($this->conditionGroup);
        return $this->conditionGroup = new ConditionGroup($conjunction);
      });
    $query->method('addConditionGroup')
      ->willReturnCallback(function (ConditionGroupInterface $added_condition_group, $group = NULL) {
        Assert::assertEquals(0, $group);
        Assert::assertSame($this->conditionGroup, $added_condition_group);
      ->willThrowException(new \Exception('Unexpected call to addConditionGroup().'));
    $query->method('createConditionGroup')
      ->willReturnCallback(function (string $conjunction, array $tags) {
        Assert::assertEmpty($tags);
        Assert::assertLessThan(3, func_num_args());
        return new ConditionGroup($conjunction);
      });
    $query->method('abort')
      ->willReturnCallback(function ($message = NULL) {