function ip_geoloc_plugin_style_diff_color_ass_submit in IP Geolocation Views & Maps 7
Submit handler as declared in ip_geoloc_form_views_ui_edit_display_form_alter().
1 string reference to 'ip_geoloc_plugin_style_diff_color_ass_submit'
- ip_geoloc_form_views_ui_edit_display_form_alter in ./
ip_geoloc.module - Implements hook_form_FORMID_alter().
File
- views/
ip_geoloc_plugin_style.inc, line 327 - ip_geoloc_plugin_style.inc
Code
function ip_geoloc_plugin_style_diff_color_ass_submit($form, &$form_state) {
if (empty($form_state['view']) || empty($form_state['display_id']) || empty($form_state['differentiator'])) {
return;
}
$view_id = $form_state['view']->name;
$display_id = $form_state['display_id'];
$differentiator = $form_state['differentiator'];
// Erase differentiator values for this display, then rebuild based on form.
$diff_color_ass = variable_get('ip_geoloc_' . $view_id . '_color_mappings', array());
unset($diff_color_ass[$display_id][$differentiator]);
if (!empty($form_state['values']['color_table'])) {
$i = 0;
foreach ($form_state['values']['color_table'] as $association) {
if (is_array($association[$differentiator])) {
// E.g association['field_address']['und'][0]['postal_code']
foreach ($association[$differentiator][LANGUAGE_NONE] as $values) {
$differentiator_value = array();
if (is_array($values)) {
foreach ($values as $name => $value) {
if (isset($value) && strpos($value, '|') === FALSE) {
$differentiator_value[$name] = $value;
}
}
}
else {
$differentiator_value[] = $values;
}
if (!empty($differentiator_value)) {
$diff_color_ass[$display_id][$differentiator][$i]['differentiator_value'] = $differentiator_value;
$diff_color_ass[$display_id][$differentiator][$i]['color'] = $association['color'];
$diff_color_ass[$display_id][$differentiator][$i]['special char'] = $association['special char'];
$diff_color_ass[$display_id][$differentiator][$i]['special char class'] = $association['special char class'];
$i++;
}
}
}
else {
// Plain text field or plain taxonomy select.
$differentiator_value = trim($association[$differentiator]);
if (!empty($differentiator_value) || $differentiator_value == 0) {
$diff_color_ass[$display_id][$differentiator][$i]['differentiator_value'] = array(
$differentiator_value,
);
$diff_color_ass[$display_id][$differentiator][$i]['color'] = $association['color'];
$diff_color_ass[$display_id][$differentiator][$i]['special char'] = $association['special char'];
$diff_color_ass[$display_id][$differentiator][$i]['special char class'] = $association['special char class'];
$i++;
}
}
}
}
variable_set('ip_geoloc_' . $view_id . '_color_mappings', $diff_color_ass);
}