PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.1
Tutor LMS – eLearning and online course solution v3.7.1
4.0.0 3.9.15 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 1 year ago WooCart.php 1 year ago
NativeCart.php
137 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
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit;
19 }
20 /**
21 * Class for managing native cart functions
22 *
23 * @since 3.5.0
24 */
25 class NativeCart extends BaseCart implements CartInterface {
26
27 /**
28 * Cart model
29 *
30 * @var CartModel
31 */
32 private $cart_model;
33
34 /**
35 * Initialize vars
36 *
37 * @since 3.5.0
38 */
39 public function __construct() {
40 parent::__construct();
41 $this->cart_model = new CartModel();
42 }
43
44 /**
45 * Add to cart
46 *
47 * @since 3.5.0
48 *
49 * @param int $item_id Item id to add to cart.
50 *
51 * @return bool
52 */
53 public function add( int $item_id ): bool {
54 if ( $this->is_item_exists( $item_id ) ) {
55 $this->cart_error = __( 'Item already exists in cart', 'tutor' );
56 return false;
57 }
58
59 return (bool) $this->cart_model->add_course_to_cart( $this->user_id, $item_id );
60 }
61
62 /**
63 * Remove an item from cart
64 *
65 * @since 3.5.0
66 *
67 * @param integer $item_id Item id to add to cart.
68 *
69 * @return boolean
70 */
71 public function remove( int $item_id ): bool {
72 // @TODO
73 return false;
74 }
75
76 /**
77 * Clear the cart entirely
78 *
79 * @since 3.5.0
80 *
81 * @return boolean
82 */
83 public function clear_cart(): bool {
84 // @TODO
85 return false;
86 }
87
88
89 /**
90 * Get cart items
91 *
92 * @since 3.5.0
93 *
94 * @return array Array of objects
95 */
96 public function get_cart_items(): array {
97 $items = array();
98 $cart_items = $this->cart_model->get_cart_items( $this->user_id );
99 if ( is_array( $cart_items ) && ! empty( $cart_items['courses']['results'] ) ) {
100 foreach ( $cart_items['courses']['results'] as $cart_item ) {
101 $item = (object) array(
102 'id' => $cart_item->ID,
103 'title' => $cart_item->post_title,
104 );
105
106 $items[] = $item;
107 }
108 }
109
110 return $items;
111 }
112
113 /**
114 * Get cart page url to view the cart
115 *
116 * @since 3.5.0
117 *
118 * @return string
119 */
120 public function get_cart_url(): string {
121 return CartController::get_page_url();
122 }
123
124 /**
125 * Check if item exists in cart
126 *
127 * @since 3.5.0
128 *
129 * @param int $item_id Item id.
130 *
131 * @return bool
132 */
133 public function is_item_exists( int $item_id ): bool {
134 return $this->cart_model->is_course_in_user_cart( $this->user_id, $item_id );
135 }
136 }
137