--- a/include/common-session.inc.php +++ b/include/common-session.inc.php @@ -1,1 +1,57 @@ +<?php +// you have to open the session to be able to modify or remove it +session_start(); +if (isset($_REQUEST['service_period'])) { + $_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING); + sessionUpdated(); +} +if (isset($_REQUEST['time'])) { + $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING); + sessionUpdated(); +} +if (isset($_REQUEST['geolocate'])) { + $geocoded = false; + if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { + $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); + $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); + } + else { + $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL); + echo $_REQUEST['geolocate']; + if (startsWith($geolocate, "-")) { + $locateparts = explode(",", $geolocate); + $_SESSION['lat'] = $locateparts[0]; + $_SESSION['lon'] = $locateparts[1]; + } + else { + $contents = geocode($geolocate, true); + print_r($contents); + if (isset($contents[0]->centroid)) { + $geocoded = true; + $_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; + $_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; + } + else { + $_SESSION['lat'] = ""; + $_SESSION['lon'] = ""; + } + } + } + if ($_SESSION['lat'] != "" && isAnalyticsOn()) { + trackEvent("Geolocation","Updated Location", "Geocoded - ".($geocoded ? "Yes" : "No")); + } + sessionUpdated(); +} +function sessionUpdated() { + $_SESSION['lastUpdated'] = time(); +} +// timeoutSession +$TIMEOUT_LIMIT = 60*5; // 5 minutes +if (isset($_SESSION['lastUpdated']) && $_SESSION['lastUpdated']+$TIMEOUT_LIMIT < time()) { + debug ("Session timeout ".($_SESSION['lastUpdated']+$TIMEOUT_LIMIT).">".time(),"session"); + session_destroy(); + session_start(); +} +debug(print_r($_SESSION, true) , "session"); +?>