/** * Works out whether activity is visible *for current user* - if this is false, they * aren't allowed to access it. * @return void */ private function update_user_visible() { global $CFG; $modcontext = get_context_instance(CONTEXT_MODULE, $this->id); $userid = $this->modinfo->get_user_id(); $this->uservisible = true; if ((!$this->visible or !$this->available) and !has_capability('moodle/course:viewhiddenactivities', $modcontext, $userid)) { // If the activity is hidden or unavailable, and you don't have viewhiddenactivities, // set it so that user can't see or access it $this->uservisible = false; } else { if (!empty($CFG->enablegroupmembersonly) and !empty($this->groupmembersonly) and !has_capability('moodle/site:accessallgroups', $modcontext, $userid)) { // If the activity has 'group members only' and you don't have accessallgroups... $groups = $this->modinfo->get_groups($this->groupingid); if (empty($groups)) { // ...and you don't belong to a group, then set it so you can't see/access it $this->uservisible = false; } } } }
/** * Checks whether the module's group settings restrict the current user's access * * @return bool True if the user access is restricted */ public function is_user_access_restricted_by_group() { global $CFG; if (!empty($CFG->enablegroupmembersonly) and !empty($this->groupmembersonly)) { $userid = $this->modinfo->get_user_id(); if ($userid == -1) { return null; } if (!has_capability('moodle/site:accessallgroups', $this->get_context(), $userid)) { // If the activity has 'group members only' and you don't have accessallgroups... $groups = $this->modinfo->get_groups($this->groupingid); if (empty($groups)) { // ...and you don't belong to a group, then set it so you can't see/access it return true; } } } return false; }
/** * Works out whether activity is visible *for current user* - if this is false, they * aren't allowed to access it. * @return void */ private function update_user_visible() { global $CFG; $modcontext = get_context_instance(CONTEXT_MODULE, $this->id); $userid = $this->modinfo->get_user_id(); $this->uservisible = true; // Check visibility/availability conditions. if ((!$this->visible or !$this->available) and !has_capability('moodle/course:viewhiddenactivities', $modcontext, $userid)) { // If the activity is hidden or unavailable, and you don't have viewhiddenactivities, // set it so that user can't see or access it. $this->uservisible = false; } // Check group membership. The grouping option makes the activity // completely invisible as it does not apply to the user at all. if (!empty($CFG->enablegroupmembersonly) and !empty($this->groupmembersonly) and !has_capability('moodle/site:accessallgroups', $modcontext, $userid)) { // If the activity has 'group members only' and you don't have accessallgroups... $groups = $this->modinfo->get_groups($this->groupingid); if (empty($groups)) { // ...and you don't belong to a group, then set it so you can't see/access it $this->uservisible = false; // Ensure activity is completely hidden from user. $this->showavailability = 0; } } }