original_string: public static function get_course_progress_percentage($course, $userid = 0) {
          global $USER;
  
          // Make sure we continue with a valid userid.
          if (empty($userid)) {
              $userid = $USER->id;
          }
  
          $completion = new \completion_info($course);
  
          // First, let's make sure completion is enabled.
          if (!$completion->is_enabled()) {
              return null;
          }
  
          if (!$completion->is_tracked_user($userid)) {
              return null;
          }
  
          // Before we check how many modules have been completed see if the course has.
          if ($completion->is_course_complete($userid)) {
              return 100;
          }
  
          // Get the number of modules that support completion.
          $modules = $completion->get_activities();
          $count = count($modules);
          if (!$count) {
              return null;
          }
  
          // Get the number of modules that have been completed.
          $completed = 0;
          foreach ($modules as $module) {
              $data = $completion->get_data($module, true, $userid);
              $completed += $data->completionstate == COMPLETION_INCOMPLETE ? 0 : 1;
          }
  
          return ($completed / $count) * 100;
      }
code: public static function get_course_progress_percentage($course, $userid = 0) {
          global $USER;
  
          // Make sure we continue with a valid userid.
          if (empty($userid)) {
              $userid = $USER->id;
          }
  
          $completion = new \completion_info($course);
  
          // First, let's make sure completion is enabled.
          if (!$completion->is_enabled()) {
              return null;
          }
  
          if (!$completion->is_tracked_user($userid)) {
              return null;
          }
  
          // Before we check how many modules have been completed see if the course has.
          if ($completion->is_course_complete($userid)) {
              return 100;
          }
  
          // Get the number of modules that support completion.
          $modules = $completion->get_activities();
          $count = count($modules);
          if (!$count) {
              return null;
          }
  
          // Get the number of modules that have been completed.
          $completed = 0;
          foreach ($modules as $module) {
              $data = $completion->get_data($module, true, $userid);
              $completed += $data->completionstate == COMPLETION_INCOMPLETE ? 0 : 1;
          }
  
          return ($completed / $count) * 100;
      }
code_tokens: public static function get_course_progress_percentage ( $ course , $ userid = 0 ) { global $ USER ; // Make sure we continue with a valid userid. if ( empty ( $ userid ) ) { $ userid = $ USER -> id ; } $ completion = new \ completion_info ( $ course ) ; // First, let's make sure completion is enabled. if ( ! $ completion -> is_enabled ( ) ) { return null ; } if ( ! $ completion -> is_tracked_user ( $ userid ) ) { return null ; } // Before we check how many modules have been completed see if the course has. if ( $ completion -> is_course_complete ( $ userid ) ) { return 100 ; } // Get the number of modules that support completion. $ modules = $ completion -> get_activities ( ) ; $ count = count ( $ modules ) ; if ( ! $ count ) { return null ; } // Get the number of modules that have been completed. $ completed = 0 ; foreach ( $ modules as $ module ) { $ data = $ completion -> get_data ( $ module , true , $ userid ) ; $ completed += $ data -> completionstate == COMPLETION_INCOMPLETE ? 0 : 1 ; } return ( $ completed / $ count ) * 100 ; }
docstring: Returns the course percentage completed by a certain user, returns null if no completion data is available.
  
  @param \stdClass $course Moodle course object
  @param int $userid The id of the user, 0 for the current user
  @return null|float The percentage, or null if completion is not supported in the course,
  or there are no activities that support completion.
docstring_tokens: Returns the course percentage completed by a certain user returns null if no completion data is available .