class IpGeoLocController in IP Geolocation Views & Maps 8
Pending doc.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\ip_geoloc\Controller\IpGeoLocController
Expanded class hierarchy of IpGeoLocController
File
- src/
Controller/ IpGeoLocController.php, line 16
Namespace
Drupal\ip_geoloc\ControllerView source
class IpGeoLocController extends ControllerBase {
protected $ipGeolocSession;
/**
* Constructs a \Drupal\ip_geoloc\Form\GeoCodeAddressForm object.
*/
public function __construct(IpGeoLocSession $ipGeolocSession) {
$this->ipGeolocSession = $ipGeolocSession;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('ip_geoloc.session'));
}
/**
* Get current location lat long.
*/
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([]);
}
/**
* Autocompletes the partial region received.
*/
public function regionAutocomplete(Request $request) {
$partial_region = $request->query
->get('q');
$matches = [];
if (strlen($partial_region) >= 2) {
$geo_vocabulary_id = \Drupal::state()
->get('ip_geoloc_geo_vocabulary_id', 0);
foreach (taxonomy_get_tree($geo_vocabulary_id) as $term) {
$term_name = SafeMarkup::checkPlain($term->name);
// We define a "match" as any 2 consecutive chars, case-insensitive.
$is_match = stripos($term_name, $partial_region) !== FALSE;
if ($is_match) {
$matches[$term_name] = $term_name;
}
}
}
return new JsonResponse($matches);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
IpGeoLocController:: |
protected | property | ||
IpGeoLocController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
IpGeoLocController:: |
public | function | Get current location lat long. | |
IpGeoLocController:: |
public | function | Autocompletes the partial region received. | |
IpGeoLocController:: |
public | function | Constructs a \Drupal\ip_geoloc\Form\GeoCodeAddressForm object. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |