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; }
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; }
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; }