Skip to content
Snippets Groups Projects
Commit 26272c42 authored by Georg Ehrke's avatar Georg Ehrke
Browse files

automatic timezone detection

parent b095859a
Branches
No related tags found
No related merge requests found
<?php
/**
* Copyright (c) 2011 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'];
$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(isset($geoarray['timezone']['timezoneId']) && $geoarray['timezone']['timezoneId'] != ''){
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();
}
?>
\ No newline at end of file
...@@ -32,6 +32,9 @@ if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'currentview', 'mont ...@@ -32,6 +32,9 @@ if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'currentview', 'mont
OC_Util::addScript('3rdparty/fullcalendar', 'fullcalendar'); OC_Util::addScript('3rdparty/fullcalendar', 'fullcalendar');
OC_Util::addStyle('3rdparty/fullcalendar', 'fullcalendar'); OC_Util::addStyle('3rdparty/fullcalendar', 'fullcalendar');
if(OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone") == null){
OC_UTIL::addScript('calendar', 'geo');
}
OC_Util::addScript('calendar', 'calendar'); OC_Util::addScript('calendar', 'calendar');
OC_Util::addStyle('calendar', 'style'); OC_Util::addStyle('calendar', 'style');
OC_Util::addScript('', 'jquery.multiselect'); OC_Util::addScript('', 'jquery.multiselect');
......
/**
* Copyright (c) 2011 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.
*/
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
$.getJSON(OC.filePath('calendar', 'ajax', 'guesstimezone.php?lat=' + position.coords.latitude + '&long=' + position.coords.longitude + ''),
function(data){
if (data.status == 'success'){
$('#notification').html(data.message);
$('#notification').slideDown();
window.setTimeout(function(){$('#notification').slideUp();}, 5000);
}else{
console.log('Can\'t set new timezone.');
}
});
});
}
\ No newline at end of file
...@@ -40,6 +40,7 @@ var missing_field_dberror = '<?php echo $l->t('There was a database fail') ?>'; ...@@ -40,6 +40,7 @@ var missing_field_dberror = '<?php echo $l->t('There was a database fail') ?>';
</form> </form>
</div> </div>
</div> </div>
<div id="notification" style="display:none;"></div>
<div id="calendar_holder"> <div id="calendar_holder">
</div> </div>
<!-- Dialogs --> <!-- Dialogs -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment