Ejemplo n.º 1
0
 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') . '&nbsp;<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>';
        }
    }
}
Ejemplo n.º 3
0
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>';
    }
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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 
}
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 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));
             }
         }
     }
 }