static function hide_upgrade_notice() { $ask_again = learn_press_get_request('ask_again'); $expiration = DAY_IN_SECONDS; if ($ask_again == 'no') { $expiration = 0; } set_transient('learn_press_upgrade_courses_ask_again', $ask_again, $expiration); learn_press_send_json(array('result' => 'success', 'message' => sprintf('<p>%s</p>', __('Thank for using LearnPress', 'learn_press')))); }
/** * Print plugin information after WP installed a plugin * * @param $a * @param $b * @param $result */ function learn_press_upgrader_post_install($a, $b, $result) { if (!empty($_REQUEST['learnpress']) && $_REQUEST['learnpress'] == 'active') { if (is_wp_error($result)) { } else { $slug = $_REQUEST['plugin']; $plugin = learn_press_plugin_basename_from_slug($slug); activate_plugin($plugin, false, is_network_admin()); // ensure that plugin is enabled $is_activate = is_plugin_active($plugin); $result['status'] = $is_activate ? 'activate' : 'deactivate'; $result['status_text'] = $is_activate ? __('Enabled', 'learn_press') : __('Disabled', 'learn_press'); } learn_press_send_json($result); } }
function learn_press_submit_answer() { _deprecated_function('learn_press_submit_answer', '0.9.15', false); $quiz_id = !empty($_REQUEST['quiz_id']) ? intval($_REQUEST['quiz_id']) : 0; $question_id = !empty($_REQUEST['question_id']) ? intval($_REQUEST['question_id']) : 0; $next_id = !empty($_REQUEST['next_id']) ? intval($_REQUEST['next_id']) : learn_press_get_next_question($quiz_id, $question_id); $question_answer = isset($_REQUEST['question_answer']) ? $_REQUEST['question_answer'] : null; $finish = isset($_REQUEST['finish']) ? $_REQUEST['finish'] : null; $user_id = get_current_user_id(); $json = array(); $ques = lpr_get_question($question_id); if ($ques) { $ques->submit_answer($quiz_id, $question_answer); } ob_start(); if ($next_id) { do_action('learn_press_submit_answer', $question_answer, $question_id, $quiz_id, $user_id, false); learn_press_get_template('quiz/form-question.php', array('question_id' => $next_id, 'course_id' => learn_press_get_course_by_quiz($quiz_id))); } else { $question_ids = learn_press_get_user_quiz_questions($quiz_id, $user_id); $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true); $quiz_completed[$quiz_id] = current_time('timestamp'); update_user_meta($user_id, '_lpr_quiz_completed', $quiz_completed); $course_id = learn_press_get_course_by_quiz($quiz_id); if (!learn_press_user_has_finished_course($course_id)) { if (learn_press_user_has_completed_all_parts($course_id, $user_id)) { learn_press_finish_course($course_id, $user_id); } } learn_press_get_template('quiz/result.php'); $json['quiz_completed'] = true; do_action('learn_press_submit_answer', $question_answer, $question_id, $quiz_id, $user_id, true); } $output = ob_get_clean(); if (defined('DOING_AJAX') && DOING_AJAX) { $json['html'] = $output; $json['redirect'] = apply_filters('learn_press_submit_answer_redirect_url', get_the_permalink($quiz_id), $question_answer, $question_id, $quiz_id, $user_id); learn_press_send_json($json); } }
static function plugin_install() { $plugin_name = !empty($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; $response = learn_press_install_add_on($plugin_name); learn_press_send_json($response); die; }
/** * Check before user take course and if they are not logged in then redirect to login page * * @param $can_take * @param $user_id * @param $course_id * @param $payment_method */ function learn_press_require_login_to_take_course($can_take, $user_id, $course_id, $payment_method) { if (!is_user_logged_in()) { $login_url = learn_press_get_login_url(get_permalink($course_id)); learn_press_send_json(array('result' => 'success', 'redirect' => $login_url)); } }
/** * Add course to cart * * @param int $course_id * @param int $quantity * @param array */ function add_to_cart($course_id, $quantity = 1, $item_data = array()) { if (!learn_press_is_enable_cart()) { $this->empty_cart(); } $course = learn_press_get_course($course_id); /* if ( !empty( $this->_cart_content['items'][$course_id] ) ) { $quantity += $this->_cart_content['items'][$course_id]['quantity']; }*/ $quantity = 1; $this->_cart_content['items'][$course_id] = apply_filters('learn_press_add_cart_item', array('item_id' => $course_id, 'quantity' => $quantity, 'subtotal' => $course->get_price() * $quantity, 'total' => $course->get_price() * $quantity, 'data' => $item_data)); do_action('learn_press_add_to_cart', $course_id, $quantity, $item_data, $this); $button = ''; if (learn_press_is_enable_cart()) { if (LP()->settings->get('redirect_after_add') == 'yes') { $redirect = learn_press_get_page_link('cart'); $button = sprintf('<a href="%s">%s</a>', get_the_permalink($course_id), __('Back to class', 'learn_press')); } else { $redirect = get_the_permalink($course_id); $button = sprintf('<a href="%s">%s</a>', learn_press_get_page_link('cart'), __('View cart', 'learn_press')); } } else { $redirect = learn_press_get_page_link('checkout'); } $redirect = apply_filters('learn_press_add_to_cart_redirect', $redirect, $course_id); learn_press_add_notice(sprintf(__('<strong>%s</strong> has been added to your cart. %s', 'learn_press'), get_the_title($course_id), $button)); if (is_ajax()) { learn_press_send_json(array('redirect' => $redirect, 'result' => 'success', 'messages' => learn_press_get_notices(true))); } else { wp_redirect($redirect); die; } }
/** * Process checkout * * @throws Exception */ function process_checkout() { try { if (strtolower($_SERVER['REQUEST_METHOD']) != 'post') { return; } // Prevent timeout @set_time_limit(0); do_action('learn_press_before_checkout_process'); $success = true; if (LP()->cart->is_empty()) { learn_press_send_json(array('result' => 'success', 'redirect' => learn_press_get_page_link('checkout'))); } if (empty($_REQUEST['payment_method'])) { $success = false; learn_press_add_notice(__('Please select a payment method', 'learn_press'), 'error'); } else { $this->payment_method = $_REQUEST['payment_method']; if ($this->checkout_fields) { foreach ($this->checkout_fields as $name => $field) { if (!apply_filters('learn_press_checkout_validate_field', true, array('name' => $name, 'text' => $field), $this)) { $success = false; } } } if (isset($this->checkout_fields['user_login']) && isset($this->checkout_fields['user_password'])) { $creds = array(); $creds['user_login'] = $_POST['user_login']; $creds['user_password'] = $_POST['user_password']; $creds['remember'] = true; $user = wp_signon($creds, false); if (is_wp_error($user)) { learn_press_add_notice($user->get_error_message(), 'error'); $success = false; } } LP()->session->set('chosen_payment_method', $this->payment_method); } if ($success && LP()->cart->needs_payment()) { // Payment Method $available_gateways = LP_Gateways::instance()->get_available_payment_gateways(); if (!isset($available_gateways[$this->payment_method])) { $this->payment_method = ''; learn_press_add_notice(__('Invalid payment method.', 'learn_press'), 'error'); } else { $this->payment_method = $available_gateways[$this->payment_method]; $success = $this->payment_method->validate_fields(); } } else { $available_gateways = array(); } $order_id = $this->create_order(); if ($success && $this->payment_method && $order_id) { LP()->session->order_awaiting_payment = $order_id; // Process Payment $result = $this->payment_method->process_payment($order_id); $success = !empty($result['result']) ? $result['result'] == 'success' : false; // Redirect to success/confirmation/payment page if ($success) { $result = apply_filters('learn_press_payment_successful_result', $result, $order_id); //LP()->cart->empty_cart(); if (is_ajax()) { learn_press_send_json($result); } else { wp_redirect($result['redirect']); exit; } } } } catch (Exception $e) { if (!empty($e)) { learn_press_add_notice($e->getMessage(), 'error'); } $success = false; } $error_messages = ''; if (!$success) { ob_start(); learn_press_print_notices(); $error_messages = ob_get_clean(); } $result = array('result' => $success ? 'success' : 'fail', 'messages' => $error_messages, 'redirect' => ''); return $result; }
/** * Complete lesson */ public static function complete_lesson() { global $post; $user_id = get_current_user_id(); $lesson_id = !empty($_POST['lesson']) ? $_POST['lesson'] : 0; if (!$user_id || !$lesson_id) { wp_die(__('Access denied!', 'learn_press')); } $response = array(); if (learn_press_mark_lesson_complete($lesson_id, $user_id)) { $course_id = learn_press_get_course_by_lesson($lesson_id); $lessons = learn_press_get_lessons_in_course($course_id); $lesson_completed = get_user_meta($user_id, '_lpr_lesson_completed', true); $lesson_completed = !empty($lesson_completed[$course_id]) ? $lesson_completed[$course_id] : array(); if ($lessons) { if (false !== ($pos = array_search($lesson_id, $lessons))) { $loop = $pos == count($lessons) - 1 ? 0 : $pos + 1; $infinite = 0; $max = count($lessons); while (in_array($lessons[$loop], $lesson_completed) && $lessons[$loop] != $lesson_id) { $loop++; if ($loop == $max) { $loop = 0; } if ($infinite > $max) { break; } } if ($lessons[$loop] != $lesson_id) { $response['url'] = learn_press_get_course_lesson_permalink($lessons[$loop], $course_id); } else { $response['url'] = learn_press_get_course_lesson_permalink($lesson_id, $course_id); } } } } learn_press_send_json($response); die; }
function start_quiz() { $quiz_id = !empty($_REQUEST['quiz_id']) ? absint($_REQUEST['quiz_id']) : 0; if (!$quiz_id) { learn_press_send_json(array('result' => 'error', 'message' => __('The quiz ID is empty', 'learn_press'))); } $quiz = LP_Quiz::get_quiz($quiz_id); if (!$quiz->id || $quiz->id != $quiz_id) { learn_press_send_json(array('result' => 'error', 'message' => __('Something is wrong! Please try again', 'learn_press'))); } $user = learn_press_get_current_user(); if ($quiz->is_require_enrollment() && $user->is('guest')) { learn_press_send_json(array('result' => 'error', 'message' => __('Please login to do this quiz', 'learn_press'))); } $user->set_quiz($quiz); switch (strtolower($user->get_quiz_status())) { case 'completed': learn_press_send_json(array('result' => 'error', 'message' => __('You have completed this quiz', 'learn_press'), 'data' => $user->get_quiz_result())); break; case 'started': learn_press_send_json(array('result' => 'error', 'message' => __('You have started this quiz', 'learn_press'), 'data' => array('status' => $user->get_quiz_status()))); break; default: $result = $user->start_quiz(); learn_press_send_json(array('result' => 'success', 'data' => $result, 'question_url' => learn_press_get_user_question_url($quiz_id), 'question_content' => $user->get_current_question($quiz_id, 'html'))); } die; }
function become_a_teacher_handler() { $name = !empty($_POST['bat_name']) ? $_POST['bat_name'] : null; $email = !empty($_POST['bat_email']) ? $_POST['bat_email'] : null; $phone = !empty($_POST['bat_phone']) ? $_POST['bat_phone'] : null; $response = array('error' => array()); if (!$name) { $response['error'][] = __('Please enter your name', 'learn_press'); } if (!$email) { $response['error'][] = __('Please enter your email address', 'learn_press'); } if (!$phone) { //$response['error'][] = __( 'Please enter your phone number', 'learn_press' ); } global $current_user; get_currentuserinfo(); $to_email = array(get_option('admin_email')); $message_headers = ''; $subject = 'Please moderate'; $notify_message = sprintf(__('The user <a href="%s">%s</a> want to be a teacher.', 'learn_press'), admin_url('user-edit.php?user_id=' . $current_user->ID), $current_user->data->user_login) . "\r\n"; $notify_message .= sprintf(__('Name: %s', 'learn_press'), $name) . "\r\n"; $notify_message .= sprintf(__('Email: %s', 'learn_press'), $email) . "\r\n"; $notify_message .= sprintf(__('Phone: %s', 'learn_press'), $phone) . "\r\n"; $notify_message .= wp_specialchars_decode(sprintf(__('Accept: %s', 'learn_press'), admin_url('user-edit.php?user_id=' . $current_user->ID) . '&action=accept-to-be-teacher')) . "\r\n"; $args = array($to_email, $subject, $notify_message, $message_headers); $return = @call_user_func_array('wp_mail', $args); // $email, wp_specialchars_decode( $subject ), $notify_message, $message_headers ); $response['return'] = $return; //$response['args'] = $args; // $response['user'] = $current_user; learn_press_send_json($response); die; }