PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.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 / Migration / ProductPageWrapperService.php
surecart / app / src / Migration Last commit date
ProductPageWrapperService.php 1 year ago
ProductPageWrapperService.php
114 lines
1 <?php
2
3 namespace SureCart\Migration;
4
5 /**
6 * Product page wrapper service.
7 */
8 class ProductPageWrapperService {
9
10 /**
11 * Content of the page.
12 *
13 * @var string
14 */
15 protected $content = '';
16
17 /**
18 * Constructor.
19 *
20 * @param string $content Content of the page.
21 *
22 * @return void
23 */
24 public function __construct( $content ) {
25 $this->content = $content;
26 }
27
28 /**
29 * Has product page wrapper.
30 *
31 * @return boolean
32 */
33 public function hasProductPageWrapper() {
34 return preg_match( '/wp:surecart\/product-page|data-sc-block-id\s*=\s*(?:"product-page"|\'product-page\'|\\"product-page\\"|\\\'product-page\\\')/', $this->content );
35 }
36
37 /**
38 * Has any surecart product block.
39 *
40 * @return boolean
41 */
42 public function hasAnySureCartProductBlock(): bool {
43 // Check for blocks starting with wp:surecart/product- or wp:surecart/price-, or wp-surecart-product- or wp-surecart-price-.
44 return preg_match( '/wp:surecart\/product-|wp:surecart\/price-|wp-surecart-product-|wp-surecart-price-|class="wp-block-surecart-|data-widget_type="surecart-/', $this->content );
45 }
46
47 /**
48 * Has product buy button.
49 *
50 * @return boolean
51 */
52 public function hasProductBuyButton() {
53 return preg_match( '/wp:surecart\/product-buy-button|data-sc-block-id\s*=\s*(?:"product-buy-button"|\'product-buy-button\'|\\"product-buy-button\\"|\\\'product-buy-button\\\')/', $this->content );
54 }
55
56 /**
57 * Has custom amount block.
58 *
59 * @return boolean
60 */
61 public function hasCustomAmountBlock() {
62 return preg_match( '/wp:surecart\/custom-amount|data-sc-block-id\s*=\s*(?:"custom-amount"|\'custom-amount\'|\\"custom-amount\\"|\\\'custom-amount\\\')/', $this->content );
63 }
64
65 /**
66 * Add product page wrapper.
67 *
68 * @return string
69 */
70 public function addProductPageWrapper() {
71 return '<!-- wp:surecart/product-page {"align":"wide"} -->' . $this->content . '<!-- /wp:surecart/product-page -->';
72 }
73
74 /**
75 * Add custom amount block.
76 *
77 * @return string
78 */
79 public function addCustomAmountBlock() {
80 return str_replace(
81 '<div class="wp-block-button has-custom-width wp-block-button__width-100 wp-block-surecart-product-buy-button"',
82 '<!-- wp:surecart/product-selected-price-ad-hoc-amount /-->' . PHP_EOL . '<div class="wp-block-button has-custom-width wp-block-button__width-100 wp-block-surecart-product-buy-button"',
83 $this->content
84 );
85 }
86
87 /**
88 * Handle product page wrapper
89 *
90 * @return string
91 */
92 public function wrap(): string {
93 // need to be a product page.
94 if ( ! is_singular( 'sc_product' ) ) {
95 return $this->content;
96 }
97
98 // need to have a product buy button.
99 if ( ! $this->hasProductBuyButton() ) {
100 return $this->content;
101 }
102
103 if ( ! $this->hasProductPageWrapper() ) {
104 $this->content = $this->addProductPageWrapper();
105 }
106
107 if ( ! $this->hasCustomAmountBlock() ) {
108 $this->content = $this->addCustomAmountBlock();
109 }
110
111 return do_blocks( $this->content );
112 }
113 }
114