In this tip we'll learn how to add a custom stats in the Course Download Stats report. To learn how to record a custom stats in data base refer to this tip
This tip can be considered as a second part of the above tip using which we can download custom stats recorded in the database.
0. Check the topic : How to use Coding tips in WPLMS
1. Go to WP Admin -> Plugins -> editor -> WPLMS Customizer -> customizer_class.php
2. Add the following code in __construct function :
PHP Code:
add_filter('wplms_course_stats_list',array($this,'add_custom_course_stat'));
add_action('wplms_course_stats_process',array($this,'process_custom_course_stat'),10,6);
3. Add these functions in the class :
PHP Code:
function add_custom_course_stat($list){
$list['unit_duration']= 'Unit Duration';
return $list;
}
function process_custom_course_stat(&$csv_title, &$csv,&$i,&$course_id,&$user_id,&$field){
if($field != 'unit_duration')
return;
// Custom Stat Calculation //
$units=bp_course_get_curriculum_units($course_id);
foreach($units as $unit_id){
if(get_post_type($unit_id) == 'unit'){
$title=get_the_title($unit_id);
if(!in_array($title,$csv_title))
$csv_title[$i]=$title; // ----> This is Title of the CSV Column
$key = 'unit_start_time'.$unit_id;
$start_time = get_user_meta($user_id,$key,true); // Value in seconds
$end_time = get_user_meta($user_id,$unit_id,true); // Value in seconds
if(isset($end_time) && isset($start_time)){
$difference = ($end_time - $start_time);
if($difference > 0){
$status = ($difference/60).' minutes';
}else{
$status = 'Pursuing';
}
}else{
$status = 'N.A';
}
$csv[$i][] = $status; // ---> Stats Column value
$i++;
}
}
}