文件操作 - CartController.php
返回文件管理
返回主菜单
删除本文件
文件: /home/www/public/wp-content/plugins/tutor/ecommerce/CartController.php
编辑文件内容
<?php /** * Manage Cart * * @package Tutor\Ecommerce * @author Themeum * @link https://themeum.com * @since 3.0.0 */ namespace Tutor\Ecommerce; use TUTOR\Course; use Tutor\Helpers\HttpHelper; use TUTOR\Input; use Tutor\Models\CartModel; use Tutor\Models\CourseModel; use Tutor\Traits\JsonResponse; if ( ! defined( 'ABSPATH' ) ) { exit; } /** * CartController class * * @since 3.0.0 */ class CartController { /** * Page slug for cart page * * @since 3.0.0 * * @var string */ public const PAGE_SLUG = 'cart'; /** * Page slug for cart page * * @since 3.0.0 * * @var string */ public const PAGE_ID_OPTION_NAME = 'tutor_cart_page_id'; /** * Cart model * * @since 3.0.0 * * @var CartModel */ private $model; /** * Trait for sending JSON response */ use JsonResponse; /** * Constructor. * * Initializes the Cart class, sets the page title, and optionally registers * hooks for handling AJAX requests related to cart data, bulk actions, cart updates, * and cart deletions. * * @param bool $register_hooks Whether to register hooks for handling requests. Default is true. * * @since 3.0.0 * * @return void */ public function __construct( $register_hooks = true ) { $this->model = new CartModel(); if ( $register_hooks ) { /** * Handle AJAX request for adding course to cart * * @since 3.0.0 */ add_action( 'wp_ajax_tutor_add_course_to_cart', array( $this, 'add_course_to_cart' ) ); /** * Handle AJAX request for deleting course from cart * * @since 3.0.0 */ add_action( 'wp_ajax_tutor_delete_course_from_cart', array( $this, 'delete_course_from_cart' ) ); add_filter( 'tutor_course_loop_add_to_cart_button', array( $this, 'restrict_add_to_cart_course_list' ), 10, 2 ); } } /** * Replace add to cart with buy now button on course list. * * @since 3.4.0 * * @param string $add_to_cart_btn the button content. * @param int $course_id the course id. * * @return string */ public function restrict_add_to_cart_course_list( $add_to_cart_btn, $course_id ) { $selling_option = Course::get_selling_option( $course_id ); $btn_class = apply_filters( 'tutor_enroll_required_login_class', ! is_user_logged_in() ? 'tutor-open-login-modal' : '' ); if ( tutor_utils()->is_addon_enabled( 'subscription' ) && Course::SELLING_OPTION_ONE_TIME !== $selling_option && in_array( $selling_option, Course::get_selling_options(), true ) ) { return $add_to_cart_btn; } if ( Settings::is_buy_now_enabled() ) { $checkout_page_url = add_query_arg( array( 'course_id' => $course_id ), CheckoutController::get_page_url() ); ob_start(); ?> <a href="<?php echo esc_url( $checkout_page_url ); ?>" class="tutor-btn tutor-course-list-btn tutor-btn-outline-primary tutor-btn-block <?php echo esc_attr( $btn_class ); ?>"> <?php esc_html_e( 'Buy Now', 'tutor' ); ?> </a> <?php $add_to_cart_btn = ob_get_clean(); } return $add_to_cart_btn; } /** * Create cart page * * @since 3.0.0 * * @return void */ public static function create_cart_page() { $page_id = self::get_page_id(); if ( ! $page_id ) { $args = array( 'post_title' => ucfirst( self::PAGE_SLUG ), 'post_content' => '', 'post_type' => 'page', 'post_status' => 'publish', ); $page_id = wp_insert_post( $args ); tutor_utils()->update_option( self::PAGE_ID_OPTION_NAME, $page_id ); } } /** * Get cart page url * * @since 3.0.0 * * @return string */ public static function get_page_url() { return get_post_permalink( self::get_page_id() ); } /** * Get cart page ID * * @since 3.0.0 * * @return string */ public static function get_page_id() { return (int) tutor_utils()->get_option( self::PAGE_ID_OPTION_NAME ); } /** * Get cart items * * @since 3.0.0 * * @return array */ public function get_cart_items() { $user_id = tutils()->get_user_id(); return apply_filters( 'tutor_cart_items', $this->model->get_cart_items( $user_id ), $user_id ); } /** * Get cart count. * * @since 3.0.0 * * @param int $user_id logged in user_id. * * @return int */ public function get_user_cart_item_count( $user_id = 0 ) { if ( ! $user_id ) { $user_id = tutils()->get_user_id(); } $cart_items = $this->model->get_cart_items( $user_id ); $cart_count = $cart_items['courses']['total_count']; return $cart_count; } /** * Add course to cart * * @since 3.0.0 * * @return void JSON response */ public function add_course_to_cart() { if ( ! tutor_utils()->is_nonce_verified() ) { $this->response_bad_request( tutor_utils()->error_message( 'nonce' ) ); } $user_id = tutils()->get_user_id(); $course_id = Input::post( 'course_id', 0, Input::TYPE_INT ); if ( ! CourseModel::is_course_accessible( $course_id ) ) { $this->response_bad_request( __( 'Cannot add to cart, course is not available for purchase.', 'tutor' ) ); } $can_buy = apply_filters( 'tutor_can_purchase_course', true, $course_id ); if ( is_wp_error( $can_buy ) ) { $this->response_bad_request( __( 'Cannot add to cart, enrollment is currently paused.', 'tutor' ) ); } // Check if the course already exists in the cart or not. $is_course_in_user_cart = $this->model->is_course_in_user_cart( $user_id, $course_id ); if ( $is_course_in_user_cart ) { $this->response_bad_request( __( 'The course is already in the cart.', 'tutor' ) ); } $response = $this->model->add_course_to_cart( $user_id, $course_id ); if ( $response ) { $this->json_response( __( 'The course was added to the cart successfully.', 'tutor' ), array( 'cart_page_url' => self::get_page_url(), 'cart_count' => self::get_user_cart_item_count( $user_id ), ), HttpHelper::STATUS_CREATED ); } else { $this->response_bad_request( __( 'Failed to add to cart.', 'tutor' ) ); } } /** * Delete course from cart * * @since 3.0.0 * * @return void JSON response */ public function delete_course_from_cart() { if ( ! tutor_utils()->is_nonce_verified() ) { $this->json_response( tutor_utils()->error_message( 'nonce' ), null, HttpHelper::STATUS_BAD_REQUEST ); } $user_id = tutils()->get_user_id(); $course_id = Input::post( 'course_id', 0, Input::TYPE_INT ); if ( ! $course_id ) { $this->json_response( __( 'Invalid course id.', 'tutor' ), null, HttpHelper::STATUS_BAD_REQUEST ); } $response = $this->model->delete_course_from_cart( $user_id, $course_id ); if ( $response ) { ob_start(); tutor_load_template( 'ecommerce.cart' ); $cart_template = ob_get_clean(); $data = array( 'cart_template' => $cart_template, 'cart_count' => self::get_user_cart_item_count( $user_id ), ); $this->json_response( __( 'The course was removed successfully.', 'tutor' ), $data, HttpHelper::STATUS_OK ); } else { $this->json_response( __( 'Course remove failed.', 'tutor' ), null, HttpHelper::STATUS_BAD_REQUEST ); } } }
修改文件时间
将文件时间修改为当前时间的前一年
删除文件