Example #1
0
 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, ',');
 }