28 $previous_year = $year; |
33 $previous_year = $year; |
29 |
34 |
30 if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) { |
35 if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) { |
31 $permalink_structure = get_option( 'permalink_structure' ); |
36 $permalink_structure = get_option( 'permalink_structure' ); |
32 if ( |
37 if ( |
33 strpos( $permalink_structure, '%monthnum%' ) !== false && |
38 str_contains( $permalink_structure, '%monthnum%' ) && |
34 strpos( $permalink_structure, '%year%' ) !== false |
39 str_contains( $permalink_structure, '%year%' ) |
35 ) { |
40 ) { |
36 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited |
|
37 $monthnum = $attributes['month']; |
41 $monthnum = $attributes['month']; |
38 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited |
42 $year = $attributes['year']; |
39 $year = $attributes['year']; |
|
40 } |
43 } |
41 } |
44 } |
|
45 |
|
46 $color_block_styles = array(); |
|
47 |
|
48 // Text color. |
|
49 $preset_text_color = array_key_exists( 'textColor', $attributes ) ? "var:preset|color|{$attributes['textColor']}" : null; |
|
50 $custom_text_color = $attributes['style']['color']['text'] ?? null; |
|
51 $color_block_styles['text'] = $preset_text_color ? $preset_text_color : $custom_text_color; |
|
52 |
|
53 // Background Color. |
|
54 $preset_background_color = array_key_exists( 'backgroundColor', $attributes ) ? "var:preset|color|{$attributes['backgroundColor']}" : null; |
|
55 $custom_background_color = $attributes['style']['color']['background'] ?? null; |
|
56 $color_block_styles['background'] = $preset_background_color ? $preset_background_color : $custom_background_color; |
|
57 |
|
58 // Generate color styles and classes. |
|
59 $styles = wp_style_engine_get_styles( array( 'color' => $color_block_styles ), array( 'convert_vars_to_classnames' => true ) ); |
|
60 $inline_styles = empty( $styles['css'] ) ? '' : sprintf( ' style="%s"', esc_attr( $styles['css'] ) ); |
|
61 $classnames = empty( $styles['classnames'] ) ? '' : ' ' . esc_attr( $styles['classnames'] ); |
|
62 if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { |
|
63 $classnames .= ' has-link-color'; |
|
64 } |
|
65 // Apply color classes and styles to the calendar. |
|
66 $calendar = str_replace( '<table', '<table' . $inline_styles, get_calendar( true, false ) ); |
|
67 $calendar = str_replace( 'class="wp-calendar-table', 'class="wp-calendar-table' . $classnames, $calendar ); |
42 |
68 |
43 $wrapper_attributes = get_block_wrapper_attributes(); |
69 $wrapper_attributes = get_block_wrapper_attributes(); |
44 $output = sprintf( |
70 $output = sprintf( |
45 '<div %1$s>%2$s</div>', |
71 '<div %1$s>%2$s</div>', |
46 $wrapper_attributes, |
72 $wrapper_attributes, |
47 get_calendar( true, false ) |
73 $calendar |
48 ); |
74 ); |
49 |
75 |
50 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited |
|
51 $monthnum = $previous_monthnum; |
76 $monthnum = $previous_monthnum; |
52 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited |
77 $year = $previous_year; |
53 $year = $previous_year; |
|
54 |
78 |
55 return $output; |
79 return $output; |
56 } |
80 } |
57 |
81 |
58 /** |
82 /** |
59 * Registers the `core/calendar` block on server. |
83 * Registers the `core/calendar` block on server. |
|
84 * |
|
85 * @since 5.2.0 |
60 */ |
86 */ |
61 function register_block_core_calendar() { |
87 function register_block_core_calendar() { |
62 register_block_type_from_metadata( |
88 register_block_type_from_metadata( |
63 __DIR__ . '/calendar', |
89 __DIR__ . '/calendar', |
64 array( |
90 array( |
72 /** |
98 /** |
73 * Returns whether or not there are any published posts. |
99 * Returns whether or not there are any published posts. |
74 * |
100 * |
75 * Used to hide the calendar block when there are no published posts. |
101 * Used to hide the calendar block when there are no published posts. |
76 * This compensates for a known Core bug: https://core.trac.wordpress.org/ticket/12016 |
102 * This compensates for a known Core bug: https://core.trac.wordpress.org/ticket/12016 |
|
103 * |
|
104 * @since 5.9.0 |
77 * |
105 * |
78 * @return bool Has any published posts or not. |
106 * @return bool Has any published posts or not. |
79 */ |
107 */ |
80 function block_core_calendar_has_published_posts() { |
108 function block_core_calendar_has_published_posts() { |
81 // Multisite already has an option that stores the count of the published posts. |
109 // Multisite already has an option that stores the count of the published posts. |