LLMS_Table_Quizzes::get_data( string $key, mixed $data )
Retrieve data for a cell
Parameters Parameters
- $key
-
(string) (Required) The column id / key.
- $data
-
(mixed) (Required) Object / array of data that the function can use to extract the data.
Return Return
(mixed)
Source Source
File: includes/admin/reporting/tables/llms.table.quizzes.php
protected function get_data( $key, $data ) {
$quiz = llms_get_post( $data );
switch ( $key ) {
case 'actions':
$value = $this->get_actions_html( $quiz );
break;
case 'attempts':
$query = new LLMS_Query_Quiz_Attempt(
array(
'quiz_id' => $quiz->get( 'id' ),
'count_only' => true,
)
);
$url = LLMS_Admin_Reporting::get_current_tab_url(
array(
'tab' => 'quizzes',
'stab' => 'attempts',
'quiz_id' => $quiz->get( 'id' ),
)
);
$value = '<a href="' . $url . '">' . $query->get_count_only_result() . '</a>';
break;
case 'average':
$grade = 0;
$query = new LLMS_Query_Quiz_Attempt(
array(
'quiz_id' => $quiz->get( 'id' ),
'per_page' => 1000,
)
);
$attempts = $query->get_number_results();
if ( ! $attempts ) {
$value = 0;
} else {
foreach ( $query->get_attempts() as $attempt ) {
$grade += $attempt->get( 'grade' );
}
$value = round( $grade / $attempts, llms_get_floats_rounding_precision() ) . '%';
}
break;
case 'course':
$value = '—';
$course = $quiz->get_course();
if ( $course ) {
$url = LLMS_Admin_Reporting::get_current_tab_url(
array(
'tab' => 'courses',
'course_id' => $course->get( 'id' ),
)
);
$value = '<a href="' . esc_url( $url ) . '">' . $course->get( 'title' ) . '</a>';
}
break;
case 'id':
$id = $quiz->get( 'id' );
$value = $id;
$course = $quiz->get_course();
if ( ! $quiz->is_orphan( true ) && $course ) {
$url = add_query_arg(
array(
'page' => 'llms-course-builder',
'course_id' => $course->get( 'id' ),
),
admin_url( 'admin.php' )
);
$url .= sprintf( '#lesson:%d:quiz', $quiz->get( 'lesson_id' ) );
$value = '<a href="' . esc_url( $url ) . '">' . $id . '</a>';
}
break;
case 'lesson':
$value = '—';
$lesson = $quiz->get_lesson();
if ( $lesson ) {
$value = $lesson->get( 'title' );
}
break;
case 'title':
$value = $quiz->get( 'title' );
$url = LLMS_Admin_Reporting::get_current_tab_url(
array(
'tab' => 'quizzes',
'quiz_id' => $quiz->get( 'id' ),
)
);
$value = '<a href="' . esc_url( $url ) . '">' . $quiz->get( 'title' ) . '</a>';
break;
default:
$value = $key;
}
return $this->filter_get_data( $value, $key, $data );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 7.1.3 | Added round() method for 'average' column values with precision from llms_get_floats_rounding_precision() helper. |
| 6.0.0 | Don't access LLMS_Query_Quiz_Attempt properties directly. |
| 4.2.0 | Added a deep check on whether the quiz is associated to a lesson. |
| 3.37.8 | Add actions column that allows deletion of orphaned quizzes.<br> ID column displays as plain text if the quiz is not editable and directs to the quiz within the course builder when it is. |
| 3.24.0 | Unknown. |
| 3.16.0 | Introduced. |