original_string: public static function is_user_visible($cmorid, $userid = 0, $checkcourse = true) {
          global $USER, $DB, $CFG;
  
          // Evaluate user id.
          if (!$userid) {
              $userid = $USER->id;
          }
  
          // If this happens to be already called with a cm_info for the right user
          // then just return uservisible.
          if (($cmorid instanceof \cm_info) && $cmorid->get_modinfo()->userid == $userid) {
              return $cmorid->uservisible;
          }
  
          // If the $cmorid isn't an object or doesn't have required fields, load it.
          if (is_object($cmorid) && isset($cmorid->course) && isset($cmorid->visible)) {
              $cm = $cmorid;
          } else {
              if (is_object($cmorid)) {
                  $cmorid = $cmorid->id;
              }
              $cm = $DB->get_record('course_modules', array('id' => $cmorid));
              if (!$cm) {
                  // In some error cases, the course module may not exist.
                  debugging('info_module::is_user_visible called with invalid cmid ' . $cmorid, DEBUG_DEVELOPER);
                  return false;
              }
          }
  
          // If requested, check user can access the course.
          if ($checkcourse) {
              $coursecontext = \context_course::instance($cm->course);
              if (!is_enrolled($coursecontext, $userid, '', true) &&
                      !has_capability('moodle/course:view', $coursecontext, $userid)) {
                  return false;
              }
          }
  
          // If availability is disabled, then all we need to do is check the visible flag.
          if (!$CFG->enableavailability && $cm->visible) {
              return true;
          }
  
          // When availability is enabled, access can depend on 3 things:
          // 1. $cm->visible
          // 2. $cm->availability
          // 3. $section->availability (for activity section and possibly for
          //    parent sections)
          // As a result we cannot take short cuts any longer and must get
          // standard modinfo.
          $modinfo = get_fast_modinfo($cm->course, $userid);
          $cms = $modinfo->get_cms();
          if (!isset($cms[$cm->id])) {
              // In some cases this might get called with a cmid that is no longer
              // available, for example when a module is hidden at system level.
              debugging('info_module::is_user_visible called with invalid cmid ' . $cm->id, DEBUG_DEVELOPER);
              return false;
          }
          return $cms[$cm->id]->uservisible;
      }
code: public static function is_user_visible($cmorid, $userid = 0, $checkcourse = true) {
          global $USER, $DB, $CFG;
  
          // Evaluate user id.
          if (!$userid) {
              $userid = $USER->id;
          }
  
          // If this happens to be already called with a cm_info for the right user
          // then just return uservisible.
          if (($cmorid instanceof \cm_info) && $cmorid->get_modinfo()->userid == $userid) {
              return $cmorid->uservisible;
          }
  
          // If the $cmorid isn't an object or doesn't have required fields, load it.
          if (is_object($cmorid) && isset($cmorid->course) && isset($cmorid->visible)) {
              $cm = $cmorid;
          } else {
              if (is_object($cmorid)) {
                  $cmorid = $cmorid->id;
              }
              $cm = $DB->get_record('course_modules', array('id' => $cmorid));
              if (!$cm) {
                  // In some error cases, the course module may not exist.
                  debugging('info_module::is_user_visible called with invalid cmid ' . $cmorid, DEBUG_DEVELOPER);
                  return false;
              }
          }
  
          // If requested, check user can access the course.
          if ($checkcourse) {
              $coursecontext = \context_course::instance($cm->course);
              if (!is_enrolled($coursecontext, $userid, '', true) &&
                      !has_capability('moodle/course:view', $coursecontext, $userid)) {
                  return false;
              }
          }
  
          // If availability is disabled, then all we need to do is check the visible flag.
          if (!$CFG->enableavailability && $cm->visible) {
              return true;
          }
  
          // When availability is enabled, access can depend on 3 things:
          // 1. $cm->visible
          // 2. $cm->availability
          // 3. $section->availability (for activity section and possibly for
          //    parent sections)
          // As a result we cannot take short cuts any longer and must get
          // standard modinfo.
          $modinfo = get_fast_modinfo($cm->course, $userid);
          $cms = $modinfo->get_cms();
          if (!isset($cms[$cm->id])) {
              // In some cases this might get called with a cmid that is no longer
              // available, for example when a module is hidden at system level.
              debugging('info_module::is_user_visible called with invalid cmid ' . $cm->id, DEBUG_DEVELOPER);
              return false;
          }
          return $cms[$cm->id]->uservisible;
      }
