public function apply(App_ListFilter $filterlist) { if (!($fieldName = $this->getFieldName())) { throw new App_ListFilter_Rule_Condition_Exception("Filter field name not defined."); } $filterName = $this->getFilterField(); if ($scopeVar = $this->getFromScopeVar()) { $filters = $filterlist->getFromScope($scopeVar); if (!is_array($filters)) { $filters = array($filters); } } else { $filters = $filterlist->getFiltersByFieldName($filterName); } foreach ($filters as $filter) { if (($class = $this->getFilterClass()) && !$filter instanceof $class) { continue; } if ($filterName && $filter->getFieldName() != $filterName) { continue; } if ($this->_checkValue($filter->{'get' . ucfirst($this->getFieldName())}(), $this->getComparedValue())) { if ($this->getScopeVar()) { $filterlist->addToScope($this->getScopeVar(), $filter); } return true; } } return false; }
public function testScopeCleanOk() { $listFilter = new App_ListFilter(); $listFilter->addToScope('scopeVar1', 'scopeValue1'); $listFilter->addToScope('scopeVar2', 'scopeValue2'); $listFilter->addToScope('scopeVar3', 'scopeValue3'); $listFilter->addToScope('scopeVar4', 'scopeValue4'); $listFilter->addToScope('scopeVar5', 'scopeValue5'); $this->assertEquals('scopeValue1', $listFilter->getFromScope('scopeVar1')); $this->assertEquals('scopeValue2', $listFilter->getFromScope('scopeVar2')); $this->assertEquals('scopeValue3', $listFilter->getFromScope('scopeVar3')); $this->assertEquals('scopeValue4', $listFilter->getFromScope('scopeVar4')); $this->assertEquals('scopeValue5', $listFilter->getFromScope('scopeVar5')); $listFilter->clearScope(); $this->assertNull($listFilter->getFromScope('scopeVar1')); $this->assertNull($listFilter->getFromScope('scopeVar2')); $this->assertNull($listFilter->getFromScope('scopeVar3')); $this->assertNull($listFilter->getFromScope('scopeVar4')); $this->assertNull($listFilter->getFromScope('scopeVar5')); }