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>'; } } } } } }
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') . ' <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>'; } } }
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; }