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;
 }
Beispiel #8
0
 /**
  * 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;
 }
Beispiel #9
0
 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;
}