code_tokens: public static function is_user_visible ( $ cmorid , $ userid = 0 , $ checkcourse = true ) { global $ USER , $ DB , $ CFG ; // Evaluate user id. if ( ! $ userid ) { $ userid = $ USER -> id ; } // If this happens to be already called with a cm_info for the right user // then just return uservisible. if ( ( $ cmorid instanceof \ cm_info ) && $ cmorid -> get_modinfo ( ) -> userid == $ userid ) { return $ cmorid -> uservisible ; } // If the $cmorid isn't an object or doesn't have required fields, load it. if ( is_object ( $ cmorid ) && isset ( $ cmorid -> course ) && isset ( $ cmorid -> visible ) ) { $ cm = $ cmorid ; } else { if ( is_object ( $ cmorid ) ) { $ cmorid = $ cmorid -> id ; } $ cm = $ DB -> get_record ( 'course_modules' , array ( 'id' => $ cmorid ) ) ; if ( ! $ cm ) { // In some error cases, the course module may not exist. debugging ( 'info_module::is_user_visible called with invalid cmid ' . $ cmorid , DEBUG_DEVELOPER ) ; return false ; } } // If requested, check user can access the course. if ( $ checkcourse ) { $ coursecontext = \ context_course :: instance ( $ cm -> course ) ; if ( ! is_enrolled ( $ coursecontext , $ userid , '' , true ) && ! has_capability ( 'moodle/course:view' , $ coursecontext , $ userid ) ) { return false ; } } // If availability is disabled, then all we need to do is check the visible flag. if ( ! $ CFG -> enableavailability && $ cm -> visible ) { return true ; } // When availability is enabled, access can depend on 3 things: // 1. $cm->visible // 2. $cm->availability // 3. $section->availability (for activity section and possibly for //    parent sections) // As a result we cannot take short cuts any longer and must get // standard modinfo. $ modinfo = get_fast_modinfo ( $ cm -> course , $ userid ) ; $ cms = $ modinfo -> get_cms ( ) ; if ( ! isset ( $ cms [ $ cm -> id ] ) ) { // In some cases this might get called with a cmid that is no longer // available, for example when a module is hidden at system level. debugging ( 'info_module::is_user_visible called with invalid cmid ' . $ cm -> id , DEBUG_DEVELOPER ) ; return false ; } return $ cms [ $ cm -> id ] -> uservisible ; }
docstring: Checks if an activity is visible to the given user.
  
  Unlike other checks in the availability system, this check includes the
  $cm->visible flag. It is equivalent to $cm->uservisible.
  
  If you have already checked (or do not care whether) the user has access
  to the course, you can set $checkcourse to false to save it checking
  course access.
  
  When checking for the current user, you should generally not call
  this function. Instead, use get_fast_modinfo to get a cm_info object,
  then simply check the $cm->uservisible flag. This function is intended
  to obtain that information for a separate course-module object that
  wasn't loaded with get_fast_modinfo, or for a different user.
  
  This function has a performance cost unless the availability system is
  disabled, and you supply a $cm object with necessary fields, and you
  don't check course access.
  
  @param int|\stdClass|\cm_info $cmorid Object or id representing activity
  @param int $userid User id (0 = current user)
  @param bool $checkcourse If true, checks whether the user has course access
  @return bool True if the activity is visible to the specified user
  @throws \moodle_exception If the cmid doesn't exist
docstring_tokens: Checks if an activity is visible to the given user .