PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 / BlockLibrary / CartMigrationService.php
surecart / app / src / BlockLibrary Last commit date
BlockAnchorSupportService.php 1 year ago BlockPatternsService.php 1 year ago BlockService.php 1 year ago BlockServiceProvider.php 1 year ago BlockStylesService.php 1 year ago BlockValidationService.php 2 years ago CartMenuIconMigrationService.php 1 year ago CartMigrationService.php 1 year ago FormModeSwitcherService.php 1 year ago ProductCollectionBadgesMigrationService.php 1 year ago ProductListMigrationService.php 1 year ago ProductListService.php 1 year ago ProductPageBlocksMigrationService.php 1 year ago ProductPriceChoicesMigrationService.php 1 year ago ProductSelectedPriceMigrationService.php 1 year ago ProductVariantsMigrationService.php 1 year ago URLParamService.php 1 year ago
CartMigrationService.php
203 lines
1 <?php
2
3 namespace SureCart\BlockLibrary;
4
5 /**
6 * Provide cart migration functionality.
7 */
8 class CartMigrationService {
9 /**
10 * Attributes.
11 *
12 * @var string
13 */
14 public array $attributes = array();
15
16 /**
17 * Block.
18 *
19 * @var string
20 */
21 public ?object $block;
22
23 /**
24 * Block HTML.
25 *
26 * @var string
27 */
28 public string $block_html = '';
29
30 /**
31 * Inner Blocks.
32 *
33 * @var array
34 */
35 public array $inner_blocks = array();
36
37 /**
38 * Set the initial variables.
39 *
40 * @param array $attributes Attributes.
41 * @param object $block Block.
42 */
43 public function __construct( $attributes = array(), $block = null ) {
44 $this->attributes = $attributes;
45 $this->block = $block;
46 $this->inner_blocks = $block->parsed_block['innerBlocks'] ?? [];
47 }
48
49 /**
50 * Get the Child Blocks Attributes.
51 *
52 * @param string $block_name Block Name.
53 * @return array Child Blocks Attributes.
54 */
55 public function getChildBlocksAttributes( $block_name ) {
56 if ( empty( $this->inner_blocks ) ) {
57 return array();
58 }
59
60 foreach ( $this->inner_blocks as $block ) {
61 if ( $block['blockName'] === $block_name ) {
62 return $block['attrs'];
63 }
64 }
65
66 return array();
67 }
68
69 /**
70 * Render the cart header element.
71 *
72 * @return void
73 */
74 public function renderCartHeader(): void {
75 $cart_header_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-header' ), JSON_FORCE_OBJECT );
76 $this->block_html .= '<!-- wp:surecart/slide-out-cart-header ' . $cart_header_attrs . ' /-->';
77 }
78
79 /**
80 * Render the cart items element.
81 *
82 * @return void
83 */
84 public function renderCartItems(): void {
85 $cart_items_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-items' ), JSON_FORCE_OBJECT );
86 $this->block_html .= '<!-- wp:surecart/slide-out-cart-items ' . $cart_items_attrs . ' /-->';
87 }
88
89 /**
90 * Render the cart coupon element.
91 *
92 * @return void
93 */
94 public function renderCartCoupon(): void {
95 $cart_coupon_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-coupon' ), JSON_FORCE_OBJECT );
96 $this->block_html .= '<!-- wp:surecart/slide-out-cart-coupon ' . $cart_coupon_attrs . ' /-->';
97 }
98
99 /**
100 * Render the cart subtotal element.
101 *
102 * @return void
103 */
104 public function renderCartSubtotal(): void {
105 $cart_subtotal_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-subtotal' ), JSON_FORCE_OBJECT );
106 $this->block_html .= '<!-- wp:surecart/slide-out-cart-subtotal ' . $cart_subtotal_attrs . ' /-->';
107 }
108
109 /**
110 * Render the cart bump line item element.
111 *
112 * @return void
113 */
114 public function renderCartBumpLineItem(): void {
115 $cart_bump_line_item_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-bump-line-item' ), JSON_FORCE_OBJECT );
116 $this->block_html .= '<!-- wp:surecart/slide-out-cart-bump-line-item ' . $cart_bump_line_item_attrs . ' /-->';
117 }
118
119 /**
120 * Render the cart submit element.
121 *
122 * @return void
123 */
124 public function renderCartSubmit(): void {
125 $cart_submit_attrs = wp_json_encode( $this->getChildBlocksAttributes( 'surecart/cart-submit' ), JSON_FORCE_OBJECT );
126 $this->block_html .= '<!-- wp:surecart/slide-out-cart-submit ' . $cart_submit_attrs . ' /-->';
127 }
128
129 /**
130 * Render the cart message element.
131 *
132 * @return void
133 */
134 public function renderCartMessage(): void {
135 $cart_message_attrs = $this->getChildBlocksAttributes( 'surecart/cart-message' );
136 if ( empty( $cart_message_attrs['text'] ) ) {
137 return;
138 }
139
140 $cart_message_attrs = wp_json_encode( $cart_message_attrs, JSON_FORCE_OBJECT );
141 $this->block_html .= '<!-- wp:surecart/slide-out-cart-message ' . $cart_message_attrs . ' /-->';
142 }
143
144 /**
145 * Render the cart template.
146 *
147 * @return void
148 */
149 public function renderCartTemplate(): void {
150 $cart_block_attrs = wp_json_encode( $this->attributes, JSON_FORCE_OBJECT );
151 $this->block_html .= '<!-- wp:surecart/slide-out-cart ' . $cart_block_attrs . ' -->';
152
153 // Render according to the inner blocks order in old block.
154 if ( ! empty( $this->inner_blocks ) ) {
155 foreach ( $this->inner_blocks as $inner_block ) {
156 switch ( $inner_block['blockName'] ) {
157 case 'surecart/cart-header':
158 $this->renderCartHeader();
159 break;
160 case 'surecart/cart-items':
161 $this->renderCartItems();
162 break;
163 case 'surecart/cart-coupon':
164 $this->renderCartCoupon();
165 break;
166 case 'surecart/cart-subtotal':
167 $this->renderCartSubtotal();
168 break;
169 case 'surecart/cart-bump-line-item':
170 $this->renderCartBumpLineItem();
171 break;
172 case 'surecart/cart-submit':
173 $this->renderCartSubmit();
174 break;
175 case 'surecart/cart-message':
176 $this->renderCartMessage();
177 break;
178 }
179 }
180 }
181 $this->block_html .= '<!-- /wp:surecart/slide-out-cart -->';
182 }
183
184 /**
185 * Render the blocks.
186 *
187 * @return string
188 */
189 public function doBlocks(): string {
190 return do_blocks( $this->block_html );
191 }
192
193 /**
194 * Render the new cart block.
195 *
196 * @return string
197 */
198 public function render(): string {
199 $this->renderCartTemplate();
200 return $this->doBlocks();
201 }
202 }
203