You are here

function smart_ip_admin_settings_submit in Smart IP 6

Same name and namespace in other branches
  1. 6.2 includes/smart_ip.admin.inc \smart_ip_admin_settings_submit()
  2. 7.2 includes/smart_ip.admin.inc \smart_ip_admin_settings_submit()
  3. 7 includes/smart_ip.admin.inc \smart_ip_admin_settings_submit()

Process Forms submitted by IP to Country administration page

1 string reference to 'smart_ip_admin_settings_submit'
smart_ip_admin_settings in includes/smart_ip.admin.inc
Smart IP administration settings.

File

includes/smart_ip.admin.inc, line 316
Admin interface callbacks/handlers to configure Smart IP.

Code

function smart_ip_admin_settings_submit($form, &$form_state) {
  global $user;

  // Save the roles to geolocate
  $roles_to_geolocate = array();
  foreach ($form_state['values']['smart_ip_roles_to_geolocate'] as $rid => $value) {
    if ($rid == $value) {
      $roles_to_geolocate[] = $rid;
    }
  }
  variable_set('smart_ip_roles_to_geolocate', $roles_to_geolocate);

  // Exclude unnecessary elements from being saved in variable table
  unset($form_state['values']['smart_ip_lookup'], $form_state['values']['smart_ip_csv_source'], $form_state['values']['smart_ip_roles_to_geolocate']);

  // Check to see if debug set
  if ($form_state['values']['smart_ip_debug']) {

    // Debug on
    $ip = $form_state['values']['smart_ip_test_ip_address'];
    $smart_ip_session = smart_ip_session_get('smart_ip');
    $smart_ip_session['debug_mode'] = TRUE;
    smart_ip_session_set('smart_ip', $smart_ip_session);
    $location = smart_ip_get_location($ip);
  }
  else {

    // Debug off - make sure we set/reset to their real values
    $location = smart_ip_get_current_visitor_location_data();
    $ip = $location['ip_address'];
  }
  if ($location) {
    drupal_set_message(t('Using @type IP: %ip / Country: %country / Region: %region / City: %city / Postal code: %zip / Longitude: %long / Latitude: %lat / Time zone: %time_zone', array(
      '@type' => $form_state['values']['smart_ip_debug'] ? 'debug' : 'actual',
      '%ip' => $ip,
      '%country' => isset($location['country']) ? $location['country'] : '',
      '%region' => isset($location['region']) ? $location['region'] : '',
      '%city' => isset($location['city']) ? $location['city'] : '',
      '%zip' => isset($location['zip']) ? $location['zip'] : '',
      '%long' => isset($location['longitude']) ? $location['longitude'] : '',
      '%lat' => isset($location['latitude']) ? $location['latitude'] : '',
      '%time_zone' => isset($location['time_zone']) ? $location['time_zone'] : '',
    )));
    $smart_ip_session = smart_ip_session_get('smart_ip');

    // Finally if it has been determined, store the location in the $user object
    if ($form_state['values']['smart_ip_debug']) {
      smart_ip_set_user_data($user, $location);
      $smart_ip_session['location'] = $location;
      smart_ip_session_set('smart_ip', $smart_ip_session);
      if (module_exists('device_geolocation')) {
        smart_ip_session_set('device_geolocation', NULL);
        device_geolocation_get_coordinates();
      }
    }
    else {
      if (isset($smart_ip_session['debug_mode']) && !is_null($smart_ip_session['debug_mode'])) {
        $user_data = unserialize($user->data);
        unset($user->data['geoip_location'], $smart_ip_session['debug_mode']);
        $smart_ip_session['location'] = $location;
        smart_ip_session_set('device_geolocation', NULL);
        smart_ip_session_set('smart_ip', $smart_ip_session);
        $user->data = serialize($user_data);
        smart_ip_set_user_data($user, $location);
        if (module_exists('device_geolocation')) {
          device_geolocation_get_coordinates();
        }
      }
      else {
        smart_ip_set_session_data($location);
        smart_ip_set_user_data($user, $smart_ip_session['location']);
      }
    }
  }
  else {
    drupal_set_message(t('IP Address @ip is not assigned to any location.', array(
      '@ip' => $ip,
    )));
  }
}