/** * Migrate any existing Moodle users to the Curriculum Management * system. */ function pm_migrate_moodle_users($setidnumber = false, $fromtime = 0, $mdluserid = 0) { global $CFG, $DB; require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php'; require_once elispm::lib('data/user.class.php'); $timenow = time(); $result = true; // set time modified if not set, so we can keep track of "new" users $sql = 'UPDATE {user} SET timemodified = :timenow WHERE timemodified = 0'; $params = array('timenow' => $timenow); if ($mdluserid) { $sql .= ' AND id = :userid'; $params['userid'] = $mdluserid; } $result = $result && $DB->execute($sql, $params); if ($setidnumber || elis::$config->local_elisprogram->auto_assign_user_idnumber) { // make sure we only set idnumbers if users' usernames don't point to // existing idnumbers $sql = "UPDATE {user}\n SET idnumber = username\n WHERE idnumber = ''\n AND username != 'guest'\n AND deleted = 0\n AND confirmed = 1\n AND mnethostid = :hostid\n AND username NOT IN (SELECT idnumber\n FROM (SELECT idnumber\n FROM {user} inneru) innertable)"; $params = array('hostid' => $CFG->mnet_localhost_id); if ($mdluserid) { $sql .= ' AND id = :userid'; $params['userid'] = $mdluserid; } $result = $result && $DB->execute($sql, $params); } $select = "username != 'guest'\n AND deleted = 0\n AND confirmed = 1\n AND mnethostid = :hostid\n AND idnumber != ''\n AND timemodified >= :time\n AND NOT EXISTS (SELECT 'x'\n FROM {" . user::TABLE . "} cu\n WHERE cu.idnumber = {user}.idnumber)"; $params = array('hostid' => $CFG->mnet_localhost_id, 'time' => $fromtime); if ($mdluserid) { $select .= ' AND id = :userid'; $params['userid'] = $mdluserid; } $rs = $DB->get_recordset_select('user', $select, $params); if ($rs && $rs->valid()) { require_once elis::plugin_file('usetenrol_moodleprofile', 'lib.php'); foreach ($rs as $user) { // FIXME: shouldn't depend on cluster functionality -- should // be more modular cluster_profile_update_handler($user); } $rs->close(); } return $result; }
/** * Migrate any existing Moodle users to the Curriculum Management * system. */ function cm_migrate_moodle_users($setidnumber = false, $fromtime = 0) { global $CFG, $CURMAN; $timenow = time(); $result = true; // set time modified if not set, so we can keep track of "new" users $sql = "UPDATE {$CFG->prefix}user\n SET timemodified = {$timenow}\n WHERE timemodified = 0"; $result = $result && execute_sql($sql); if ($setidnumber || $CURMAN->config->auto_assign_user_idnumber) { $sql = "UPDATE {$CFG->prefix}user\n SET idnumber = username\n WHERE idnumber=''\n AND username != 'guest'\n AND deleted = 0\n AND confirmed = 1\n AND mnethostid = {$CFG->mnet_localhost_id}"; $result = $result && execute_sql($sql); } $rs = get_recordset_select('user', "username != 'guest'\n AND deleted = 0\n AND confirmed = 1\n AND mnethostid = {$CFG->mnet_localhost_id}\n AND idnumber != ''\n AND timemodified >= {$fromtime}\n AND NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}crlm_user cu\n WHERE cu.idnumber = {$CFG->prefix}user.idnumber)"); if ($rs) { require_once $CFG->dirroot . '/curriculum/config.php'; require_once CURMAN_DIRLOCATION . '/cluster/profile/lib.php'; while ($user = rs_fetch_next_record($rs)) { // FIXME: shouldn't depend on cluster functionality -- should // be more modular cluster_profile_update_handler($user); } } return $result; }