Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- add_action('wp_ajax_get_batch_course_stats',array($this,'get_batch_course_stats'));
- <?php
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- if ( ! defined( 'WPLMS_BATCH_STATISITCS_SLUG' ) )
- define( 'WPLMS_BATCH_STATISITCS_SLUG', 'stats' );
- if ( class_exists( 'BP_Group_Extension' ) ) :
- class BP_Group_Course_Batch_Statistics extends BP_Group_Extension {
- var $message;
- function __construct() {
- $args = array(
- 'slug' => WPLMS_BATCH_STATISITCS_SLUG,
- 'name' => __( 'Statistics', 'wplms-batches' ),
- 'visibility' => 'private',
- 'nav_item_position' => 10,
- 'enable_nav_item' => false,
- 'screens' => array(
- 'admin' => array(
- 'metabox_context' => 'side',
- 'metabox_priority' => 'core'
- ),
- 'create' => array(
- 'enabled' => false,
- ),
- 'edit' => array(
- 'enabled' => false,
- ),
- )
- );
- $group_id = bp_get_group_id();
- global $wpdb, $bp;
- if(isset($bp->groups) && is_object($bp->groups->current_group)){
- $enable = groups_get_groupmeta($bp->groups->current_group->id, 'course_batch' );
- }else{
- $enable = 0;
- }
- if(!empty($enable)){
- $args['enable_nav_item'] = true;
- }
- $flag = 1;
- if(isset($bp->groups) && is_object($bp->groups->current_group)){
- $batch_stats_visibility = groups_get_groupmeta($bp->groups->current_group->id,'batch_stats_visibility');
- }
- if(!empty($batch_stats_visibility)){
- $user_id = get_current_user_ID();
- if($batch_stats_visibility == 'mods'){
- if(!groups_is_user_mod($user_id,$bp->groups->current_group->id)){
- $flag = 0;
- }
- }else if($batch_stats_visibility == 'admins'){
- if(!groups_is_user_admin($user_id,$bp->groups->current_group->id)){
- $flag = 0;
- }
- }
- }
- if($flag){
- parent::init( $args );
- add_action('wplms_batch_statistics',array($this,'batch_statistics'),10,1);
- add_action('wplms_batch_moderator_statistics',array($this,'moderator_statistics'),10,1);
- add_action('wp_ajax_get_batch_course_stats', array($this,'get_batch_course_stats'));
- add_action('bp_enqueue_scripts', array( $this, 'cssjs' ) );
- }
- }
- function cssjs(){
- if( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action(WPLMS_BATCH_STATISITCS_SLUG) ){
- wp_enqueue_script('datatables-js',plugins_url( '/assets/js/jquery.dataTables.min.js', __FILE__ ),array('jquery'));
- wp_enqueue_script('bootstrap-datatables-js',plugins_url( '/assets/js/dataTables.bootstrap.min.js', __FILE__ ));
- }
- }
- /**
- * display() contains the markup that will be displayed on the main
- * plugin tab
- */
- function display( $group_id = NULL ) {
- if(empty($group_id))
- $group_id = bp_get_group_id();
- do_action('wplms_batch_statistics',$group_id);
- if(bp_current_user_can( 'bp_moderate' )){
- do_action('wplms_batch_moderator_statistics',$group_id);
- }else{
- do_action('wplms_batch_student_statistics',$group_id);
- }
- $leaderboard = groups_get_groupmeta($group_id,'batch_leaderboard');
- if(bp_current_user_can( 'bp_moderate' ) || !empty($leaderboard)){
- //echo '<h3 class="heading"><span>'._x('Leaderboard','Batch Leaderboard','wplms-batches').'</span></h3>';
- $members = BP_Groups_Member::get_group_member_ids($group_id);
- $courses = groups_get_groupmeta($group_id,'batch_course',false);
- if(empty($courses)){
- echo '<div class="message">'.__('No Courses connected to Batch','wplms-batches').'</div>';
- return;
- }
- $member_ids = implode(',',$members);
- $course_ids = implode(',',$courses);
- $course_status_string = '';
- foreach($courses as $c){
- $course_status_string .= "'course_status".$c."',";
- }
- $course_status_string =trim($course_status_string, ",");
- global $wpdb,$bp;
- $results = $wpdb->get_results($wpdb->prepare("SELECT p.meta_key as uid,sum(p.meta_value) as sum
- FROM {$wpdb->postmeta} as p
- LEFT JOIN {$wpdb->usermeta} as u
- ON p.meta_key = u.user_id
- WHERE p.meta_key IN ($member_ids)
- AND p.post_id IN ($course_ids)
- AND u.meta_key IN ($course_status_string)
- AND u.meta_value > %d
- GROUP BY uid ORDER BY sum DESC",3));
- ?>
- <?php
- }
- }
- function batch_statistics($group_id){
- $courses = groups_get_groupmeta($group_id,'batch_course',false);
- if(empty($courses)){
- echo '<div class="message">'.__('No Courses connected to Batch','wplms-batches').'</div>';
- return;
- }
- $members = BP_Groups_Member::get_group_member_ids($group_id);
- $admins = groups_get_group_admins( $group_id );
- $mods = groups_get_group_mods( $group_id );
- global $wpdb,$bp;
- $batch_average = $batch_badge_count = $batch_certificate_count = 0;
- $batch_average = groups_get_groupmeta($group_id,'batch_average');
- $batch_badge_count = groups_get_groupmeta($group_id,'batch_badge_count');
- $batch_certificate_count = groups_get_groupmeta($group_id,'batch_certificate_count');
- global $wpdb, $bp;
- if(isset($_GET['recalculate'])){
- $batch_badge_count = $batch_certificate_count = 0;
- $total_marks = 0;$total_denom = 1;
- foreach($members as $member_id){
- foreach($courses as $course_id){
- $status = bp_course_get_user_course_status($member_id,$course_id);
- if($status > 3){
- $marks = get_post_meta($course_id,$member_id,true);
- $total_marks += $marks;
- $total_denom++;
- }
- }
- $certificates = get_user_meta($member_id,'certificates',true);
- $badges = get_user_meta($member_id,'badges',true);
- if(!empty($certificates)){
- foreach($certificates as $certificate_course_id){
- if(in_array($certificate_course_id,$courses)){
- $batch_certificate_count++;
- }
- }
- }
- if(!empty($badges)){
- foreach($badges as $badges_course_id){
- if(in_array($badges_course_id,$courses)){
- $batch_badge_count++;
- }
- }
- }
- }
- if($total_denom > 1){
- $total_denom--;
- }
- $batch_average = round($total_marks/$total_denom,2);
- groups_update_groupmeta($group_id,'batch_average',$batch_average);
- groups_update_groupmeta($group_id,'batch_badge_count',$batch_badge_count);
- groups_update_groupmeta($group_id,'batch_certificate_count',$batch_certificate_count);
- }
- ?>
- <?php /*
- ?>
- <div class="row">
- <div class="col-md-12">
- <div class="course_stats_form">
- <h3 class="heading"><span><?php _e('Course Specific Statistics','wplms-batches'); ?></span></h3>
- <select id="batch_course">
- <?php
- foreach($courses as $course){
- echo '<option value="'.$course.'">'.get_the_title($course).'</option>';
- }
- ?>
- </select>
- <?php wp_nonce_field('batch_course_security'.$group_id,'batch_course_security');
- echo '<input type="hidden" id="course_batch_id" value="'.$group_id.'" />'; ?>
- <a id="get_batch_course_stats" class="button">
- <?php _e('Get Stats','wplms-batches'); ?>
- </a>
- </div>
- </div>
- <?php
- }
- function moderator_statistics($group_id){
- global $wpdb, $bp;
- $courses = groups_get_groupmeta($group_id,'batch_course',false);
- if(empty($courses)){
- echo '<div class="message">'.__('No Courses connected to Batch','wplms-batches').'</div>';
- return;
- }
- ?>
- <?php
- $members = BP_Groups_Member::get_group_member_ids($group_id);
- }
- function get_batch_course_stats(){
- $course_id = $_POST['course_id'];
- $batch_id = $_POST['batch_id'];
- $user_id = get_current_user_ID();
- global $wpdb, $bp;
- if ( !isset($_POST['security']) || !wp_verify_nonce($_POST['security'],'batch_course_security'.$batch_id) || !is_numeric($course_id) || !is_numeric($batch_id)){
- _e('Security check Failed. Contact Administrator.','wplms-batches');
- die();
- }
- echo '<h5>'.sprintf(__('Statistics for Course %s','wplms-batches'),'<a href="'.get_permalink($course_id).'" target="_blank">'.get_the_title($course_id)).'</a></h5>';
- if(function_exists('bp_course_get_curriculum_quizes')){
- global $wpdb, $bp;
- $quiz_ids = bp_course_get_curriculum_quizes($course_id);
- // Sort Quiz id
- sort($quiz_ids);
- $tlength = count($quiz_ids);
- for($x = 0; $x < $tlength; $x++);
- /*
- $flag = 0;
- if(!empty($quiz_ids)){
- $flag++;
- }
- */
- ?>
- <table class="course_leaderboard table table-hover table-bordered" id="table_course">
- <thead>
- <tr>
- <th>#</th>
- <th valign="top">
- <?php _e('Student','wplms-batches') ?> <br>
- </th>
- <th>
- Progression (%)
- </th>
- <th>
- QCM terminés
- </th>
- <th>
- Sessions terminées
- </th>
- <?php
- //if($flag >= 1){
- foreach($quiz_ids as $quiz_id){
- echo '<th><a href="'.get_permalink($quiz_id).'" target="_blank">'.get_the_title($quiz_id).'</a></th>';
- }
- //}
- ?>
- </tr>
- </thead>
- <tbody>
- <?php
- $members = BP_Groups_Member::get_group_member_ids($batch_id);
- $i=1;
- foreach($members as $member_id){
- foreach ($courses as $course_id)
- global $wpdb, $bp;
- $progress = bp_course_get_user_progress($member_id,$course_id);
- /*
- * Process for QCM Value
- */
- global $wpdb, $bp;
- $marks=$wpdb->get_results(sprintf("
- SELECT rel.post_id as id, rel.meta_value as val
- FROM {$wpdb->posts} AS posts
- LEFT JOIN {$wpdb->postmeta} AS rel ON posts.ID = rel.post_id
- WHERE posts.post_type = 'quiz'
- AND posts.post_title LIKE '%%QCM'
- AND posts.post_status = 'publish'
- AND rel.meta_key = %d
- AND rel.meta_value >= 0
- ", $member_id)
- );
- if (is_array($marks)) {
- foreach ($marks as $k=>$mark) {
- $user_marks[] = $mark->val;
- }
- }
- else {
- $user_marks = array();
- }
- if (is_array($marks))
- $value = count($marks);
- if ( $title )
- $label = $title;
- else
- $label = __('Quizzes Completed', 'wplms-dashboard');
- if (is_array($user_marks)) {
- foreach ($user_marks as $i=>$mark){
- if ($i<11) {
- if (!$i)
- $marks_string = $mark;
- else
- $marks_string .= ','.$mark;
- }
- }
- }
- if (!is_numeric($value))
- $value = 0;
- /*
- * Process for Personality Value
- */
- global $wpdb;
- $marks=$wpdb->get_results(sprintf("
- SELECT rel.post_id as id, rel.meta_value as val
- FROM {$wpdb->posts} AS posts
- LEFT JOIN {$wpdb->postmeta} AS rel ON posts.ID = rel.post_id
- WHERE posts.post_type = 'quiz'
- AND posts.post_title LIKE '%%Test de Personnalité'
- AND posts.post_status = 'publish'
- AND rel.meta_key = %d
- AND rel.meta_value >= 0
- ", $member_id)
- );
- if (is_array($marks)) {
- foreach ($marks as $k=>$mark) {
- $user_marks[] = $mark->val;
- }
- }
- else {
- $user_marks = array();
- }
- if ( $title )
- $label2 = $title;
- else
- $label2 = __('Personality Tests Completed', 'wplms-dashboard');
- if (is_array($marks))
- $value2 = count($marks);
- if (is_array($user_marks)) {
- foreach ($user_marks as $i=>$mark){
- if ($i<11) {
- if (!$i)
- $marks_string = $mark;
- else
- $marks_string .= ','.$mark;
- }
- }
- }
- if (!is_numeric($value2))
- $value2 = 0;
- ?>
- <tr>
- <td>
- <?php echo $i ?>
- </td>
- <td>
- <?php echo bp_core_get_user_displayname($member_id) ?>
- </td>
- <td>
- <?php echo $progress ?> %
- </td>
- <td>
- <?php echo $value ?>
- </td>
- <td>
- <?php echo $value2 ?>
- </td>
- <?php
- //if($flag >= 1){
- foreach($quiz_ids as $quiz_id){
- echo '<td>'.get_post_meta($quiz_id,$member_id,true).'</td>';
- }
- //}
- $sum=0;
- $status = bp_course_get_user_course_status($member_id,$course_id);
- if($status > 3){
- $marks = get_post_meta($course_id,$member_id, true);
- $sum += $marks;
- echo '<td>'.$marks.'</td>';
- }else{
- echo '<td>'._x('N.A','Marks not available in batch statisitcs leaderboard','wplms-batches').'</td>';
- }
- echo '</tr>';
- $i++;
- }
- ?>
- </tr>
- <?php }?>
- </tbody>
- </table>
- <!-- END Custom Code KVDC -->
- <?php
- die();
- }
- } // END of Class
- add_action( 'bp_init','wplms_batch_statistics_register_group_extension');
- function wplms_batch_statistics_register_group_extension(){
- bp_register_group_extension( 'BP_Group_Course_Batch_Statistics' );
- }
- endif;
- $sum += $marks;
- $sum->marks;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement