File: /var/www/epamokos.kaunokolegija.lt/wp-content/plugins/lifterlms/includes/class.llms.quiz.data.php
<?php
/**
* Query data about a quiz
*
* @package LifterLMS/Classes
*
* @since 3.16.0
* @version 7.8.0
*/
defined( 'ABSPATH' ) || exit;
/**
* Query data about a quiz.
*
* @since 3.16.0
* @since 3.30.3 Explicitly define class properties.
* @since 3.31.0 Extends LLMS_Abstract_Post_Data.
* @since 4.0.0 Removed deprecated properties `$quiz` and `$quiz_id`.
*/
class LLMS_Quiz_Data extends LLMS_Abstract_Post_Data {
/**
* Post ID of the quiz
*
* @var int
*/
protected $quiz_id;
/**
* Post object of the quiz
*/
protected $quiz;
/**
* Constructor
*
* @since 3.16.0
*
* @param int $quiz_id WP Post ID of the quiz
*/
public function __construct( $quiz_id ) {
$this->quiz_id = $quiz_id;
$this->quiz = llms_get_post( $this->quiz_id );
parent::__construct( $quiz_id );
}
/**
* Retrieve # of quiz attempts within the period
*
* @since 3.16.0
*
* @param string $period date period [current|previous]
* @return int
*/
public function get_attempt_count( $period = 'current' ) {
global $wpdb;
return $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT( id )
FROM {$wpdb->prefix}lifterlms_quiz_attempts
WHERE quiz_id = %d
AND update_date BETWEEN %s AND %s
",
$this->post_id,
$this->get_date( $period, 'start' ),
$this->get_date( $period, 'end' )
)
);
}
/**
* Retrieve avg grade of quiz attempts within the period
*
* @since 3.16.0
*
* @param string $period date period [current|previous]
* @return int
*/
public function get_average_grade( $period = 'current' ) {
global $wpdb;
$grade = $wpdb->get_var(
$wpdb->prepare(
"
SELECT ROUND( AVG( grade ), 3 )
FROM {$wpdb->prefix}lifterlms_quiz_attempts
WHERE quiz_id = %d
AND update_date BETWEEN %s AND %s
",
$this->post_id,
$this->get_date( $period, 'start' ),
$this->get_date( $period, 'end' )
)
);
return $grade ? $grade : 0;
}
/**
* Retrieve the number assignments with a given status
*
* @since 3.24.0
*
* @param string $status status name
* @param string $period date period [current|previous]
* @return int
*/
public function get_count_by_status( $status, $period = 'current' ) {
global $wpdb;
return $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT( id )
FROM {$wpdb->prefix}lifterlms_quiz_attempts
WHERE quiz_id = %d
AND status = %s
AND update_date BETWEEN %s AND %s
",
$this->post_id,
$status,
$this->get_date( $period, 'start' ),
$this->get_date( $period, 'end' )
)
);
}
/**
* Retrieve # of quiz fails within the period.
*
* @since 3.16.0
*
* @param string $period Date period [current|previous].
* @return int
*/
public function get_fail_count( $period = 'current' ) {
return $this->get_count_by_status( 'fail', $period );
}
/**
* Retrieve # of quiz passes within the period.
*
* @since 3.16.0
*
* @param string $period Date period [current|previous].
* @return int
*/
public function get_pass_count( $period = 'current' ) {
return $this->get_count_by_status( 'pass', $period );
}
/**
* Retrieve recent LLMS_User_Postmeta for the quiz.
* This overrides the LLMS_Abstract_Post_Data method.
*
* @since 3.16.0
*
* @return array
*/
public function recent_events( $args = array() ) {
$query_args = wp_parse_args(
$args,
array(
'types' => array(),
)
);
return parent::recent_events( $query_args );
}
}