PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.12
Tutor LMS – eLearning and online course solution v3.9.12
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 / WooCart.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
WooCart.php
156 lines
1 <?php
2 /**
3 * Woo cart logics handler
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
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18 /**
19 * Class for managing woocommere cart functions
20 *
21 * @since 3.5.0
22 */
23 class WooCart extends BaseCart implements CartInterface {
24
25 /**
26 * WC_Cart object
27 *
28 * @var WC_Cart
29 */
30 private $cart;
31
32 /**
33 * Constructor
34 *
35 * @since 3.5.0
36 */
37 public function __construct() {
38 parent::__construct();
39 $this->cart = WC()->cart;
40 }
41
42 /**
43 * Add to cart
44 *
45 * @since 3.5.0
46 *
47 * @param int $item_id Item id to add to cart.
48 *
49 * @return bool
50 */
51 public function add( int $item_id ): bool {
52 $wc_product_id = tutor_utils()->get_course_product_id( $item_id );
53 if ( ! $wc_product_id ) {
54 $this->cart_error = __( 'Woocommerce Product not found', 'tutor' );
55 return false;
56 }
57
58 if ( $this->is_item_exists( $item_id ) ) {
59 $this->cart_error = __( 'Item already exists in cart', 'tutor' );
60 return false;
61 } else {
62 return $this->cart->add_to_cart( $wc_product_id ) ? true : false;
63 }
64 }
65
66 /**
67 * Remove an item from cart
68 *
69 * @since 3.5.0
70 *
71 * @param integer $item_id Item id to add to cart.
72 *
73 * @return boolean
74 */
75 public function remove( int $item_id ): bool {
76 $product_id = tutor_utils()->get_course_product_id( $item_id );
77
78 if ( ! $product_id ) {
79 $this->cart_error = __( 'Product not found for course', 'tutor' );
80 return false;
81 }
82
83 foreach ( $this->cart->get_cart() as $cart_item_key => $cart_item ) {
84 if ( (int) $cart_item['product_id'] === $product_id ) {
85 $this->cart->remove_cart_item( $cart_item_key );
86 return true;
87 }
88 }
89
90 $this->cart_error = __( 'Item not found in cart', 'tutor' );
91 return false;
92 }
93
94 /**
95 * Clear the cart entirely
96 *
97 * @since 3.5.0
98 *
99 * @return bool
100 */
101 public function clear_cart(): bool {
102 $this->cart->empty_cart();
103 return true;
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 foreach ( $this->cart->get_cart() as $cart_item_key => $cart_item ) {
116 $product = $cart_item['data'];
117
118 $items[] = (object) array(
119 'key' => $cart_item_key,
120 'product_id' => $cart_item['product_id'],
121 'quantity' => $cart_item['quantity'],
122 'price' => $product->get_price(),
123 'name' => $product->get_name(),
124 'subtotal' => $this->cart->get_product_subtotal( $product, $cart_item['quantity'] ),
125 );
126 }
127
128 return $items;
129 }
130
131 /**
132 * Get cart page url to view the cart
133 *
134 * @since 3.5.0
135 *
136 * @return string
137 */
138 public function get_cart_url(): string {
139 return wc_get_cart_url();
140 }
141
142 /**
143 * Check if item exists in cart
144 *
145 * @since 3.5.0
146 *
147 * @param int $item_id Item id.
148 *
149 * @return bool
150 */
151 public function is_item_exists( int $item_id ): bool {
152 $product_id = tutor_utils()->get_course_product_id( $item_id );
153 return (bool) $this->cart->find_product_in_cart( $this->cart->generate_cart_id( $product_id ) );
154 }
155 }
156