summaryrefslogtreecommitdiffstats
path: root/apps/calendar/ajax/guesstimezone.php
blob: 41aea26985ffd58799faf04ed82e2f6559180564 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
 * Copyright (c) 2011, 2012 Georg Ehrke <ownclouddev at georgswebsite dot de>
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 * See the COPYING-README file.
 */
function make_array_out_of_xml ($xml){
	$returnarray = array();
	$xml = (array)$xml ;
	foreach ($xml as $property => $value){
		$value = (array)$value;
		if(!isset($value[0])){
			$returnarray[$property] = make_array_out_of_xml($value);
		}else{
			$returnarray[$property] = trim($value[0]);
		}
	}
	return $returnarray;
}
require_once ("../../../lib/base.php");
OC_JSON::checkLoggedIn();
OC_JSON::checkAppEnabled('calendar');
$l = new OC_L10N('calendar');
$lat = $_GET['lat'];
$long = $_GET['long'];
if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'position') == $lat . '-' . $long && OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone') != null){
	OC_JSON::success();
	exit;
}
OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'position', $lat . '-' . $long);
$geolocation = file_get_contents('http://ws.geonames.org/timezone?lat=' . $lat . '&lng=' . $long);
//Information are by Geonames (http://www.geonames.org) and licensed under the Creative Commons Attribution 3.0 License
$geoxml = simplexml_load_string($geolocation);
$geoarray = make_array_out_of_xml($geoxml);
if($geoarray['timezone']['timezoneId'] == OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone')){
	OC_JSON::success();
	exit;
}
if(in_array($geoarray['timezone']['timezoneId'], DateTimeZone::listIdentifiers())){
	OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezone', $geoarray['timezone']['timezoneId']);
	$message = array('message'=> $l->t('New Timezone:') . $geoarray['timezone']['timezoneId']);
	OC_JSON::success($message);
}else{
	OC_JSON::error();
}

?>