id) return true; } return false; } function jbxl_is_teacher($uid, $cntxt, $inc_admin=true) { global $DB; if (!$cntxt) return false; if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $ret = false; $roles = $DB->get_records('role', array('archetype'=>'editingteacher'), 'id', 'id'); foreach($roles as $role) { $ret = user_has_role_assignment($uid, $role->id, $cntxt->id); if ($ret) return $ret; } if ($inc_admin) { $ret = jbxl_is_admin($uid); if (!$ret) $ret = jbxl_has_role($uid, $cntxt, 'manager'); if (!$ret) $ret = jbxl_has_role($uid, $cntxt, 'coursecreator'); } return $ret; } function jbxl_is_assistant($uid, $cntxt) { global $DB; if (!$cntxt) return false; if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $roles = $DB->get_records('role', array('archetype'=>'teacher'), 'id', 'id'); foreach($roles as $role) { $ret = user_has_role_assignment($uid, $role->id, $cntxt->id); if ($ret) return $ret; } return false; } function jbxl_is_student($uid, $cntxt) { global $DB; if (!$cntxt) return false; if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $roles = $DB->get_records('role', array('archetype'=>'student'), 'id', 'id'); foreach($roles as $role) { $ret = user_has_role_assignment($uid, $role->id, $cntxt->id); // slow? if ($ret) return $ret; } return false; } function jbxl_has_role($uid, $cntxt, $rolename) { global $DB; if (!$cntxt) return false; if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $roles = $DB->get_records('role', array('archetype'=>$rolename), 'id', 'id'); foreach($roles as $role) { $ret = user_has_role_assignment($uid, $role->id, $cntxt->id); if ($ret) return $ret; } return false; } function jbxl_get_course_users($cntxt, $sort='') { global $DB; if (!$cntxt) return ''; if ($sort) $sort = ' ORDER BY u.'.$sort; $sql = 'SELECT u.* FROM {role_assignments} r, {user} u WHERE r.contextid = ? AND r.userid = u.id '.$sort; // if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $users = $DB->get_records_sql($sql, array($cntxt->id)); return $users; } function jbxl_get_course_students($cntxt, $sort='') { global $DB; if (!$cntxt) return ''; $roles = $DB->get_records('role', array('archetype'=>'student'), 'id', 'id'); if (empty($roles)) return ''; $roleid = ''; foreach($roles as $role) { if (!empty($roleid)) $roleid.= ' OR '; $roleid.= 'r.roleid = '.$role->id; } if ($sort) $sort = ' ORDER BY u.'.$sort; $sql = 'SELECT u.* FROM {role_assignments} r, {user} u '. ' WHERE r.contextid = ? AND ('.$roleid.') AND r.userid = u.id '.$sort; // if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $users = $DB->get_records_sql($sql, array($cntxt->id)); return $users; } function jbxl_get_course_tachers($cntxt, $sort='') { global $DB; if (!$cntxt) return ''; $roles = $DB->get_records('role', array('archetype'=>'editingteacher'), 'id', 'id'); if (empty($roles)) return ''; $roleid = ''; foreach($roles as $role) { if (!empty($roleid)) $roleid.= ' OR '; $roleid.= 'r.roleid = '.$role->id; } if ($sort) $sort = ' ORDER BY u.'.$sort; $sql = 'SELECT u.* FROM {role_assignments} r, {user} u '. ' WHERE r.contextid = ? AND ('.$roleid.') AND r.userid = u.id '.$sort; // if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $users = $DB->get_records_sql($sql, array($cntxt->id)); return $users; } function jbxl_get_course_assistants($cntxt, $sort='') { global $DB; if (!$cntxt) return ''; $roles = $DB->get_records('role', array('archetype'=>'teacher'), 'id', 'id'); if (empty($roles)) return ''; $roleid = ''; foreach($roles as $role) { if (!empty($roleid)) $roleid.= ' OR '; $roleid.= 'r.roleid = '.$role->id; } if ($sort) $sort = ' ORDER BY u.'.$sort; $sql = 'SELECT u.* FROM {role_assignments} r, {user} u '. ' WHERE r.contextid = ? AND ('.$roleid.') AND r.userid = u.id '.$sort; // if (!is_object($cntxt)) $cntxt = get_context_instance(CONTEXT_COURSE, $cntxt); $users = $DB->get_records_sql($sql, array($cntxt->id)); return $users; } /* function jbxl_get_user_first_grouping($courseid, $userid) { ///////////////////////////////// return 0; // for DEBUG ///////////////////////////////// if (!$courseid or !$userid) return 0; $groupings = groups_get_user_groups($courseid, $userid); if (!is_array($groupings)) return 0; $keys = array_keys($groupings); if (count($keys)>1 && $keys[0]==0) return $keys[1]; else return $keys[0]; } */ // // Moodle DB (MySQL) // function jbxl_db_exist_table($table, $lower_case=true) { global $DB; $ret = false; $results = $DB->get_records_sql('SHOW TABLES'); if (is_array($results)) { $db_tbls = array_keys($results); foreach($db_tbls as $db_tbl) { if ($lower_case) $db_tbl = strtolower($db_tbl); if ($db_tbl==$table) { $ret = true; break; } } } return $ret; } } // !defined('JBXL_MOODLE_TOOLS_VER')