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.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 / Integrations / Bricks / Elements / ProductData.php
surecart / app / src / Integrations / Bricks / Elements Last commit date
BuyButton.php 1 year ago CollectionTag.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChoiceTemplate.php 1 year ago PriceChooser.php 1 year ago PriceData.php 1 year ago Product.php 1 year ago ProductCard.php 1 year ago ProductData.php 1 year ago Quantity.php 1 year ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPill.php 1 year ago VariantPills.php 1 year ago
ProductData.php
212 lines
1 <?php
2
3 namespace SureCart\Integrations\Bricks\Elements;
4
5 use SureCart\Integrations\Bricks\Concerns\ConvertsBlocks;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11
12 /**
13 * Selected Price element.
14 */
15 class ProductData extends \Bricks\Element {
16 use ConvertsBlocks; // we have to use a trait since we can't extend the surecart class.
17
18 /**
19 * Element category.
20 *
21 * @var string
22 */
23 public $category = 'SureCart Elements';
24
25 /**
26 * Element icon.
27 *
28 * @var string
29 */
30 public $icon = 'ti-receipt';
31
32 /**
33 * Element name.
34 *
35 * @var string
36 */
37 public $name = 'surecart-product-data';
38
39 /**
40 * Element block name.
41 *
42 * @var string
43 */
44 public function get_label() {
45 return esc_html__( 'Product Data', 'surecart' );
46 }
47
48 /**
49 * This ensures that if the element has all children that are [hidden]
50 * the element will not display.
51 *
52 * @return void
53 */
54 public function enqueue_scripts() {
55 wp_enqueue_style( 'surecart-product-data', plugins_url( '../scripts/product-data.css', __FILE__ ), [], \SureCart::plugin()->version() );
56 }
57
58 /**
59 * Set controls.
60 *
61 * @return void
62 */
63 public function set_controls() {
64 $this->controls['meta'] = [
65 'tab' => 'content',
66 'type' => 'repeater',
67 'titleProperty' => 'dynamicData',
68 'placeholder' => esc_html__( 'Product data', 'surecart' ),
69 'fields' => [
70 'dynamicData' => [
71 'label' => esc_html__( 'Dynamic data', 'surecart' ),
72 'type' => 'text',
73 ],
74 ],
75 'default' => [
76 [
77 'dynamicData' => '{sc_product_selected_scratch_price}',
78 'id' => \Bricks\Helpers::generate_random_id( false ),
79 ],
80 [
81 'dynamicData' => '{sc_product_selected_price}',
82 'id' => \Bricks\Helpers::generate_random_id( false ),
83 ],
84 [
85 'dynamicData' => '{sc_product_selected_billing_interval}',
86 'id' => \Bricks\Helpers::generate_random_id( false ),
87 ],
88 [
89 'dynamicData' => '{sc_product_selected_trial}',
90 'id' => \Bricks\Helpers::generate_random_id( false ),
91 ],
92 [
93 'dynamicData' => '{sc_product_selected_setup_fee}',
94 'id' => \Bricks\Helpers::generate_random_id( false ),
95 ],
96 ],
97 ];
98
99 $this->controls['direction'] = [
100 'tab' => 'content',
101 'label' => esc_html__( 'Direction', 'surecart' ),
102 'type' => 'direction',
103 'css' => [
104 [
105 'property' => 'flex-direction',
106 'selector' => '',
107 ],
108 ],
109 'inline' => true,
110 ];
111
112 $this->controls['direction'] = [
113 'tab' => 'content',
114 'label' => esc_html__( 'Direction', 'surecart' ),
115 'type' => 'direction',
116 'css' => [
117 [
118 'property' => 'flex-direction',
119 'selector' => '',
120 ],
121 ],
122 'inline' => true,
123 ];
124
125 $this->controls['justifyContent'] = [
126 'label' => esc_html__( 'Align main axis', 'surecart' ),
127 'tooltip' => [
128 'content' => 'justify-content',
129 'position' => 'top-left',
130 ],
131 'type' => 'justify-content',
132 'css' => [
133 [
134 'property' => 'justify-content',
135 ],
136 ],
137 ];
138
139 $this->controls['alignItems'] = [
140 'label' => esc_html__( 'Align cross axis', 'surecart' ),
141 'tooltip' => [
142 'content' => 'align-items',
143 'position' => 'top-left',
144 ],
145 'type' => 'align-items',
146 'css' => [
147 [
148 'property' => 'align-items',
149 ],
150 ],
151 ];
152
153 $this->controls['gutter'] = [
154 'tab' => 'content',
155 'label' => esc_html__( 'Gap', 'surecart' ),
156 'type' => 'number',
157 'units' => true,
158 'css' => [
159 [
160 'property' => 'gap',
161 'selector' => '',
162 ],
163 ],
164 'placeholder' => 5,
165 'default' => 5,
166 ];
167 }
168
169
170 /**
171 * Render element.
172 *
173 * @return void
174 */
175 public function render() {
176 $settings = $this->settings;
177
178 if ( empty( $settings['meta'] ) ) {
179 return $this->render_element_placeholder(
180 [
181 'title' => esc_html__( 'No product data selected.', 'surecart' ),
182 ]
183 );
184 }
185
186 global $post;
187
188 $post_id = $this->post_id;
189 $post = get_post( $post_id ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
190 $meta_data = [];
191
192 foreach ( $settings['meta'] as $index => $meta ) {
193 $meta_html = '';
194
195 if ( ! empty( $meta['dynamicData'] ) ) {
196 $meta_html .= bricks_render_dynamic_data( $meta['dynamicData'], $post_id );
197 }
198
199 $meta_data[] = $meta_html;
200 }
201
202 $this->set_attribute( '_root', 'class', 'post-meta' );
203 $this->set_attribute( '_root', 'class', 'sc-product-data' );
204
205 echo "<div {$this->render_attributes( '_root' )}>"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
206
207 echo join( '', $meta_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
208
209 echo '</div>';
210 }
211 }
212