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 / Migration / ProductPageWrapperService.php
surecart / app / src / Migration Last commit date
ProductPageWrapperService.php 1 year ago
ProductPageWrapperService.php
104 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( '/data-sc-block-id=(?:"product-page"|\'product-page\'|\\"product-page\\"|\\\'product-page\\\')/', $this->content );
35 }
36
37 /**
38 * Has product buy button
39 *
40 * @return boolean
41 */
42 public function hasProductBuyButton() {
43 return preg_match( '/data-sc-block-id=(?:"product-buy-button"|\'product-buy-button\'|\\"product-buy-button\\"|\\\'product-buy-button\\\')/', $this->content );
44 }
45
46 /**
47 * Has custom amount block
48 *
49 * @return boolean
50 */
51 public function hasCustomAmountBlock() {
52 return preg_match( '/data-sc-block-id=(?:"custom-amount"|\'custom-amount\'|\\"custom-amount\\"|\\\'custom-amount\\\')/', $this->content );
53 }
54
55 /**
56 * Add product page wrapper
57 *
58 * @return string
59 */
60 public function addProductPageWrapper() {
61 return '<!-- wp:surecart/product-page {"align":"wide"} -->' . $this->content . '<!-- /wp:surecart/product-page -->';
62 }
63
64 /**
65 * Add custom amount block
66 *
67 * @return string
68 */
69 public function addCustomAmountBlock() {
70 return str_replace(
71 '<div class="wp-block-button has-custom-width wp-block-button__width-100 wp-block-surecart-product-buy-button"',
72 '<!-- 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"',
73 $this->content
74 );
75 }
76
77 /**
78 * Handle product page wrapper
79 *
80 * @return string
81 */
82 public function wrap(): string {
83 // need to be a product page.
84 if ( ! is_singular( 'sc_product' ) ) {
85 return $this->content;
86 }
87
88 // need to have a product buy button.
89 if ( ! $this->hasProductBuyButton() ) {
90 return $this->content;
91 }
92
93 if ( ! $this->hasProductPageWrapper() ) {
94 $this->content = $this->addProductPageWrapper();
95 }
96
97 if ( ! $this->hasCustomAmountBlock() ) {
98 $this->content = $this->addCustomAmountBlock();
99 }
100
101 return do_blocks( $this->content );
102 }
103 }
104