Adding support for Mac OS X Camino browsers see bug #2176

This commit is contained in:
julmis
2004-11-22 18:38:33 +00:00
parent b5c6d80dfe
commit 361855e6e7
+79 -78
View File
@@ -55,7 +55,7 @@ define('VISIBLEGROUPS', 2);
/**
* Time constant - the number of seconds in a week
*/
define('WEEKSECS', 604800);
define('WEEKSECS', 604800);
/**
* Time constant - the number of seconds in a day
@@ -100,12 +100,12 @@ define('PARAM_PATH', 0x20);
/// PARAMETER HANDLING ////////////////////////////////////////////////////
/**
* Returns a particular value for the named variable, taken from
* POST or GET. If the parameter doesn't exist then an error is
* Returns a particular value for the named variable, taken from
* POST or GET. If the parameter doesn't exist then an error is
* thrown because we require this variable.
*
* This function should be used to initialise all required values
* in a script that are based on parameters. Usually it will be
* This function should be used to initialise all required values
* in a script that are based on parameters. Usually it will be
* used like this:
* $id = required_param('id');
*
@@ -127,11 +127,11 @@ function required_param($varname, $options=PARAM_CLEAN) {
}
/**
* Returns a particular value for the named variable, taken from
* Returns a particular value for the named variable, taken from
* POST or GET, otherwise returning a given default.
*
* This function should be used to initialise all optional values
* in a script that are based on parameters. Usually it will be
* This function should be used to initialise all optional values
* in a script that are based on parameters. Usually it will be
* used like this:
* $name = optional_param('name', 'Fred');
*
@@ -154,8 +154,8 @@ function optional_param($varname, $default=NULL, $options=PARAM_CLEAN) {
}
/**
* Used by {@link optional_param()} and {@link required_param()} to
* clean the variables and/or cast to specific types, based on
* Used by {@link optional_param()} and {@link required_param()} to
* clean the variables and/or cast to specific types, based on
* an options field.
*
* @param mixed $param the variable we are cleaning
@@ -196,7 +196,7 @@ function clean_param($param, $options) {
}
if ($param === '.' or $param === ' ') {
$param = '';
}
}
}
if ($options & PARAM_PATH) { // Strip all suspicious characters from file path
@@ -328,7 +328,7 @@ function set_user_preference($name, $value, $userid=NULL) {
global $USER;
if (empty($userid)){
if (empty($userid)){
$userid = $USER->id;
}
@@ -369,7 +369,7 @@ function unset_user_preference($name, $userid=NULL) {
global $USER;
if (empty($userid)){
if (empty($userid)){
$userid = $USER->id;
}
@@ -391,7 +391,7 @@ function set_user_preferences($prefarray, $userid=NULL) {
return false;
}
if (empty($userid)){
if (empty($userid)){
$userid = $USER->id;
}
@@ -407,7 +407,7 @@ function set_user_preferences($prefarray, $userid=NULL) {
/**
* If no arguments are supplied this function will return
* all of the current user preferences as an array.
* all of the current user preferences as an array.
* If a name is specified then this function
* attempts to return that particular preference value. If
* none is found, then the optional value $default is returned,
@@ -538,7 +538,7 @@ function make_timestamp($year, $month=1, $day=1, $hour=0, $minute=0, $second=0,
* the nicer %e, so we have to use %d which has leading zeroes.
* A lot of the fuss in the function is just getting rid of these leading
* zeroes as efficiently as possible.
*
*
* If parameter fixday = true (default), then take off leading
* zero from %d, else mantain it.
*
@@ -587,7 +587,7 @@ function userdate($date, $format='', $timezone=99, $fixday = true) {
}
/**
* Given a $date timestamp in GMT (seconds since epoch),
* Given a $date timestamp in GMT (seconds since epoch),
* returns an array that represents the date in user time
*
* @uses HOURSECS
@@ -761,7 +761,7 @@ function require_login($courseid=0, $autologinguest=true) {
} elseif($CFG->changepassword) {
redirect($CFG->changepassword);
} else {
error('You cannot proceed without changing your password.
error('You cannot proceed without changing your password.
However there is no available page for changing it.
Please contact your Moodle Administrator.');
}
@@ -774,7 +774,7 @@ function require_login($courseid=0, $autologinguest=true) {
}
// Make sure current IP matches the one for this session (if required)
if (!empty($CFG->tracksessionip)) {
if (!empty($CFG->tracksessionip)) {
if ($USER->sessionIP != md5(getremoteaddr())) {
error(get_string('sessionipnomatch', 'error'));
}
@@ -787,7 +787,7 @@ function require_login($courseid=0, $autologinguest=true) {
// Next, check if the user can be in a particular course
if ($courseid) {
if ($courseid == SITEID) {
if ($courseid == SITEID) {
return; // Anyone can be in the site course
}
if (!empty($USER->student[$courseid]) or !empty($USER->teacher[$courseid]) or !empty($USER->admin)) {
@@ -1031,7 +1031,7 @@ function isteacheredit($courseid, $userid=0) {
* Determines if a user can create new courses
*
* @uses $USER
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @return boolean
*/
function iscreator ($userid=0) {
@@ -1051,7 +1051,7 @@ function iscreator ($userid=0) {
/**
* Determines if a user is a student in the specified course
*
*
* If the course id specifies the site then the function determines
* if the user is a confirmed and valid user of this site.
*
@@ -1059,7 +1059,7 @@ function iscreator ($userid=0) {
* @uses $CFG
* @uses SITEID
* @param int $courseid The id of the course being tested
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @return boolean
*/
function isstudent($courseid, $userid=0) {
@@ -1101,7 +1101,7 @@ function isstudent($courseid, $userid=0) {
* Determines if the specified user is logged in as guest.
*
* @uses $USER
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @param int $userid The user being tested. You can set this to 0 or leave it blank to test the currently logged in user.
* @return boolean
*/
function isguest($userid=0) {
@@ -1158,7 +1158,7 @@ function ismoving($courseid) {
* full name of the person.
* The result may depend on system settings
* or language. 'override' will force both names
* to be used even if system settings specify one.
* to be used even if system settings specify one.
* @uses $CFG
* @uses $SESSION
* @param type description
@@ -1366,14 +1366,14 @@ function truncate_userinfo($info) {
'country' => 2,
'url' => 255,
);
// apply where needed
foreach (array_keys($info) as $key) {
if (!empty($limit[$key])) {
$info[$key] = substr($info[$key],0, $limit[$key]);
}
}
}
return $info;
}
@@ -1402,12 +1402,12 @@ function guest_user() {
* up using the currently selected authentication mechanism,
* and if the authentication is successful, it returns a
* valid $user object from the 'user' table.
*
*
* Uses auth_ functions from the currently active auth module
*
* @uses $CFG
* @param string $username User's username
* @param string $password User's password
* @param string $username User's username
* @param string $password User's password
* @return user|flase A {@link $USER} object or false if error
*/
function authenticate_user_login($username, $password) {
@@ -1482,7 +1482,7 @@ function authenticate_user_login($username, $password) {
}
}
}
}
}
}
$user->sessionIP = md5(getremoteaddr()); // Store the current IP in the session
return $user;
@@ -1520,7 +1520,7 @@ function enrol_student($userid, $courseid, $timestart=0, $timeend=0, $enrol='man
$student->time = time();
$student->enrol = $enrol;
return update_record('user_students', $student);
} else {
require_once("$CFG->dirroot/mod/forum/lib.php");
forum_add_user($userid, $courseid);
@@ -1640,7 +1640,7 @@ function add_teacher($userid, $courseid, $editall=1, $role='', $timestart=0, $ti
* Does not delete the user account
*
* @param int $courseid The id of the course that is being viewed, if any
* @param int $userid The id of the user that is being tested against.
* @param int $userid The id of the user that is being tested against.
* @return boolean
*/
function remove_teacher($userid, $courseid=0) {
@@ -1672,7 +1672,7 @@ function remove_teacher($userid, $courseid=0) {
/**
* Add a creator to the site
*
* @param int $userid The id of the user that is being tested against.
* @param int $userid The id of the user that is being tested against.
* @return boolean
*/
function add_creator($userid) {
@@ -1712,14 +1712,14 @@ function add_admin($userid) {
if (!record_exists('user_admins', 'userid', $userid)) {
if (record_exists('user', 'id', $userid)) {
$admin->userid = $userid;
// any admin is also a teacher on the site course
if (!record_exists('user_teachers', 'course', SITEID, 'userid', $userid)) {
if (!add_teacher($userid, SITEID)) {
return false;
}
}
return insert_record('user_admins', $admin);
}
return false;
@@ -2235,9 +2235,9 @@ function setup_and_print_groups($course, $groupmode, $urlroot) {
* @param string $messagehtml complete html version of the message (optional)
* @param string $attachment a file on the filesystem, relative to $CFG->dataroot
* @param string $attachname the name of the file (extension indicates MIME)
* @param boolean $usetrueaddress determines whether $from email address should
* @param boolean $usetrueaddress determines whether $from email address should
* be sent out. Will be overruled by user profile setting for maildisplay
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* was blocked by user and "false" if there was another sort of error.
*/
function email_to_user($user, $from, $subject, $messagetext, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true) {
@@ -2355,7 +2355,7 @@ function email_to_user($user, $from, $subject, $messagetext, $messagehtml='', $a
*
* @uses $CFG
* @param user $user A {@link $USER} object
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* was blocked by user and "false" if there was another sort of error.
*/
function reset_password_and_mail($user) {
@@ -2391,7 +2391,7 @@ function reset_password_and_mail($user) {
*
* @uses $CFG
* @param user $user A {@link $USER} object
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* was blocked by user and "false" if there was another sort of error.
*/
function send_confirmation_email($user) {
@@ -2420,7 +2420,7 @@ function reset_password_and_mail($user) {
*
* @uses $CFG
* @param user $user A {@link $USER} object
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* @return boolean|string Returns "true" if mail was sent OK, "emailstop" if email
* was blocked by user and "false" if there was another sort of error.
* @todo Finish documenting this function
*/
@@ -2663,7 +2663,7 @@ function get_max_upload_sizes($sitebytes=0, $coursebytes=0, $modulebytes=0) {
*
* $filearray is a 1-dimensional sub-array of the $_FILES array
* eg $filearray = $_FILES['userfile1']
* If left empty then the first element of the $_FILES array will be used
* If left empty then the first element of the $_FILES array will be used
*
* @uses $_FILES
* @param array $filearray A 1-dimensional sub-array of the $_FILES array
@@ -2946,7 +2946,7 @@ function current_language() {
* @param string $module The module where the key identifier is stored. If none is specified then moodle.php is used.
* @param mixed $a An object, string or number that can be used
* within translation strings
*/
*/
function print_string($identifier, $module='', $a=NULL) {
echo get_string($identifier, $module, $a);
}
@@ -2973,21 +2973,21 @@ function print_string($identifier, $module='', $a=NULL) {
* <code>
* $string['wordforstudent'] = 'Your word for Student';
* </code>
* So if you want to display the string 'Your word for student'
* in any language that supports it on your site
* So if you want to display the string 'Your word for student'
* in any language that supports it on your site
* you just need to use the identifier 'wordforstudent'
* <code>
* $mystring = '<strong>'. get_string('wordforstudent') .'</strong>';
or
* </code>
* If the string you want is in another file you'd take a slightly
* different approach. Looking in moodle/lang/en/calendar.php you find
* If the string you want is in another file you'd take a slightly
* different approach. Looking in moodle/lang/en/calendar.php you find
* around line 75:
* <code>
* $string['typecourse'] = 'Course event';
* </code>
* If you want to display the string "Course event" in any language
* supported you would use the identifier 'typecourse' and the module 'calendar'
* If you want to display the string "Course event" in any language
* supported you would use the identifier 'typecourse' and the module 'calendar'
* (because it is in the file calendar.php):
* <code>
* $mystring = '<h1>'. get_string('typecourse', 'calendar') .'</h1>';
@@ -3003,7 +3003,7 @@ or
* within translation strings
* @return string The localized string.
*/
function get_string($identifier, $module='', $a=NULL) {
function get_string($identifier, $module='', $a=NULL) {
global $CFG;
@@ -3179,7 +3179,7 @@ function get_list_of_languages() {
* @uses $CFG
* @uses $USER
* @return string?
* @todo Finish documenting this function.
* @todo Finish documenting this function.
*/
function get_list_of_countries() {
global $CFG, $USER;
@@ -3214,7 +3214,7 @@ function get_list_of_countries() {
* @return string?
* @todo Finish documenting this function.
*/
function get_list_of_pixnames() {
function get_list_of_pixnames() {
global $CFG;
$lang = current_language();
@@ -3246,7 +3246,7 @@ function get_list_of_pixnames() {
* @return ?
* @todo Finish documenting this function
*/
function document_file($file, $include=true) {
function document_file($file, $include=true) {
global $CFG;
$file = clean_filename($file);
@@ -3279,17 +3279,17 @@ function document_file($file, $include=true) {
* to override it
*
* The memory limit should be expressed with a string (eg:'64M')
*
*
* Return boolean
*
* @param value string with the new memory limit
*/
function raise_memory_limit ($newlimit) {
if (empty($newlimit)) {
if (empty($newlimit)) {
return false;
}
$cur = @ini_get('memory_limit');
if (empty($cur)) {
// if php is compiled without --enable-memory-limits
@@ -3301,11 +3301,11 @@ function raise_memory_limit ($newlimit) {
}
$cur = return_bytes($cur);
}
$new = return_bytes($newlimit);
if ($new > $cur) {
ini_set('memory_limit', $newlimit);
return true;
return true;
}
return false;
}
@@ -3373,7 +3373,7 @@ function rc4decrypt($data) {
* @return string
* @todo Finish documenting this function
*/
function endecrypt ($pwd, $data, $case) {
function endecrypt ($pwd, $data, $case) {
if ($case == 'de') {
$data = urldecode($data);
@@ -3636,7 +3636,7 @@ function check_php_version($version='4.1.0') {
* @return boolean
* @todo Finish documenting this function
*/
function check_browser_version($brand='MSIE', $version=5.5) {
function check_browser_version($brand='MSIE', $version=5.5) {
$agent = $_SERVER['HTTP_USER_AGENT'];
if (empty($agent)) {
@@ -3647,8 +3647,9 @@ function check_php_version($version='4.1.0') {
case 'Gecko': /// Gecko based browsers
if (substr_count($agent, 'Camino')) { // MacOS X Camino not supported.
return false;
if (substr_count($agent, 'Camino')) {
// MacOS X Camino support
$version = 20041110;
}
// the proper string - Gecko/CCYYMMDD Vendor/Version
@@ -3696,7 +3697,7 @@ function check_php_version($version='4.1.0') {
* @return boolean
* @todo Finish documenting this function
*/
function ini_get_bool($ini_get_arg) {
function ini_get_bool($ini_get_arg) {
$temp = ini_get($ini_get_arg);
if ($temp == '1' or strtolower($temp) == 'on') {
@@ -3716,7 +3717,7 @@ function ini_get_bool($ini_get_arg) {
}
/**
* Determines if the HTML editor is enabled.
* Determines if the HTML editor is enabled.
*
* This depends on site and user
* settings, as well as the current browser being used.
@@ -3725,7 +3726,7 @@ function ini_get_bool($ini_get_arg) {
* returns 'MSIE' or 'Gecko'.
* @todo Finish documenting this function
*/
function can_use_html_editor() {
function can_use_html_editor() {
global $USER, $CFG;
if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
@@ -3790,7 +3791,7 @@ function check_gd_version() {
* @return boolean
* @todo Finish documenting this function
*/
function moodle_needs_upgrading() {
function moodle_needs_upgrading() {
global $CFG;
include_once($CFG->dirroot .'/version.php'); # defines $version and upgrades
@@ -3973,7 +3974,7 @@ function moodle_strtolower ($string, $encoding='') {
* @param string $string The text to be searched for words.
* @return int The count of words in the specified string
*/
function count_words($string) {
function count_words($string) {
$string = strip_tags($string);
return count(preg_split("/\w\b/", $string)) - 1;
}
@@ -4007,7 +4008,7 @@ function random_string ($length=15) {
* @return string
* @todo Finish documenting this function
*/
function getweek ($startdate, $thedate) {
function getweek ($startdate, $thedate) {
if ($thedate < $startdate) { // error
return 0;
}
@@ -4055,7 +4056,7 @@ function format_float($num, $places=1) {
* @param array $array The array to be rearranged
* @return array
*/
function swapshuffle($array) {
function swapshuffle($array) {
srand ((double) microtime() * 10000000);
$last = count($array) - 1;
@@ -4075,7 +4076,7 @@ function swapshuffle($array) {
* @return array
*/
function swapshuffle_assoc($array) {
///
///
$newkeys = swapshuffle(array_keys($array));
foreach ($newkeys as $newkey) {
@@ -4142,7 +4143,7 @@ function microtime_diff($a, $b) {
* @param string $separator ?
* @todo Finish documenting this function
*/
function make_menu_from_list($list, $separator=',') {
function make_menu_from_list($list, $separator=',') {
$array = array_reverse(explode($separator, $list), true);
foreach ($array as $key => $item) {
@@ -4352,7 +4353,7 @@ function zip_files ($originalfiles, $destination) {
}
//If no extension, add it
if (empty($extension)) {
if (empty($extension)) {
$extension = 'zip';
$destfilename = $destfilename.'.'.$extension;
}
@@ -4435,7 +4436,7 @@ function unzip_file ($zipfile, $destination = '', $showstatus = true) {
//SAME directory where the zip file resides.
global $CFG;
//Extract everything from zipfile
$path_parts = pathinfo(cleardoubleslashes($zipfile));
$zippath = $path_parts["dirname"]; //The path of the zip file
@@ -4502,7 +4503,7 @@ function unzip_file ($zipfile, $destination = '', $showstatus = true) {
if ($showstatus) {
unzip_show_status($list,$destpath);
}
return true;
}
@@ -4520,7 +4521,7 @@ function unzip_cleanfilename ($p_event, &$p_header) {
// BSD: none (tested)
// Linux: ??
// MacosX: ??
}
}
$p_header['filename'] = cleardoubleslashes($p_header['filename']); //normalize the slashes/backslashes
return 1;
}
@@ -4571,7 +4572,7 @@ function unzip_show_status ($list,$removepath) {
/**
* Returns most reliable client address
*
*
* @return string The remote IP address
*/
function getremoteaddr() {
@@ -4580,7 +4581,7 @@ function unzip_show_status ($list,$removepath) {
else if(getenv('REMOTE_ADDR')) $ip = getenv('REMOTE_ADDR');
else $ip = false; //just in case
return $ip;
}
}
/**
* html_entity_decode is only supported by php 4.3.0 and higher