/** * Works out whether activity is visible *for current user* - if this is false, they * aren't allowed to access it. * * @return bool */ private function get_uservisible() { $userid = $this->modinfo->get_user_id(); if ($this->_uservisible !== null || $userid == -1) { // Has already been calculated or does not need calculation. return $this->_uservisible; } $this->_uservisible = true; if (!$this->_visible || !$this->get_available()) { $coursecontext = context_course::instance($this->get_course()); if (!has_capability('moodle/course:viewhiddensections', $coursecontext, $userid)) { $this->_uservisible = false; } } return $this->_uservisible; }
/** * Checks whether the module's conditional access settings mean that the user cannot see the activity at all * * @return bool True if the user cannot see the module. False if the activity is either available or should be greyed out. */ public function is_user_access_restricted_by_conditional_access() { global $CFG, $USER; if (empty($CFG->enableavailability)) { return false; } // If module will always be visible anyway (but greyed out), don't bother checking anything else if ($this->showavailability == CONDITION_STUDENTVIEW_SHOW) { return false; } // Can the user see hidden modules? $modcontext = context_module::instance($this->id); $userid = $this->modinfo->get_user_id(); if (has_capability('moodle/course:viewhiddenactivities', $modcontext, $userid)) { return false; } // Is the module hidden due to unmet conditions? if (!$this->available) { 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; 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; } } } }
/** * 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; } } }