lifterlms_template_student_dashboard_my_grades()
Output the “My Grades” template screen on the student dashboard.
Return Return
(void)
Source Source
File: includes/functions/llms.functions.templates.dashboard.php
function lifterlms_template_student_dashboard_my_grades() {
$student = llms_get_student();
if ( ! $student ) {
return;
}
global $wp_query, $wp_rewrite;
$slug = $wp_query->query['my-grades'] ?? '';
// List courses.
if ( empty( $slug ) || false !== strpos( $slug, $wp_rewrite->pagination_base . '/' ) ) {
/**
* Filter the number of courses per pages to be displayed in my grades
*
* @since unknown
*
* @param int $per_page The number of courses per pages to be displayed. Default is `10`.
*/
$per_page = apply_filters( 'llms_sd_grades_courses_per_page', 10 );
$page = llms_get_paged_query_var();
$sort = llms_filter_input_sanitize_string( INPUT_GET, 'sort' );
if ( ! $sort ) {
$sort = 'date_desc';
}
$parts = explode( '_', $sort );
// Validate sort.
$parts[0] = llms_sanitize_with_safelist( $parts[0], array( 'date', 'title' ) );
$parts[1] = llms_sanitize_with_safelist( $parts[1], array( 'desc', 'asc' ) );
$courses = $student->get_courses(
array(
'limit' => $per_page,
'skip' => $per_page * ( $page - 1 ),
'orderby' => $parts[0],
'order' => strtoupper( $parts[1] ),
)
);
add_filter( 'paginate_links', 'llms_modify_dashboard_pagination_links' );
llms_get_template(
'myaccount/my-grades.php',
array(
'courses' => array_map( 'llms_get_post', $courses['results'] ),
'student' => $student,
'sort' => $sort,
'pagination' => array(
'current' => absint( $page ),
'max' => absint( ceil( $courses['found'] / $per_page ) ),
),
)
);
remove_filter( 'paginate_links', 'llms_modify_dashboard_pagination_links' );
// Show single.
} else {
$course = get_posts(
array(
'name' => $slug,
'post_type' => 'course',
)
);
$course = array_shift( $course );
if ( $course ) {
$course = llms_get_post( $course );
}
// It's not stupid if it works unless it is stupid.
$post_ids = array_merge(
array( $course->get( 'id' ) ),
$course->get_sections( 'ids' ),
$course->get_lessons( 'ids' ),
$course->get_quizzes()
);
$achievements = $student->get_achievements(
array(
'related_posts' => $post_ids,
'per_page' => 1,
'no_found_rows' => true,
)
)->get_awards();
$latest_achievement = $achievements ? $achievements[0] : false;
$last_activity = $student->get_events(
array(
'per_page' => 1,
'post_id' => $course->get( 'id' ),
)
);
llms_get_template(
'myaccount/my-grades-single.php',
array(
'course' => $course,
'student' => $student,
'latest_achievement' => $latest_achievement,
'last_activity' => $last_activity ? strtotime( $last_activity[0]->get( 'updated_date' ) ) : false,
)
);
}
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 6.3.0 | Prevent trying to access to a non existing index when retrieving the slug from the $wp_query.<br> Fixed pagination not working when using plain permalinks. |
| 6.0.0 | Use updated method signature for LLMS_Student::get_achievements(). |
| 5.9.0 | Stop using deprecated FILTER_SANITIZE_STRING. |
| 5.3.2 | Cast achievement_template ID to string when comparing to the list of achievement IDs related the course/membership (list of strings). |
| 3.26.3 | Unknown. |
| 3.24.0 | Introduced. |