From 1d68419596686b4ccac22c851d7ebdccbb379a0f Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 15 Aug 2007 19:28:11 +0000 Subject: [PATCH] MDL-10383 - deprecated groups_members_from_sql and friends - we do not need them anymore because we reverted to 1.7 style groups in 1.9 --- blocks/online_users/block_online_users.php | 4 +- blog/lib.php | 20 ++----- group/lib/legacylib.php | 64 +--------------------- lib/datalib.php | 4 +- lib/deprecatedlib.php | 43 +++++++++++++++ mod/assignment/lib.php | 7 ++- mod/exercise/locallib.php | 16 +++--- mod/forum/lib.php | 5 +- mod/journal/lib.php | 5 +- mod/quiz/report/analysis/report.php | 4 +- mod/quiz/report/overview/report.php | 8 +-- mod/survey/lib.php | 5 +- 12 files changed, 81 insertions(+), 104 deletions(-) diff --git a/blocks/online_users/block_online_users.php b/blocks/online_users/block_online_users.php index a6c64071a0..2a52de9e5b 100644 --- a/blocks/online_users/block_online_users.php +++ b/blocks/online_users/block_online_users.php @@ -50,8 +50,8 @@ class block_online_users extends block_base { //Add this to the SQL to show only group users if ($currentgroup !== NULL) { - $groupmembers = ', '.groups_members_from_sql(); //TODO: ", {$CFG->prefix}groups_members gm "; - $groupselect = ' AND '.groups_members_where_sql($currentgroup, 'u.id'); //" AND u.id = gm.userid AND gm.groupid = '$currentgroup'"; + $groupmembers = ", {$CFG->prefix}groups_members gm "; + $groupselect = " AND u.id = gm.userid AND gm.groupid = '$currentgroup'"; } if ($COURSE->id == SITEID) { // Site-level diff --git a/blog/lib.php b/blog/lib.php index 1bfc95f65d..53494cba16 100755 --- a/blog/lib.php +++ b/blog/lib.php @@ -581,21 +581,11 @@ case 'group': $SQL = 'SELECT '.$requiredfields.' FROM '.$CFG->prefix.'post p, '.$tagtablesql - .groups_members_from_sql().', '.$CFG->prefix.'user u - WHERE '.groups_members_where_sql($filterselect, 'p.userid').' - AND u.id = p.userid - AND u.deleted = 0 - '.$permissionsql.$typesql; - - /*'SELECT '.$requiredfields.' FROM '.$CFG->prefix.'post p, '.$tagtablesql - .$CFG->prefix.'groups_members m, '.$CFG->prefix.'user u - WHERE p.userid = m.userid '.$tagquerysql.' - AND u.id = p.userid - AND m.groupid = '.$filterselect.' - AND u.deleted = 0 - AND '.$permissionsql.$typesql; - '.$permissionsql; - */ + .$CFG->prefix.'groups_members gm, '.$CFG->prefix.'user u + WHERE p.userid =g m.userid AND u.id = p.userid + AND gm.groupid = '.$filterselect.' + AND u.deleted = 0 + '.$permissionsql.$typesql; break; case 'user': diff --git a/group/lib/legacylib.php b/group/lib/legacylib.php index 388908fd16..db5dc02c66 100644 --- a/group/lib/legacylib.php +++ b/group/lib/legacylib.php @@ -15,28 +15,7 @@ */ -/** - * Returns the groupid of a group with the name specified for the course - * specified. If there's more than one with the name specified it returns the - * first one it finds it the database, so you need to be careful how you use it! - * This is needed to support upload of users into the database - * @param int $courseid The id of the course - * @param string $groupname - * @return int $groupid - */ -function groups_get_group_by_name($courseid, $groupname) { - //uploaduser.php, get_record("groups","courseid",$course[$i]->id,"name",$addgroup[$i]) - $groupids = groups_db_get_groups($courseid); - if (! $groupids) { - return false; - } - foreach ($groupids as $id) { - if (groups_get_group_name($id) == $groupname) { - return $id; - } - } - return false; -} + /** * Returns an array of group objects that the user is a member of @@ -53,7 +32,7 @@ function get_groups($courseid, $userid=0) { if ($userid) { $groupids = groups_get_groups_for_user($userid, $courseid); } else { - $groupids = groups_get_groups($courseid); + $groupids = array_keys(groups_get_all_groups($courseid)); } return groups_groupids_to_groups($groupids, $courseid, $alldata=true); @@ -362,45 +341,6 @@ function setup_and_print_groups($course, $groupmode, $urlroot) { } -function oldgroups_print_user_group_info($currentgroup, $isseparategroups, $courseid) { - global $CFG; - $context = get_context_instance(CONTEXT_COURSE, $courseid); - - if ($currentgroup and (!$isseparategroups or has_capability('moodle/site:accessallgroups', $context))) { /// Display info about the group - if ($group = get_record('groups', 'id', $currentgroup)) { - if (!empty($group->description) or (!empty($group->picture) and empty($group->hidepicture))) { - echo '
'; - print_group_picture($group, $course->id, true, false, false); - echo ''; - echo '

'.$group->name; - if (has_capability('moodle/site:accessallgroups', $context)) { - echo ' '; - echo ''; - echo ''; - } - echo '

'; - echo format_text($group->description); - echo '
'; - } - } - } -} - -/** - * Get the group object, including the course ID by default. - * @param groupid ID of the group. - * @param getcourse (default true), include the course ID in the return. - * @return group object, optionally including 'courseid'. - */ -function groups_get_group($groupid, $getcourse=true) { - $group = groups_db_get_group_settings($groupid); - if ($group && $getcourse) { - $group->courseid = groups_get_course($groupid); - } - return $group; -} - - /** * Get an array of groups, as id => name. * Replaces, get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name") diff --git a/lib/datalib.php b/lib/datalib.php index 9113f094e3..1d8f8eaaef 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -160,8 +160,8 @@ function search_users($courseid, $groupid, $searchtext, $sort='', $exceptions='' //TODO:check. Remove group DB dependencies. return get_records_sql("SELECT u.id, u.firstname, u.lastname, u.email FROM {$CFG->prefix}user u, - ".groups_members_from_sql()." - WHERE $select AND ".groups_members_where_sql($groupid, 'u.id')." + {$CFG->prefix}groups_members gm + WHERE $select AND gm.groupid = '$groupid' AND gm.userid = u.id AND ($fullname $LIKE '%$searchtext%' OR u.email $LIKE '%$searchtext%') $except $order"); } else { diff --git a/lib/deprecatedlib.php b/lib/deprecatedlib.php index 41bf6bb346..2cf14dde30 100644 --- a/lib/deprecatedlib.php +++ b/lib/deprecatedlib.php @@ -1059,6 +1059,49 @@ function print_richedit_javascript($form, $name, $source='no') { use_html_editor($name); } +/** various deprecated groups function **/ + + +/** + * Returns the table in which group members are stored, with a prefix 'gm'. + * @return SQL string. + */ +function groups_members_from_sql() { + global $CFG; + return " {$CFG->prefix}groups_members gm "; +} + +/** + * Returns a join testing user.id against member's user ID. + * Relies on 'user' table being included as 'user u'. + * Used in Quiz module reports. + * @param group ID, optional to include a test for this in the SQL. + * @return SQL string. + */ +function groups_members_join_sql($groupid=false) { + $sql = ' JOIN '.groups_members_from_sql().' ON u.id = gm.userid '; + if ($groupid) { + $sql = "AND gm.groupid = '$groupid' "; + } + return $sql; + //return ' INNER JOIN '.$CFG->prefix.'role_assignments ra ON u.id=ra.userid'. + // ' INNER JOIN '.$CFG->prefix.'context c ON ra.contextid=c.id AND c.contextlevel='.CONTEXT_GROUP.' AND c.instanceid='.$groupid; +} + +/** + * Returns SQL for a WHERE clause testing the group ID. + * Optionally test the member's ID against another table's user ID column. + * @param groupid + * @param userid_sql Optional user ID column selector, example "mdl_user.id", or false. + * @return SQL string. + */ +function groups_members_where_sql($groupid, $userid_sql=false) { + $sql = " gm.groupid = '$groupid' "; + if ($userid_sql) { + $sql .= "AND $userid_sql = gm.userid "; + } + return $sql; +} ?> diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 13b00745f9..e4b7c63186 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -2481,10 +2481,11 @@ function assignment_count_real_submissions($assignment, $groupid=0) { if ($groupid) { /// How many in a particular group? return count_records_sql("SELECT COUNT(DISTINCT gm.userid, gm.groupid) FROM {$CFG->prefix}assignment_submissions a, - ".groups_members_from_sql()." - WHERE a.assignment = $assignment->id + {$CFG->prefix}groups_members g + WHERE a.assignment = $assignment->id AND a.timemodified > 0 - AND ".groups_members_where_sql($groupid, 'a.userid')); + AND g.groupid = '$groupid' + AND a.userid = g.userid "); } else { $cm = get_coursemodule_from_instance('assignment', $assignment->id); $context = get_context_instance(CONTEXT_MODULE, $cm->id); diff --git a/mod/exercise/locallib.php b/mod/exercise/locallib.php index a3e400cdf7..62f96cca47 100644 --- a/mod/exercise/locallib.php +++ b/mod/exercise/locallib.php @@ -546,9 +546,9 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = } return get_records_sql("SELECT s.*, AVG(a.grade) AS grade FROM - ".groups_members_from_sql().", {$CFG->prefix}exercise_submissions s, + {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_submissions s, {$CFG->prefix}exercise_assessments a - WHERE $select ". groups_members_where_sql($groupid)." + WHERE $select g.groupid = $groupid AND s.exerciseid = $exercise->id AND a.submissionid = s.id GROUP BY s.id @@ -570,8 +570,8 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = } return get_records_sql("SELECT s.* FROM {$CFG->prefix}user n, - ".groups_members_from_sql().", {$CFG->prefix}exercise_submissions s - WHERE $select ". groups_members_where_sql()." + {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_submissions s + WHERE $select g.groupid = $groupid AND s.exerciseid = $exercise->id ORDER BY $order"); @@ -853,8 +853,8 @@ function exercise_list_submissions_for_admin($exercise) { if ($groupid) { $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max - FROM ".groups_members_from_sql().", {$CFG->prefix}exercise_assessments a - WHERE ".groups_members_where_sql($groupid, 'a.userid')." AND a.timegraded > 0 + FROM {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_assessments a + WHERE g.groupid = $groupid AND a.userid = g.userid AND a.timegraded > 0 AND a.exerciseid = $exercise->id"); } else { // no group/all participants $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, @@ -970,9 +970,9 @@ function exercise_list_submissions_for_admin($exercise) { if ($groupid) { $stats = get_record_sql("SELECT COUNT(*) as count, AVG(grade) AS mean, STDDEV(grade) AS stddev, MIN(grade) AS min, MAX(grade) AS max - FROM ".groups_members_from_sql().", {$CFG->prefix}exercise_assessments a, + FROM {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_assessments a, {$CFG->prefix}exercise_submissions s - WHERE ".groups_members_where_sql($groupid, 's.userid')." AND a.submissionid = s.id + WHERE g.groupid = $groupid AND s.userid = g.userid AND a.submissionid = s.id AND a.exerciseid = $exercise->id"); } else { // no group/all participants $stats = get_record_sql("SELECT COUNT(*) as count, AVG(grade) AS mean, diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 51a7badd19..5f9dec26a5 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -1885,8 +1885,9 @@ function forum_subscribed_users($course, $forum, $groupid=0, $cache=false) { } if ($groupid) { - $grouptables = ', '. groups_members_from_sql(); - $groupselect = 'AND'.groups_members_where_sql($groupid, 'u.id'); + $grouptables = ", {$CFG->prefix}groups_members gm "; + $groupselect = "AND gm.groupid = '$groupid' AND u.id = gm.userid"; + } else { $grouptables = ''; $groupselect = ''; diff --git a/mod/journal/lib.php b/mod/journal/lib.php index 4ff157c234..a542bd11a5 100644 --- a/mod/journal/lib.php +++ b/mod/journal/lib.php @@ -340,9 +340,10 @@ function journal_count_entries($journal, $groupid=0) { if ($groupid) { /// How many in a particular group? return count_records_sql("SELECT COUNT(*) FROM {$CFG->prefix}journal_entries j, - ".groups_members_from_sql()." + {$CFG->prefix}groups_members g WHERE j.journal = $journal->id - AND ".groups_members_where_sql($groupid, 'j.userid')); + AND g.groupid = '$groupid' + AND j.userid = g.userid"); } else { /// Count all the entries from the whole course diff --git a/mod/quiz/report/analysis/report.php b/mod/quiz/report/analysis/report.php index 0e9420dff9..6c74d9e8ef 100644 --- a/mod/quiz/report/analysis/report.php +++ b/mod/quiz/report/analysis/report.php @@ -79,8 +79,8 @@ class quiz_report extends quiz_default_report { //Add this to the SQL to show only group users if ($currentgroup) { - $groupmembers = ', '.groups_members_from_sql(); - $groupwhere = ' AND '.groups_members_where_sql($currentgroup, 'u.id'); + $groupmembers = ", {$CFG->prefix}groups_members gm "; + $groupwhere = "AND gm.groupid = '$currentgroup' AND u.id = gm.userid"; } $sql = 'SELECT qa.* FROM '.$CFG->prefix.'quiz_attempts qa, '.$CFG->prefix.'user u '.$groupmembers. diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index b391926be0..039bc20ac5 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -294,16 +294,16 @@ class quiz_report extends quiz_default_report { // we want a particular group and we only want to see students WITH attempts. // So join on groups_members and do an inner join on attempts. $from = 'FROM '.$CFG->prefix.'user u JOIN '.$CFG->prefix.'role_assignments ra ON ra.userid = u.id '. - groups_members_join_sql(). + 'JOIN '.$CFG->prefix.'groups_members gm ON u.id = gm.userid '. 'JOIN '.$CFG->prefix.'quiz_attempts qa ON u.id = qa.userid AND qa.quiz = '.$quiz->id; - $where = ' WHERE ra.contextid ' . $contextlists . ' AND '. groups_members_where_sql($currentgroup) .' AND qa.preview = 0'; + $where = ' WHERE ra.contextid ' . $contextlists . ' AND gm.groupid = '. $currentgroup .' AND qa.preview = 0'; } else if (!empty($currentgroup) && !empty($noattempts)) { // We want a particular group and we want to do something funky with attempts // So join on groups_members and left join on attempts... $from = 'FROM '.$CFG->prefix.'user u JOIN '.$CFG->prefix.'role_assignments ra ON ra.userid = u.id '. - groups_members_join_sql(). + 'JOIN '.$CFG->prefix.'groups_members gm ON u.id = gm.userid '. 'LEFT JOIN '.$CFG->prefix.'quiz_attempts qa ON u.id = qa.userid AND qa.quiz = '.$quiz->id; - $where = ' WHERE ra.contextid ' .$contextlists . ' AND '.groups_members_where_sql($currentgroup); + $where = ' WHERE ra.contextid ' .$contextlists . ' AND gm.groupid = '.$currentgroup; if ($noattempts == 1) { // noattempts = 1 means only no attempts, so make the left join ask for only records where the right is null (no attempts) $where .= ' AND qa.userid IS NULL'; // show ONLY no attempts; diff --git a/mod/survey/lib.php b/mod/survey/lib.php index b7a491f0f4..01521bfd04 100644 --- a/mod/survey/lib.php +++ b/mod/survey/lib.php @@ -217,8 +217,9 @@ function survey_get_responses($surveyid, $groupid) { global $CFG; if ($groupid) { - $groupsdb = ', '. groups_members_from_sql(); - $groupsql = 'AND'.groups_members_where_sql($groupid, 'u.id'); + $groupsdb = ", {$CFG->prefix}groups_members gm "; + $groupsql = "AND gm.groupid = '$groupid' AND u.id = gm.userid"; + } else { $groupsdb = ""; $groupsql = ""; -- 2.39.5