/** * This function extends the course navigation with the report items * * @param navigation_node $navigation The navigation node to extend * @param stdClass $user * @param stdClass $course The course to object for the report */ function report_outline_extend_navigation_user($navigation, $user, $course) { if (report_outline_can_access_user_report($user, $course)) { $url = new moodle_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => 'outline')); $navigation->add(get_string('outlinereport'), $url); $url = new moodle_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => 'complete')); $navigation->add(get_string('completereport'), $url); } }
$user = $DB->get_record('user', array('id' => $userid, 'deleted' => 0), '*', MUST_EXIST); $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); $coursecontext = context_course::instance($course->id); $personalcontext = context_user::instance($user->id); if ($courseid == SITEID) { $PAGE->set_context($personalcontext); } if ($USER->id != $user->id and has_capability('moodle/user:viewuseractivitiesreport', $personalcontext) and !is_enrolled($coursecontext, $USER) and is_enrolled($coursecontext, $user)) { //TODO: do not require parents to be enrolled in courses - this is a hack! require_login(); $PAGE->set_course($course); } else { require_login($course); } $PAGE->set_url('/report/outline/user.php', array('id' => $userid, 'course' => $courseid, 'mode' => $mode)); if (!report_outline_can_access_user_report($user, $course, true)) { require_capability('report/outline:view', $coursecontext); } $stractivityreport = get_string('activityreport'); $PAGE->set_pagelayout('report'); $PAGE->set_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => $mode)); $PAGE->navigation->extend_for_user($user); $PAGE->navigation->set_userid_for_parent_checks($user->id); // see MDL-25805 for reasons and for full commit reference for reversal when fixed. $PAGE->set_title("{$course->shortname}: {$stractivityreport}"); // Create the appropriate breadcrumb. $newusernode = $PAGE->navigation->find('user' . $user->id, null); $reportnode = $newusernode->add(get_string('reports')); $url = new moodle_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => $mode)); if ($mode === 'complete') { $reportnode->add(get_string('completereport'), $url, navigation_node::TYPE_COURSE);
/** * Add nodes to myprofile page. * * @param \core_user\output\myprofile\tree $tree Tree object * @param stdClass $user user object * @param bool $iscurrentuser * @param stdClass $course Course object * * @return bool */ function report_outline_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, $iscurrentuser, $course) { if (empty($course)) { // We want to display these reports under the site context. $course = get_fast_modinfo(SITEID)->get_course(); } if (report_outline_can_access_user_report($user, $course)) { $url = new moodle_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => 'outline')); $node = new core_user\output\myprofile\node('reports', 'outline', get_string('outlinereport'), null, $url); $tree->add_node($node); $url = new moodle_url('/report/outline/user.php', array('id' => $user->id, 'course' => $course->id, 'mode' => 'complete')); $node = new core_user\output\myprofile\node('reports', 'complete', get_string('completereport'), null, $url); $tree->add_node($node); } }