function wplms_show_quiz_correct_answer($return, $quiz_id) { $course_id = get_post_meta($quiz_id, 'vibe_quiz_course', true); if (is_numeric($course_id)) { $user_id = get_current_user_id(); $course_status = bp_course_get_user_course_status($user_id, $course_id); if ($course_status >= 3) { return true; } else { return false; } } return $return; }
function the_course_button($id = NULL) { global $post; if (isset($id) && $id) { $course_id = $id; } else { $course_id = get_the_ID(); } // Free Course $free_course = get_post_meta($course_id, 'vibe_course_free', true); if (!is_user_logged_in() && vibe_validate($free_course)) { echo apply_filters('wplms_course_non_loggedin_user', '<a href="' . get_permalink($course_id) . '?error=login" class="course_button button full">' . __('TAKE THIS COURSE', 'vibe') . '</a>'); return; } $take_course_page_id = vibe_get_option('take_course_page'); if (function_exists('icl_object_id')) { $take_course_page_id = icl_object_id($take_course_page_id, 'page', true); } $take_course_page = get_permalink($take_course_page_id); $user_id = get_current_user_id(); do_action('wplms_the_course_button', $course_id, $user_id); $coursetaken = get_user_meta($user_id, $course_id, true); $auto_subscribe = 0; if (isset($free_course) && $free_course && $free_course != 'H' && is_user_logged_in() && (!isset($coursetaken) || !is_numeric($coursetaken))) { $auto_subscribe = 1; } $auto_subscribe = apply_filters('wplms_auto_subscribe', $auto_subscribe, $course_id); if ($auto_subscribe) { $duration = get_post_meta($course_id, 'vibe_duration', true); $course_duration_parameter = apply_filters('vibe_course_duration_parameter', 86400); $new_duration = time() + $course_duration_parameter * $duration; //parameter 86400 $new_duration = apply_filters('wplms_free_course_check', $new_duration); update_user_meta($user_id, $course_id, $new_duration); bp_course_update_user_course_status($user_id, $course_id, 0); $group_id = get_post_meta($course_id, 'vibe_group', true); if (isset($group_id) && $group_id != '') { groups_join_group($group_id, $user_id); } $coursetaken = $new_duration; } if (isset($coursetaken) && $coursetaken && is_user_logged_in()) { // COURSE IS TAKEN & USER IS LOGGED IN if ($coursetaken > time()) { // COURSE ACTIVE $course_user = bp_course_get_user_course_status($user_id, $course_id); // Validates that a user has taken this course $new_course_user = get_user_meta($user_id, 'course_status' . $course_id, true); // Remove this line in 1.8.5 if (isset($course_user) && is_numeric($course_user) || isset($free_course) && $free_course && $free_course != 'H' && is_user_logged_in()) { // COURSE PURCHASED SECONDARY VALIDATION echo '<form action="' . apply_filters('wplms_take_course_page', $take_course_page, $course_id) . '" method="post">'; if (isset($new_course_user) && is_numeric($new_course_user) && $new_course_user) { // For Older versions switch ($course_user) { case 1: echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('START COURSE', 'vibe') . '">'; wp_nonce_field('start_course' . $user_id, 'start_course'); break; case 2: echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('CONTINUE COURSE', 'vibe') . '">'; wp_nonce_field('continue_course' . $user_id, 'continue_course'); break; case 3: echo '<a href="#" class="full button">' . __('COURSE UNDER EVALUATION', 'vibe') . '</a>'; break; case 4: $finished_course_access = vibe_get_option('finished_course_access'); if (isset($finished_course_access) && $finished_course_access) { echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('FINISHED COURSE', 'vibe') . '">'; wp_nonce_field('continue_course' . $user_id, 'continue_course'); } else { echo '<a href="#" class="full button">' . __('COURSE FINISHED', 'vibe') . '</a>'; } break; default: $course_button_html = '<a class="course_button button">' . __('COURSE ENABLED', 'vibe') . '<span>' . __('CONTACT ADMIN TO ENABLE', 'vibe') . '</span></a>'; echo apply_filters('wplms_default_course_button', $course_button_html, $user_id, $course_id, $course_user); break; } } else { switch ($course_user) { case 0: echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('START COURSE', 'vibe') . '">'; wp_nonce_field('start_course' . $user_id, 'start_course'); break; case 1: echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('CONTINUE COURSE', 'vibe') . '">'; wp_nonce_field('continue_course' . $user_id, 'continue_course'); break; case 2: echo '<a href="#" class="full button">' . __('COURSE UNDER EVALUATION', 'vibe') . '</a>'; break; default: $finished_course_access = vibe_get_option('finished_course_access'); if (isset($finished_course_access) && $finished_course_access) { echo '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('FINISHED COURSE', 'vibe') . '">'; wp_nonce_field('continue_course' . $user_id, 'continue_course'); } else { echo '<a href="#" class="full button">' . __('COURSE FINISHED', 'vibe') . '</a>'; } break; } } echo '<input type="hidden" name="course_id" value="' . $course_id . '" />'; echo '</form>'; } else { $pid = get_post_meta($course_id, 'vibe_product', true); // SOME ISSUE IN PROCESS BUT STILL DISPLAYING THIS FOR NO REASON. echo '<a href="' . get_permalink($pid) . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . __('COURSE ENABLED', 'vibe') . '<span>' . __('CONTACT ADMIN TO ENABLE', 'vibe') . '</span></a>'; } } else { $pid = get_post_meta($course_id, 'vibe_product', true); $pid = apply_filters('wplms_course_product_id', $pid, $course_id, -1); // $id checks for Single Course page or Course page in the my courses section if (is_numeric($pid)) { $pid = get_permalink($pid); } echo '<a href="' . $pid . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . __('Course Expired', 'vibe') . ' <span>' . __('Click to renew', 'vibe') . '</span></a>'; } } else { $pid = get_post_meta($course_id, 'vibe_product', true); $pid = apply_filters('wplms_course_product_id', $pid, $course_id, 0); if (is_numeric($pid)) { $pid = get_permalink($pid); $check = vibe_get_option('direct_checkout'); $check = intval($check); if (isset($check) && $check) { $pid .= '?redirect'; } } $extra = ''; if (isset($pid) && $pid) { echo '<a href="' . $pid . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . __('TAKE THIS COURSE', 'vibe') . apply_filters('wplms_course_button_extra', $extra, $course_id) . '</a>'; } else { echo '<a href="' . apply_filters('wplms_private_course_button', '#', $course_id) . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . apply_filters('wplms_private_course_button_label', __('PRIVATE COURSE', 'vibe'), $course_id) . '</a>'; } } }
function wplms_check_course_retake() { if (!isset($_POST['security'])) { return; } $user_id = get_current_user_id(); if (!wp_verify_nonce($_POST['security'], 'retake' . $user_id)) { echo '<p class="error">' . __('Security check failed !', 'vibe') . '</p>'; return; } $course_id = get_the_ID(); $status = bp_course_get_user_course_status($user_id, $course_id); if (isset($status) && is_numeric($status)) { // Necessary for continue course do_action('wplms_student_course_reset', $course_id, $user_id); bp_course_update_user_course_status($user_id, $course_id, 0); // New function $course_curriculum = vibe_sanitize(get_post_meta($course_id, 'vibe_course_curriculum', false)); foreach ($course_curriculum as $c) { if (is_numeric($c)) { delete_user_meta($user_id, $c); delete_post_meta($c, $user_id); if (get_post_type($c) == 'quiz') { $questions = vibe_sanitize(get_post_meta($c, 'quiz_questions' . $user_id, false)); if (!isset($questions) || !is_array($questions)) { // Fallback for Older versions $questions = vibe_sanitize(get_post_meta($c, 'vibe_quiz_questions', false)); } else { delete_post_meta($c, 'quiz_questions' . $user_id); } // Re-capture new questions in quiz begining if (isset($questions) && is_array($questions) && is_Array($questions['ques'])) { foreach ($questions['ques'] as $question) { global $wpdb; if (isset($question) && $question != '' && is_numeric($question)) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->comments} SET comment_approved='trash' WHERE comment_post_ID=%d AND user_id=%d", $question, $user_id)); } } } } } } $user_badges = vibe_sanitize(get_user_meta($user_id, 'badges', false)); $user_certifications = vibe_sanitize(get_user_meta($user_id, 'certificates', false)); if (isset($user_badges) && is_Array($user_badges) && in_array($course_id, $user_badges)) { $key = array_search($course_id, $user_badges); unset($user_badges[$key]); $user_badges = array_values($user_badges); update_user_meta($user_id, 'badges', $user_badges); } if (isset($user_certifications) && is_Array($user_certifications) && in_array($course_id, $user_certifications)) { $key = array_search($course_id, $user_certifications); unset($user_certifications[$key]); $user_certifications = array_values($user_certifications); update_user_meta($user_id, 'certificates', $user_certifications); } /*==== End Fix ======*/ bp_course_record_activity(array('action' => __('Student retake Course ', 'vibe'), 'content' => __('Course ', 'vibe') . get_the_title($course_id) . __(' retake by student ', 'vibe') . bp_core_get_userlink($user_id), 'type' => 'retake_course', 'primary_link' => get_permalink($course_id), 'item_id' => $course_id, 'secondary_item_id' => $user_id)); echo "<script>jQuery(document).ready(function(\$){ \$.removeCookie('course_progress{$course_id}', { path: '/' });</script>"; } else { echo '<p class="error">' . __('There was issue in retaking this course for the user. Please contact admin.', 'vibe') . '</p>'; } }
function wplms_show_new_course_student_status_1($credits, $course_id) { if (is_user_logged_in()) { $user_id = get_current_user_id(); $check = get_user_meta($user_id, $course_id, true); if (isset($check) && $check) { if ($check < time()) { return '<strong>' . __('HỌC TIẾP', 'vibe') . '</strong>'; } //Khải insert $take_course_page_id = vibe_get_option('take_course_page'); if (function_exists('icl_object_id')) { $take_course_page_id = icl_object_id($take_course_page_id, 'page', true); } $take_course_page = get_permalink($take_course_page_id); //Khải end $check_course = bp_course_get_user_course_status($user_id, $course_id); $new_check_course = get_user_meta($user_id, 'course_status' . $course_id, true); if (isset($new_check_course) && is_numeric($new_check_course) && $new_check_course) { switch ($check_course) { //Khải edit case 1: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('START', 'vibe') . '<span class="subs">' . __('COURSE', 'vibe') . '</span></strong></a>'; break; case 2: $credits = '<strong><span>HỌC TIẾP</span></strong>'; //$credits ='<form class="frm_course_continue" action="'.apply_filters('wplms_take_course_page',$take_course_page,$course_id).'" method="post">'. // '<input class="btn_course_continue" type="submit" class="'.((isset($course_id) && $course_id )?'':'course_button full ').'button" value="'.__('HỌC TIẾP','vibe').'">'. // '<input type="hidden" name="course_id" value="'.$course_id.'" />'.wp_nonce_field('continue_course'.$user_id,'continue_course').' // </form>'; /* $credits ='<a href="'.apply_filters('wplms_take_course_page',$take_course_page,$course_id).'"><strong>'.__('HỌC TIẾP','vibe').'</strong></a>';*/ break; case 3: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('UNDER', 'vibe') . '<span class="subs">' . __('EVALUATION', 'vibe') . '</span></strong></a>'; break; case 4: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('HOÀN THÀNH', 'vibe') . '</strong></a>'; break; default: $credits = apply_filters('wplms_course_status_display', '<a href="' . get_permalink($course_id) . '"><strong>' . __('COURSE', 'vibe') . '<span class="subs">' . __('ENABLED', 'vibe') . '</span></strong></a>', $course_id); break; //Khải end } } else { //Khải edit switch ($check_course) { case 0: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('START', 'vibe') . '<span class="subs">' . __('COURSE', 'vibe') . '</span></strong></a>'; break; case 1: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('HỌC TIẾP', 'vibe') . '</strong></a>'; break; case 2: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('UNDER', 'vibe') . '<span class="subs">' . __('EVALUATION', 'vibe') . '</span></strong></a>'; break; default: $credits = '<a href="' . get_permalink($course_id) . '"><strong>' . __('HOÀN THÀNH', 'vibe') . '</strong></a>'; break; //Khải end } } } } return $credits; }
if (isset($course_curriculum) && is_array($course_curriculum)) { ?> <div class="more_course"> <a href="<?php echo get_permalink($course_id); ?> " class="unit_button full button"><?php _e('BACK TO COURSE', 'vibe'); ?> </a> <form action="<?php echo get_permalink($course_id); ?> " method="post"> <?php $finishbit = bp_course_get_user_course_status($user_id, $course_id); if (is_numeric($finishbit)) { if ($finishbit < 4) { echo '<input type="submit" name="review_course" class="review_course unit_button full button" value="' . __('REVIEW COURSE ', 'vibe') . '" />'; echo '<input type="submit" name="submit_course" class="review_course unit_button full button" value="' . __('FINISH COURSE ', 'vibe') . '" />'; } } ?> <?php wp_nonce_field($course_id, 'review'); ?> </form> </div> <?php }
function reset_course_user() { $course_id = $_POST['id']; $user_id = $_POST['user']; if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'vibe_security')) { echo '<p>' . __('Security check failed !', 'vibe') . '</p>'; die; } if (!isset($user_id) || !is_numeric($user_id) || !$user_id) { echo '<p>' . __(' Incorrect User selected.', 'vibe') . '</p>'; die; } //delete_user_meta($user_id,$course_id) // DELETE ONLY IF USER SUBSCRIPTION EXPIRED $status = bp_course_get_user_course_status($user_id, $course_id); if (isset($status) && is_numeric($status)) { // Necessary for continue course bp_course_update_user_course_status($user_id, $course_id, 0); // New function $course_curriculum = bp_course_get_curriculum($course_id); bp_course_update_user_progress($user_id, $course_id, 0); foreach ($course_curriculum as $c) { if (is_numeric($c)) { delete_user_meta($user_id, $c); delete_post_meta($c, $user_id); if (get_post_type($c) == 'quiz') { $questions = vibe_sanitize(get_post_meta($c, 'quiz_questions' . $user_id, false)); if (!isset($questions) || !is_array($questions)) { // Fallback for Older versions $questions = vibe_sanitize(get_post_meta($c, 'vibe_quiz_questions', false)); } else { delete_post_meta($c, 'quiz_questions' . $user_id); } // Re-capture new questions in quiz begining if (isset($questions) && is_array($questions) && is_Array($questions['ques'])) { foreach ($questions['ques'] as $question) { global $wpdb; if (isset($question) && $question != '' && is_numeric($question)) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->comments} SET comment_approved='trash' WHERE comment_post_ID=%d AND user_id=%d", $question, $user_id)); } } } } } } /*=== Fix in 1.5 : Reset Badges and CErtificates on Course Reset === */ $user_badges = vibe_sanitize(get_user_meta($user_id, 'badges', false)); $user_certifications = vibe_sanitize(get_user_meta($user_id, 'certificates', false)); if (isset($user_badges) && is_Array($user_badges) && in_array($course_id, $user_badges)) { $key = array_search($course_id, $user_badges); unset($user_badges[$key]); $user_badges = array_values($user_badges); update_user_meta($user_id, 'badges', $user_badges); } if (isset($user_certifications) && is_Array($user_certifications) && in_array($course_id, $user_certifications)) { $key = array_search($course_id, $user_certifications); unset($user_certifications[$key]); $user_certifications = array_values($user_certifications); update_user_meta($user_id, 'certificates', $user_certifications); } /*==== End Fix ======*/ echo '<p>' . __('Course Reset for User', 'vibe') . '</p>'; do_action('wplms_course_reset', $course_id, $user_id); } else { echo '<p>' . __('There was issue in resetting this course for the user. Please contact admin.', 'vibe') . '</p>'; } die; }
function wplms_before_start_course_status() { $user_id = get_current_user_id(); if (isset($_POST['start_course']) && wp_verify_nonce($_POST['start_course'], 'start_course' . $user_id)) { $course_id = $_POST['course_id']; $coursetaken = 1; $cflag = 0; $precourse = get_post_meta($course_id, 'vibe_pre_course', true); if (!empty($precourse)) { if (is_numeric($precourse)) { $preid = bp_course_get_user_course_status($user_id, $precourse); if (!empty($preid) && $preid > 2) { // COURSE STATUSES : Since version 1.8.4 // 1 : START COURSE // 2 : CONTINUE COURSE // 3 : FINISH COURSE : COURSE UNDER EVALUATION // 4 : COURSE EVALUATED $cflag = 1; } } else { if (is_array($precourse)) { foreach ($precourse as $pc) { $preid = bp_course_get_user_course_status($user_id, $pc); if (!empty($preid) && $preid > 2) { $cflag = 1; } else { //Break from loop break; } } } } } else { $cflag = 1; } if ($cflag) { $course_duration_parameter = apply_filters('vibe_course_duration_parameter', 86400, $course_id); $expire = time() + $course_duration_parameter; // One Unit logged in Limit for the course setcookie('course', $course_id, $expire, '/'); bp_course_update_user_course_status($user_id, $course_id, 1); //Since version 1.8.4 do_action('wplms_start_course', $course_id, $user_id); } else { header('Location: ' . get_permalink($course_id) . '?error=precourse'); } } else { if (isset($_POST['continue_course']) && wp_verify_nonce($_POST['continue_course'], 'continue_course' . $user_id)) { $course_id = $_POST['course_id']; $coursetaken = get_user_meta($user_id, $course_id, true); setcookie('course', $course_id, $expire, '/'); } else { if (isset($_COOKIE['course'])) { $course_id = $_COOKIE['course']; $coursetaken = 1; } else { wp_die(__('This Course can not be taken. Contact Administrator.', 'vibe'), 'Contact Admin', array(500, true)); } } } }