You are here

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