LLMS_Table_Quizzes::get_results( array $args = array() )
Execute a query to retrieve results from the table
Parameters Parameters
- $args
-
(array) (Optional) Array of query args.
Default value: array()
Return Return
(void)
Source Source
File: includes/admin/reporting/tables/llms.table.quizzes.php
*/
public function get_results( $args = array() ) {
$this->title = __( 'Quizzes', 'lifterlms' );
$args = $this->clean_args( $args );
if ( isset( $args['page'] ) ) {
$this->current_page = absint( $args['page'] );
}
$per = apply_filters( 'llms_reporting_' . $this->id . '_per_page', 25 );
$this->order = isset( $args['order'] ) ? $args['order'] : $this->order;
$this->orderby = isset( $args['orderby'] ) ? $args['orderby'] : $this->orderby;
$this->filter = isset( $args['filter'] ) ? $args['filter'] : $this->get_filter();
$this->filterby = isset( $args['filterby'] ) ? $args['filterby'] : $this->get_filterby();
$query_args = array(
'order' => $this->order,
'orderby' => $this->orderby,
'paged' => $this->current_page,
'post_status' => 'publish',
'post_type' => 'llms_quiz',
'posts_per_page' => $per,
);
if ( isset( $args['search'] ) ) {
$query_args['s'] = sanitize_text_field( $args['search'] );
}
// if you can view others reports, make a regular query.
if ( current_user_can( 'view_others_lifterlms_reports' ) ) {
$query = new WP_Query( $query_args );
// user can only see their own reports, get a list of their students.
} elseif ( current_user_can( 'view_lifterlms_reports' ) ) {
$instructor = llms_get_instructor();
if ( ! $instructor ) {
return;
}
$lessons = array();
$courses = $instructor->get_courses(
array(
'posts_per_page' => -1,
)
);
foreach ( $courses as $course ) {
$lessons = array_merge( $lessons, $course->get_lessons( 'ids' ) );
}
if ( empty( $lessons ) ) {
return;
}
$query_args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
array(
'compare' => 'IN',
'key' => '_llms_lesson_id',
'value' => $lessons,
),
);
$query = new WP_Query( $query_args );
} else {
return;
}
$this->max_pages = $query->max_num_pages;
if ( $this->max_pages > $this->current_page ) {
$this->is_last_page = false;
}
$this->tbody_data = $query->posts;
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 3.36.1 | Fixed an issue that allow instructors, who can only see their own reports, to see all the quizzes when they had no courses or courses with no lessons. |
| 3.16.0 | Introduced. |