Index: branches/5.3.x/core/kernel/db/dblist.php =================================================================== diff -u -N -r16124 -r16226 --- branches/5.3.x/core/kernel/db/dblist.php (.../dblist.php) (revision 16124) +++ branches/5.3.x/core/kernel/db/dblist.php (.../dblist.php) (revision 16226) @@ -1,6 +1,6 @@ OrderFields = Array(); + foreach ( $this->getFilterStructure() as $filter_params ) { + $property_name = $filter_params['type']; + $filter_group =& $this->$property_name; - $filters = $this->getFilterStructure(); - - foreach ($filters as $filter_params) { - $filter =& $this->$filter_params['type']; - $filter[ $filter_params['class'] ] = $this->Application->makeClass('kMultipleFilter', Array ($filter_params['join_using'])); + $filter_group[$filter_params['class']] = $this->Application->makeClass( + 'kMultipleFilter', + array($filter_params['join_using']) + ); } $this->PerPage = -1; @@ -317,19 +319,7 @@ */ public function addFilter($name, $clause, $filter_type = self::WHERE_FILTER, $filter_scope = self::FLT_SYSTEM) { - $filter_source = Array ( - self::WHERE_FILTER => 'WhereFilter', - self::HAVING_FILTER => 'HavingFilter', - self::AGGREGATE_FILTER => 'AggregateFilter' - ); - - $filter_name = $filter_source[$filter_type]; - - $filter =& $this->$filter_name; - $filter =& $filter[$filter_scope]; - /* @var $filter kMultipleFilter */ - - $filter->addFilter($name, $clause); + $this->getFilterCollection($filter_type, $filter_scope)->addFilter($name, $clause); } /** @@ -343,19 +333,7 @@ */ public function getFilter($name, $filter_type = self::WHERE_FILTER, $filter_scope = self::FLT_SYSTEM) { - $filter_source = Array ( - self::WHERE_FILTER => 'WhereFilter', - self::HAVING_FILTER => 'HavingFilter', - self::AGGREGATE_FILTER => 'AggregateFilter' - ); - - $filter_name = $filter_source[$filter_type]; - - $filter =& $this->$filter_name; - $filter =& $filter[$filter_scope]; - /* @var $filter kMultipleFilter */ - - return $filter->getFilter($name); + return $this->getFilterCollection($filter_type, $filter_scope)->getFilter($name); } /** @@ -368,19 +346,30 @@ */ public function removeFilter($name, $filter_type = self::WHERE_FILTER, $filter_scope = self::FLT_SYSTEM) { - $filter_source = Array ( + $this->getFilterCollection($filter_type, $filter_scope)->removeFilter($name); + } + + /** + * Returns filter collection. + * + * @param integer $filter_type Is filter having filter or where filter. + * @param integer $filter_scope Filter subtype: FLT_NORMAL,FLT_SYSTEM,FLT_SEARCH,FLT_VIEW,FLT_CUSTOM. + * + * @return kMultipleFilter + */ + protected function getFilterCollection($filter_type = self::WHERE_FILTER, $filter_scope = self::FLT_SYSTEM) + { + $filter_source = array( self::WHERE_FILTER => 'WhereFilter', self::HAVING_FILTER => 'HavingFilter', self::AGGREGATE_FILTER => 'AggregateFilter' ); - $filter_name = $filter_source[$filter_type]; + /** @var kMultipleFilter[] $filters */ + $property_name = $filter_source[$filter_type]; + $filters =& $this->$property_name; - $filter =& $this->$filter_name; - $filter =& $filter[$filter_scope]; - /* @var $filter kMultipleFilter */ - - $filter->removeFilter($name); + return $filters[$filter_scope]; } /** @@ -390,11 +379,11 @@ */ public function clearFilters() { - $filters = $this->getFilterStructure(); + foreach ( $this->getFilterStructure() as $filter_params ) { + $property_name = $filter_params['type']; + $filter_group =& $this->$property_name; - foreach ($filters as $filter_params) { - $filter =& $this->$filter_params['type']; - $filter[ $filter_params['class'] ]->clearFilters(); + $filter_group[$filter_params['class']]->clearFilters(); } }