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 / Integrations / Bricks / Elements / ProductData.php
surecart / app / src / Integrations / Bricks / Elements Last commit date
BuyButton.php 3 months ago CartMenuIcon.php 5 months ago CollectionTag.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChoiceTemplate.php 1 year ago PriceChooser.php 4 months ago PriceData.php 1 year ago Product.php 4 months ago ProductCard.php 10 months ago ProductContent.php 10 months ago ProductData.php 1 year ago ProductLineItemNote.php 10 months ago ProductQuickAddButton.php 10 months ago ProductReviewAverageRatingStars.php 4 months ago ProductReviewAverageRatingValue.php 4 months ago ProductReviewBreakdown.php 4 months ago ProductReviewContent.php 4 months ago ProductReviewList.php 2 months ago ProductReviewRating.php 4 months ago ProductReviewTotalRating.php 4 months ago ProductReviews.php 4 months ago Quantity.php 10 months ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPill.php 6 months 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 Pricing', '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 Pricing', '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 pricing 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