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 / ProductReviewContent.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
ProductReviewContent.php
127 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 Review Content element.
13 *
14 * This is a conditional wrapper element that only renders its children
15 * when reviews exist for the current product. Similar to the Gutenberg
16 * `surecart/product-reviews` block.
17 */
18 class ProductReviewContent extends \Bricks\Element {
19 use ConvertsBlocks;
20
21 /**
22 * Element category.
23 *
24 * @var string
25 */
26 public $category = 'SureCart Elements';
27
28 /**
29 * Element name.
30 *
31 * @var string
32 */
33 public $name = 'surecart-product-review-content';
34
35 /**
36 * Element block name.
37 *
38 * @var string
39 */
40 public $block_name = 'surecart/product-reviews';
41
42 /**
43 * Element icon.
44 *
45 * @var string
46 */
47 public $icon = 'ti-layout-placeholder';
48
49 /**
50 * This is nestable.
51 *
52 * @var bool
53 */
54 public $nestable = true;
55
56 /**
57 * Get element label.
58 *
59 * @return string
60 */
61 public function get_label() {
62 return esc_html__( 'Product Review Content', 'surecart' );
63 }
64
65 /**
66 * Get nestable children.
67 *
68 * @return array
69 */
70 public function get_nestable_children() {
71 // Default empty - users can add any content they want inside.
72 return [];
73 }
74
75 /**
76 * Set controls.
77 *
78 * @return void
79 */
80 public function set_controls() {
81 $this->controls['info_notice'] = [
82 'tab' => 'content',
83 'type' => 'info',
84 'content' => sprintf(
85 '<strong>%s</strong><br><br>%s',
86 esc_html__( 'Conditional Visibility Wrapper', 'surecart' ),
87 esc_html__( 'This wrapper conditionally hides its contents when no reviews exist for the product. Place your review summary elements (Average Rating, Stars, Breakdown, etc.) inside this wrapper. Do not remove this element if you want conditional visibility.', 'surecart' )
88 ),
89 ];
90 }
91
92 /**
93 * Render element.
94 *
95 * @return void
96 */
97 public function render() {
98 // In editor mode, always render children for preview.
99 if ( $this->is_admin_editor() ) {
100 $output = "<div {$this->render_attributes( '_root' )}>";
101 $output .= \Bricks\Frontend::render_children( $this );
102 $output .= '</div>';
103 echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
104 return;
105 }
106
107 // On frontend, check if reviews exist before rendering.
108 $product = sc_get_product();
109
110 // No product - don't render.
111 if ( empty( $product ) || empty( $product->total_reviews ) ) {
112 return;
113 }
114
115 // Reviews are not enabled - don't render.
116 if ( ! apply_filters( 'surecart/review_form/enabled', $product->reviews_enabled ) ) {
117 return;
118 }
119
120 $output = "<div {$this->render_attributes( '_root' )}>";
121 $output .= \Bricks\Frontend::render_children( $this );
122 $output .= '</div>';
123
124 echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
125 }
126 }
127