Permalink
Browse files

API CHANGE: Added DataList::filterByCallback() to allow filtering by …

…PHP code.
  • Loading branch information...
1 parent 70d5ffe commit 0821f021cc41ab97cec392d39d84ce9d0c51dbb6 @sminnee sminnee committed May 28, 2012
Showing with 18 additions and 0 deletions.
  1. +18 −0 model/DataList.php
View
@@ -257,6 +257,24 @@ public function filter() {
}
/**
+ * 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
*

0 comments on commit 0821f02

Please sign in to comment.