PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.5.2
Jetpack – WP Security, Backup, Speed, & Growth v12.5.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / extensions / blocks / business-hours / business-hours.php
jetpack / extensions / blocks / business-hours Last commit date
business-hours.php 3 years ago
business-hours.php
187 lines
1 <?php
2 /**
3 * Business Hours Block.
4 *
5 * @since 7.1.0
6 *
7 * @package automattic/jetpack
8 */
9
10 namespace Automattic\Jetpack\Extensions\Business_Hours;
11
12 use Automattic\Jetpack\Blocks;
13 use Jetpack_Gutenberg;
14
15 const FEATURE_NAME = 'business-hours';
16 const BLOCK_NAME = 'jetpack/' . FEATURE_NAME;
17
18 /**
19 * Registers the block for use in Gutenberg
20 * This is done via an action so that we can disable
21 * registration if we need to.
22 */
23 function register_block() {
24 Blocks::jetpack_register_block(
25 BLOCK_NAME,
26 array(
27 'render_callback' => __NAMESPACE__ . '\render',
28 'supports' => array(
29 'color' => array(
30 'gradients' => true,
31 ),
32 'spacing' => array(
33 'margin' => true,
34 'padding' => true,
35 ),
36 'typography' => array(
37 'fontSize' => true,
38 'lineHeight' => true,
39 ),
40 'align' => array( 'wide', 'full' ),
41 ),
42 )
43 );
44 }
45 add_action( 'init', __NAMESPACE__ . '\register_block' );
46
47 /**
48 * Get's default days / hours to render a business hour block with no data provided.
49 *
50 * @return array
51 */
52 function get_default_days() {
53 return array(
54 array(
55 'name' => 'Sun',
56 'hours' => array(),
57 ),
58 array(
59 'name' => 'Mon',
60 'hours' => array(
61 array(
62 'opening' => '09:00',
63 'closing' => '17:00',
64 ),
65 ),
66 ),
67 array(
68 'name' => 'Tue',
69 'hours' => array(
70 array(
71 'opening' => '09:00',
72 'closing' => '17:00',
73 ),
74 ),
75 ),
76 array(
77 'name' => 'Wed',
78 'hours' => array(
79 array(
80 'opening' => '09:00',
81 'closing' => '17:00',
82 ),
83 ),
84 ),
85 array(
86 'name' => 'Thu',
87 'hours' => array(
88 array(
89 'opening' => '09:00',
90 'closing' => '17:00',
91 ),
92 ),
93 ),
94 array(
95 'name' => 'Fri',
96 'hours' => array(
97 array(
98 'opening' => '09:00',
99 'closing' => '17:00',
100 ),
101 ),
102 ),
103 array(
104 'name' => 'Sat',
105 'hours' => array(),
106 ),
107 );
108 }
109
110 /**
111 * Dynamic rendering of the block.
112 *
113 * @param array $attributes Array containing the business hours block attributes.
114 *
115 * @return string
116 */
117 function render( $attributes ) {
118 global $wp_locale;
119
120 if ( empty( $attributes['days'] ) || ! is_array( $attributes['days'] ) ) {
121 $attributes['days'] = get_default_days();
122 }
123
124 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
125
126 $start_of_week = (int) get_option( 'start_of_week', 0 );
127 $time_format = get_option( 'time_format' );
128 $content = sprintf(
129 '<dl class="jetpack-business-hours%s%s"%s>',
130 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
131 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
132 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : ''
133 );
134
135 $days = array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
136
137 if ( $start_of_week ) {
138 $chunk1 = array_slice( $attributes['days'], 0, $start_of_week );
139 $chunk2 = array_slice( $attributes['days'], $start_of_week );
140 $attributes['days'] = array_merge( $chunk2, $chunk1 );
141 }
142
143 foreach ( $attributes['days'] as $day ) {
144 $content .= '<div class="jetpack-business-hours__item"><dt class="' . esc_attr( $day['name'] ) . '">' .
145 ucfirst( $wp_locale->get_weekday( array_search( $day['name'], $days, true ) ) ) .
146 '</dt>';
147 $content .= '<dd class="' . esc_attr( $day['name'] ) . '">';
148 $days_hours = '';
149
150 foreach ( $day['hours'] as $hour ) {
151 $opening = strtotime( $hour['opening'] );
152 $closing = strtotime( $hour['closing'] );
153 if ( ! $opening || ! $closing ) {
154 continue;
155 }
156 if ( $days_hours !== '' ) {
157 $days_hours .= ', ';
158 }
159 $days_hours .= sprintf(
160 '%1$s - %2$s',
161 gmdate( $time_format, $opening ),
162 gmdate( $time_format, $closing )
163 );
164 }
165
166 if ( empty( $days_hours ) ) {
167 $days_hours = esc_html__( 'Closed', 'jetpack' );
168 }
169 $content .= $days_hours;
170 $content .= '</dd></div>';
171 }
172
173 $content .= '</dl>';
174
175 Jetpack_Gutenberg::load_assets_as_required( FEATURE_NAME );
176
177 /**
178 * Allows folks to filter the HTML content for the Business Hours block
179 *
180 * @since 7.1.0
181 *
182 * @param string $content The default HTML content set by `jetpack_business_hours_render`
183 * @param array $attributes Attributes generated in the block editor for the Business Hours block
184 */
185 return apply_filters( 'jetpack_business_hours_content', $content, $attributes );
186 }
187