示例#1
0
 function wplms_course_code_check()
 {
     $user_id = get_current_user_id();
     $course_id = get_the_ID();
     $course_codes = get_post_meta($course_id, 'vibe_course_codes', true);
     if ($_POST['submit_course_codes']) {
         if (!isset($_POST['security_code']) || !wp_verify_nonce($_POST['security_code'], 'security' . $user_id)) {
             echo '<p class="message">' . __('Security check Failed. Contact Administrator.', 'vibe-customtypes') . '</p>';
         } else {
             $code = $_POST['course_code'];
             if (isset($code) && strlen($code) < 2) {
                 echo '<p class="message">' . __('Code does not exist. Please check the code.', 'vibe-customtypes') . '</p>';
                 return;
             }
             $x = preg_match("/(^|,){$code}(\\|([0-9]+)|(,|\$))/", $course_codes, $matches);
             if (!$x) {
                 echo '<p class="message">' . __('Code does not exist. Please check the code.', 'vibe-customtypes') . '</p>';
                 return;
             } else {
                 global $wpdb, $bp;
                 if (isset($matches[3]) && is_numeric($matches[3])) {
                     $total_count = $matches[3];
                     $count = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM {$bp->activity->table_name} WHERE component = %s AND type = %s AND content = %s AND item_id = %d", 'course', 'course_code', $code, $course_id));
                     if ($count <= $total_count) {
                         if (!wplms_user_course_check($user_id, $course_id)) {
                             bp_course_record_activity(array('action' => __('Course code applied', 'vibe-customtypes'), 'content' => $code, 'type' => 'course_code', 'item_id' => $course_id, 'primary_link' => get_permalink($course_id), 'secondary_item_id' => $user_id));
                             do_action('wplms_course_code', $code, $course_id, $user_id);
                             bp_course_add_user_to_course($user_id, $course_id);
                             echo '<p class="message success">' . __('Congratulations! You are now added to the course.', 'vibe-customtypes') . '</p>';
                         } else {
                             echo '<p class="message">' . __('User already in course.', 'vibe-customtypes') . '</p>';
                         }
                     } else {
                         echo '<p class="message">' . __('Maximum number of usage for course code exhausted', 'vibe-customtypes') . '</p>';
                     }
                 } else {
                     if (!wplms_user_course_check($user_id, $course_id)) {
                         do_action('wplms_course_code', $code, $course_id, $user_id);
                         bp_course_add_user_to_course($user_id, $course_id);
                         echo '<p class="message success">' . __('Congratulations! You are now added to the course.', 'vibe-customtypes') . '</p>';
                     } else {
                         echo '<p class="message">' . __('User already in course.', 'vibe-customtypes') . '</p>';
                     }
                 }
             }
         }
     }
 }
