Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 2
0
/**
 * 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;
}