diff --git a/admin/calendar.html b/admin/calendar.html
index 6b6cc6e4ce1..32184ae2d56 100644
--- a/admin/calendar.html
+++ b/admin/calendar.html
@@ -66,7 +66,7 @@
forcetimezone)) echo 'checked="checked"';?> />
- forcetimezone) ? 0 : $CFG->forcetimezone), get_string('choose').'...', 'form.timezone2.checked=\'checked\''); ?>
+ forcetimezone) ? 0 : $CFG->forcetimezone), get_string('choose').'...', 'form.timezone2.checked=\'checked\''); ?>
diff --git a/admin/calendar.php b/admin/calendar.php
index a5e17c1d5bd..f87fac2418d 100644
--- a/admin/calendar.php
+++ b/admin/calendar.php
@@ -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;
diff --git a/lib/moodlelib.php b/lib/moodlelib.php
index 553011ab09a..bd1bddac70a 100644
--- a/lib/moodlelib.php
+++ b/lib/moodlelib.php
@@ -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;
}
diff --git a/user/edit.html b/user/edit.html
index 845c67686f8..11387de7618 100644
--- a/user/edit.html
+++ b/user/edit.html
@@ -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');
}
diff --git a/user/edit.php b/user/edit.php
index f895f1cd484..a2d68849425 100644
--- a/user/edit.php
+++ b/user/edit.php
@@ -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));
}