PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.11.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.11.2
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 / packages / blocks / Blocks / BaseBlock.php
surecart / packages / blocks / Blocks Last commit date
AddToCartButton 3 years ago Address 3 years ago BumpLineItem 3 years ago Button 3 years ago BuyButton 3 years ago Card 3 years ago Cart 3 years ago CartBumpLineItem 3 years ago CartCoupon 3 years ago CartHeader 3 years ago CartItems 3 years ago CartMenuButton 3 years ago CartMessage 3 years ago CartSubmit 3 years ago CartSubtotal 3 years ago Checkbox 3 years ago CheckoutErrors 3 years ago CheckoutForm 3 years ago Column 3 years ago Columns 3 years ago ConditionalForm 3 years ago Confirmation 3 years ago Coupon 3 years ago CustomerDashboardButton 3 years ago Dashboard 3 years ago Divider 3 years ago Donation 3 years ago DonationAmount 3 years ago Email 3 years ago ExpressPayment 3 years ago FirstName 3 years ago Form 3 years ago Heading 3 years ago Input 3 years ago LastName 3 years ago LineItems 3 years ago LogoutButton 3 years ago Name 3 years ago NameYourPrice 3 years ago OrderBumps 3 years ago OrderConfirmationCustomer 3 years ago OrderConfirmationLineItems 3 years ago Password 3 years ago Payment 3 years ago Phone 3 years ago PriceChoice 3 years ago PriceSelector 3 years ago Radio 3 years ago RadioGroup 3 years ago SessionDetail 3 years ago StoreLogo 3 years ago Submit 3 years ago Subtotal 3 years ago Switch 3 years ago TaxIdInput 3 years ago TaxLineItem 3 years ago Textarea 3 years ago Total 3 years ago Totals 3 years ago BaseBlock.php 3 years ago BlockService.php 4 years ago BlockServiceProvider.php 4 years ago CartBlock.php 4 years ago
BaseBlock.php
184 lines
1 <?php
2
3 namespace SureCartBlocks\Blocks;
4
5 use SureCartBlocks\Util\BlockStyleAttributes;
6
7 /**
8 * Checkout block
9 */
10 abstract class BaseBlock {
11 /**
12 * Optional directory to .json block data files.
13 *
14 * @var string
15 */
16 protected $directory = '';
17
18 /**
19 * Holds the block.
20 *
21 * @var object
22 */
23 protected $block;
24
25 /**
26 * Get the class name for the color.
27 *
28 * @param string $color_context_name The color context name (color, background-color).
29 * @param string $color_slug (foreground, background, etc.).
30 *
31 * @return string
32 */
33 public function getColorClassName( $color_context_name, $color_slug ) {
34 if ( ! $color_context_name || ! $color_slug ) {
35 return false;
36 }
37 $color_slug = _wp_to_kebab_case( $color_slug );
38 return "has-$color_slug-$color_context_name";
39 }
40
41 /**
42 * Get the classes.
43 *
44 * @param array $attributes The block attributes.
45 *
46 * @return string
47 */
48 public function getClasses( $attributes ) {
49 // get block classes and styles.
50 [ 'classes' => $classes ] = BlockStyleAttributes::getClassesAndStylesFromAttributes( $attributes );
51 // get text align class.
52 ['class' => $text_align_class] = BlockStyleAttributes::getTextAlignClassAndStyle( $attributes );
53 return implode( ' ', array_filter( [ $classes, $text_align_class ] ) );
54 }
55
56 /**
57 * Get the styles
58 *
59 * @param array $attributes The block attributes.
60 *
61 * @return string
62 */
63 public function getStyles( $attributes ) {
64 [ 'styles' => $styles ] = BlockStyleAttributes::getClassesAndStylesFromAttributes( $attributes );
65 return $styles;
66 }
67
68 /**
69 * Get the spacing preset css variable.
70 *
71 * @param string $value The value.
72 *
73 * @return string|void
74 */
75 public function getSpacingPresetCssVar( $value ) {
76 if ( ! $value ) {
77 return;
78 }
79
80 preg_match( '/var:preset\|spacing\|(.+)/', $value, $matches );
81
82 if ( ! $matches ) {
83 return $value;
84 }
85
86 return "var(--wp--preset--spacing--$matches[1])";
87 }
88
89
90 /**
91 * Register the block for dynamic output
92 *
93 * @param \Pimple\Container $container Service container.
94 *
95 * @return void
96 */
97 public function register() {
98 register_block_type_from_metadata(
99 $this->getDir(),
100 apply_filters(
101 'surecart/block/registration/args',
102 [ 'render_callback' => [ $this, 'preRender' ] ],
103 ),
104 );
105 }
106
107 /**
108 * Get the called class directory path
109 *
110 * @return string
111 */
112 public function getDir() {
113 if ( $this->directory ) {
114 return $this->directory;
115 }
116
117 $reflector = new \ReflectionClass( $this );
118 $fn = $reflector->getFileName();
119 return dirname( $fn );
120 }
121
122
123 /**
124 * Optionally run a function to modify attibuutes before rendering.
125 *
126 * @param array $attributes Block attributes.
127 * @param string $content Post content.
128 *
129 * @return function
130 */
131 public function preRender( $attributes, $content, $block ) {
132 $this->block = $block;
133
134 // run middlware.
135 $render = $this->middleware( $attributes, $content );
136
137 if ( is_wp_error( $render ) ) {
138 return $render->get_error_message();
139 }
140
141 if ( true !== $render ) {
142 return $render;
143 }
144
145 $attributes = $this->getAttributes( $attributes );
146
147 // render.
148 return $this->render( $attributes, $content, $block );
149 }
150
151 /**
152 * Run any block middleware before rendering.
153 *
154 * @param array $attributes Block attributes.
155 * @param string $content Post content.
156 * @return boolean|\WP_Error;
157 */
158 protected function middleware( $attributes, $content ) {
159 return true;
160 }
161
162 /**
163 * Allows filtering of attributes before rendering.
164 *
165 * @param array $attributes Block attributes.
166 * @return array $attributes
167 */
168 public function getAttributes( $attributes ) {
169 return $attributes;
170 }
171
172 /**
173 * Render the block
174 *
175 * @param array $attributes Block attributes.
176 * @param string $content Post content.
177 *
178 * @return string
179 */
180 public function render( $attributes, $content ) {
181 return '';
182 }
183 }
184