. * */ /** * Sub-Ajax page, requires AJAX_INCLUDE */ if (!defined('AJAX_INCLUDE')) { exit; } $results = array(); switch ($_REQUEST['action']) { case 'geolocation': if (AmpConfig::get('geolocation')) { if ($GLOBALS['user']->id) { $latitude = floatval($_REQUEST['latitude']); $longitude = floatval($_REQUEST['longitude']); $name = $_REQUEST['name']; if (empty($name)) { // First try to get from local cache (avoid external api requests) $name = Stats::get_cached_place_name($latitude, $longitude); if (empty($name)) { foreach (Plugin::get_plugins('get_location_name') as $plugin_name) { $plugin = new Plugin($plugin_name); if ($plugin->load($GLOBALS['user'])) { $name = $plugin->_plugin->get_location_name($latitude, $longitude); if (!empty($name)) { break; } } } } } // Better to check for bugged values here and keep previous user good location // Someone listing music at 0.0,0.0 location would need a waterproof music player btw if ($latitude > 0 && $longitude > 0) { Session::update_geolocation(session_id(), $latitude, $longitude, $name); } } } else { debug_event('stats.ajax.php', 'Geolocation not enabled for the user.', 3); } break; default: $results['rfc3514'] = '0x1'; break; } // switch on action; // We always do this echo xoutput_from_array($results);