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 / ProductReviewAverageRatingStars.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
ProductReviewAverageRatingStars.php
165 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 * Product Average Rating Stars element.
13 */
14 class ProductReviewAverageRatingStars extends \Bricks\Element {
15 use ConvertsBlocks;
16
17 /**
18 * Element category.
19 *
20 * @var string
21 */
22 public $category = 'SureCart Elements';
23
24 /**
25 * Element name.
26 *
27 * @var string
28 */
29 public $name = 'surecart-product-review-average-rating-stars';
30
31 /**
32 * Element block name.
33 *
34 * @var string
35 */
36 public $block_name = 'surecart/product-review-average-rating-stars';
37
38 /**
39 * Element icon.
40 *
41 * @var string
42 */
43 public $icon = 'ti-star';
44
45 /**
46 * Get element label.
47 *
48 * @return string
49 */
50 public function get_label() {
51 return esc_html__( 'Product Average Rating Stars', 'surecart' );
52 }
53
54 /**
55 * Set controls.
56 *
57 * @return void
58 */
59 public function set_controls() {
60 $this->controls['size'] = [
61 'tab' => 'content',
62 'label' => esc_html__( 'Star Size', 'surecart' ),
63 'type' => 'number',
64 'units' => true,
65 'default' => '20px',
66 'placeholder' => '20px',
67 ];
68
69 $this->controls['fill_color'] = [
70 'tab' => 'content',
71 'label' => esc_html__( 'Star Color', 'surecart' ),
72 'type' => 'color',
73 'rerender' => true,
74 'default' => [
75 'hex' => 'var(--bricks-color-primary)',
76 ],
77 'css' => [
78 [
79 'property' => 'color',
80 'selector' => 'svg',
81 ],
82 [
83 'property' => 'stroke',
84 'selector' => 'svg',
85 ],
86 ],
87 ];
88
89 $this->controls['link_to_reviews'] = [
90 'tab' => 'content',
91 'label' => esc_html__( 'Link to Reviews', 'surecart' ),
92 'type' => 'checkbox',
93 'default' => false,
94 ];
95 }
96
97 /**
98 * Render element.
99 *
100 * @return void
101 */
102 public function render() {
103 $size = ! empty( $this->settings['size'] ) ? $this->settings['size'] : '20px';
104 $fill_color = $this->get_raw_color( 'fill_color' );
105 $link_to_reviews = ! empty( $this->settings['link_to_reviews'] );
106
107 if ( empty( $fill_color ) ) {
108 $fill_color = 'var(--bricks-color-primary)';
109 }
110
111 $this->set_attribute( '_root', 'style', 'display: flex;' );
112
113 if ( $this->is_admin_editor() ) {
114 $this->render_preview( $size, $fill_color );
115 return;
116 }
117
118 // Ensure size has px unit, similar to Elementor implementation.
119 $size_value = is_numeric( $size ) ? absint( $size ) . 'px' : $size;
120
121 echo $this->html( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
122 [
123 'size' => $size_value,
124 'fill_color' => esc_attr( $fill_color ),
125 'link_to_reviews' => $link_to_reviews, //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
126 ]
127 );
128 }
129
130 /**
131 * Render preview in editor.
132 *
133 * @param string $size Star size.
134 * @param string $fill_color Star fill color.
135 *
136 * @return void
137 */
138 private function render_preview( $size, $fill_color ) {
139 $stars_html = '';
140 for ( $i = 1; $i <= 5; $i++ ) {
141 $is_full_star = $i <= 4;
142 $is_half_star = 5 === $i;
143
144 $stars_html .= \SureCart::svg()->get(
145 $is_half_star ? 'half-star' : 'star',
146 [
147 'class' => 'sc-star-row__label__svg',
148 'height' => esc_attr( $size ),
149 'width' => esc_attr( $size ),
150 'fill' => $is_full_star || $is_half_star ? 'currentColor' : 'none',
151 'stroke' => 'currentColor',
152 'stroke-width' => 2,
153 'aria-hidden' => 'true',
154 ]
155 );
156 }
157
158 echo $this->preview( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
159 $stars_html,
160 'wp-block-surecart-product-review-average-rating-stars',
161 'div'
162 );
163 }
164 }
165