public function SmartIpLocation::save in Smart IP 8.3
Same name and namespace in other branches
- 8.4 src/SmartIpLocation.php \Drupal\smart_ip\SmartIpLocation::save()
- 8.2 src/SmartIpLocation.php \Drupal\smart_ip\SmartIpLocation::save()
Saves the Smart IP location data to user data and session (for anonymous, saves to session only).
Return value
\Drupal\smart_ip\SmartIpLocationInterface Smart IP's data location.
Overrides SmartIpLocationInterface::save
File
- src/
SmartIpLocation.php, line 219 - Contains \Drupal\smart_ip\SmartIpLocation.
Class
- SmartIpLocation
- Implements wrapper and utility methods for Smart IP's data location.
Namespace
Drupal\smart_ipCode
public function save() {
// Determine if saving location details of visitor from EU countries are
// permitted.
$euVisitorsDontSave = \Drupal::config('smart_ip.settings')
->get('eu_visitor_dont_save') && $this->isGdprCountry;
// Check if the user permitted to share location.
$shareLocation = SmartIp::getSession('smart_ip_user_share_location_permitted', TRUE);
if ($shareLocation && !$euVisitorsDontSave) {
// Save only if user has permission to share location.
$user = \Drupal::currentUser();
$uid = $user
->id();
$data['location'] = $this->allData;
SmartIp::updateFields($data['location']);
// Allow other modules to modify country list via
// hook_smart_ip_user_save_alter().
\Drupal::moduleHandler()
->alter('smart_ip_user_save', $user, $data);
// Save the Smart IP location in current user's session.
SmartIp::setSession('smart_ip', $data);
if ($uid != 0) {
/** @var \Drupal\user\UserData $userData */
$userData = \Drupal::service('user.data');
// Save the Smart IP location to current user's user_data
$userData
->set('smart_ip', $uid, 'geoip_location', $data);
}
}
return $this;
}