Loading core/modules/views/src/Plugin/views/filter/Combine.php +2 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,8 @@ protected function opNotLike($expression) { protected function opRegex($expression) { $placeholder = $this->placeholder(); $this->query->addWhereExpression($this->options['group'], "$expression REGEXP $placeholder", [$placeholder => $this->value]); $operator = $this->getConditionOperator('REGEXP'); $this->query->addWhereExpression($this->options['group'], "$expression $operator $placeholder", [$placeholder => $this->value]); } protected function opEmpty($expression) { Loading core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php +59 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,65 @@ public function testFilterCombineContains() { $this->assertIdenticalResultset($view, $resultset, $this->columnMap); } /** * Tests the Combine field filter with the 'regular_expression' operator. */ public function testFilterCombineRegEx() { $view = Views::getView('test_view'); $view->setDisplay(); $fields = $view->displayHandlers->get('default')->getOption('fields'); $view->displayHandlers->get('default')->overrideOption('fields', $fields + [ 'job' => [ 'id' => 'job', 'table' => 'views_test_data', 'field' => 'job', 'relationship' => 'none', ], ]); // Change the filtering. $view->displayHandlers->get('default')->overrideOption('filters', [ 'age' => [ 'id' => 'combine', 'table' => 'views', 'field' => 'combine', 'relationship' => 'none', 'operator' => 'regular_expression', 'fields' => [ 'name', 'job', ], 'value' => '(ing|write)', ], ]); $this->executeView($view); $resultset = [ [ 'name' => 'John', 'job' => 'Singer', ], [ 'name' => 'George', 'job' => 'Singer', ], [ 'name' => 'Ringo', 'job' => 'Drummer', ], [ 'name' => 'Paul', 'job' => 'Songwriter', ], [ 'name' => 'Ginger', 'job' => NULL, ], ]; $this->assertIdenticalResultset($view, $resultset, $this->columnMap); } /** * Tests the Combine field filter with the 'word' operator. */ Loading Loading
core/modules/views/src/Plugin/views/filter/Combine.php +2 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,8 @@ protected function opNotLike($expression) { protected function opRegex($expression) { $placeholder = $this->placeholder(); $this->query->addWhereExpression($this->options['group'], "$expression REGEXP $placeholder", [$placeholder => $this->value]); $operator = $this->getConditionOperator('REGEXP'); $this->query->addWhereExpression($this->options['group'], "$expression $operator $placeholder", [$placeholder => $this->value]); } protected function opEmpty($expression) { Loading
core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php +59 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,65 @@ public function testFilterCombineContains() { $this->assertIdenticalResultset($view, $resultset, $this->columnMap); } /** * Tests the Combine field filter with the 'regular_expression' operator. */ public function testFilterCombineRegEx() { $view = Views::getView('test_view'); $view->setDisplay(); $fields = $view->displayHandlers->get('default')->getOption('fields'); $view->displayHandlers->get('default')->overrideOption('fields', $fields + [ 'job' => [ 'id' => 'job', 'table' => 'views_test_data', 'field' => 'job', 'relationship' => 'none', ], ]); // Change the filtering. $view->displayHandlers->get('default')->overrideOption('filters', [ 'age' => [ 'id' => 'combine', 'table' => 'views', 'field' => 'combine', 'relationship' => 'none', 'operator' => 'regular_expression', 'fields' => [ 'name', 'job', ], 'value' => '(ing|write)', ], ]); $this->executeView($view); $resultset = [ [ 'name' => 'John', 'job' => 'Singer', ], [ 'name' => 'George', 'job' => 'Singer', ], [ 'name' => 'Ringo', 'job' => 'Drummer', ], [ 'name' => 'Paul', 'job' => 'Songwriter', ], [ 'name' => 'Ginger', 'job' => NULL, ], ]; $this->assertIdenticalResultset($view, $resultset, $this->columnMap); } /** * Tests the Combine field filter with the 'word' operator. */ Loading