Exemplo n.º 1
0
 /**
  * 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));
 }