diff --git a/mod/assign/lib.php b/mod/assign/lib.php index 419b2c4e67f..691b694ab59 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -560,19 +560,14 @@ function assign_print_recent_activity($course, $viewfullnames, $timestart) { continue; } - if (is_null($modinfo->get_groups())) { - // Load all my groups and cache it in modinfo. - $modinfo->groups = groups_get_user_groups($course->id); - } - // This will be slow - show only users that share group with me in this cm. - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { continue; } $usersgroups = groups_get_all_groups($course->id, $submission->userid, $cm->groupingid); if (is_array($usersgroups)) { $usersgroups = array_keys($usersgroups); - $intersect = array_intersect($usersgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { continue; } @@ -672,17 +667,9 @@ function assign_get_recent_mod_activity(&$activities, $accessallgroups = has_capability('moodle/site:accessallgroups', $cm_context); $viewfullnames = has_capability('moodle/site:viewfullnames', $cm_context); - if (is_null($modinfo->get_groups())) { - // Load all my groups and cache it in modinfo. - $modinfo->groups = groups_get_user_groups($course->id); - } $showrecentsubmissions = get_config('assign', 'showrecentsubmissions'); $show = array(); - $usersgroups = groups_get_all_groups($course->id, $USER->id, $cm->groupingid); - if (is_array($usersgroups)) { - $usersgroups = array_keys($usersgroups); - } foreach ($submissions as $submission) { if ($submission->userid == $USER->id) { $show[] = $submission; @@ -703,11 +690,13 @@ function assign_get_recent_mod_activity(&$activities, } // This will be slow - show only users that share group with me in this cm. - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { continue; } + $usersgroups = groups_get_all_groups($course->id, $submission->userid, $cm->groupingid); if (is_array($usersgroups)) { - $intersect = array_intersect($usersgroups, $modinfo->groups[$cm->id]); + $usersgroups = array_keys($usersgroups); + $intersect = array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { continue; } diff --git a/mod/chat/lib.php b/mod/chat/lib.php index 39823327e8b..6272baa1dbe 100644 --- a/mod/chat/lib.php +++ b/mod/chat/lib.php @@ -290,12 +290,8 @@ function chat_print_recent_activity($course, $viewfullnames, $timestart) { continue; } - if (is_null($modinfo->groups)) { - $modinfo->groups = groups_get_user_groups($course->id); // load all my groups and cache it in modinfo - } - // verify groups in separate mode - if (!$mygroupids = $modinfo->groups[$cm->groupingid]) { + if (!$mygroupids = $modinfo->get_groups($cm->groupingid)) { continue; } diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index 123b707b2f1..8240842ce80 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -383,11 +383,11 @@ function feedback_get_recent_mod_activity(&$activities, &$index, $sqlargs = array(); - //TODO: user user_picture::fields; - $sql = " SELECT fk . * , fc . * , u.firstname, u.lastname, u.email, u.picture, u.email - FROM {feedback_completed} fc - JOIN {feedback} fk ON fk.id = fc.feedback - JOIN {user} u ON u.id = fc.userid "; + $userfields = user_picture::fields('u', null, 'useridagain'); + $sql = " SELECT fk . * , fc . * , $userfields + FROM {feedback_completed} fc + JOIN {feedback} fk ON fk.id = fc.feedback + JOIN {user} u ON u.id = fc.userid "; if ($groupid) { $sql .= " JOIN {groups_members} gm ON gm.userid=u.id "; @@ -421,11 +421,6 @@ function feedback_get_recent_mod_activity(&$activities, &$index, $viewfullnames = has_capability('moodle/site:viewfullnames', $cm_context); $groupmode = groups_get_activity_groupmode($cm, $course); - if (is_null($modinfo->groups)) { - // load all my groups and cache it in modinfo - $modinfo->groups = groups_get_user_groups($course->id); - } - $aname = format_string($cm->name, true); foreach ($feedbackitems as $feedbackitem) { if ($feedbackitem->userid != $USER->id) { @@ -438,7 +433,7 @@ function feedback_get_recent_mod_activity(&$activities, &$index, continue; } $usersgroups = array_keys($usersgroups); - $intersect = array_intersect($usersgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { continue; } @@ -457,19 +452,7 @@ function feedback_get_recent_mod_activity(&$activities, &$index, $tmpactivity->content->feedbackid = $feedbackitem->id; $tmpactivity->content->feedbackuserid = $feedbackitem->userid; - $userfields = explode(',', user_picture::fields()); - $tmpactivity->user = new stdClass(); - foreach ($userfields as $userfield) { - if ($userfield == 'id') { - $tmpactivity->user->{$userfield} = $feedbackitem->userid; // aliased in SQL above - } else { - if (!empty($feedbackitem->{$userfield})) { - $tmpactivity->user->{$userfield} = $feedbackitem->{$userfield}; - } else { - $tmpactivity->user->{$userfield} = null; - } - } - } + $tmpactivity->user = user_picture::unalias($feedbackitem, null, 'useridagain'); $tmpactivity->user->fullname = fullname($feedbackitem, $viewfullnames); $activities[$index++] = $tmpactivity; diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 7fa2109017a..2f697b5ace6 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -335,13 +335,16 @@ function glossary_get_recent_mod_activity(&$activities, &$index, $timestart, $co $cm = $modinfo->cms[$cmid]; $context = context_module::instance($cm->id); - if (!has_capability('mod/glossary:view', $context)) { + if (!$cm->uservisible) { return; } $viewfullnames = has_capability('moodle/site:viewfullnames', $context); + // Groups are not yet supported for glossary. See MDL-10728 . + /* $accessallgroups = has_capability('moodle/site:accessallgroups', $context); $groupmode = groups_get_activity_groupmode($cm, $course); + */ $params['timestart'] = $timestart; @@ -361,17 +364,24 @@ function glossary_get_recent_mod_activity(&$activities, &$index, $timestart, $co $groupjoin = ''; } + $approvedselect = ""; + if (!has_capability('mod/glossary:approve', $context)) { + $approvedselect = " AND ge.approved = 1 "; + } + $params['timestart'] = $timestart; $params['glossaryid'] = $cm->instance; - $ufields = user_picture::fields('u', array('lastaccess', 'firstname', 'lastname', 'email', 'picture', 'imagealt')); + $ufields = user_picture::fields('u', null, 'userid'); $entries = $DB->get_records_sql(" - SELECT ge.id AS entryid, ge.*, $ufields + SELECT ge.id AS entryid, ge.glossaryid, ge.concept, ge.definition, ge.approved, + ge.timemodified, $ufields FROM {glossary_entries} ge JOIN {user} u ON u.id = ge.userid $groupjoin WHERE ge.timemodified > :timestart AND ge.glossaryid = :glossaryid + $approvedselect $userselect $groupselect ORDER BY ge.timemodified ASC", $params); @@ -381,6 +391,8 @@ function glossary_get_recent_mod_activity(&$activities, &$index, $timestart, $co } foreach ($entries as $entry) { + // Groups are not yet supported for glossary. See MDL-10728 . + /* $usersgroups = null; if ($entry->userid != $USER->id) { if ($groupmode == SEPARATEGROUPS and !$accessallgroups) { @@ -392,13 +404,16 @@ function glossary_get_recent_mod_activity(&$activities, &$index, $timestart, $co $usersgroups = array(); } } - if (!array_intersect($usersgroups, $modinfo->get_groups($cm->id))) { + if (!array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid))) { continue; } } } + */ $tmpactivity = new stdClass(); + $tmpactivity->user = user_picture::unalias($entry, null, 'userid'); + $tmpactivity->user->fullname = fullname($tmpactivity->user, $viewfullnames); $tmpactivity->type = 'glossary'; $tmpactivity->cmid = $cm->id; $tmpactivity->glossaryid = $entry->glossaryid; @@ -409,14 +424,7 @@ function glossary_get_recent_mod_activity(&$activities, &$index, $timestart, $co $tmpactivity->content->entryid = $entry->entryid; $tmpactivity->content->concept = $entry->concept; $tmpactivity->content->definition = $entry->definition; - $tmpactivity->user = new stdClass(); - $tmpactivity->user->id = $entry->userid; - $tmpactivity->user->firstname = $entry->firstname; - $tmpactivity->user->lastname = $entry->lastname; - $tmpactivity->user->fullname = fullname($entry, $viewfullnames); - $tmpactivity->user->picture = $entry->picture; - $tmpactivity->user->imagealt = $entry->imagealt; - $tmpactivity->user->email = $entry->email; + $tmpactivity->content->approved = $entry->approved; $activities[$index++] = $tmpactivity; } @@ -446,14 +454,20 @@ function glossary_print_recent_mod_activity($activity, $courseid, $detail, $modn echo html_writer::start_tag('div', array('class'=>'glossary-activity-content')); echo html_writer::start_tag('div', array('class'=>'glossary-activity-entry')); - $urlparams = array('g' => $activity->glossaryid, 'mode' => 'entry', 'hook' => $activity->content->entryid); - echo html_writer::tag('a', strip_tags($activity->content->concept), - array('href' => new moodle_url('/mod/glossary/view.php', $urlparams))); + if (isset($activity->content->approved) && !$activity->content->approved) { + $urlparams = array('g' => $activity->glossaryid, 'mode' => 'approval', 'hook' => $activity->content->concept); + $class = array('class' => 'dimmed_text'); + } else { + $urlparams = array('g' => $activity->glossaryid, 'mode' => 'entry', 'hook' => $activity->content->entryid); + $class = array(); + } + echo html_writer::link(new moodle_url('/mod/glossary/view.php', $urlparams), + strip_tags($activity->content->concept), $class); echo html_writer::end_tag('div'); $url = new moodle_url('/user/view.php', array('course'=>$courseid, 'id'=>$activity->user->id)); $name = $activity->user->fullname; - $link = html_writer::link($url, $name); + $link = html_writer::link($url, $name, $class); echo html_writer::start_tag('div', array('class'=>'user')); echo $link .' - '. userdate($activity->timestamp); diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 6021e44eac7..43ec70d1c00 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -814,15 +814,10 @@ function quiz_refresh_events($courseid = 0) { */ function quiz_get_recent_mod_activity(&$activities, &$index, $timestart, $courseid, $cmid, $userid = 0, $groupid = 0) { - global $CFG, $COURSE, $USER, $DB; + global $CFG, $USER, $DB; require_once($CFG->dirroot . '/mod/quiz/locallib.php'); - if ($COURSE->id == $courseid) { - $course = $COURSE; - } else { - $course = $DB->get_record('course', array('id' => $courseid)); - } - + $course = get_course($courseid); $modinfo = get_fast_modinfo($course); $cm = $modinfo->cms[$cmid]; @@ -868,11 +863,6 @@ function quiz_get_recent_mod_activity(&$activities, &$index, $timestart, $grader = has_capability('mod/quiz:viewreports', $context); $groupmode = groups_get_activity_groupmode($cm, $course); - if (is_null($modinfo->groups)) { - // Load all my groups and cache it in modinfo. - $modinfo->groups = groups_get_user_groups($course->id); - } - $usersgroups = null; $aname = format_string($cm->name, true); foreach ($attempts as $attempt) { @@ -883,16 +873,10 @@ function quiz_get_recent_mod_activity(&$activities, &$index, $timestart, } if ($groupmode == SEPARATEGROUPS and !$accessallgroups) { - if (is_null($usersgroups)) { - $usersgroups = groups_get_all_groups($course->id, - $attempt->userid, $cm->groupingid); - if (is_array($usersgroups)) { - $usersgroups = array_keys($usersgroups); - } else { - $usersgroups = array(); - } - } - if (!array_intersect($usersgroups, $modinfo->groups[$cm->id])) { + $usersgroups = groups_get_all_groups($course->id, + $attempt->userid, $cm->groupingid); + $usersgroups = array_keys($usersgroups); + if (!array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid))) { continue; } } diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index 54d74b44881..cf0127f5f9b 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -446,18 +446,14 @@ function workshop_print_recent_activity($course, $viewfullnames, $timestart) { break; } - if (is_null($modinfo->groups)) { - $modinfo->groups = groups_get_user_groups($course->id); // load all my groups and cache it in modinfo - } - // this might be slow - show only submissions by users who share group with me in this cm - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { break; } $authorsgroups = groups_get_all_groups($course->id, $s->authorid, $cm->groupingid); if (is_array($authorsgroups)) { $authorsgroups = array_keys($authorsgroups); - $intersect = array_intersect($authorsgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($authorsgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { break; } else { @@ -503,18 +499,14 @@ function workshop_print_recent_activity($course, $viewfullnames, $timestart) { break; } - if (is_null($modinfo->groups)) { - $modinfo->groups = groups_get_user_groups($course->id); // load all my groups and cache it in modinfo - } - // this might be slow - show only submissions by users who share group with me in this cm - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { break; } $reviewersgroups = groups_get_all_groups($course->id, $a->reviewerid, $cm->groupingid); if (is_array($reviewersgroups)) { $reviewersgroups = array_keys($reviewersgroups); - $intersect = array_intersect($reviewersgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($reviewersgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { break; } else { @@ -648,10 +640,6 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $timestart, $co $viewauthors = has_capability('mod/workshop:viewauthornames', $context); $viewreviewers = has_capability('mod/workshop:viewreviewernames', $context); - if (is_null($modinfo->groups)) { - $modinfo->groups = groups_get_user_groups($course->id); // load all my groups and cache it in modinfo - } - $submissions = array(); // recent submissions indexed by submission id $assessments = array(); // recent assessments indexed by assessment id $users = array(); @@ -710,13 +698,13 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $timestart, $co } // this might be slow - show only submissions by users who share group with me in this cm - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { break; } $authorsgroups = groups_get_all_groups($course->id, $s->authorid, $cm->groupingid); if (is_array($authorsgroups)) { $authorsgroups = array_keys($authorsgroups); - $intersect = array_intersect($authorsgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($authorsgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { break; } else { @@ -763,13 +751,13 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $timestart, $co } // this might be slow - show only submissions by users who share group with me in this cm - if (empty($modinfo->groups[$cm->id])) { + if (!$modinfo->get_groups($cm->groupingid)) { break; } $reviewersgroups = groups_get_all_groups($course->id, $a->reviewerid, $cm->groupingid); if (is_array($reviewersgroups)) { $reviewersgroups = array_keys($reviewersgroups); - $intersect = array_intersect($reviewersgroups, $modinfo->groups[$cm->id]); + $intersect = array_intersect($reviewersgroups, $modinfo->get_groups($cm->groupingid)); if (empty($intersect)) { break; } else {