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,
);
}