FilterChain: Fix and document method listFilterColumns()

refs #10370
This commit is contained in:
Johannes Meyer 2015-11-10 13:16:40 +01:00
parent 7efefc1975
commit 6c07881466

View File

@ -125,17 +125,26 @@ abstract class FilterChain extends Filter
return $this; return $this;
} }
public function listFilteredColumns() /**
* List and return all column names referenced in this filter
*
* @param array $columns The columns listed so far
*
* @return array
*/
public function listFilteredColumns(array $columns = array())
{ {
$columns = array();
foreach ($this->filters as $filter) { foreach ($this->filters as $filter) {
if ($filter instanceof FilterExpression) { if ($filter instanceof FilterExpression) {
$columns[] = $filter->getColumn(); $column= $filter->getColumn();
if (! in_array($column, $columns, true)) {
$columns[] = $column;
}
} else { } else {
$columns += $filter->listFilteredColumns(); $columns = $filter->listFilteredColumns($columns);
} }
} }
// array_unique?
return $columns; return $columns;
} }