/** * Try to parse from an (array) of values * @param array Filter parameters to parse * @param DataStoreFilterModifier Backreference to parser \ * (in order to be able to parse the subqueries) * @return GenericStoreFilterGroup on success, otherwise null * * @author Jannis Moßhammer <*****@*****.**> **/ public static function parse($filter, $parser, $instance = null) { $o; if ($instance) { $o = new $instance(); } else { $o = new self(); } if (!isset($filter["type"]) || !isset($filter["items"])) { return null; } if (!in_array($filter["type"], $o->getPossibleTypes()) || empty($filter["items"])) { return null; } $o->setType($filter["type"]); $availableItems = array(); foreach ($filter["items"] as $item) { $subFilter = $parser->tryParse($item); if ($subFilter instanceof StoreFilterBase) { $o->addSubFilter($subFilter); } } return $o; }