Exemplo n.º 1
0
 function thb_array_depth($array)
 {
     $max_depth = 1;
     if (!is_array($array)) {
         return $max_depth;
     }
     foreach ($array as $value) {
         if (is_array($value)) {
             $depth = thb_array_depth($value) + 1;
             if ($depth > $max_depth) {
                 $max_depth = $depth;
             }
         }
     }
     return $max_depth;
 }
 /**
  * Pre-render the field.
  *
  * @return void
  */
 protected function preRender()
 {
     $options = array();
     if ($this->dynamicOptions) {
         if (is_array($this->dynamicOptions)) {
             foreach (array_keys($this->dynamicOptions) as $key) {
                 if (is_callable($this->dynamicOptions[$key])) {
                     $options[$key] = call_user_func($this->dynamicOptions[$key]);
                 }
             }
         } else {
             if (is_callable($this->dynamicOptions)) {
                 $options = call_user_func($this->dynamicOptions);
             }
         }
     }
     $depth = thb_array_depth($options);
     if ($depth == 2) {
         foreach ((array) $options as $optgroup => $values) {
             $this->addOptionsGroup($optgroup, $values);
         }
     } else {
         foreach ((array) $options as $value => $label) {
             $this->addOption($value, $label);
         }
     }
     if ($this->invisibleIfEmpty && count($this->_data['field_options']) <= 1) {
         $this->addClass('invisible');
     }
     parent::preRender();
 }