LLMS_Table_Student_Courses
Source Source
File: includes/admin/reporting/tables/llms.table.student.courses.php
class LLMS_Table_Student_Courses extends LLMS_Admin_Table { /** * Unique ID for the Table * * @var string */ protected $id = 'student-courses'; /** * If true, tfoot will add ajax pagination links * * @var boolean */ protected $is_paginated = true; /** * Results sort order * 'ASC' or 'DESC' * Only applicable of $orderby is not set * * @var string */ protected $order = 'ASC'; /** * Field results are sorted by * * @var string */ protected $orderby = 'name'; /** * Instance of LLMS_Student * * @var null */ protected $student = null; /** * Retrieve data for the columns * * @param string $key the column id / key * @param int $course_id ID of the course * @return mixed * @since 3.2.0 * @version 3.13.0 */ public function get_data( $key, $course_id ) { $course = new LLMS_Course( $course_id ); switch ( $key ) { case 'progress': $value = $this->student->get_progress( $course->get( 'id' ), 'course' ) . '%'; break; case 'completed': $date = $this->student->get_completion_date( $course->get( 'id' ) ); $value = $date ? $date : '–'; break; case 'grade': $grade = $this->student->get_grade( $course->get( 'id' ) ); $value = is_numeric( $grade ) ? $grade . '%' : $grade; break; case 'id': $value = $course->get( 'id' ); if ( current_user_can( 'edit_post', $value ) ) { $value = $this->get_post_link( $value ); } break; case 'name': $id = $course->get( 'id' ); if ( current_user_can( 'edit_post', $id ) ) { $url = esc_url( add_query_arg( array( 'course_id' => $course->get( 'id' ), 'page' => 'llms-reporting', 'stab' => 'courses', 'student_id' => $this->student->get_id(), ), admin_url( 'admin.php' ) ) ); $value = '<a href="' . $url . '">' . $course->get( 'title' ) . '</a>'; } else { $value = $course->get( 'title' ); } break; case 'status': $value = llms_get_enrollment_status_name( $this->student->get_enrollment_status( $course->get( 'id' ) ) ); break; case 'updated': $value = $this->student->get_enrollment_date( $course->get( 'id' ), 'updated' ); break; default: $value = $key; }// End switch(). return $this->filter_get_data( $value, $key, $course_id ); } /** * Execute a query to retrieve results from the table * * @param array $args array of query args * @return void * @since 3.2.0 * @version 3.2.0 */ public function get_results( $args = array() ) { $args = $this->clean_args( $args ); if ( is_numeric( $args['student'] ) ) { $args['student'] = new LLMS_Student( $args['student'] ); } $this->student = $args['student']; if ( isset( $args['page'] ) ) { $this->current_page = absint( $args['page'] ); } $per = apply_filters( 'llms_gradebook_' . $this->id . '_per_page', 20 ); $order = ! empty( $args['order'] ) ? $args['order'] : 'ASC'; $order = in_array( $order, array( 'ASC', 'DESC' ) ) ? $order : 'ASC'; if ( isset( $args['order'] ) ) { $this->order = $order; } if ( isset( $args['orderby'] ) ) { $this->orderby = $args['orderby']; } switch ( $this->orderby ) { case 'updated': $orderby = 'upm.updated_date'; break; case 'name': default: $orderby = 'p.post_title'; } $courses = $this->student->get_courses( array( 'limit' => $per, 'skip' => ( $this->current_page - 1 ) * $per, 'orderby' => $orderby, 'order' => $order, ) ); if ( $courses['more'] ) { $this->is_last_page = false; } $this->tbody_data = $courses['results']; } /** * Define the structure of arguments used to pass to the get_results method * * @since 2.3.0 * @since 3.35.0 Sanitize `$_GET` data. * * @return array */ public function set_args() { $student = false; if ( ! empty( $this->student ) ) { $student = $this->student->get_id(); } elseif ( ! empty( $_GET['student_id'] ) ) { $student = llms_filter_input( INPUT_GET, 'student_id', FILTER_SANITIZE_NUMBER_INT ); } return array( 'page' => $this->get_current_page(), 'student' => $student, ); } /** * Define the structure of the table * * @return array * @since 3.2.0 * @version 3.2.0 */ public function set_columns() { return array( 'id' => array( 'title' => __( 'ID', 'lifterlms' ), ), 'name' => array( 'title' => __( 'Name', 'lifterlms' ), 'sortable' => true, ), 'status' => array( 'title' => __( 'Status', 'lifterlms' ), ), 'grade' => array( 'title' => __( 'Grade', 'lifterlms' ), ), 'progress' => array( 'title' => __( 'Progress', 'lifterlms' ), ), 'updated' => array( 'title' => __( 'Updated', 'lifterlms' ), 'sortable' => true, ), 'completed' => array( 'title' => __( 'Completed', 'lifterlms' ), ), ); } /** * Empty message displayed when no results are found * * @return string * @since 3.2.0 * @version 3.2.0 */ protected function set_empty_message() { return __( 'This student is not enrolled in any courses.', 'lifterlms' ); } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- get_data — Retrieve data for the columns
- get_results — Execute a query to retrieve results from the table
- set_args — Define the structure of arguments used to pass to the get_results method
- set_columns — Define the structure of the table
- set_empty_message — Empty message displayed when no results are found
Changelog Changelog
Version | Description |
---|---|
3.2.0 | |
3.13.0 | Introduced. |