PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 / render.php
jetpack / extensions / blocks / business-hours Last commit date
business-hours.php 1 week ago render.php 1 week ago
render.php
159 lines
1 <?php
2 /**
3 * Business Hours block render implementation.
4 *
5 * Loaded lazily from business-hours.php only when the block is rendered, to keep
6 * the render body out of the eager front-end PHP/opcache footprint.
7 *
8 * @package automattic/jetpack
9 */
10
11 namespace Automattic\Jetpack\Extensions\Business_Hours;
12
13 use Jetpack_Gutenberg;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit( 0 );
17 }
18
19 /**
20 * Get's default days / hours to render a business hour block with no data provided.
21 *
22 * @return array
23 */
24 function get_default_days() {
25 return array(
26 array(
27 'name' => 'Sun',
28 'hours' => array(),
29 ),
30 array(
31 'name' => 'Mon',
32 'hours' => array(
33 array(
34 'opening' => '09:00',
35 'closing' => '17:00',
36 ),
37 ),
38 ),
39 array(
40 'name' => 'Tue',
41 'hours' => array(
42 array(
43 'opening' => '09:00',
44 'closing' => '17:00',
45 ),
46 ),
47 ),
48 array(
49 'name' => 'Wed',
50 'hours' => array(
51 array(
52 'opening' => '09:00',
53 'closing' => '17:00',
54 ),
55 ),
56 ),
57 array(
58 'name' => 'Thu',
59 'hours' => array(
60 array(
61 'opening' => '09:00',
62 'closing' => '17:00',
63 ),
64 ),
65 ),
66 array(
67 'name' => 'Fri',
68 'hours' => array(
69 array(
70 'opening' => '09:00',
71 'closing' => '17:00',
72 ),
73 ),
74 ),
75 array(
76 'name' => 'Sat',
77 'hours' => array(),
78 ),
79 );
80 }
81
82 /**
83 * Dynamic rendering of the block.
84 *
85 * @param array $attributes Array containing the business hours block attributes.
86 *
87 * @return string
88 */
89 function render_implementation( $attributes ) {
90 global $wp_locale;
91
92 if ( empty( $attributes['days'] ) || ! is_array( $attributes['days'] ) ) {
93 $attributes['days'] = get_default_days();
94 }
95
96 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
97
98 $start_of_week = (int) get_option( 'start_of_week', 0 );
99 $time_format = get_option( 'time_format' );
100 $content = sprintf(
101 '<dl class="jetpack-business-hours%s%s"%s>',
102 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
103 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
104 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : ''
105 );
106
107 $days = array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
108
109 if ( $start_of_week ) {
110 $chunk1 = array_slice( $attributes['days'], 0, $start_of_week );
111 $chunk2 = array_slice( $attributes['days'], $start_of_week );
112 $attributes['days'] = array_merge( $chunk2, $chunk1 );
113 }
114
115 foreach ( $attributes['days'] as $day ) {
116 $content .= '<div class="jetpack-business-hours__item"><dt class="' . esc_attr( $day['name'] ) . '">' .
117 ucfirst( $wp_locale->get_weekday( array_search( $day['name'], $days, true ) ) ) .
118 '</dt>';
119 $content .= '<dd class="' . esc_attr( $day['name'] ) . '">';
120 $days_hours = '';
121
122 foreach ( $day['hours'] as $hour ) {
123 $opening = strtotime( $hour['opening'] );
124 $closing = strtotime( $hour['closing'] );
125 if ( ! $opening || ! $closing ) {
126 continue;
127 }
128 if ( $days_hours !== '' ) {
129 $days_hours .= ', ';
130 }
131 $days_hours .= sprintf(
132 '%1$s - %2$s',
133 gmdate( $time_format, $opening ),
134 gmdate( $time_format, $closing )
135 );
136 }
137
138 if ( empty( $days_hours ) ) {
139 $days_hours = esc_html__( 'Closed', 'jetpack' );
140 }
141 $content .= $days_hours;
142 $content .= '</dd></div>';
143 }
144
145 $content .= '</dl>';
146
147 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
148
149 /**
150 * Allows folks to filter the HTML content for the Business Hours block
151 *
152 * @since 7.1.0
153 *
154 * @param string $content The default HTML content set by `jetpack_business_hours_render`
155 * @param array $attributes Attributes generated in the block editor for the Business Hours block
156 */
157 return apply_filters( 'jetpack_business_hours_content', $content, $attributes );
158 }
159