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;
    }
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;
    }
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 ; }
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.
Returns the course percentage completed by a certain user returns null if no completion data is available .