示例#2
0
 function manage_user_application()
 {
     $user_id = $_POST['user_id'];
     $course_id = $_POST['course_id'];
     if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'security' . $course_id . $user_id) || !is_numeric($course_id) || !is_numeric($user_id)) {
         _e('Security check Failed. Contact Administrator.', 'vibe');
         die;
     }
     $action = $_POST['act'];
     switch ($action) {
         case 'approve':
             bp_course_add_user_to_course($user_id, $course_id);
             break;
         default:
             break;
     }
     delete_user_meta($user_id, 'apply_course', $course_id);
     do_action('wplms_manage_user_application', $action, $user_id, $course_id);
     die;
 }
 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">' . apply_filters('wplms_take_this_course_button_label', __('TAKE THIS COURSE', 'vibe'), $course_id) . '</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 (vibe_validate($free_course) && 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) {
         $t = bp_course_add_user_to_course($user_id, $course_id);
         if ($t) {
             $new_duration = apply_filters('wplms_free_course_check', $t);
             $coursetaken = $new_duration;
         }
     }
     if (!empty($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
             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">';
                 switch ($course_user) {
                     case 1:
                         echo apply_filters('wplms_start_course_button', '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('START COURSE', 'vibe') . '">', $course_id);
                         wp_nonce_field('start_course' . $user_id, 'start_course');
                         break;
                     case 2:
                         echo apply_filters('wplms_continue_course_button', '<input type="submit" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button" value="' . __('CONTINUE COURSE', 'vibe') . '">', $course_id);
                         wp_nonce_field('continue_course' . $user_id, 'continue_course');
                         break;
                     case 3:
                         echo apply_filters('wplms_evaluation_course_button', '<a href="#" class="full button">' . __('COURSE UNDER EVALUATION', 'vibe') . '</a>', $course_id);
                         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="' . apply_filters('wplms_finished_course_link', '#', $course_id) . '" 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;
                 }
                 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);
                 $check = vibe_get_option('direct_checkout');
                 $check = intval($check);
                 if (isset($check) && $check) {
                     $pid .= '?redirect';
                 }
             }
             echo apply_filters('wplms_expired_course_button', '<a href="' . $pid . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . __('Course Expired', 'vibe') . '&nbsp;<span>' . __('Click to renew', 'vibe') . '</span></a>', $course_id);
         }
     } 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) && get_post_type($pid) == 'product') {
             $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 apply_filters('wplms_take_course_button', '<a href="' . $pid . '" class="' . (isset($id) && $id ? '' : 'course_button full ') . 'button">' . apply_filters('wplms_take_this_course_button_label', __('TAKE THIS COURSE', 'vibe'), $course_id) . apply_filters('wplms_course_button_extra', $extra, $course_id) . '</a>', $course_id);
         } 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>';
         }
     }
 }
示例#4
0
 function bp_course_enable_access($order_id)
 {
     $order = new WC_Order($order_id);
     $items = $order->get_items();
     $user_id = $order->user_id;
     $order_total = $order->get_total();
     $commission_array = array();
     foreach ($items as $item_id => $item) {
         $instructors = array();
         $courses = get_post_meta($item['product_id'], 'vibe_courses', true);
         $product_id = apply_filters('bp_course_product_id', $item['product_id'], $item);
         $subscribed = get_post_meta($product_id, 'vibe_subscription', true);
         if (isset($courses) && is_array($courses)) {
             if (vibe_validate($subscribed)) {
                 $duration = get_post_meta($product_id, 'vibe_duration', true);
                 foreach ($courses as $course) {
                     bp_course_add_user_to_course($user_id, $course, $duration, 1);
                     $instructors[$course] = apply_filters('wplms_course_instructors', get_post_field('post_author', $course), $course);
                     do_action('wplms_course_product_puchased', $course, $user_id, $t, 1);
                 }
             } else {
                 if (isset($courses) && is_array($courses)) {
                     foreach ($courses as $course) {
                         bp_course_add_user_to_course($user_id, $course, '', 1);
                         $instructors[$course] = apply_filters('wplms_course_instructors', get_post_field('post_author', $course, 'raw'), $course);
                         do_action('wplms_course_product_puchased', $course, $user_id, $t, 0);
                     }
                 }
             }
             //End Else
             $line_total = $item['line_total'];
             //Commission Calculation
             $commission_array[$item_id] = array('instructor' => $instructors, 'course' => $courses, 'total' => $line_total);
         }
         //End If courses
     }
     // End Item for loop
     if (function_exists('vibe_get_option')) {
         $instructor_commission = vibe_get_option('instructor_commission');
     }
     if ($instructor_commission == 0) {
         return;
     }
     if (!isset($instructor_commission) || !$instructor_commission) {
         $instructor_commission = 70;
     }
     $commissions = get_option('instructor_commissions');
     foreach ($commission_array as $item_id => $commission_item) {
         foreach ($commission_item['course'] as $course_id) {
             if (count($commission_item['instructor'][$course_id]) > 1) {
                 // Multiple instructors
                 $calculated_commission_base = round($commission_item['total'] * ($instructor_commission / 100) / count($commission_item['instructor'][$course_id]), 0);
                 // Default Slit equal propertion
                 foreach ($commission_item['instructor'][$course_id] as $instructor) {
                     if (empty($commissions[$course_id][$instructor])) {
                         $calculated_commission_base = round($commission_item['total'] * $instructor_commission / 100, 2);
                     } else {
                         $calculated_commission_base = round($commission_item['total'] * $commissions[$course_id][$instructor] / 100, 2);
                     }
                     $calculated_commission_base = apply_filters('wplms_calculated_commission_base', $calculated_commission_base, $instructor);
                     woocommerce_update_order_item_meta($item_id, 'commission' . $instructor, $calculated_commission_base);
                 }
             } else {
                 if (is_array($commission_item['instructor'][$course_id])) {
                     // Single Instructor
                     $instructor = $commission_item['instructor'][$course_id][0];
                 } else {
                     $instructor = $commission_item['instructor'][$course_id];
                 }
                 if (isset($commissions[$course_id][$instructor]) && is_numeric($commissions[$course_id][$instructor])) {
                     $calculated_commission_base = round($commission_item['total'] * $commissions[$course_id][$instructor] / 100, 2);
                 } else {
                     $calculated_commission_base = round($commission_item['total'] * $instructor_commission / 100, 2);
                 }
                 $calculated_commission_base = apply_filters('wplms_calculated_commission_base', $calculated_commission_base, $instructor);
                 woocommerce_update_order_item_meta($item_id, 'commission' . $instructor, $calculated_commission_base);
             }
         }
     }
     // End Commissions_array
 }
