You are here

function _variable_devel_scan_form in Variable Extra 7

Scan form for variables.

1 call to _variable_devel_scan_form()
_variable_devel_settings_form_alter in variable_devel/variable_devel.inc
Implements hook_variable_settings_form_alter()

File

variable_devel/variable_devel.inc, line 35

Code

function _variable_devel_scan_form($form, $parent = array()) {
  $variables = $groups = array();
  foreach (element_children($form) as $name) {
    $element = $form[$name];
    $definition = array();
    if (isset($element['#type'])) {
      switch ($element['#type']) {
        case 'fieldset':
          if (!empty($element['#title'])) {
            $groups[$name] = array(
              'title' => $element['#title'],
            );
          }
          list($group_variables, $group_groups) = _variable_devel_scan_form($element, array(
            'group' => $name,
          ));
          $variables += $group_variables;
          $groups += $group_groups;
          break;
        case 'textfield':
          $definition['type'] = 'string';
          break;
        case 'textarea':
          $definition['type'] = 'text';
          break;
        case 'text_format':
          $definition['type'] = 'text_format';
          break;
        case 'radio':
        case 'checkbox':
          $definition['type'] = 'boolean';
          break;
        case 'radios':
        case 'checkboxes':
        case 'select':
          $definition['type'] = 'select';
          $definition['options'] = $element['#options'];

          // Handle default for multiple options.
          if (is_array($element['#default_value'])) {
            $default = array_filter($element['#default_value']);
            if (!empty($element['#multiple'])) {
              $definition['default'] = $default;
              $definition['type'] = 'options';
            }
            else {
              $definition['default'] = reset($default);
            }
          }
          break;
      }
      if ($definition) {
        if (isset($element['#title'])) {
          $definition['title'] = $element['#title'];
        }

        // Do not add description, it may have formatted strings.
        if (!isset($definition['default']) && isset($element['#default_value'])) {
          $definition['default'] = $element['#default_value'];
        }

        // Add properties from parent.
        $definition += $parent;
        $variables[$name] = $definition;
      }
    }
  }
  return array(
    $variables,
    $groups,
  );
}