DST presets -> timezones

This commit is contained in:
defacer
2005-03-23 01:54:45 +00:00
parent 0bd7322e30
commit 0ed442f85c
5 changed files with 23 additions and 92 deletions
+1 -1
View File
@@ -66,7 +66,7 @@
</div>
<div>
<nobr><input type="radio" id="timezone2" name="forcetimezone" value="force" <?php if(!empty($CFG->forcetimezone)) echo 'checked="checked"';?> /> <label for="timezone2"><?php print_string('timezoneisforcedto', 'admin'); ?></label>
<?php choose_from_menu($presets, 'dstpreset', (empty($CFG->forcetimezone) ? 0 : $CFG->forcetimezone), get_string('choose').'...', 'form.timezone2.checked=\'checked\''); ?>
<?php choose_from_menu($presets, 'timezonepreset', (empty($CFG->forcetimezone) ? 0 : $CFG->forcetimezone), get_string('choose').'...', 'form.timezone2.checked=\'checked\''); ?>
</nobr>
</div>
<?php } ?>
+5 -5
View File
@@ -38,14 +38,14 @@
set_config('calendar_adminseesall', intval($form->adminseesallcourses) != 0);
unset($SESSION->cal_courses_shown);
}
if(isset($form->dstforusers)) {
if($form->dstforusers == 'force') {
$preset = optional_param('dstpreset', 0, PARAM_INT);
if(isset($form->forcetimezone)) {
if($form->forcetimezone == 'force') {
$preset = optional_param('timezonepreset', 0, PARAM_INT);
}
else {
$preset = 0;
}
set_config('calendar_dstforusers', $preset);
set_config('forcetimezone', $preset);
}
if(isset($form->startwday)) {
$startwday = intval($form->startwday);
@@ -85,7 +85,7 @@
// Populate some variables we 're going to need in calendar.html
$presets = get_records('dst_preset');
$presets = get_records('timezone');
if(!empty($presets)) {
foreach($presets as $id => $preset) {
$presets[$id] = $preset->name;
+12 -83
View File
@@ -108,6 +108,7 @@ define('PARAM_CLEANFILE',0x0200);
define('PARAM_ALPHANUM', 0x0400); //numbers or letters only
define('PARAM_BOOL', 0x0800); //convert to value 1 or 0 using empty()
define('PARAM_CLEANHTML',0x1000); //actual HTML code that you want cleaned and slashes removed
define('PARAM_ALPHAEXT', 0x2000); // PARAM_ALPHA plus the chars in quotes: "/-_" allowed
/**
* Definition of page types
@@ -207,6 +208,10 @@ function clean_param($param, $options) {
$param = eregi_replace('[^A-Za-z0-9]', '', $param);
}
if ($options & PARAM_ALPHAEXT) { // Remove everything not a-zA-Z/_-
$param = eregi_replace('[^a-zA-Z/_-]', '', $param);
}
if ($options & PARAM_BOOL) { // Convert to 1 or 0
$param = empty($param) ? 0 : 1;
}
@@ -863,17 +868,19 @@ function get_user_timezone_preset() {
return $preset;
}
if (empty($CFG->calendar_dstforusers)) {
if (empty($USER->dstpreset)) {
if (empty($CFG->forcetimezone)) {
if (empty($USER->timezonename)) {
return NULL;
}
$presetid = $USER->dstpreset;
$presetname = $USER->timezonename;
} else {
$presetid = $CFG->calendar_dstforusers;
$presetname = $CFG->forcetimezone;
}
$preset = get_record('dst_preset', 'id', $presetid);
$presetrecords = get_records('timezone', 'name', $presetname);
//print_object($presetrecords);
if(!empty($USER)) {
if(empty($USER->dstoffsets)) {
@@ -895,84 +902,6 @@ function get_user_timezone_preset() {
return $preset;
}
// This should be obsolete, but let's leave it inside a while longer
/*
function dst_update_preset($dstpreset, $time = NULL) {
// What's the date according to our user?
if($time === NULL) {
$time = time();
}
$date = usergetdate($time);
$changes = dst_changes_for_year($date['year'], $dstpreset);
if($changes['activate'] == 0 && $changes['deactivate'] == 0) {
// This timezone doesn't have DST, so don't do anything
return $dstpreset;
}
else if($changes['activate'] == 0) {
// There's only the "deactivate" time
if($time >= $changes['deactivate']) {
$nextchanges = dst_changes_for_year($date['year'] + 1, $dstpreset);
$dstpreset->next_change = min($nextchanges['activate'], $nextchanges['deactivate']);
$dstpreset->current_offset = 0;
}
return $dstpreset;
}
else if($changes['deactivate'] == 0) {
// There's only the "activate" time
if($time >= $changes['activate']) {
$nextchanges = dst_changes_for_year($date['year'] + 1, $dstpreset);
$dstpreset->next_change = min($nextchanges['activate'], $nextchanges['deactivate']);
$dstpreset->current_offset = $dstpreset->apply_offset;
}
}
else if($changes['activate'] < $changes['deactivate']) {
// Northern hemisphere
if ($time < $changes['activate']) {
// DST has not been turned on this year
$dstpreset->next_change = $changes['activate'];
$dstpreset->current_offset = 0;
} else if($time < $changes['deactivate']) {
// DST is on at this time
$dstpreset->next_change = $changes['deactivate'];
$dstpreset->current_offset = $dstpreset->apply_offset;
} else {
// DST has already been turned off; we are nearing the end of the year
$nextchanges = dst_changes_for_year($date['year'] + 1, $dstpreset);
$dstpreset->next_change = $nextchanges['activate'];
$dstpreset->current_offset = 0;
}
}
else if($changes['activate'] > $changes['deactivate']) {
// Southern hemisphere
if ($time < $changes['deactivate']) {
// DST is still on from the previous year
$dstpreset->next_change = $changes['deactivate'];
$dstpreset->current_offset = $dstpreset->apply_offset;
} else if($time < $changes['activate']) {
// DST is off at this time
$dstpreset->next_change = $changes['activate'];
$dstpreset->current_offset = 0;
} else {
// DST has been turned on; we are nearing the end of the year
$nextchanges = dst_changes_for_year($date['year'] + 1, $dstpreset);
$dstpreset->next_change = $nextchanges['deactivate'];
$dstpreset->current_offset = $dstpreset->apply_offset;
}
}
return $dstpreset;
}
*/
function dst_offset_for_year($year, $dstpreset) {
return $dstpreset->apply_offset * MINSECS;
}
+2 -2
View File
@@ -240,7 +240,7 @@ if (isadmin()) {
$presetarray = array('0' => get_string('notimezone', 'calendar'));
if(!empty($presets)) {
foreach($presets as $preset) {
$presetarray[$preset->id] = $preset->name;
$presetarray[$preset->name] = $preset->name;
}
choose_from_menu ($presetarray, 'timezonename', empty($user->timezonename) ? 0 : $user->timezonename, '');
}
@@ -249,7 +249,7 @@ if (isadmin()) {
}
}
else {
$preset = get_record('timezone', 'id', $CFG->forcetimezone);
$preset = get_record('timezone', 'name', $CFG->forcetimezone);
if(empty($preset)) {
print_string('nodstpresets');
}
+3 -1
View File
@@ -102,7 +102,9 @@
$usernew->autosubscribe = clean_param($usernew->autosubscribe, PARAM_INT);
$usernew->htmleditor = clean_param($usernew->htmleditor, PARAM_INT);
$usernew->emailstop = clean_param($usernew->emailstop, PARAM_INT);
$usernew->timezonename = clean_param($usernew->timezonename, PARAM_ALPHAEXT);
foreach ($usernew as $key => $data) {
$usernew->$key = addslashes(clean_text(stripslashes($usernew->$key), FORMAT_MOODLE));
}