PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.0
Tutor LMS – eLearning and online course solution v3.9.0
3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / ecommerce / Cart / NativeCart.php
tutor / ecommerce / Cart Last commit date
Contracts 1 year ago BaseCart.php 1 year ago CartFactory.php 1 year ago EddCart.php 1 year ago NativeCart.php 10 months ago WooCart.php 10 months ago
NativeCart.php
171 lines
1 <?php
2 /**
3 * Handle native cart logics
4 *
5 * @package Tutor\Ecommerce
6 * @author Themeum
7 * @link https://themeum.com
8 * @since 3.5.0
9 */
10
11 namespace Tutor\Ecommerce\Cart;
12
13 use Tutor\Ecommerce\Cart\Contracts\CartInterface;
14 use Tutor\Ecommerce\CartController;
15 use Tutor\Models\CartModel;
16 use TutorPro\Ecommerce\GuestCheckout\GuestCart;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit;
20 }
21 /**
22 * Class for managing native cart functions
23 *
24 * @since 3.5.0
25 */
26 class NativeCart extends BaseCart implements CartInterface {
27
28 /**
29 * Cart model
30 *
31 * @var CartModel
32 */
33 private $cart_model;
34
35 /**
36 * Initialize vars
37 *
38 * @since 3.5.0
39 */
40 public function __construct() {
41 parent::__construct();
42 $this->cart_model = new CartModel();
43 }
44
45 /**
46 * Add to cart
47 *
48 * @since 3.5.0
49 *
50 * @param int $item_id Item id to add to cart.
51 *
52 * @return bool
53 */
54 public function add( int $item_id ): bool {
55 if ( $this->is_item_exists( $item_id ) ) {
56 $this->cart_error = __( 'Item already exists in cart', 'tutor' );
57 return false;
58 }
59 if ( ! $this->user_id ) {
60 try {
61 GuestCart::add_cart_item( $item_id );
62 return true;
63 } catch ( \Throwable $th ) {
64 return false;
65 }
66 }
67
68 return (bool) $this->cart_model->add_course_to_cart( $this->user_id, $item_id );
69 }
70
71 /**
72 * Remove an item from cart
73 *
74 * @since 3.5.0
75 *
76 * @param integer $item_id Item id to add to cart.
77 *
78 * @return boolean
79 */
80 public function remove( int $item_id ): bool {
81 if ( $this->user_id ) {
82 return $this->cart_model->delete_cart_item( $item_id );
83 } else {
84 try {
85 GuestCart::delete_cart_item( $item_id );
86 return true;
87 } catch ( \Throwable $th ) {
88 return false;
89 }
90 }
91 }
92
93 /**
94 * Clear the cart entirely
95 *
96 * @since 3.5.0
97 *
98 * @return boolean
99 */
100 public function clear_cart(): bool {
101 // @TODO
102 return false;
103 }
104
105
106 /**
107 * Get cart items
108 *
109 * @since 3.5.0
110 *
111 * @return array Array of objects
112 */
113 public function get_cart_items(): array {
114 $items = array();
115 $cart_items = $this->user_id ? $this->cart_model->get_cart_items( $this->user_id ) : GuestCart::get_cart_items();
116 if ( $this->user_id ) {
117 $cart_items = $this->cart_model->get_cart_items( $this->user_id );
118 if ( is_array( $cart_items ) && ! empty( $cart_items['courses']['results'] ) ) {
119 foreach ( $cart_items['courses']['results'] as $cart_item ) {
120 $item = (object) array(
121 'id' => $cart_item->ID,
122 'title' => $cart_item->post_title,
123 );
124
125 $items[] = $item;
126 }
127 }
128 } else {
129 $cart_items = GuestCart::get_cart_items();
130 $items = array_map(
131 function( $item ) {
132 return (object) array(
133 'id' => $item,
134 'title' => get_the_title( $item ),
135 );
136 },
137 $cart_items
138 );
139 }
140
141 return $items;
142 }
143
144 /**
145 * Get cart page url to view the cart
146 *
147 * @since 3.5.0
148 *
149 * @return string
150 */
151 public function get_cart_url(): string {
152 return CartController::get_page_url();
153 }
154
155 /**
156 * Check if item exists in cart
157 *
158 * @since 3.5.0
159 *
160 * @param int $item_id Item id.
161 *
162 * @return bool
163 */
164 public function is_item_exists( int $item_id ): bool {
165 if ( $this->user_id ) {
166 return $this->cart_model->is_course_in_user_cart( $this->user_id, $item_id );
167 }
168 return GuestCart::is_item_exists( $item_id );
169 }
170 }
171