API CHANGE: Added DataList::filterByCallback() to allow filtering by PHP code.

This commit is contained in:
Sam Minnee 2012-05-29 10:07:09 +12:00
parent 70d5ffefdd
commit 0821f021cc

View File

@ -256,6 +256,24 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
return $this;
}
/**
* Filter this DataList by a callback function.
* The function will be passed each record of the DataList in turn, and must return true for the record to be included.
* Returns the filtered list.
*
* Note that, in the current implementation, the filtered list will be an ArrayList, but this may change in a future
* implementation.
*/
public function filterByCallback($callback) {
if(!is_callable($callback)) throw new LogicException("DataList::filterByCallback() must be passed something callable.");
$output = new ArrayList;
foreach($this as $item) {
if($callback($item)) $output->push($item);
}
return $output;
}
/**
* Translates a Object relation name to a Database name and apply the relation join to
* the query. Throws an InvalidArgumentException if the $field doesn't correspond to a relation