PluginProbe
Gutenberg / 7.4.0
Gutenberg v7.4.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / block-library / blocks / calendar.php

calendar.php in Gutenberg 7.4.0, at build/block-library/blocks/calendar.php

79 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Server-side rendering of the `core/calendar` block.
4 *
5 * @package WordPress
6 */
7
8 /**
9 * Renders the `core/calendar` block on server.
10 *
11 * @param array $attributes The block attributes.
12 *
13 * @return string Returns the block content.
14 */
15 function gutenberg_render_block_core_calendar( $attributes ) {
16 global $monthnum, $year;
17
18 $previous_monthnum = $monthnum;
19 $previous_year = $year;
20
21 if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) {
22 $permalink_structure = get_option( 'permalink_structure' );
23 if (
24 strpos( $permalink_structure, '%monthnum%' ) !== false &&
25 strpos( $permalink_structure, '%year%' ) !== false
26 ) {
27 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited
28 $monthnum = $attributes['month'];
29 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited
30 $year = $attributes['year'];
31 }
32 }
33
34 $custom_class_name = empty( $attributes['className'] ) ? '' : ' ' . $attributes['className'];
35 $align_class_name = empty( $attributes['align'] ) ? '' : ' ' . "align{$attributes['align']}";
36
37 $output = sprintf(
38 '<div class="%1$s">%2$s</div>',
39 esc_attr( 'wp-block-calendar' . $custom_class_name . $align_class_name ),
40 get_calendar( true, false )
41 );
42
43 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited
44 $monthnum = $previous_monthnum;
45 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited
46 $year = $previous_year;
47
48 return $output;
49 }
50
51 /**
52 * Registers the `core/calendar` block on server.
53 */
54 function gutenberg_register_block_core_calendar() {
55 register_block_type(
56 'core/calendar',
57 array(
58 'attributes' => array(
59 'align' => array(
60 'type' => 'string',
61 'enum' => array( 'left', 'center', 'right', 'wide', 'full' ),
62 ),
63 'className' => array(
64 'type' => 'string',
65 ),
66 'month' => array(
67 'type' => 'integer',
68 ),
69 'year' => array(
70 'type' => 'integer',
71 ),
72 ),
73 'render_callback' => 'gutenberg_render_block_core_calendar',
74 )
75 );
76 }
77
78 add_action( 'init', 'gutenberg_register_block_core_calendar', 20 );
79