PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.7.3
Jetpack – WP Security, Backup, Speed, & Growth v12.7.3
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 2 years ago
business-hours.php
170 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 /**
16 * Registers the block for use in Gutenberg
17 * This is done via an action so that we can disable
18 * registration if we need to.
19 */
20 function register_block() {
21 Blocks::jetpack_register_block(
22 __DIR__,
23 array(
24 'render_callback' => __NAMESPACE__ . '\render',
25 )
26 );
27 }
28 add_action( 'init', __NAMESPACE__ . '\register_block' );
29
30 /**
31 * Get's default days / hours to render a business hour block with no data provided.
32 *
33 * @return array
34 */
35 function get_default_days() {
36 return array(
37 array(
38 'name' => 'Sun',
39 'hours' => array(),
40 ),
41 array(
42 'name' => 'Mon',
43 'hours' => array(
44 array(
45 'opening' => '09:00',
46 'closing' => '17:00',
47 ),
48 ),
49 ),
50 array(
51 'name' => 'Tue',
52 'hours' => array(
53 array(
54 'opening' => '09:00',
55 'closing' => '17:00',
56 ),
57 ),
58 ),
59 array(
60 'name' => 'Wed',
61 'hours' => array(
62 array(
63 'opening' => '09:00',
64 'closing' => '17:00',
65 ),
66 ),
67 ),
68 array(
69 'name' => 'Thu',
70 'hours' => array(
71 array(
72 'opening' => '09:00',
73 'closing' => '17:00',
74 ),
75 ),
76 ),
77 array(
78 'name' => 'Fri',
79 'hours' => array(
80 array(
81 'opening' => '09:00',
82 'closing' => '17:00',
83 ),
84 ),
85 ),
86 array(
87 'name' => 'Sat',
88 'hours' => array(),
89 ),
90 );
91 }
92
93 /**
94 * Dynamic rendering of the block.
95 *
96 * @param array $attributes Array containing the business hours block attributes.
97 *
98 * @return string
99 */
100 function render( $attributes ) {
101 global $wp_locale;
102
103 if ( empty( $attributes['days'] ) || ! is_array( $attributes['days'] ) ) {
104 $attributes['days'] = get_default_days();
105 }
106
107 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
108
109 $start_of_week = (int) get_option( 'start_of_week', 0 );
110 $time_format = get_option( 'time_format' );
111 $content = sprintf(
112 '<dl class="jetpack-business-hours%s%s"%s>',
113 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
114 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
115 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : ''
116 );
117
118 $days = array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
119
120 if ( $start_of_week ) {
121 $chunk1 = array_slice( $attributes['days'], 0, $start_of_week );
122 $chunk2 = array_slice( $attributes['days'], $start_of_week );
123 $attributes['days'] = array_merge( $chunk2, $chunk1 );
124 }
125
126 foreach ( $attributes['days'] as $day ) {
127 $content .= '<div class="jetpack-business-hours__item"><dt class="' . esc_attr( $day['name'] ) . '">' .
128 ucfirst( $wp_locale->get_weekday( array_search( $day['name'], $days, true ) ) ) .
129 '</dt>';
130 $content .= '<dd class="' . esc_attr( $day['name'] ) . '">';
131 $days_hours = '';
132
133 foreach ( $day['hours'] as $hour ) {
134 $opening = strtotime( $hour['opening'] );
135 $closing = strtotime( $hour['closing'] );
136 if ( ! $opening || ! $closing ) {
137 continue;
138 }
139 if ( $days_hours !== '' ) {
140 $days_hours .= ', ';
141 }
142 $days_hours .= sprintf(
143 '%1$s - %2$s',
144 gmdate( $time_format, $opening ),
145 gmdate( $time_format, $closing )
146 );
147 }
148
149 if ( empty( $days_hours ) ) {
150 $days_hours = esc_html__( 'Closed', 'jetpack' );
151 }
152 $content .= $days_hours;
153 $content .= '</dd></div>';
154 }
155
156 $content .= '</dl>';
157
158 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
159
160 /**
161 * Allows folks to filter the HTML content for the Business Hours block
162 *
163 * @since 7.1.0
164 *
165 * @param string $content The default HTML content set by `jetpack_business_hours_render`
166 * @param array $attributes Attributes generated in the block editor for the Business Hours block
167 */
168 return apply_filters( 'jetpack_business_hours_content', $content, $attributes );
169 }
170