Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * 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;
             }
         }
     }
 }
Exemplo n.º 4
0
 /**
  * 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;
         }
     }
 }