diff --git a/models/EnrollmentModel.php b/models/EnrollmentModel.php index 5160c743a0..8a04f67261 100644 --- a/models/EnrollmentModel.php +++ b/models/EnrollmentModel.php @@ -172,48 +172,51 @@ public static function is_enrolled( $course_id = 0, $user_id = 0, bool $is_compl global $wpdb; $course_id = tutor_utils()->get_post_id( $course_id ); $user_id = tutor_utils()->get_user_id( $user_id ); + $cache_key = "tutor_is_enrolled_{$course_id}_{$user_id}_{$is_complete}"; + $cached = TutorCache::get( $cache_key ); - do_action( 'tutor_is_enrolled_before', $course_id, $user_id ); + if ( false !== $cached ) { + return $cached; + } - $get_enrolled_info = TutorCache::get( $cache_key ); - if ( ! $get_enrolled_info ) { - $status_clause = ''; - if ( $is_complete ) { - $status_clause = $wpdb->prepare( 'AND post_status = %s ', self::STATUS_COMPLETED ); - } + do_action( 'tutor_is_enrolled_before', $course_id, $user_id ); - //phpcs:disable - $get_enrolled_info = $wpdb->get_row( - $wpdb->prepare( - "SELECT ID, - post_author, - post_date, - post_date_gmt, - post_title - FROM {$wpdb->posts} - WHERE post_author > 0 - AND post_parent > 0 - AND post_type = %s - AND post_parent = %d - AND post_author = %d - {$status_clause}; - ", - self::POST_TYPE, - $course_id, - $user_id - ) - ); - //phpcs:enable + $status_clause = ''; + if ( $is_complete ) { + $status_clause = $wpdb->prepare( 'AND post_status = %s ', self::STATUS_COMPLETED ); + } - if ( $get_enrolled_info ) { - $get_enrolled_info->order_id = (int) get_post_meta( $get_enrolled_info->ID, self::ENROLLMENT_ORDER_ID_META, true ); - $get_enrolled_info->product_id = (int) get_post_meta( $get_enrolled_info->ID, self::ENROLLMENT_PRODUCT_ID_META, true ); - } + //phpcs:disable + $get_enrolled_info = $wpdb->get_row( + $wpdb->prepare( + "SELECT ID, + post_author, + post_date, + post_date_gmt, + post_title + FROM {$wpdb->posts} + WHERE post_author > 0 + AND post_parent > 0 + AND post_type = %s + AND post_parent = %d + AND post_author = %d + {$status_clause}; + ", + self::POST_TYPE, + $course_id, + $user_id + ) + ); + //phpcs:enable - TutorCache::set( $cache_key, $get_enrolled_info ); + if ( $get_enrolled_info ) { + $get_enrolled_info->order_id = (int) get_post_meta( $get_enrolled_info->ID, self::ENROLLMENT_ORDER_ID_META, true ); + $get_enrolled_info->product_id = (int) get_post_meta( $get_enrolled_info->ID, self::ENROLLMENT_PRODUCT_ID_META, true ); } + TutorCache::set( $cache_key, $get_enrolled_info ); + if ( $get_enrolled_info ) { return apply_filters( 'tutor_is_enrolled', $get_enrolled_info, $course_id, $user_id ); } diff --git a/templates/dashboard/account/billing.php b/templates/dashboard/account/billing.php index 8c6d3c54ca..0778e49529 100644 --- a/templates/dashboard/account/billing.php +++ b/templates/dashboard/account/billing.php @@ -14,13 +14,14 @@ use Tutor\Components\Constants\Size; use Tutor\Components\Nav; use TUTOR\Dashboard; +use Tutor\Helpers\QueryHelper; use TUTOR\Icon; use TUTOR\Input; $user_id = get_current_user_id(); $current_tab = Input::get( 'tab', 'order-history' ); $replies = Input::get( 'replies', 0, Input::TYPE_INT ); -$order_filter = Input::get( 'order', 'DESC' ); +$order_filter = QueryHelper::get_valid_sort_order( Input::get( 'order', 'DESC' ) ); $current_page = max( 1, Input::get( 'current_page', 1, Input::TYPE_INT ) ); $item_per_page = tutor_utils()->get_option( 'pagination_per_page', 10 ); $offset = ( $current_page - 1 ) * $item_per_page; diff --git a/templates/dashboard/account/billing/order-history.php b/templates/dashboard/account/billing/order-history.php index 8d9e4afb5d..d2879aba69 100644 --- a/templates/dashboard/account/billing/order-history.php +++ b/templates/dashboard/account/billing/order-history.php @@ -7,6 +7,15 @@ * @author Themeum * @link https://themeum.com * @since 4.0.0 + * + * These variables are inherited from parent template. + * template: tutor/templates/dashboard/account/billing.php + * + * @var int $user_id The user ID. + * @var int $offset The offset for pagination. + * @var int $item_per_page The number of items per page. + * @var string $order_filter The order filter. + * @var int $current_page The current page. */ defined( 'ABSPATH' ) || exit; @@ -25,6 +34,7 @@ $monetize_by = tutor_utils()->get_option( 'monetize_by' ); if ( 'free' === $monetize_by ) { + EmptyState::make()->title( __( 'No Orders Found!', 'tutor' ) )->render(); return; }