PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.3
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 / packages / blocks / Blocks / Upsell / CountdownTimer / Block.php
surecart / packages / blocks / Blocks / Upsell / CountdownTimer Last commit date
Block.php 1 year ago block.json 1 month ago style.css 2 years ago
Block.php
122 lines
1 <?php
2
3 namespace SureCartBlocks\Blocks\Upsell\CountdownTimer;
4
5 use SureCartBlocks\Blocks\BaseBlock;
6
7 /**
8 * Upsell Count Down Timer Block.
9 */
10 class Block extends BaseBlock {
11 /**
12 * Keep track of the instance number of this block.
13 *
14 * @var integer
15 */
16 public static $instance;
17
18 /**
19 * Get the style for the block
20 *
21 * @param array $attr Style variables.
22 * @param string $prefix Prefix for the css variables.
23 * @return string
24 */
25 public function getVars( $attr, $prefix ) {
26 $style = '';
27 // padding.
28 if ( ! empty( $attr['style']['spacing']['padding'] ) ) {
29 $padding = $attr['style']['spacing']['padding'];
30 $style .= $prefix . '-padding-top: ' . $this->getSpacingPresetCssVar( array_key_exists( 'top', $padding ) ? $padding['top'] : '0' ) . ';';
31 $style .= $prefix . '-padding-bottom: ' . $this->getSpacingPresetCssVar( array_key_exists( 'bottom', $padding ) ? $padding['bottom'] : '0' ) . ';';
32 $style .= $prefix . '-padding-left: ' . $this->getSpacingPresetCssVar( array_key_exists( 'left', $padding ) ? $padding['left'] : '0' ) . ';';
33 $style .= $prefix . '-padding-right: ' . $this->getSpacingPresetCssVar( array_key_exists( 'right', $padding ) ? $padding['right'] : '0' ) . ';';
34 }
35 // margin.
36 if ( ! empty( $attr['style']['spacing']['margin'] ) ) {
37 $margin = $attr['style']['spacing']['margin'];
38 $style .= $prefix . '-margin-top: ' . $this->getSpacingPresetCssVar( array_key_exists( 'top', $margin ) ? $margin['top'] : '0' ) . ';';
39 $style .= $prefix . '-margin-bottom: ' . $this->getSpacingPresetCssVar( array_key_exists( 'bottom', $margin ) ? $margin['bottom'] : '0' ) . ';';
40 $style .= $prefix . '-margin-left: ' . $this->getSpacingPresetCssVar( array_key_exists( 'left', $margin ) ? $margin['left'] : '0' ) . ';';
41 $style .= $prefix . '-margin-right: ' . $this->getSpacingPresetCssVar( array_key_exists( 'right', $margin ) ? $margin['right'] : '0' ) . ';';
42 }
43 // aspect ratio.
44 if ( ! empty( $attr['ratio'] ) ) {
45 $style .= $prefix . '-aspect-ratio: ' . $attr['ratio'] . ';';
46 }
47 // border width.
48 if ( ! empty( $attr['style']['border']['width'] ) ) {
49 $style .= $prefix . '-border-width: ' . $attr['style']['border']['width'] . ';';
50 }
51 // border radius.
52 if ( ! empty( $attr['style']['border']['radius'] ) ) {
53 $style .= $prefix . '-border-radius: ' . $attr['style']['border']['radius'] . ';';
54 }
55 // font weight.
56 if ( ! empty( $attr['style']['typography']['fontWeight'] ) ) {
57 $style .= $prefix . '-font-weight: ' . $attr['style']['typography']['fontWeight'] . ';';
58 }
59 // font size.
60 if ( ! empty( $attr['fontSize'] ) || ! empty( $attr['style']['typography']['fontSize'] ) ) {
61 $font_size = ! empty( $attr['fontSize'] ) ? $this->getFontSizePresetCssVar( $attr['fontSize'] ) : $attr['style']['typography']['fontSize'];
62 $style .= $prefix . '-font-size: ' . $font_size . ';';
63 }
64 // border color.
65 if ( ! empty( $attr['borderColor'] ) || ! empty( $attr['style']['border']['color'] ) ) {
66 $border_color = ! empty( $attr['borderColor'] ) ? $this->getColorPresetCssVar( $attr['borderColor'] ) : $attr['style']['border']['color'];
67 $style .= $prefix . '-border-color: ' . $border_color . ';';
68 }
69 // text color.
70 if ( ! empty( $attr['textColor'] ) || ! empty( $attr['style']['color']['text'] ) ) {
71 $text_color = ! empty( $attr['textColor'] ) ? $this->getColorPresetCssVar( $attr['textColor'] ) : $attr['style']['color']['text'];
72 $style .= $prefix . '-text-color: ' . $text_color . ';';
73 }
74 // background color.
75 if ( ! empty( $attr['backgroundColor'] ) || ! empty( $attr['style']['color']['background'] ) ) {
76 $text_color = ! empty( $attr['backgroundColor'] ) ? $this->getColorPresetCssVar( $attr['backgroundColor'] ) : $attr['style']['color']['background'];
77 $style .= $prefix . '-background-color: ' . $text_color . ';';
78 }
79 // text align.
80 if ( ! empty( $attr['align'] ) ) {
81 $style .= $prefix . '-align: ' . $attr['align'] . ';';
82 }
83
84 if ( ! empty( $attr['width'] ) ) {
85 $style .= $prefix . '-width: ' . $attr['width'] . '%;';
86 }
87
88 return $style;
89 }
90
91 /**
92 * Render the block
93 *
94 * @param array $attributes Block attributes.
95 * @param string $content Post content.
96 *
97 * @return string
98 */
99 public function render( $attributes, $content ) {
100 $upsell = get_query_var( 'surecart_current_upsell' );
101 if ( empty( $upsell ) ) {
102 return '';
103 }
104
105 $width_class = ! empty( $attributes['width'] ) ? 'has-custom-width sc-countdown-timer__width-' . $attributes['width'] : '';
106
107 return wp_sprintf(
108 '<div %s>%s</div>',
109 get_block_wrapper_attributes( [ 'class' => $width_class . ' ' . ( $attributes['className'] ?? '' ) . ' sc-countdown-timer' ] ),
110 wp_sprintf(
111 '<sc-upsell-countdown-timer showIcon="%s" class="%s" style="%s">
112 <span slot="offer-expire-text">%s</span>
113 </sc-upsell-countdown-timer>',
114 esc_attr( $attributes['show_icon'] ),
115 esc_attr( $this->getClasses( $attributes ) ),
116 esc_attr( $this->getStyles( $attributes ) ),
117 wp_kses_post( $attributes['offer_expire_text'] ?? '' )
118 )
119 );
120 }
121 }
122