/** * Builds a filter list based on params. * @param array $params * @return App_ListFilter | null */ public function buildFilterList(array $params) { $factory = new \App_ListFilter_FilterFactory(); $fields = SimFilterFields::getWhiteList(); $factory->setWhiteList($fields); $sortingFields = SimSortingFields::getWhiteList(); $factory->setSortingWhiteList($sortingFields); $factory->setGroupingWhiteList(SimGroups::getWhiteList()); $factory->setAllowEmpty(true); //Black list for no monetary users $user = \App::getUserLogged(); if (!$user->monetaryDataAccess) { $factory->setBlackList(SimFilterFields::getNoMonetaryUserBlackList()); $factory->setSortingBlackList(SimSortingFields::getNoMonetaryUserBlackList()); $factory->setGroupingBlackList(SimGroups::getNoMonetaryUserBlackList()); } $filterList = $factory->constructFilter($params); $filterList->setValidators(SimFilterFields::getValidatorSpec()); if (!$filterList->isValid()) { $filterList = $factory->constructFilter(array()); } $filterList->setResourceId(SimFilterFields::getResourceId()); $filterList->addExtraData('filterType', 'sims'); \App::log()->debug('Unused filters [' . implode(',', $factory->getUnusedList()) . ']'); return $filterList; }
public function testWhiteListAndBlackList() { $rawFilters = array('fieldName1' => "equal", 'fieldName2' => ">greaterThan", 'fieldName3' => "<lessThan", 'fieldName4' => "^like", 'fieldName5' => "bet!<>ween", 'fieldName6' => "!<>between", 'fieldName7' => "between!<>", 'fieldName8' => "<>", 'fieldName9' => "!", 'fieldName10' => "!>", 'fieldName11' => "<", 'fieldName12' => "!^"); $whiteList = array('fieldName1', 'fieldName2', 'fieldName3', 'NoFieldName'); $blackList = array('fieldName1'); $factory = new App_ListFilter_FilterFactory(); $factory->setWhiteList($whiteList); $factory->setBlackList($blackList); $filter = $factory->constructFilter($rawFilters); $this->assertNotNull($filter); $this->assertInstanceOf("App_ListFilter", $filter); $filters = $filter->getFilters(); $this->assertEquals(2, count($filters)); }