PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.10.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.10.0
2.14.0 2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 81 releases
ablocks / includes / blocks / academy-course-reviews / block.php

block.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.10.0, at includes/blocks/academy-course-reviews/block.php

435 lines 18.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Blocks\AcademyCourseReviews;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Classes\BlockBaseAbstract;
9 use ABlocks\Classes\CssGenerator;
10 use ABlocks\Classes\CssGeneratorV2;
11 use ABlocks\Helper;
12 use ABlocks\Controls\Typography;
13 use ABlocks\Controls\Background;
14 use ABlocks\Controls\Border;
15 use ABlocks\Controls\Dimensions;
16 use ABlocks\Controls\Range;
17 use ABlocks\Controls\BoxShadow;
18 use ABlocks\Controls\Color;
19
20
21 class Block extends BlockBaseAbstract {
22 protected $block_name = 'academy-course-reviews';
23
24 public function build_css( $attributes ) {
25 $css_generator = new CssGeneratorV2( $attributes, $this->block_name );
26
27 $css_generator->add_class_styles(
28 '{{WRAPPER}} .academy-single-course__content-item--feedback .feedback-title',
29 $this->get_feedback_heading_css( $attributes ),
30 $this->get_feedback_heading_css( $attributes, 'Tablet' ),
31 $this->get_feedback_heading_css( $attributes, 'Mobile' )
32 );
33 $css_generator->add_class_styles(
34 '{{WRAPPER}} .academy-single-course__content-item--feedback .feedback-title:hover',
35 $this->get_feedback_heading_hover_css( $attributes ),
36 $this->get_feedback_heading_hover_css( $attributes, 'Tablet' ),
37 $this->get_feedback_heading_hover_css( $attributes, 'Mobile' )
38 );
39 $css_generator->add_class_styles(
40 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings',
41 $this->get_feedback_section_css( $attributes ),
42 $this->get_feedback_section_css( $attributes, 'Tablet' ),
43 $this->get_feedback_section_css( $attributes, 'Mobile' )
44 );
45 $css_generator->add_class_styles(
46 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings:hover',
47 $this->get_feedback_section_hover_css( $attributes ),
48 $this->get_feedback_section_hover_css( $attributes, 'Tablet' ),
49 $this->get_feedback_section_hover_css( $attributes, 'Mobile' )
50 );
51 $css_generator->add_class_styles(
52 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating',
53 $this->get_avg_rating_css( $attributes ),
54 $this->get_avg_rating_css( $attributes, 'Tablet' ),
55 $this->get_avg_rating_css( $attributes, 'Mobile' )
56 );
57 $css_generator->add_class_styles(
58 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating:hover',
59 $this->get_avg_rating_hover_css( $attributes, '' ),
60 $this->get_avg_rating_hover_css( $attributes, 'Tablet' ),
61 $this->get_avg_rating_hover_css( $attributes, 'Mobile' )
62 );
63 $css_generator->add_class_styles(
64 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating-html .academy-icon::before',
65 $this->get_rating_star_css( $attributes ),
66 $this->get_rating_star_css( $attributes, 'Tablet' ),
67 $this->get_rating_star_css( $attributes, 'Mobile' )
68 );
69 $css_generator->add_class_styles(
70 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating-html .academy-icon:hover::before',
71 $this->get_rating_star_hover_css( $attributes, '' ),
72 $this->get_rating_star_hover_css( $attributes, 'Tablet' ),
73 $this->get_rating_star_hover_css( $attributes, 'Mobile' )
74 );
75 $css_generator->add_class_styles(
76 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating-total',
77 $this->get_total_rating_css( $attributes, '' ),
78 $this->get_total_rating_css( $attributes, 'Tablet' ),
79 $this->get_total_rating_css( $attributes, 'Mobile' )
80 );
81 $css_generator->add_class_styles(
82 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-avg-rating-total:hover',
83 $this->get_total_rating_hover_css( $attributes, '' ),
84 $this->get_total_rating_hover_css( $attributes, 'Tablet' ),
85 $this->get_total_rating_hover_css( $attributes, 'Mobile' )
86 );
87 $css_generator->add_class_styles(
88 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-col,
89 {{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-label,
90 {{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-label span',
91 $this->get_feedback_css( $attributes, '' ),
92 $this->get_feedback_css( $attributes, 'Tablet' ),
93 $this->get_feedback_css( $attributes, 'Mobile' )
94 );
95 $css_generator->add_class_styles(
96 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-col:hover,
97 {{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-label:hover,
98 {{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-label span:hover',
99 $this->get_feedback_hover_css( $attributes, '' ),
100 $this->get_feedback_hover_css( $attributes, 'Tablet' ),
101 $this->get_feedback_hover_css( $attributes, 'Mobile' )
102 );
103 $css_generator->add_class_styles(
104 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-icon',
105 $this->get_start_css( $attributes, '' ),
106 $this->get_start_css( $attributes, 'Tablet' ),
107 $this->get_start_css( $attributes, 'Mobile' )
108 );
109 $css_generator->add_class_styles(
110 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-icon:hover',
111 $this->get_start_hover_css( $attributes, '' ),
112 $this->get_start_hover_css( $attributes, 'Tablet' ),
113 $this->get_start_hover_css( $attributes, 'Mobile' )
114 );
115 $css_generator->add_class_styles(
116 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-fill',
117 $this->get_fill_css( $attributes, '' ),
118 $this->get_fill_css( $attributes, 'Tablet' ),
119 $this->get_fill_css( $attributes, 'Mobile' )
120 );
121 $css_generator->add_class_styles(
122 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-fill:hover',
123 $this->get_fill_hover_css( $attributes, '' ),
124 $this->get_fill_hover_css( $attributes, 'Tablet' ),
125 $this->get_fill_hover_css( $attributes, 'Mobile' )
126 );
127 $css_generator->add_class_styles(
128 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-fill-bar',
129 $this->get_active_fill_css( $attributes, '' ),
130 $this->get_active_fill_css( $attributes, 'Tablet' ),
131 $this->get_active_fill_css( $attributes, 'Mobile' )
132 );
133 $css_generator->add_class_styles(
134 '{{WRAPPER}} .academy-single-course__content-item--feedback .academy-student-course-feedback-ratings .academy-ratings-list-item .academy-ratings-list-item-fill-bar:hover',
135 $this->get_active_fill_hover_css( $attributes, '' ),
136 $this->get_active_fill_hover_css( $attributes, 'Tablet' ),
137 $this->get_active_fill_hover_css( $attributes, 'Mobile' )
138 );
139
140 return $css_generator->generate_css();
141 }
142
143 public function get_feedback_heading_css( $attributes, $device = '' ) {
144 $typographyValueGlobal = ! empty( $attributes['heading_typographyGlobal'] ) ? $attributes['heading_typographyGlobal'] : '';
145 $typography_value = ! empty( $attributes['heading_typography'] ) ?
146 Typography::get_css( $attributes['heading_typography'], '', $device, $typographyValueGlobal )
147 : array();
148
149 return array_merge(
150 [ 'color' => Color::get_css( isset( $attributes['heading_color'] ) ? $attributes['heading_color'] : '' ) ],
151 $typography_value
152 );
153 }
154
155 public function get_feedback_heading_hover_css( $attributes, $device = '' ) {
156 return [ 'color' => Color::get_css( isset( $attributes['heading_hover_color'] ) ? $attributes['heading_hover_color'] : '' ) ];
157 }
158
159 public function get_feedback_section_css( $attributes, $device = '' ) {
160 return array_merge(
161 [ 'background' => Color::get_css( isset( $attributes['section_bg'] ) ? $attributes['section_bg'] : '#FFF' ) ],
162 Border::get_css( $attributes['border'], '', $device ),
163 Dimensions::get_css( $attributes['padding'], 'padding', $device ),
164 BoxShadow::get_css( $attributes['boxShadow'], '', $device ),
165 Range::get_css([
166 'attributeValue' => $attributes['section_height'],
167 'attribute_object_key' => 'value',
168 'isResponsive' => true,
169 'defaultValue' => 100,
170 'hasUnit' => true,
171 'unitDefaultValue' => '%',
172 'property' => 'height',
173 'device' => $device,
174 ]),
175 Range::get_css([
176 'attributeValue' => $attributes['section_width'],
177 'attribute_object_key' => 'value',
178 'isResponsive' => true,
179 'defaultValue' => 100,
180 'hasUnit' => true,
181 'unitDefaultValue' => '%',
182 'property' => 'width',
183 'device' => $device,
184 ]),
185 );
186
187 }
188
189 public function get_feedback_section_hover_css( $attributes, $device = '' ) {
190 return array_merge(
191 [ 'background' => Color::get_css( isset( $attributes['section_bg_hover'] ) ? $attributes['section_bg_hover'] : '#FFF' ) ],
192 Border::get_hover_css( $attributes['border'], '', $device ),
193 BoxShadow::get_hover_css( $attributes['boxShadow'], '', $device ),
194 Range::get_css([
195 'attributeValue' => $attributes['transition'],
196 'attribute_object_key' => 'value',
197 'isResponsive' => false,
198 'defaultValue' => 0,
199 'hasUnit' => false,
200 'unitDefaultValue' => 's',
201 'property' => 'transition-duration',
202 'device' => $device,
203 ]),
204 );
205 }
206
207 public function get_avg_rating_css( $attributes, $device = '' ) {
208 $typographyValueGlobal = ! empty( $attributes['avg_typographyGlobal'] ) ? $attributes['avg_typographyGlobal'] : '';
209 $typography_value = ! empty( $attributes['avg_typography'] ) ?
210 Typography::get_css( $attributes['avg_typography'], '', $device, $typographyValueGlobal )
211 : array();
212
213 return array_merge(
214 [ 'color' => Color::get_css( isset( $attributes['avg_color'] ) ? $attributes['avg_color'] : '#111' ) ],
215 $typography_value
216 );
217 }
218
219 public function get_avg_rating_hover_css( $attributes, $device = '' ) {
220 return array_merge(
221 [ 'color' => Color::get_css( isset( $attributes['avg_color_hover'] ) ? $attributes['avg_color_hover'] : '#111' ) ],
222 Range::get_css([
223 'attributeValue' => $attributes['avg_transition'],
224 'attribute_object_key' => 'value',
225 'isResponsive' => false,
226 'defaultValue' => 0,
227 'hasUnit' => false,
228 'unitDefaultValue' => 's',
229 'property' => 'transition-duration',
230 'device' => $device,
231 ]),
232 );
233 }
234
235 public function get_rating_star_css( $attributes, $device = '' ) {
236 return array_merge(
237 [ 'color' => Color::get_css( isset( $attributes['rating_color'] ) ? $attributes['rating_color'] : '#111' ) ],
238 Range::get_css([
239 'attributeValue' => $attributes['rating_size'],
240 'attribute_object_key' => 'value',
241 'isResponsive' => true,
242 'defaultValue' => 16,
243 'hasUnit' => true,
244 'unitDefaultValue' => 'px',
245 'property' => 'font-size',
246 'device' => $device,
247 ]),
248 );
249 }
250
251 public function get_rating_star_hover_css( $attributes, $device = '' ) {
252 return array_merge(
253 [ 'color' => Color::get_css( isset( $attributes['rating_color_hover'] ) ? $attributes['rating_color_hover'] : '#111' ) ],
254 Range::get_css([
255 'attributeValue' => $attributes['rating_transition'],
256 'attribute_object_key' => 'value',
257 'isResponsive' => false,
258 'defaultValue' => 0,
259 'hasUnit' => false,
260 'unitDefaultValue' => 's',
261 'property' => 'transition-duration',
262 'device' => $device,
263 ]),
264 );
265 }
266 public function get_total_rating_css( $attributes, $device = '' ) {
267 $typographyValueGlobal = ! empty( $attributes['total_typographyGlobal'] ) ? $attributes['total_typographyGlobal'] : '';
268 $typography_value = ! empty( $attributes['total_typography'] ) ?
269 Typography::get_css( $attributes['total_typography'], '', $device, $typographyValueGlobal )
270 : array();
271
272 return array_merge(
273 [ 'color' => Color::get_css( isset( $attributes['total_rating_color'] ) ? $attributes['total_rating_color'] : '#999' ) ],
274 $typography_value
275 );
276 }
277 public function get_total_rating_hover_css( $attributes, $device = '' ) {
278 return array_merge(
279 [ 'color' => Color::get_css( isset( $attributes['total_rating_hover'] ) ? $attributes['total_rating_hover'] : '#999' ) ],
280 Range::get_css([
281 'attributeValue' => $attributes['total_transition'],
282 'attribute_object_key' => 'value',
283 'isResponsive' => false,
284 'defaultValue' => 0,
285 'hasUnit' => false,
286 'unitDefaultValue' => 's',
287 'property' => 'transition-duration',
288 'device' => $device,
289 ]),
290 );
291 }
292
293 public function get_feedback_css( $attributes, $device = '' ) {
294 $typographyValueGlobal = ! empty( $attributes['listTypographyGlobal'] ) ? $attributes['listTypographyGlobal'] : '';
295 $typography_value = ! empty( $attributes['listTypography'] ) ?
296 Typography::get_css( $attributes['listTypography'], '', $device, $typographyValueGlobal )
297 : array();
298
299 return array_merge(
300 [ 'color' => Color::get_css( isset( $attributes['listColor'] ) ? $attributes['listColor'] : '#999' ) ],
301 $typography_value
302 );
303 }
304
305 public function get_feedback_hover_css( $attributes, $device = '' ) {
306 return array_merge(
307 [ 'color' => Color::get_css( isset( $attributes['listColorH'] ) ? $attributes['listColorH'] : '#999' ) ],
308 Range::get_css([
309 'attributeValue' => $attributes['listT'],
310 'attribute_object_key' => 'value',
311 'isResponsive' => false,
312 'defaultValue' => 0,
313 'hasUnit' => false,
314 'unitDefaultValue' => 's',
315 'property' => 'transition-duration',
316 'device' => $device,
317 ]),
318 );
319
320 }
321
322 public function get_start_css( $attributes, $device = '' ) {
323 return array_merge(
324 [ 'color' => Color::get_css( isset( $attributes['starColor'] ) ? $attributes['starColor'] : '#f4c150' ) ],
325 Range::get_css([
326 'attributeValue' => $attributes['startSize'],
327 'attribute_object_key' => 'value',
328 'isResponsive' => true,
329 'defaultValue' => 16,
330 'hasUnit' => true,
331 'unitDefaultValue' => 'px',
332 'property' => 'font-size',
333 'device' => $device,
334 ]),
335 );
336 }
337
338 public function get_start_hover_css( $attributes, $device = '' ) {
339 return array_merge(
340 [ 'color' => Color::get_css( isset( $attributes['starColorH'] ) ? $attributes['starColorH'] : '#999' ) ],
341 Range::get_css([
342 'attributeValue' => $attributes['startT'],
343 'attribute_object_key' => 'value',
344 'isResponsive' => false,
345 'defaultValue' => 0,
346 'hasUnit' => false,
347 'unitDefaultValue' => 's',
348 'property' => 'transition-duration',
349 'device' => $device,
350 ]),
351 );
352 }
353
354 public function get_fill_css( $attributes, $device = '' ) {
355 return [ 'background' => Color::get_css( isset( $attributes['fillBg'] ) ? $attributes['fillBg'] : '#e7e7e7' ) ];
356 }
357
358 public function get_fill_hover_css( $attributes, $device = '' ) {
359 return array_merge(
360 [ 'background' => Color::get_css( isset( $attributes['fillBgH'] ) ? $attributes['fillBgH'] : '#e7e7e7' ) ],
361 Range::get_css([
362 'attributeValue' => $attributes['fillT'],
363 'attribute_object_key' => 'value',
364 'isResponsive' => false,
365 'defaultValue' => 0,
366 'hasUnit' => false,
367 'unitDefaultValue' => 's',
368 'property' => 'transition-duration',
369 'device' => $device,
370 ]),
371 );
372
373 }
374
375 public function get_active_fill_css( $attributes, $device = '' ) {
376 return [ 'background' => Color::get_css( isset( $attributes['fillABg'] ) ? $attributes['fillABg'] : '#e7e7e7' ) ];
377 }
378
379 public function get_active_fill_hover_css( $attributes, $device = '' ) {
380 return array_merge(
381 [ 'background' => Color::get_css( isset( $attributes['fillABgH'] ) ? $attributes['fillABgH'] : '#e7e7e7' ) ],
382 Range::get_css([
383 'attributeValue' => $attributes['fillAT'],
384 'attribute_object_key' => 'value',
385 'isResponsive' => false,
386 'defaultValue' => 0,
387 'hasUnit' => false,
388 'unitDefaultValue' => 's',
389 'property' => 'transition-duration',
390 'device' => $device,
391 ]),
392 );
393
394 }
395
396 public function render_block_content( $attributes, $content, $block_instance ) {
397 $course_addition_info_id = method_exists( Helper::class, 'get_attribute_value' ) ? (int) Helper::get_attribute_value( $attributes, 'course_id' ) : (int) ( $attributes['course_id'] ?? 0 );
398 $course_addition_info_attr = method_exists( Helper::class, 'attr_shortcode' ) ? Helper::attr_shortcode( [ 'course_id' => $course_addition_info_id ] ) : 'course_id="' . esc_attr( $course_addition_info_id ) . '"';
399 $course_addition_info_shortcode = '[academy_single_course_review_rating ' . trim( $course_addition_info_attr ) . ']';
400 // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
401 $course_addition_info_is_edit = defined( 'REST_REQUEST' ) && REST_REQUEST && ( $_REQUEST['context'] ?? '' ) === 'edit';
402 if ( $course_addition_info_is_edit && $course_addition_info_id && ( $course_addition_info_post = get_post( $course_addition_info_id ) ) ) {
403 global $post, $wp_query;
404 $course_addition_info_prev_post = $post;
405 $course_addition_info_prev_query = $wp_query;
406 $post = $course_addition_info_post;
407 setup_postdata( $post );
408 $wp_query = new \WP_Query( [
409 'p' => $course_addition_info_id,
410 'post_type' => $course_addition_info_post->post_type,
411 'no_found_rows' => 1,
412 'posts_per_page' => 1
413 ] );
414 $wp_query->is_singular = 1;
415 $wp_query->is_single = ( $course_addition_info_post->post_type !== 'page' );
416 $wp_query->is_page = ( $course_addition_info_post->post_type === 'page' );
417 $wp_query->is_home = $wp_query->is_front_page = 0;
418 if ( method_exists( $wp_query, 'set' ) ) {
419 $wp_query->set( 'is_main_query', 1 );
420 }
421 $course_addition_info_html = do_shortcode( $course_addition_info_shortcode );
422 wp_reset_postdata();
423 $wp_query = $course_addition_info_prev_query;
424 $post = $course_addition_info_prev_post;
425 } else {
426 $course_addition_info_html = do_shortcode( $course_addition_info_shortcode );
427 }//end if
428 if ( $course_addition_info_is_edit && trim( wp_strip_all_tags( $course_addition_info_html ) ) === '' ) {
429 $course_addition_info_html = '<div class="no-data-message"><strong>Editor Only:</strong> No output. Check course ID or data.</div>';
430 }
431 return $course_addition_info_html;
432 }
433
434 }
435