/**
 * Create new order
 *
 * @param array
 *
 * @return LP_Order instance
 */
function learn_press_create_order($order_data)
{
    $order_data_defaults = array('ID' => 0, 'post_author' => '1', 'post_parent' => '0', 'post_type' => LP()->order_post_type, 'post_status' => 'lp-' . apply_filters('learn_press_default_order_status', 'pending'), 'ping_status' => 'closed', 'post_title' => __('Order on', 'learn_press') . ' ' . current_time("l jS F Y h:i:s A"));
    $order_data_defaults = apply_filters('learn_press_defaults_order_data', $order_data_defaults);
    $order_data = wp_parse_args($order_data, $order_data_defaults);
    if ($order_data['status']) {
        if (!in_array('lp-' . $order_data['status'], array_keys(learn_press_get_order_statuses()))) {
            return new WP_Error('learn_press_invalid_order_status', __('Invalid order status', 'learn_press'));
        }
        $order_data['post_status'] = 'lp-' . $order_data['status'];
    }
    if (!is_null($order_data['user_note'])) {
        $order_data['post_excerpt'] = $order_data['user_note'];
    }
    if ($order_data['ID']) {
        $order_data = apply_filters('learn_press_update_order_data', $order_data);
        wp_update_post($order_data);
        $order_id = $order_data['ID'];
    } else {
        $order_data = apply_filters('learn_press_new_order_data', $order_data);
        $order_id = wp_insert_post($order_data);
    }
    if ($order_id) {
        $order = LP_Order::instance($order_id);
        update_post_meta($order_id, '_order_currency', learn_press_get_currency());
        update_post_meta($order_id, '_prices_include_tax', 'no');
        update_post_meta($order_id, '_user_ip_address', learn_press_get_ip());
        update_post_meta($order_id, '_user_agent', isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
        update_post_meta($order_id, '_user_id', learn_press_get_current_user_id());
        update_post_meta($order_id, '_order_subtotal', LP()->cart->subtotal);
        update_post_meta($order_id, '_order_total', LP()->cart->total);
        update_post_meta($order_id, '_order_key', apply_filters('learn_press_generate_order_key', uniqid('order')));
        update_post_meta($order_id, '_payment_method', '');
        update_post_meta($order_id, '_payment_method_title', '');
        update_post_meta($order_id, '_order_version', '1.0');
    }
    return LP_Order::instance($order_id, true);
}
Пример #2
0
/**
 * Check if user has completed a quiz or not
 *
 * @author  TuNN
 *
 * @param   int $user_id The ID of user need to check
 * @param   int $quiz_id The ID of quiz need to check
 *
 * @return  boolean
 */
function learn_press_user_has_completed_quiz($user_id = null, $quiz_id = null)
{
    _deprecated_function(__FUNCTION__, '1.0', 'Need to edit this function');
    $completed = false;
    // if $user_id is not passed, try to get it from current user
    if (!$user_id) {
        $user_id = learn_press_get_current_user_id();
        if (!$user_id) {
            $completed = false;
        }
    }
    // if $quiz_id is not passed, try to get it from current quiz
    $quiz_id = learn_press_get_quiz_id($quiz_id);
    $quiz_completed = get_user_meta($user_id, '_lpr_quiz_completed', true);
    $retake = get_user_meta($user_id, '_lpr_quiz_retake', true);
    // if user can not retake a quiz or has already completed a quiz
    if ((!$retake || !in_array($quiz_id, $retake)) && $quiz_completed && array_key_exists($quiz_id, $quiz_completed)) {
        $completed = true;
    }
    return apply_filters('learn_press_user_has_completed_quiz', $completed, $user_id, $quiz_id);
}
Пример #3
0
<?php

learn_press_prevent_access_directly();
if (learn_press_user_has_completed_quiz(learn_press_get_current_user_id())) {
    return;
}
do_action('learn_press_before_quiz_question_nav_buttons');
?>
<div class="quiz-question-nav-buttons">
    <?php 
$question_id = !empty($_REQUEST['question']) ? $_REQUEST['question'] : 0;
?>
    <?php 
//if( $prev = learn_press_get_user_prev_question_url( get_the_ID(), $question_id ) ){
?>
    <button type="button" data-nav="prev"  class="prev-question" data-url="<?php 
echo $prev;
?>
"><?php 
echo apply_filters('learn_press_quiz_question_nav_button_back_title', __('Back', 'learn_press'));
?>
</button>
    <?php 
//}
?>
    <?php 
//if( $next = learn_press_get_user_next_question_url( get_the_ID(), $question_id ) ){
?>
    <button type="button" data-nav="next" class="next-question" data-url="<?php 
echo $next;
?>
Пример #4
0
 /**
  *  Retake a quiz
  */
 public static function retake_quiz()
 {
     $quiz_id = learn_press_get_request('quiz_id');
     $user_id = learn_press_get_current_user_id();
     $response = array();
     if (!learn_press_user_can_retake_quiz($quiz_id, $user_id)) {
         $response['message'] = __('Sorry! You can not retake this quiz', 'learn_press');
         $response['error'] = true;
     } else {
         //lpr_reset_quiz_answer($quiz_id);
         learn_press_reset_user_quiz($user_id, $quiz_id);
         add_user_meta($user_id, '_lpr_quiz_taken', $quiz_id);
         $response = array('retake' => true, 'redirect' => get_the_permalink($quiz_id));
         do_action('learn_press_user_retake_quiz', $quiz_id, $user_id);
     }
     learn_press_send_json($response);
 }
Пример #5
0
/**
 * Check to see if a user can retake a quiz they have completed
 * Only for the quiz that allows user can retake
 *
 * @param null $quiz_id
 * @param null $user_id
 *
 * @return bool
 */
function learn_press_user_can_retake_quiz($quiz_id = null, $user_id = null)
{
    $quiz_id = learn_press_get_quiz_id($quiz_id);
    if (!$user_id) {
        $user_id = learn_press_get_current_user_id();
    }
    if (!$quiz_id || !$user_id) {
        return apply_filters('learn_press_anonymous_user_can_retake_quiz', false, $quiz_id);
    }
    if (!learn_press_user_has_completed_quiz($user_id, $quiz_id)) {
        //apply_filters( 'learn_press_user_can_retake_quiz', $can_retake, $quiz_id, $user_id, $taken, $available );
        return false;
    }
    $available = get_post_meta($quiz_id, '_lpr_retake_quiz', true);
    //learn_press_settings( 'pages', 'quiz.retake_quiz' );
    if (!$available) {
        return false;
    }
    global $wpdb;
    $query = $wpdb->prepare("\n        SELECT count(meta_key)\n        FROM {$wpdb->usermeta}\n        WHERE user_id = %d\n        AND meta_key = %s\n        AND meta_value = %d\n    ", $user_id, '_lpr_quiz_taken', $quiz_id);
    $taken = $wpdb->get_var($query);
    $can_retake = $taken < $available;
    // added 0.9.5
    return apply_filters('learn_press_user_can_retake_quiz', $can_retake, $quiz_id, $user_id, $taken, $available);
}