function buildOptions($input, $typeInfo) { if (is_string($typeInfo)) { $types = $this->getFieldTypes(); $typeInfo = $types[$typeInfo]; } if (is_array($input)) { $input = new JitFilter($input); } $parts = array(); foreach ($typeInfo['params'] as $key => $info) { $filter = $info['filter']; if (isset($info['count']) && $info['count'] === '*') { $values = explode(',', $input->{$key}->none()); $filter = TikiFilter::get($filter); $values = array_map(array($filter, 'filter'), $values); } elseif (isset($info['separator'])) { $input->setFilter($key, $filter); $values = $input->asArray($key, $info['separator']); $values = array(implode($info['separator'], $values)); } else { $values = array($input->{$key}->{$filter}()); } foreach ($values as $value) { if (isset($info['options']) && !isset($info['options'][$value])) { $value = null; } $parts[] = $value; } } $rawOptions = implode(',', $parts); return rtrim($rawOptions, ','); }