function add_bulk_students()
{
    $course_id = $_POST['course'];
    if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'security' . $course_id)) {
        echo 'Security check failed !';
        die;
    }
    $member_ids = array();
    $members = stripslashes($_POST['members']);
    $member_ids = array();
    if (strpos($members, ',')) {
        $members = explode(',', $members);
    } else {
        $members = array($members);
    }
    $html = '';
    foreach ($members as $member) {
        if (is_numeric($member)) {
            $user_id = $member;
        } else {
            if (filter_var($member, FILTER_VALIDATE_EMAIL)) {
                $user_id = email_exists($member);
            } else {
                $user_id = bp_core_get_userid_from_nicename($member);
            }
        }
        if (!empty($user_id)) {
            $force_flag = apply_filters('wplms_force_flag_bulk_add_students', 1, $course_id, $user_id);
            $check = bp_course_add_user_to_course($user_id, $course_id, '', $force_flag);
            if ($check) {
                $field = vibe_get_option('student_field');
                if (!isset($field) || !$field) {
                    $field = 'Location';
                }
                $html .= '<li id="s' . $user_id . '">
            <input type="checkbox" class="member" value="' . $user_id . '">
            ' . bp_core_fetch_avatar(array('item_id' => $user_id, 'type' => 'full')) . '
            <h6>' . bp_core_get_userlink($user_id) . '</h6><span>' . (function_exists('xprofile_get_field_data') ? xprofile_get_field_data($field, $user_id) : '') . '</span><ul> 
            <li><a class="tip reset_course_user" data-course="' . $course_id . '" data-user="******" title="" data-original-title="' . __('Reset Course for User', 'vibe') . '"><i class="icon-reload"></i></a></li>
            <li><a class="tip course_stats_user" data-course="' . $course_id . '" data-user="******" title="" data-original-title="' . __('See Course stats for User', 'vibe') . '"><i class="icon-bars"></i></a></li>
            <li><a class="tip remove_user_course" data-course="' . $course_id . '" data-user="******" title="" data-original-title="' . __('Remove User from this Course', 'vibe') . '"><i class="icon-x"></i></a></li>
            </ul></li>';
                $member_ids[] = $user_id;
            }
        }
    }
    echo $html;
    if (!empty($member_ids)) {
        foreach ($member_ids as $member_id) {
            do_action('wplms_course_subscribed', $course_id, $user_id);
        }
        do_action('wplms_bulk_action', 'added_students', $course_id, $member_ids);
    }
    die;
}