public static function fromInput(JitFilter $input, array $typeInfo) { $options = new Tracker_Options(); $options->info = $typeInfo; foreach ($typeInfo['params'] as $key => $info) { $filter = $info['filter']; if (isset($info['count']) && $info['count'] === '*') { $rawValue = $input->{$key}->none(); if ($rawValue !== '') { $values = explode(',', $rawValue); $filter = TikiFilter::get($filter); $values = array_map(array($filter, 'filter'), $values); } else { $values = ''; } $options->setParam($key, $values); } elseif (isset($info['separator'])) { $input->replaceFilter($key, $filter); $values = $input->asArray($key, $info['separator']); $options->setParam($key, $values); } else { $options->setParam($key, $input->{$key}->{$filter}()); } } return $options; }