public function IpGeoLocController::currentLocation in IP Geolocation Views & Maps 8
Get current location lat long.
1 string reference to 'IpGeoLocController::currentLocation'
File
- src/
Controller/ IpGeoLocController.php, line 39
Class
- IpGeoLocController
- Pending doc.
Namespace
Drupal\ip_geoloc\ControllerCode
public function currentLocation() {
$request = \Drupal::request();
if ($request
->get('error') !== NULL) {
// Device/browser does not support getCurrentPosition(), timeout or
// Google reverse-geocode error.
// watchdog() only works at full bootstrap, so store error here and handle
// in ip_geoloc_init() during next click/request.
$error = Html::escape($_POST['error']);
$this->ipGeolocSession
->setSessionValue('error', $error);
return new JsonResponse([
'response' => $error,
]);
}
// Flesh out $location with the returned street address components.
$location = [
'ip_address' => $request
->getClientIp(),
];
$location_data = $request->request
->all();
foreach ($location_data as $key => $value) {
// Ignore crap required for drupal.org/project/js module.
if (Unicode::substr($key, 0, 3) !== 'js_') {
$location[Html::escape($key)] = Html::escape($value);
}
}
$location['provider'] = empty($location['country']) ? 'device' : 'device+google';
$since = $this->ipGeolocSession
->getSessionValue('position_pending_since');
// @TODO review this migration to inject dependencies
/*ip_geoloc_debug(t('IPGV&M: returned from position callback in %since s: !location', array(
'%since' => isset($since) ? number_format(microtime(TRUE) - $since, 1) : '?',
'!location' => ip_geoloc_pretty_print($location))));
// If better_statistics module is enabled, we can backfill geolocation
// information to {accesslog} entries occurred since the positioning was
// requested.
if ($since && \Drupal::moduleHandler()->moduleExists('better_statistics')) {
require_once 'plugins/ip_geoloc.statistics.inc';
_ip_geoloc_statistics_backfill($since, $location);
}
if (ip_geoloc_store_location($location) !== FALSE) {
// If successfully stored, don't store again.
$location['ip_address'] = NULL;
}*/
$location['fixed_address'] = 0;
$location['is_updated'] = TRUE;
// Wipe old location before setting the new one (to avoid merging).
$this->ipGeolocSession
->setSessionValue('location', NULL);
$this->ipGeolocSession
->setSessionValue('location', $location);
// Got fresh location so reset 'position_pending_since' timer.
$this->ipGeolocSession
->setSessionValue('position_pending_since', NULL);
// [#2599950], #6.
return new JsonResponse([]);
}