Skip to content

Commit

Permalink
Merge branch 'MDL-42932_master' of https://github.com/markn86/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
Sam Hemelryk committed Dec 10, 2013
2 parents 769ed2b + 8bf0f20 commit e453c70
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 5 deletions.
5 changes: 4 additions & 1 deletion admin/settings/appearance.php
Expand Up @@ -41,8 +41,11 @@
}


// calendar
// Calendar settings.
$temp = new admin_settingpage('calendar', new lang_string('calendarsettings','admin'));

$temp->add(new admin_setting_configselect('calendartype', new lang_string('calendartype', 'admin'),
new lang_string('calendartype_desc', 'admin'), 'gregorian', \core_calendar\type_factory::get_list_of_calendar_types()));
$temp->add(new admin_setting_special_adminseesall());
//this is hacky because we do not want to include the stuff from calendar/lib.php
$temp->add(new admin_setting_configselect('calendar_site_timeformat', new lang_string('pref_timeformat', 'calendar'),
Expand Down
3 changes: 3 additions & 0 deletions auth/db/auth.php
Expand Up @@ -399,6 +399,9 @@ function sync_users(progress_trace $trace, $do_updates=false) {
if (empty($user->lang)) {
$user->lang = $CFG->lang;
}
if (empty($user->calendartype)) {
$user->calendartype = $CFG->calendartype;
}
$user->timecreated = time();
$user->timemodified = $user->timecreated;
if ($collision = $DB->get_record_select('user', "username = :username AND mnethostid = :mnethostid AND auth <> :auth", array('username'=>$user->username, 'mnethostid'=>$CFG->mnet_localhost_id, 'auth'=>$this->authtype), 'id,username,auth')) {
Expand Down
3 changes: 3 additions & 0 deletions auth/email/auth.php
Expand Up @@ -90,6 +90,9 @@ function user_signup($user, $notify=true) {
require_once($CFG->dirroot.'/user/lib.php');

$user->password = hash_internal_user_password($user->password);
if (empty($user->calendartype)) {
$user->calendartype = $CFG->calendartype;
}

$user->id = user_create_user($user, false);

Expand Down
3 changes: 3 additions & 0 deletions auth/ldap/auth.php
Expand Up @@ -945,6 +945,9 @@ function sync_users($do_updates=true) {
if (empty($user->lang)) {
$user->lang = $CFG->lang;
}
if (empty($user->calendartype)) {
$user->calendartype = $CFG->calendartype;
}

$id = user_create_user($user, false);
echo "\t"; print_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)); echo "\n";
Expand Down
2 changes: 2 additions & 0 deletions lang/en/admin.php
Expand Up @@ -95,6 +95,8 @@
$string['cachetext'] = 'Text cache lifetime';
$string['calendarexportsalt'] = 'Calendar export salt';
$string['calendarsettings'] = 'Calendar';
$string['calendartype'] = 'Calendar type';
$string['calendartype_desc'] = 'Choose a default calendar type for the whole site. This setting can be overridden in the course settings or by users in their personal profile.';
$string['calendar_weekend'] = 'Weekend days';
$string['cannotdeletemodfilter'] = 'You cannot uninstall the \'{$a->filter}\' because it is part of the \'{$a->module}\' module.';
$string['cannotuninstall'] = '{$a} can not be uninstalled.';
Expand Down
1 change: 1 addition & 0 deletions user/editlib.php
Expand Up @@ -251,6 +251,7 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
// We do not want to show this option unless there is more than one calendar type to display.
if (count($calendartypes) > 1) {
$mform->addElement('select', 'calendartype', get_string('preferredcalendar', 'calendar'), $calendartypes);
$mform->setDefault('calendartype', $CFG->calendartype);
}

if (!empty($CFG->allowuserthemes)) {
Expand Down
4 changes: 3 additions & 1 deletion user/externallib.php
Expand Up @@ -59,6 +59,7 @@ public static function create_users_parameters() {
'auth' => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_DEFAULT, 'manual', NULL_NOT_ALLOWED),
'idnumber' => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_DEFAULT, ''),
'lang' => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_DEFAULT, $CFG->lang, NULL_NOT_ALLOWED),
'calendartype' => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_DEFAULT, $CFG->calendartype, VALUE_OPTIONAL),
'theme' => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
'timezone' => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
'mailformat' => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
Expand Down Expand Up @@ -273,7 +274,6 @@ public static function delete_users_returns() {
* @since Moodle 2.2
*/
public static function update_users_parameters() {
global $CFG;
return new external_function_parameters(
array(
'users' => new external_multiple_structure(
Expand All @@ -288,6 +288,7 @@ public static function update_users_parameters() {
'auth' => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
'idnumber' => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_OPTIONAL),
'lang' => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
'calendartype' => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
'theme' => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
'timezone' => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
'mailformat' => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
Expand Down Expand Up @@ -893,6 +894,7 @@ public static function user_description($additionalfields = array()) {
'auth' => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL),
'confirmed' => new external_value(PARAM_INT, 'Active user: 1 if confirmed, 0 otherwise', VALUE_OPTIONAL),
'lang' => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_OPTIONAL),
'calendartype' => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_OPTIONAL),
'theme' => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
'timezone' => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
'mailformat' => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
Expand Down
28 changes: 25 additions & 3 deletions user/lib.php
Expand Up @@ -33,11 +33,11 @@
* @return int id of the newly created user
*/
function user_create_user($user, $updatepassword = true) {
global $DB;
global $CFG, $DB;

// Set the timecreate field to the current time.
if (!is_object($user)) {
$user = (object)$user;
$user = (object) $user;
}

// Check username.
Expand All @@ -61,6 +61,16 @@ function user_create_user($user, $updatepassword = true) {
unset($user->password);
}

// Make sure calendartype, if set, is valid.
if (!empty($user->calendartype)) {
$availablecalendartypes = \core_calendar\type_factory::get_list_of_calendar_types();
if (empty($availablecalendartypes[$user->calendartype])) {
$user->calendartype = $CFG->calendartype;
}
} else {
$user->calendartype = $CFG->calendartype;
}

$user->timecreated = time();
$user->timemodified = $user->timecreated;

Expand Down Expand Up @@ -101,7 +111,7 @@ function user_update_user($user, $updatepassword = true) {

// set the timecreate field to the current time
if (!is_object($user)) {
$user = (object)$user;
$user = (object) $user;
}

//check username
Expand All @@ -127,6 +137,18 @@ function user_update_user($user, $updatepassword = true) {
unset($user->password);
}

// Make sure calendartype, if set, is valid.
if (!empty($user->calendartype)) {
$availablecalendartypes = \core_calendar\type_factory::get_list_of_calendar_types();
// If it doesn't exist, then unset this value, we do not want to update the user's value.
if (empty($availablecalendartypes[$user->calendartype])) {
unset($user->calendartype);
}
} else {
// Unset this variable, must be an empty string, which we do not want to update the calendartype to.
unset($user->calendartype);
}

$user->timemodified = time();
$DB->update_record('user', $user);

Expand Down

0 comments on commit e453c70

Please sign in to comment.