public static function delete_for_cluster($id)
 {
     global $CURMAN;
     $status = $CURMAN->db->delete_records(CLSTASSTABLE, 'clusterid', $id);
     cluster::cluster_update_assignments($id, null);
     return $status;
 }
Example #2
0
function cluster_manual_deassign_user($clusterid, $userid)
{
    global $CURMAN, $CFG;
    if (!is_numeric($clusterid) || !is_numeric($userid) || $clusterid <= 0 || $userid <= 0) {
        return false;
    }
    $return = $CURMAN->db->delete_records(CLSTASSTABLE, 'userid', $userid, 'clusterid', $clusterid, 'plugin', 'manual');
    if ($return) {
        cluster::cluster_update_assignments($clusterid, $userid);
    }
    return $return;
}
Example #3
0
function cluster_profile_update_handler($userdata)
{
    global $CURMAN, $CFG;
    // make sure a CM user exists
    cm_moodle_user_to_cm($userdata);
    $cuid = cm_get_crlmuserid($userdata->id);
    if (empty($cuid)) {
        // not a curriculum user -- (guest?)
        return true;
    }
    $usrtable = $CURMAN->db->prefix_table(USRTABLE);
    $clstproftable = $CURMAN->db->prefix_table(CLSTPROFTABLE);
    $clstasstable = $CURMAN->db->prefix_table(CLSTASSTABLE);
    // the cluster assignments that the plugin wants to exist
    $new_assignments = "(SELECT DISTINCT cu.id as userid, cp.clusterid\n                         FROM {$CFG->prefix}crlm_cluster_profile cp\n                         INNER JOIN {$CFG->prefix}crlm_user cu ON cu.id = {$cuid}\n                         INNER JOIN {$CFG->prefix}user mu on cu.idnumber=mu.idnumber AND mu.mnethostid = {$CFG->mnet_localhost_id}\n                         WHERE (SELECT COUNT(*)\n                                FROM {$CFG->prefix}crlm_cluster_profile cp1\n                                JOIN (SELECT i.userid, i.fieldid, i.data FROM {$CFG->prefix}user_info_data i\n                                      WHERE i.userid = {$userdata->id}\n                                      UNION\n                                      SELECT  {$userdata->id} as userid, uif.id as fieldid, uif.defaultdata as data\n                                      FROM {$CFG->prefix}user_info_field uif\n                                      LEFT JOIN {$CFG->prefix}user_info_data i ON i.userid={$userdata->id} AND uif.id = i.fieldid\n                                      WHERE i.id IS NULL\n                                     ) inf ON inf.fieldid = cp1.fieldid AND inf.data = cp1.value\n                                WHERE cp.clusterid=cp1.clusterid AND inf.userid = mu.id)\n                               = (SELECT COUNT(*) FROM {$CFG->prefix}crlm_cluster_profile cp1 WHERE cp.clusterid = cp1.clusterid))";
    // delete existing assignments that should not be there any more
    if ($CFG->dbfamily == 'postgres') {
        $delete = "DELETE FROM {$clstasstable}\n                   WHERE id IN (\n                       SELECT id FROM {$clstasstable} a\n                       LEFT OUTER JOIN {$new_assignments} b ON a.clusterid = b.clusterid AND a.userid = b.userid\n                       WHERE a.userid = {$cuid} AND b.clusterid IS NULL\n                   ) AND plugin='profile'";
    } else {
        $delete = "DELETE a FROM {$clstasstable} a\n                   LEFT OUTER JOIN {$new_assignments} b ON a.clusterid = b.clusterid AND a.userid = b.userid\n                   WHERE a.userid = {$cuid} AND b.clusterid IS NULL AND a.plugin='profile'";
    }
    $CURMAN->db->execute_sql($delete, false);
    // add new assignments
    $insert = "INSERT INTO {$clstasstable}\n               (clusterid, userid, plugin)\n               SELECT a.clusterid, a.userid, 'profile'\n               FROM {$new_assignments} a\n               LEFT OUTER JOIN {$clstasstable} b ON a.clusterid = b.clusterid AND a.userid = b.userid AND b.plugin='profile'\n               WHERE a.userid = {$cuid} AND b.clusterid IS NULL";
    $CURMAN->db->execute_sql($insert, false);
    cluster::cluster_update_assignments(null, $cuid);
    return true;
}