/** * Returns a getList object with filters defined based on the given AQL * @param string $aql * @param Boolean $search_operators * @return \getList * @throws \Exception if invalid AQL */ public static function autoGenerate($aql, $search_operators = false) { if (!aql::is_aql($aql)) { throw new \Exception('autoGenerate requires AQL.'); } $aql_array = aql2array($aql); $min_aql = aql::minAQLFromArr($aql_array); $fields = array(); foreach ($aql_array as $k => $f) { $fields = array_merge($fields, $f['fields']); } $lst = new self(); $lst->setAQL($min_aql)->defineFilters(array_map(function ($field) use($lst, $search_operators, $fields) { $op = array_search($field, $fields); return array('operator' => $search_operators ? $op : null, 'callback' => function ($val) use($lst, $fields, $field) { $where = \getList::prepVal(\getList::csvToArray($val)); $lst->where[] = "{$field} in {$where}"; }); }, $fields)); return $lst; }