Version Description
- Fixed bugs related to AJAX calling
- Fixed bugs related to updating user profile
- Fixed open question to new tab in quiz editor
Download this release
Release Info
Developer | tunnhn |
Plugin | LearnPress – WordPress LMS Plugin |
Version | 2.1.0 |
Comparing to | |
See all releases |
Code changes from version 2.0.9 to 2.1.0
- assets/css/admin/meta-box-course.css +0 -1
- assets/css/admin/meta-box-course.less +0 -1
- inc/admin/views/meta-boxes/quiz/question.php +1 -1
- inc/cart/class-lp-cart.php +2 -2
- inc/class-lp-ajax.php +2 -2
- inc/class-lp-checkout.php +1 -1
- inc/course/lp-course-functions.php +4 -0
- inc/custom-post-types/course.php +32 -20
- inc/custom-post-types/order.php +24 -24
- inc/custom-post-types/quiz.php +0 -4
- inc/lp-constants.php +1 -1
- inc/lp-core-functions.php +82 -85
- inc/order/lp-order-functions.php +8 -8
- inc/user/lp-user-functions.php +1 -1
- learnpress.php +1 -1
- readme.txt +5 -3
assets/css/admin/meta-box-course.css
CHANGED
@@ -404,7 +404,6 @@
|
|
404 |
.rwmb-curriculum-wrapper .rwmb-input {
|
405 |
width: auto !important;
|
406 |
display: block;
|
407 |
-
float: none;
|
408 |
}
|
409 |
.column-lp_course .row-actions {
|
410 |
display: inline-block;
|
404 |
.rwmb-curriculum-wrapper .rwmb-input {
|
405 |
width: auto !important;
|
406 |
display: block;
|
|
|
407 |
}
|
408 |
.column-lp_course .row-actions {
|
409 |
display: inline-block;
|
assets/css/admin/meta-box-course.less
CHANGED
@@ -496,7 +496,6 @@
|
|
496 |
.rwmb-curriculum-wrapper .rwmb-input {
|
497 |
width: auto !important;
|
498 |
display: block;
|
499 |
-
float: none;
|
500 |
}
|
501 |
|
502 |
.column-lp_course .row-actions {
|
496 |
.rwmb-curriculum-wrapper .rwmb-input {
|
497 |
width: auto !important;
|
498 |
display: block;
|
|
|
499 |
}
|
500 |
|
501 |
.column-lp_course .row-actions {
|
inc/admin/views/meta-boxes/quiz/question.php
CHANGED
@@ -27,7 +27,7 @@ if ( empty ( $question->id ) ) {
|
|
27 |
<p class="quiz-question-actions lp-button-actions">
|
28 |
<a href="" data-action="expand" class="dashicons dashicons-arrow-down <?php echo $is_hidden ? '' : 'hide-if-js'; ?>" title="<?php _e( 'Expand', 'learnpress' ); ?>"></a>
|
29 |
<a href="" data-action="collapse" class="dashicons dashicons-arrow-up <?php echo !$is_hidden ? '' : 'hide-if-js'; ?>" title="<?php _e( 'Collapse', 'learnpress' ); ?>"></a>
|
30 |
-
<a href="<?php echo get_edit_post_link( $question->id ); ?>" class="dashicons dashicons-edit" data-action="" title="<?php _e( 'Edit', 'learnpress' ); ?>"></a>
|
31 |
<a href="" data-action="duplicate" class="dashicons-before dashicons-admin-page" title="<?php _e( 'Duplicate', 'learnpress' ); ?>" data-id="<?php echo esc_attr( $question->id ); ?>" data-quiz="<?php echo esc_attr( $post->ID ) ?>"></a>
|
32 |
<a href="<?php echo wp_nonce_url( admin_url( 'admin-ajax.php?action=learnpress_remove_quiz_question&quiz_id=' . $post->ID . '&question_id=' . $question->id ), 'remove_quiz_question', 'remove-nonce' ); ?>"
|
33 |
class="dashicons dashicons-trash"
|
27 |
<p class="quiz-question-actions lp-button-actions">
|
28 |
<a href="" data-action="expand" class="dashicons dashicons-arrow-down <?php echo $is_hidden ? '' : 'hide-if-js'; ?>" title="<?php _e( 'Expand', 'learnpress' ); ?>"></a>
|
29 |
<a href="" data-action="collapse" class="dashicons dashicons-arrow-up <?php echo !$is_hidden ? '' : 'hide-if-js'; ?>" title="<?php _e( 'Collapse', 'learnpress' ); ?>"></a>
|
30 |
+
<a href="<?php echo get_edit_post_link( $question->id ); ?>" class="dashicons dashicons-edit" data-action="" title="<?php _e( 'Edit', 'learnpress' ); ?>" target="_blank"></a>
|
31 |
<a href="" data-action="duplicate" class="dashicons-before dashicons-admin-page" title="<?php _e( 'Duplicate', 'learnpress' ); ?>" data-id="<?php echo esc_attr( $question->id ); ?>" data-quiz="<?php echo esc_attr( $post->ID ) ?>"></a>
|
32 |
<a href="<?php echo wp_nonce_url( admin_url( 'admin-ajax.php?action=learnpress_remove_quiz_question&quiz_id=' . $post->ID . '&question_id=' . $question->id ), 'remove_quiz_question', 'remove-nonce' ); ?>"
|
33 |
class="dashicons dashicons-trash"
|
inc/cart/class-lp-cart.php
CHANGED
@@ -226,7 +226,7 @@ class LP_Cart {
|
|
226 |
$checkout_results = LP_Checkout::instance()->process_checkout();
|
227 |
}
|
228 |
$redirect = $checkout_results['redirect'];
|
229 |
-
/*if (
|
230 |
learn_press_send_json(
|
231 |
$checkout_results
|
232 |
);
|
@@ -265,7 +265,7 @@ class LP_Cart {
|
|
265 |
|
266 |
$redirect = apply_filters( 'learn_press_add_to_cart_redirect', $redirect, $course_id );
|
267 |
|
268 |
-
if (
|
269 |
learn_press_send_json(
|
270 |
array(
|
271 |
'redirect' => $redirect,
|
226 |
$checkout_results = LP_Checkout::instance()->process_checkout();
|
227 |
}
|
228 |
$redirect = $checkout_results['redirect'];
|
229 |
+
/*if ( learn_press_is_ajax() ) {
|
230 |
learn_press_send_json(
|
231 |
$checkout_results
|
232 |
);
|
265 |
|
266 |
$redirect = apply_filters( 'learn_press_add_to_cart_redirect', $redirect, $course_id );
|
267 |
|
268 |
+
if ( learn_press_is_ajax() ) {
|
269 |
learn_press_send_json(
|
270 |
array(
|
271 |
'redirect' => $redirect,
|
inc/class-lp-ajax.php
CHANGED
@@ -116,7 +116,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
116 |
$message = apply_filters( 'learn_press_enroll_course_failed_message', sprintf( __( 'Sorry! The course <strong>%s</strong> you want to enroll has failed! Please contact site\'s administrator for more information.', 'learnpress' ), get_the_title( $course_id ) ), $course_id, LP()->user->id );
|
117 |
learn_press_add_message( $message, 'error' );
|
118 |
}
|
119 |
-
if (
|
120 |
learn_press_send_json( $response );
|
121 |
}
|
122 |
|
@@ -238,7 +238,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
238 |
'result' => 'success',
|
239 |
'redirect' => learn_press_get_checkout_url()
|
240 |
);
|
241 |
-
if (
|
242 |
learn_press_send_json( $return );
|
243 |
} else {
|
244 |
wp_redirect( $return['redirect'] );
|
116 |
$message = apply_filters( 'learn_press_enroll_course_failed_message', sprintf( __( 'Sorry! The course <strong>%s</strong> you want to enroll has failed! Please contact site\'s administrator for more information.', 'learnpress' ), get_the_title( $course_id ) ), $course_id, LP()->user->id );
|
117 |
learn_press_add_message( $message, 'error' );
|
118 |
}
|
119 |
+
if ( learn_press_is_ajax() ) {
|
120 |
learn_press_send_json( $response );
|
121 |
}
|
122 |
|
238 |
'result' => 'success',
|
239 |
'redirect' => learn_press_get_checkout_url()
|
240 |
);
|
241 |
+
if ( learn_press_is_ajax() ) {
|
242 |
learn_press_send_json( $return );
|
243 |
} else {
|
244 |
wp_redirect( $return['redirect'] );
|
inc/class-lp-checkout.php
CHANGED
@@ -288,7 +288,7 @@ class LP_Checkout {
|
|
288 |
// Redirect to success/confirmation/payment page
|
289 |
if ( $success === true ) {
|
290 |
$result = apply_filters( 'learn_press_checkout_success_result', $result, $order_id );
|
291 |
-
if (
|
292 |
learn_press_send_json( $result );
|
293 |
} else {
|
294 |
wp_redirect( $result['redirect'] );
|
288 |
// Redirect to success/confirmation/payment page
|
289 |
if ( $success === true ) {
|
290 |
$result = apply_filters( 'learn_press_checkout_success_result', $result, $order_id );
|
291 |
+
if ( learn_press_is_ajax() ) {
|
292 |
learn_press_send_json( $result );
|
293 |
} else {
|
294 |
wp_redirect( $result['redirect'] );
|
inc/course/lp-course-functions.php
CHANGED
@@ -735,6 +735,10 @@ if ( !function_exists( 'learn_press_item_sample_permalink' ) ) {
|
|
735 |
|
736 |
function learn_press_item_sample_permalink( $permalink, $post_id, $title, $name, $post ){
|
737 |
|
|
|
|
|
|
|
|
|
738 |
$permalink = str_replace( '/' .$post->post_name, '/%pagename%' , $permalink );
|
739 |
return $permalink;
|
740 |
}
|
735 |
|
736 |
function learn_press_item_sample_permalink( $permalink, $post_id, $title, $name, $post ){
|
737 |
|
738 |
+
if ( $post->post_type !== LP_QUIZ_CPT && $post->post_type !== LP_LESSON_CPT) {
|
739 |
+
return $permalink;
|
740 |
+
}
|
741 |
+
|
742 |
$permalink = str_replace( '/' .$post->post_name, '/%pagename%' , $permalink );
|
743 |
return $permalink;
|
744 |
}
|
inc/custom-post-types/course.php
CHANGED
@@ -327,7 +327,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
327 |
if ( empty( $post_id ) ) {
|
328 |
return;
|
329 |
}
|
330 |
-
|
331 |
if ( !empty( $_POST ) && learn_press_get_current_user()->is_instructor() && 'yes' == get_post_meta( $post_id, '_lp_submit_for_reviewer', true ) ) {
|
332 |
LP_Admin_Notice::add_redirect( __( 'Sorry! You can not update a course while it is viewing!', 'learnpress' ), 'error' );
|
333 |
wp_redirect( admin_url( 'post.php?post=' . $post_id . '&action=edit' ) );
|
@@ -667,7 +667,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
667 |
'name' => __( 'Course payment', 'learnpress' ),
|
668 |
'id' => "{$prefix}payment",
|
669 |
'type' => 'yes_no',
|
670 |
-
'desc' => __( '
|
671 |
'std' => 'no',
|
672 |
'class' => 'lp-course-payment-field'
|
673 |
)
|
@@ -677,18 +677,24 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
677 |
$payment = get_post_meta( $course_id, '_lp_payment', true );
|
678 |
|
679 |
if ( current_user_can( 'manage_options' ) ) {
|
680 |
-
$message =
|
681 |
-
$
|
|
|
682 |
$sale_price = 0;
|
683 |
$start_date = '';
|
684 |
$end_date = '';
|
685 |
|
686 |
if ( isset( $_GET['post'] ) ) {
|
687 |
-
$course_id
|
|
|
688 |
if ( $payment != 'free' ) {
|
689 |
-
$suggest_price
|
690 |
-
|
691 |
-
|
|
|
|
|
|
|
|
|
692 |
$price = $suggest_price;
|
693 |
}
|
694 |
|
@@ -705,7 +711,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
705 |
'name' => __( 'Price', 'learnpress' ),
|
706 |
'id' => "{$prefix}price",
|
707 |
'type' => 'number',
|
708 |
-
'min' => 0,
|
709 |
'step' => 0.01,
|
710 |
'desc' => $message,
|
711 |
'std' => $price,
|
@@ -738,7 +744,14 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
738 |
)
|
739 |
);
|
740 |
} else {
|
741 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
742 |
$meta_box['fields'][] = array(
|
743 |
'name' => __( 'Course Suggestion Price', 'learnpress' ),
|
744 |
'id' => "{$prefix}suggestion_price",
|
@@ -749,14 +762,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
749 |
'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
|
750 |
'std' => 0
|
751 |
);
|
752 |
-
|
753 |
-
$meta_box['fields'][] = array(
|
754 |
-
'name' => __( 'Price set by Admin', 'learnpress' ),
|
755 |
-
'id' => "{$prefix}price",
|
756 |
-
'type' => 'html',
|
757 |
-
'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
|
758 |
-
'html' => $price !== '' ? sprintf( '<strong>%s</strong>', learn_press_format_price( $price, true ) ) : __( 'Not set', 'learnpress' )
|
759 |
-
);
|
760 |
}
|
761 |
$meta_box['fields'] = array_merge(
|
762 |
$meta_box['fields'],
|
@@ -1130,6 +1136,10 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1130 |
delete_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
|
1131 |
}
|
1132 |
} elseif ( $user->is_instructor() ) { // Course is submitted by instructor
|
|
|
|
|
|
|
|
|
1133 |
if ( ( $submit_for_review || ( $old_status != $new_status ) ) && $post->post_status != 'auto-draft' ) {
|
1134 |
$action = 'for_reviewer';
|
1135 |
update_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
|
@@ -1220,16 +1230,17 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1220 |
}
|
1221 |
|
1222 |
public
|
1223 |
-
|
1224 |
|
1225 |
global $post, $pagenow;
|
1226 |
|
1227 |
// Ensure that we are editing course in admin side
|
|
|
1228 |
if ( ( $pagenow != 'post.php' ) || ( get_post_type() != LP_COURSE_CPT ) ) {
|
1229 |
return;
|
1230 |
}
|
1231 |
|
1232 |
-
remove_action( 'save_post', array( $this, 'before_save_curriculum' ),
|
1233 |
//remove_action( 'rwmb_course_curriculum_before_save_post', array( $this, 'before_save_curriculum' ) );
|
1234 |
|
1235 |
$user = LP()->user;
|
@@ -1244,6 +1255,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1244 |
),
|
1245 |
array( '%d', '%s' )
|
1246 |
);
|
|
|
1247 |
}
|
1248 |
|
1249 |
$new_status = get_post_status( $post->ID );
|
327 |
if ( empty( $post_id ) ) {
|
328 |
return;
|
329 |
}
|
330 |
+
if ( self::$_enable_review ) {
|
331 |
if ( !empty( $_POST ) && learn_press_get_current_user()->is_instructor() && 'yes' == get_post_meta( $post_id, '_lp_submit_for_reviewer', true ) ) {
|
332 |
LP_Admin_Notice::add_redirect( __( 'Sorry! You can not update a course while it is viewing!', 'learnpress' ), 'error' );
|
333 |
wp_redirect( admin_url( 'post.php?post=' . $post_id . '&action=edit' ) );
|
667 |
'name' => __( 'Course payment', 'learnpress' ),
|
668 |
'id' => "{$prefix}payment",
|
669 |
'type' => 'yes_no',
|
670 |
+
'desc' => __( '', 'learnpress' ),
|
671 |
'std' => 'no',
|
672 |
'class' => 'lp-course-payment-field'
|
673 |
)
|
677 |
$payment = get_post_meta( $course_id, '_lp_payment', true );
|
678 |
|
679 |
if ( current_user_can( 'manage_options' ) ) {
|
680 |
+
// $message = __( 'If free, this field is empty or set 0. (Only admin can edit this field)', 'learnpress' );
|
681 |
+
$message = '';
|
682 |
+
$price = get_post_meta( $course_id, '_lp_price', true );
|
683 |
$sale_price = 0;
|
684 |
$start_date = '';
|
685 |
$end_date = '';
|
686 |
|
687 |
if ( isset( $_GET['post'] ) ) {
|
688 |
+
$course_id = $_GET['post'];
|
689 |
+
|
690 |
if ( $payment != 'free' ) {
|
691 |
+
$suggest_price = get_post_meta( $course_id, '_lp_suggestion_price', true );
|
692 |
+
$course = get_post( $course_id );
|
693 |
+
|
694 |
+
$author = get_userdata( $course->post_author ) ;
|
695 |
+
|
696 |
+
if ( isset( $suggest_price ) && $author->roles[0] === 'lp_teacher' ) {
|
697 |
+
$message = sprintf( __( 'This course is requires enrollment and the suggested price is <strong>%s</strong>', 'learnpress' ), learn_press_format_price( $suggest_price, true ) );
|
698 |
$price = $suggest_price;
|
699 |
}
|
700 |
|
711 |
'name' => __( 'Price', 'learnpress' ),
|
712 |
'id' => "{$prefix}price",
|
713 |
'type' => 'number',
|
714 |
+
'min' => 0.01,
|
715 |
'step' => 0.01,
|
716 |
'desc' => $message,
|
717 |
'std' => $price,
|
744 |
)
|
745 |
);
|
746 |
} else {
|
747 |
+
$price = get_post_meta( $course_id, '_lp_price', true );
|
748 |
+
$meta_box['fields'][] = array(
|
749 |
+
'name' => __( 'Price set by Admin', 'learnpress' ),
|
750 |
+
'id' => "{$prefix}price",
|
751 |
+
'type' => 'html',
|
752 |
+
'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
|
753 |
+
'html' => $price !== '' ? sprintf( '<strong>%s</strong>', learn_press_format_price( $price, true ) ) : __( 'Not set', 'learnpress' )
|
754 |
+
);
|
755 |
$meta_box['fields'][] = array(
|
756 |
'name' => __( 'Course Suggestion Price', 'learnpress' ),
|
757 |
'id' => "{$prefix}suggestion_price",
|
762 |
'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
|
763 |
'std' => 0
|
764 |
);
|
765 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
766 |
}
|
767 |
$meta_box['fields'] = array_merge(
|
768 |
$meta_box['fields'],
|
1136 |
delete_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
|
1137 |
}
|
1138 |
} elseif ( $user->is_instructor() ) { // Course is submitted by instructor
|
1139 |
+
|
1140 |
+
if ( $enable_edit_published && ( $old_status == $new_status && $new_status == 'publish' ) ) {
|
1141 |
+
$submit_for_review = false;
|
1142 |
+
}
|
1143 |
if ( ( $submit_for_review || ( $old_status != $new_status ) ) && $post->post_status != 'auto-draft' ) {
|
1144 |
$action = 'for_reviewer';
|
1145 |
update_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
|
1230 |
}
|
1231 |
|
1232 |
public
|
1233 |
+
function before_save_curriculum() {
|
1234 |
|
1235 |
global $post, $pagenow;
|
1236 |
|
1237 |
// Ensure that we are editing course in admin side
|
1238 |
+
|
1239 |
if ( ( $pagenow != 'post.php' ) || ( get_post_type() != LP_COURSE_CPT ) ) {
|
1240 |
return;
|
1241 |
}
|
1242 |
|
1243 |
+
remove_action( 'save_post', array( $this, 'before_save_curriculum' ), 1 );
|
1244 |
//remove_action( 'rwmb_course_curriculum_before_save_post', array( $this, 'before_save_curriculum' ) );
|
1245 |
|
1246 |
$user = LP()->user;
|
1255 |
),
|
1256 |
array( '%d', '%s' )
|
1257 |
);
|
1258 |
+
|
1259 |
}
|
1260 |
|
1261 |
$new_status = get_post_status( $post->ID );
|
inc/custom-post-types/order.php
CHANGED
@@ -506,14 +506,6 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
506 |
'show_in_admin_status_list' => true,
|
507 |
'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'learnpress' )
|
508 |
);
|
509 |
-
$lp_order_statuses['lp-on-hold'] = array(
|
510 |
-
'label' => _x( 'On Hold', 'Order status', 'learnpress' ),
|
511 |
-
'public' => false,
|
512 |
-
'exclude_from_search' => false,
|
513 |
-
'show_in_admin_all_list' => true,
|
514 |
-
'show_in_admin_status_list' => true,
|
515 |
-
'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'learnpress' )
|
516 |
-
);
|
517 |
$lp_order_statuses['lp-cancelled'] = array(
|
518 |
'label' => _x( 'Cancelled', 'Order status', 'learnpress' ),
|
519 |
'public' => false,
|
@@ -522,22 +514,30 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
522 |
'show_in_admin_status_list' => true,
|
523 |
'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'learnpress' )
|
524 |
);
|
525 |
-
$lp_order_statuses['lp-
|
526 |
-
'label' => _x( '
|
527 |
-
'public' => false,
|
528 |
-
'exclude_from_search' => false,
|
529 |
-
'show_in_admin_all_list' => true,
|
530 |
-
'show_in_admin_status_list' => true,
|
531 |
-
'label_count' => _n_noop( '
|
532 |
-
);
|
533 |
-
$lp_order_statuses['lp-
|
534 |
-
'label' => _x( '
|
535 |
-
'public' => false,
|
536 |
-
'exclude_from_search' => false,
|
537 |
-
'show_in_admin_all_list' => true,
|
538 |
-
'show_in_admin_status_list' => true,
|
539 |
-
'label_count' => _n_noop( '
|
540 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
541 |
foreach ( $lp_order_statuses as $status => $args ) {
|
542 |
register_post_status( $status, $args );
|
543 |
}
|
506 |
'show_in_admin_status_list' => true,
|
507 |
'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'learnpress' )
|
508 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
509 |
$lp_order_statuses['lp-cancelled'] = array(
|
510 |
'label' => _x( 'Cancelled', 'Order status', 'learnpress' ),
|
511 |
'public' => false,
|
514 |
'show_in_admin_status_list' => true,
|
515 |
'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'learnpress' )
|
516 |
);
|
517 |
+
// $lp_order_statuses['lp-on-hold'] = array(
|
518 |
+
// 'label' => _x( 'On Hold', 'Order status', 'learnpress' ),
|
519 |
+
// 'public' => false,
|
520 |
+
// 'exclude_from_search' => false,
|
521 |
+
// 'show_in_admin_all_list' => true,
|
522 |
+
// 'show_in_admin_status_list' => true,
|
523 |
+
// 'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'learnpress' )
|
524 |
+
// );
|
525 |
+
// $lp_order_statuses['lp-refunded'] = array(
|
526 |
+
// 'label' => _x( 'Refunded', 'Order status', 'learnpress' ),
|
527 |
+
// 'public' => false,
|
528 |
+
// 'exclude_from_search' => false,
|
529 |
+
// 'show_in_admin_all_list' => true,
|
530 |
+
// 'show_in_admin_status_list' => true,
|
531 |
+
// 'label_count' => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'learnpress' )
|
532 |
+
// );
|
533 |
+
// $lp_order_statuses['lp-failed'] = array(
|
534 |
+
// 'label' => _x( 'Failed', 'Order status', 'learnpress' ),
|
535 |
+
// 'public' => false,
|
536 |
+
// 'exclude_from_search' => false,
|
537 |
+
// 'show_in_admin_all_list' => true,
|
538 |
+
// 'show_in_admin_status_list' => true,
|
539 |
+
// 'label_count' => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'learnpress' )
|
540 |
+
// );
|
541 |
foreach ( $lp_order_statuses as $status => $args ) {
|
542 |
register_post_status( $status, $args );
|
543 |
}
|
inc/custom-post-types/quiz.php
CHANGED
@@ -553,10 +553,6 @@ if ( !class_exists( 'LP_Quiz_Post_Type' ) ) {
|
|
553 |
|
554 |
public function get_sample_permalink_html( $return, $post_id , $new_title, $new_slug, $post ) {
|
555 |
|
556 |
-
if ( $post->post_type == 'lp_quiz' ) {
|
557 |
-
var_dump($return);
|
558 |
-
}
|
559 |
-
|
560 |
return $return;
|
561 |
|
562 |
}
|
553 |
|
554 |
public function get_sample_permalink_html( $return, $post_id , $new_title, $new_slug, $post ) {
|
555 |
|
|
|
|
|
|
|
|
|
556 |
return $return;
|
557 |
|
558 |
}
|
inc/lp-constants.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*/
|
5 |
$upload_dir = wp_upload_dir();
|
6 |
// version
|
7 |
-
define( 'LEARNPRESS_VERSION', '2.0
|
8 |
|
9 |
define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
|
10 |
|
4 |
*/
|
5 |
$upload_dir = wp_upload_dir();
|
6 |
// version
|
7 |
+
define( 'LEARNPRESS_VERSION', '2.1.0' );
|
8 |
|
9 |
define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
|
10 |
|
inc/lp-core-functions.php
CHANGED
@@ -22,7 +22,7 @@ function learn_press_get_post() {
|
|
22 |
if ( empty( $post_id ) ) {
|
23 |
$post_id = learn_press_get_request( 'post_ID' );
|
24 |
}
|
25 |
-
return absint($post_id);
|
26 |
}
|
27 |
|
28 |
/**
|
@@ -418,88 +418,88 @@ add_action( 'admin_footer', 'learn_press_print_script' );
|
|
418 |
/* Advertise in page admin */
|
419 |
if ( !function_exists( 'leanrpress_advertise_in_admin' ) ) {
|
420 |
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
|
444 |
if ( ( in_array( $screen->post_type, $admin_post_type ) && $screen->base === 'edit' )
|
445 |
|| ( in_array( $screen->id, $pages ) )
|
446 |
) {
|
447 |
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
}
|
501 |
-
|
502 |
-
add_action( 'admin_footer', 'leanrpress_advertise_in_admin', -10 );
|
503 |
|
504 |
/**
|
505 |
* @param string $str
|
@@ -509,7 +509,7 @@ function learn_press_email_new_line( $lines = 1, $str = "\r\n" ) {
|
|
509 |
echo str_repeat( $str, $lines );
|
510 |
}
|
511 |
|
512 |
-
if ( !function_exists( '
|
513 |
|
514 |
/**
|
515 |
* is_ajax - Returns true when the page is loaded via ajax.
|
@@ -517,7 +517,7 @@ if ( !function_exists( 'is_ajax' ) ) {
|
|
517 |
* @access public
|
518 |
* @return bool
|
519 |
*/
|
520 |
-
function
|
521 |
return defined( 'LP_DOING_AJAX' ) && LP_DOING_AJAX;
|
522 |
}
|
523 |
}
|
@@ -1495,10 +1495,7 @@ function learn_press_send_json( $data ) {
|
|
1495 |
@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
|
1496 |
echo wp_json_encode( $data );
|
1497 |
echo '<!-- LP_AJAX_END -->';
|
1498 |
-
|
1499 |
-
wp_die();
|
1500 |
-
else
|
1501 |
-
die;
|
1502 |
}
|
1503 |
|
1504 |
/**
|
@@ -2652,7 +2649,7 @@ function learn_press_get_students_list_filter() {
|
|
2652 |
}
|
2653 |
|
2654 |
|
2655 |
-
function learn_press_debug_hidden(){
|
2656 |
$args = func_get_args();
|
2657 |
echo '<div class="learn-press-debug-hidden" style="display:none;">';
|
2658 |
call_user_func_array( 'learn_press_debug', $args );
|
22 |
if ( empty( $post_id ) ) {
|
23 |
$post_id = learn_press_get_request( 'post_ID' );
|
24 |
}
|
25 |
+
return absint( $post_id );
|
26 |
}
|
27 |
|
28 |
/**
|
418 |
/* Advertise in page admin */
|
419 |
if ( !function_exists( 'leanrpress_advertise_in_admin' ) ) {
|
420 |
|
421 |
+
function leanrpress_advertise_in_admin() {
|
422 |
+
|
423 |
+
$admin_post_type = array(
|
424 |
+
'lp_course',
|
425 |
+
'lp_lesson',
|
426 |
+
'lp_quiz',
|
427 |
+
'lp_question',
|
428 |
+
'lp_order'
|
429 |
+
);
|
430 |
+
$pages = array(
|
431 |
+
'learnpress_page_learn-press-statistics',
|
432 |
+
'learnpress_page_learn-press-settings',
|
433 |
+
'learnpress_page_learn-press-tools'
|
434 |
+
|
435 |
+
);
|
436 |
+
$themes_id = array(
|
437 |
+
'14058034' => 'eduma',
|
438 |
+
'17097658' => 'coach',
|
439 |
+
'11797847' => 'lms'
|
440 |
+
);
|
441 |
+
|
442 |
+
$screen = get_current_screen();
|
443 |
|
444 |
if ( ( in_array( $screen->post_type, $admin_post_type ) && $screen->base === 'edit' )
|
445 |
|| ( in_array( $screen->id, $pages ) )
|
446 |
) {
|
447 |
|
448 |
+
$current_theme = wp_get_theme();
|
449 |
+
|
450 |
+
// Get items education
|
451 |
+
$list_themes = learn_press_related_theme();
|
452 |
+
|
453 |
+
foreach ( $list_themes as $key => $theme ) {
|
454 |
+
|
455 |
+
if ( !array_key_exists( $theme['id'], $themes_id ) || $themes_id[$theme['id']] === $current_theme->name ) {
|
456 |
+
unset( $list_themes[$key] );
|
457 |
+
}
|
458 |
+
}
|
459 |
+
shuffle( $list_themes );
|
460 |
+
?>
|
461 |
+
<div id="learn-press-add-ons-wrap" class="learnpress-advertis-admin">
|
462 |
+
<?php
|
463 |
+
foreach ( $list_themes as $theme ) {
|
464 |
+
$theme['url'] .= '?ref=ThimPress&utm_source=lp-backend&utm_medium=lp-addondashboard';
|
465 |
+
$url_demo = $theme['attributes'][4]['value'] . '?ref=ThimPress&utm_source=lp-backend&utm_medium=lp-addondashboard';
|
466 |
+
|
467 |
+
$theme['description'] = preg_replace( '/(?<=\S,)(?=\S)/', ' ', $theme['description'] );
|
468 |
+
$theme['description'] = str_replace( "\n", ' ', $theme['description'] );
|
469 |
+
$theme['description'] = explode( " ", $theme['description'] );
|
470 |
+
$theme['description'] = array_splice( $theme['description'], 0, sizeof( $theme['description'] ) - 1 );
|
471 |
+
$theme['description'] = implode( " ", $theme['description'] ) . " ...";
|
472 |
+
?>
|
473 |
+
<div id="thimpress-<?php echo esc_attr( $theme['id'] ); ?>" class="item">
|
474 |
+
<div class="theme-thumbnail">
|
475 |
+
<a href="<?php echo esc_url( $theme['url'] ); ?>">
|
476 |
+
<img src="<?php echo esc_url( $theme['previews']['landscape_preview']['landscape_url'] ) ?>" />
|
477 |
+
</a>
|
478 |
+
</div>
|
479 |
+
|
480 |
+
<div class="theme-detail">
|
481 |
+
<h2><a href="<?php echo esc_url( $theme['url'] ); ?>"><?php echo $theme['name']; ?></a></h2>
|
482 |
+
<p class="learpress-description">
|
483 |
+
<?php echo wp_kses_post( $theme['description'] ); ?>
|
484 |
+
</p>
|
485 |
+
<p class="theme-controls">
|
486 |
+
<a href="<?php echo esc_url( $theme['url'] ); ?>" class="button button-primary" target="_blank"><?php _e( 'Get it now', 'learnpress' ); ?></a>
|
487 |
+
<a href="<?php echo esc_url( $url_demo ); ?>" class="button" target="_blank"><?php _e( 'View Demo', 'learnpress' ); ?></a>
|
488 |
+
</p>
|
489 |
+
</div>
|
490 |
+
|
491 |
+
</div>
|
492 |
+
<?php
|
493 |
+
}
|
494 |
+
?>
|
495 |
+
</div>
|
496 |
+
<?php
|
497 |
+
}
|
498 |
+
|
499 |
+
}
|
500 |
+
}
|
501 |
+
|
502 |
+
add_action( 'admin_footer', 'leanrpress_advertise_in_admin', - 10 );
|
503 |
|
504 |
/**
|
505 |
* @param string $str
|
509 |
echo str_repeat( $str, $lines );
|
510 |
}
|
511 |
|
512 |
+
if ( !function_exists( 'learn_press_is_ajax' ) ) {
|
513 |
|
514 |
/**
|
515 |
* is_ajax - Returns true when the page is loaded via ajax.
|
517 |
* @access public
|
518 |
* @return bool
|
519 |
*/
|
520 |
+
function learn_press_is_ajax() {
|
521 |
return defined( 'LP_DOING_AJAX' ) && LP_DOING_AJAX;
|
522 |
}
|
523 |
}
|
1495 |
@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
|
1496 |
echo wp_json_encode( $data );
|
1497 |
echo '<!-- LP_AJAX_END -->';
|
1498 |
+
die;
|
|
|
|
|
|
|
1499 |
}
|
1500 |
|
1501 |
/**
|
2649 |
}
|
2650 |
|
2651 |
|
2652 |
+
function learn_press_debug_hidden() {
|
2653 |
$args = func_get_args();
|
2654 |
echo '<div class="learn-press-debug-hidden" style="display:none;">';
|
2655 |
call_user_func_array( 'learn_press_debug', $args );
|
inc/order/lp-order-functions.php
CHANGED
@@ -655,11 +655,11 @@ function learn_press_get_order_statuses( $prefix = true ) {
|
|
655 |
$prefix . 'pending' => _x( 'Pending', 'Order status', 'learnpress' ),
|
656 |
$prefix . 'processing' => _x( 'Processing', 'Order status', 'learnpress' ),
|
657 |
$prefix . 'completed' => _x( 'Completed', 'Order status', 'learnpress' ),
|
658 |
-
$prefix . 'on-hold' => _x( 'On Hold', 'Order status', 'learnpress' ),
|
659 |
-
$prefix . 'refunded' => _x( 'Refunded', 'Order status', 'learnpress' ),
|
660 |
-
$prefix . 'failed' => _x( 'Failed', 'Order status', 'learnpress' ),
|
661 |
$prefix . 'cancelled' => _x( 'Cancelled', 'Order status', 'learnpress' )
|
662 |
-
|
|
|
|
|
|
|
663 |
|
664 |
return apply_filters( 'learn_press_order_statuses', $order_statuses );
|
665 |
}
|
@@ -668,12 +668,12 @@ function _learn_press_get_order_status_description( $status ) {
|
|
668 |
static $descriptions = null;
|
669 |
$descriptions = array(
|
670 |
'lp-pending' => __( 'Order received in case user buy a course but doesn\'t finalise the order.', 'learnpress' ),
|
671 |
-
'lp-failed' => __( 'Payment failed or was declined (unpaid).', 'learnpress' ),
|
672 |
'lp-processing' => __( 'Payment received and the order is awaiting fulfillment.', 'learnpress' ),
|
673 |
'lp-completed' => __( 'Order fulfilled and complete.', 'learnpress' ),
|
674 |
-
'lp-
|
675 |
-
'lp-
|
676 |
-
'lp-
|
|
|
677 |
);
|
678 |
return apply_filters( 'learn_press_order_status_description', !empty( $descriptions[$status] ) ? $descriptions[$status] : '' );
|
679 |
}
|
655 |
$prefix . 'pending' => _x( 'Pending', 'Order status', 'learnpress' ),
|
656 |
$prefix . 'processing' => _x( 'Processing', 'Order status', 'learnpress' ),
|
657 |
$prefix . 'completed' => _x( 'Completed', 'Order status', 'learnpress' ),
|
|
|
|
|
|
|
658 |
$prefix . 'cancelled' => _x( 'Cancelled', 'Order status', 'learnpress' )
|
659 |
+
// $prefix . 'refunded' => _x( 'Refunded', 'Order status', 'learnpress' ),
|
660 |
+
// $prefix . 'failed' => _x( 'Failed', 'Order status', 'learnpress' ),
|
661 |
+
// $prefix . 'on-hold' => _x( 'On Hold', 'Order status', 'learnpress' ),
|
662 |
+
);
|
663 |
|
664 |
return apply_filters( 'learn_press_order_statuses', $order_statuses );
|
665 |
}
|
668 |
static $descriptions = null;
|
669 |
$descriptions = array(
|
670 |
'lp-pending' => __( 'Order received in case user buy a course but doesn\'t finalise the order.', 'learnpress' ),
|
|
|
671 |
'lp-processing' => __( 'Payment received and the order is awaiting fulfillment.', 'learnpress' ),
|
672 |
'lp-completed' => __( 'Order fulfilled and complete.', 'learnpress' ),
|
673 |
+
'lp-cancelled' => __( 'The order is cancelled by an admin or the customer.', 'learnpress' )
|
674 |
+
// 'lp-on-hold' => __( 'Awaiting payment.', 'learnpress' ),
|
675 |
+
// 'lp-failed' => __( 'Payment failed or was declined (unpaid).', 'learnpress' ),
|
676 |
+
// 'lp-refunded' => __( 'Refunded is to indicate that the refund to the customer has been sent.', 'learnpress' )
|
677 |
);
|
678 |
return apply_filters( 'learn_press_order_status_description', !empty( $descriptions[$status] ) ? $descriptions[$status] : '' );
|
679 |
}
|
inc/user/lp-user-functions.php
CHANGED
@@ -925,7 +925,7 @@ function _learn_press_before_purchase_course_handler( $course_id, $cart ) {
|
|
925 |
if ( $redirect !== false ) {
|
926 |
learn_press_add_message( __( 'Please login to enroll this course', 'learnpress' ) );
|
927 |
|
928 |
-
if (
|
929 |
learn_press_send_json(
|
930 |
array(
|
931 |
'redirect' => $redirect,
|
925 |
if ( $redirect !== false ) {
|
926 |
learn_press_add_message( __( 'Please login to enroll this course', 'learnpress' ) );
|
927 |
|
928 |
+
if ( learn_press_is_ajax() ) {
|
929 |
learn_press_send_json(
|
930 |
array(
|
931 |
'redirect' => $redirect,
|
learnpress.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: LearnPress
|
|
4 |
Plugin URI: http://thimpress.com/learnpress
|
5 |
Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
|
6 |
Author: ThimPress
|
7 |
-
Version: 2.0
|
8 |
Author URI: http://thimpress.com
|
9 |
Requires at least: 3.8
|
10 |
Tested up to: 4.7
|
4 |
Plugin URI: http://thimpress.com/learnpress
|
5 |
Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
|
6 |
Author: ThimPress
|
7 |
+
Version: 2.1.0
|
8 |
Author URI: http://thimpress.com
|
9 |
Requires at least: 3.8
|
10 |
Tested up to: 4.7
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link:
|
|
4 |
Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.7
|
7 |
-
Stable tag: 2.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -193,8 +193,10 @@ https://www.transifex.com/projects/p/learnpress/
|
|
193 |
8. Add-ons of LearnPress.
|
194 |
|
195 |
== Changelog ==
|
196 |
-
= 2.0
|
197 |
-
+ Fixed
|
|
|
|
|
198 |
|
199 |
= 2.0.9 =
|
200 |
+ Improved some sections in admin
|
4 |
Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.7
|
7 |
+
Stable tag: 2.1.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
193 |
8. Add-ons of LearnPress.
|
194 |
|
195 |
== Changelog ==
|
196 |
+
= 2.1.0 =
|
197 |
+
+ Fixed bugs related to AJAX calling
|
198 |
+
+ Fixed bugs related to updating user profile
|
199 |
+
+ Fixed open question to new tab in quiz editor
|
200 |
|
201 |
= 2.0.9 =
|
202 |
+ Improved some sections in admin
|