Core::bp_get_courses_progress( $user_id, $sort_order = 'desc' )
Description
Source
File: bp-integrations/learndash/core/Core.php
public function bp_get_courses_progress ( $user_id, $sort_order = 'desc' ) { $course_completion_percentage = array(); if ( ! $course_completion_percentage = wp_cache_get ( $user_id, 'ld_courses_progress' ) ) { $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ! empty( $course_progress ) ) { foreach ( $course_progress as $course_id => $coursep ) { // We take default progress value as 1 % rather than 0% $course_completion_percentage[ $course_id ] = 1;// if ( $coursep['total'] == 0 ) { continue; } $course_steps_count = learndash_get_course_steps_count( $course_id ); $course_steps_completed = learndash_course_get_completed_steps( $user_id, $course_id, $coursep ); $completed_on = get_user_meta( $user_id, 'course_completed_' . $course_id, true ); if ( !empty( $completed_on ) ) { $coursep['completed'] = $course_steps_count; $coursep['total'] = $course_steps_count; } else { $coursep['total'] = $course_steps_count; $coursep['completed'] = $course_steps_completed; if ( $coursep['completed'] > $coursep['total'] ) $coursep['completed'] = $coursep['total']; } // cannot divide by 0 if ( $coursep['total'] == 0 ) { $course_completion_percentage[ $course_id ] = 0; } else { $course_completion_percentage[ $course_id ] = ceil( ( $coursep['completed'] * 100 ) / $coursep['total'] ); } } } //Avoid running the queries multiple times if user's course progress is empty $course_completion_percentage = !empty( $course_completion_percentage ) ? $course_completion_percentage : 'empty'; wp_cache_set( $user_id, $course_completion_percentage, 'ld_courses_progress' ); } $course_completion_percentage = 'empty' !== $course_completion_percentage ? $course_completion_percentage : array(); if ( !empty( $course_completion_percentage ) ) { // Sort. if ( 'asc' == $sort_order ) { asort( $course_completion_percentage ); } else { arsort( $course_completion_percentage ); } } return $course_completion_percentage; }
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.