Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-25805 Roles propagated ugly hack for parent seeing child activiti…

…es into navigation lib to display nav node.
  • Loading branch information...
commit b9bcad24db83e2166c69b3f5d9b7a9c1c8f4263a 1 parent 4452ed6
@nebgor nebgor authored
View
1  course/user.php
@@ -152,6 +152,7 @@
}
$PAGE->navigation->extend_for_user($user);
+$PAGE->navigation->set_userid_for_parent_nav_hack($user->id); // see MDL-25805 for reasons and for full commit reference for reversal when fixed.
$PAGE->set_title("$course->shortname: $stractivityreport ($mode)");
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
View
39 lib/navigationlib.php
@@ -829,6 +829,8 @@ class global_navigation extends navigation_node {
protected $addedcourses = array();
/** @var int */
protected $expansionlimit = 0;
+ /** @var int */
+ protected $uglyunsupportedparenthack_userid = 0;
/**
* Constructs a new global navigation
@@ -876,6 +878,19 @@ public function __construct(moodle_page $page) {
}
/**
+ * Mutator to set userid to allow parent to see child's profile
+ * page navigation. See MDL-25805 for initial issue. Linked to it
+ * is an issue explaining why this is a REALLY UGLY HACK thats not
+ * for you to use!
+ *
+ * @param int $userid userid of profile page that parent wants to navigate around.
+ */
+ public function set_userid_for_parent_nav_hack($userid) {
+ $this->uglyunsupportedparenthack_userid = $userid;
+ }
+
+
+ /**
* Initialises the navigation object.
*
* This causes the navigation object to look at the current state of the page
@@ -986,12 +1001,28 @@ public function initialise() {
// If the user is not enrolled then we only want to show the
// course node and not populate it.
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
- // Not enrolled, can't view, and hasn't switched roles
+ // Not enrolled, can't view, and hasn't switched roles
if (!can_access_course($coursecontext)) {
- $coursenode->make_active();
- $canviewcourseprofile = false;
- break;
+ // TODO: very ugly hack - do not force "parents" to enrol into course their child is enrolled in,
+ // this hack has been propagated from user/view.php to display the navigation node. (MDL-25805)
+ $isparent = false;
+ if ($this->uglyunsupportedparenthack_userid) {
+ $currentuser = ($this->uglyunsupportedparenthack_userid == $USER->id);
+ if (!$currentuser) {
+ $usercontext = get_context_instance(CONTEXT_USER, $this->uglyunsupportedparenthack_userid, MUST_EXIST);
+ if ($DB->record_exists('role_assignments', array('userid'=>$USER->id, 'contextid'=>$usercontext->id))
+ and has_capability('moodle/user:viewdetails', $usercontext)) {
+ $isparent = true;
+ }
+ }
+ }
+
+ if (!$isparent) {
+ $coursenode->make_active();
+ $canviewcourseprofile = false;
+ break;
+ }
}
// Add the essentials such as reports etc...
$this->add_course_essentials($coursenode, $course);
View
1  mod/forum/user.php
@@ -86,6 +86,7 @@
}
$PAGE->navigation->extend_for_user($user);
+$PAGE->navigation->set_userid_for_parent_nav_hack($id); // see MDL-25805 for reasons and for full commit reference for reversal when fixed.
$PAGE->set_title("$course->shortname: $fullname: $strmode");
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
View
1  user/view.php
@@ -80,6 +80,7 @@
// please note this is just a guess!
require_login();
$isparent = true;
+ $PAGE->navigation->set_userid_for_parent_nav_hack($id);
} else {
// normal course
require_login($course);
Please sign in to comment.
Something went wrong with that request. Please try again.