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)); }