PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.0
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 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.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 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.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / WordPress / LineItemStateService.php
surecart / app / src / WordPress Last commit date
Admin 2 years ago Assets 2 years ago Pages 3 years ago PostTypes 2 years ago Shortcodes 2 years ago Sitemap 2 years ago Templates 2 years ago Users 3 years ago ActionsService.php 3 years ago CompatibilityService.php 2 years ago HealthService.php 2 years ago LineItemStateService.php 2 years ago PluginService.php 3 years ago PluginServiceProvider.php 2 years ago RecaptchaValidationService.php 2 years ago StateService.php 2 years ago ThemeService.php 2 years ago ThemeServiceProvider.php 3 years ago TranslationsServiceProvider.php 3 years ago
LineItemStateService.php
84 lines
1 <?php
2
3 namespace SureCart\WordPress;
4
5 /**
6 * LineItemStateService class
7 */
8 class LineItemStateService {
9 /**
10 * Keeps track of already parsed blocks.
11 *
12 * @var array
13 */
14 protected static $parsed_blocks = [];
15
16 /**
17 * Get existing line items from the checkout.
18 *
19 * @param string $store The store name.
20 * @param string $key The key to get.
21 */
22 public function get( $store = 'checkout', $key = 'initialLineItems' ) {
23 $initial = sc_initial_state();
24 return ! empty( $initial[ $store ][ $key ] ) ? $initial[ $store ][ $key ] : [];
25 }
26
27 /**
28 * Add line items to the checkout.
29 *
30 * @param array $line_items The line items to add.
31 * @param string $store The store name.
32 * @param string $key The key to get.
33 *
34 * @return array The new line items.
35 */
36 public function merge( $line_items = [], $store = 'checkout', $key = 'initialLineItems' ) {
37 $initial = sc_initial_state();
38 $initial_items = $initial[ $store ][ $key ] ?? [];
39
40 // filter out any line items that were already added.
41 $merged_line_items = array_filter(
42 $line_items,
43 function ( $line_item ) use ( $initial_items ) {
44 // if the line item does not exist, add it.
45 return ! $this->lineItemExists( $line_item, $initial_items );
46 }
47 );
48
49 return array_merge( $initial_items, $merged_line_items );
50 }
51
52 /**
53 * Does the line item exist?
54 *
55 * @param array $line_item The line item to check.
56 *
57 * @return boolean
58 */
59 public function lineItemExists( $line_item, $line_items ) {
60 return array_reduce(
61 $line_items,
62 function ( $carry, $existing_line_item ) use ( $line_item ) {
63 $existing_price_id = $existing_line_item['price_id'] ?? $existing_line_item['price'] ?? null;
64 $existing_variant_id = $existing_line_item['variant_id'] ?? $existing_line_item['variant'] ?? null;
65 $price_id = $line_item['price_id'] ?? $line_item['price'] ?? null;
66 $variant_id = $line_item['variant_id'] ?? $line_item['variant'] ?? null;
67
68 if ( (bool) $existing_variant_id && (bool) $variant_id && $existing_variant_id === $variant_id ) {
69 if ( $existing_price_id === $price_id ) {
70 return true;
71 }
72 }
73
74 if ( (bool) $existing_price_id && (bool) $price_id && $existing_price_id === $price_id ) {
75 return true;
76 }
77
78 return $carry;
79 },
80 false
81 );
82 }
83 }
84