Skip to content

Commit 408a01a

Browse files
Coding Standards: Fix WPCS issues in get_calendar().
Includes: * Using strict comparison and `$wpdb::prepare()`. * Removing one-time variables so that `$wpdb::prepare()` calls are picked up correctly by PHPCS. * Bringing consistency to the type of internal variables, i.e. `$thismonth` and `$thisyear` are both an integer now. Follow-up to [508], [509], [510], [716], [933], [12590], [34463], [44809], [47223], [59908]. See #62279. git-svn-id: https://develop.svn.wordpress.org/trunk@59947 602fd350-edb4-49c9-b593-d223f7449a82
1 parent f01e810 commit 408a01a

File tree

1 file changed

+79
-46
lines changed

1 file changed

+79
-46
lines changed

src/wp-includes/general-template.php

Lines changed: 79 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,8 +2347,17 @@ function get_calendar( $args = array() ) {
23472347

23482348
// Quick check. If we have no posts at all, abort!
23492349
if ( ! $posts ) {
2350-
$prepared_query = $wpdb->prepare( "SELECT 1 as test FROM $wpdb->posts WHERE post_type = %s AND post_status = 'publish' LIMIT 1", $post_type );
2351-
$gotsome = $wpdb->get_var( $prepared_query );
2350+
$gotsome = $wpdb->get_var(
2351+
$wpdb->prepare(
2352+
"SELECT 1 as test
2353+
FROM $wpdb->posts
2354+
WHERE post_type = %s
2355+
AND post_status = 'publish'
2356+
LIMIT 1",
2357+
$post_type
2358+
)
2359+
);
2360+
23522361
if ( ! $gotsome ) {
23532362
$cache[ $key ] = '';
23542363
wp_cache_set( 'get_calendar', $cache, 'calendar' );
@@ -2361,51 +2370,64 @@ function get_calendar( $args = array() ) {
23612370

23622371
// Let's figure out when we are.
23632372
if ( ! empty( $monthnum ) && ! empty( $year ) ) {
2364-
$thismonth = zeroise( (int) $monthnum, 2 );
2373+
$thismonth = (int) $monthnum;
23652374
$thisyear = (int) $year;
23662375
} elseif ( ! empty( $w ) ) {
23672376
// We need to get the month from MySQL.
23682377
$thisyear = (int) substr( $m, 0, 4 );
23692378
// It seems MySQL's weeks disagree with PHP's.
23702379
$d = ( ( $w - 1 ) * 7 ) + 6;
2371-
$thismonth = $wpdb->get_var( "SELECT DATE_FORMAT((DATE_ADD('{$thisyear}0101', INTERVAL $d DAY) ), '%m')" );
2380+
$thismonth = (int) $wpdb->get_var(
2381+
$wpdb->prepare(
2382+
"SELECT DATE_FORMAT((DATE_ADD('%d0101', INTERVAL %d DAY) ), '%%m')",
2383+
$thisyear,
2384+
$d
2385+
)
2386+
);
23722387
} elseif ( ! empty( $m ) ) {
23732388
$thisyear = (int) substr( $m, 0, 4 );
23742389
if ( strlen( $m ) < 6 ) {
2375-
$thismonth = '01';
2390+
$thismonth = 1;
23762391
} else {
2377-
$thismonth = zeroise( (int) substr( $m, 4, 2 ), 2 );
2392+
$thismonth = (int) substr( $m, 4, 2 );
23782393
}
23792394
} else {
2380-
$thisyear = current_time( 'Y' );
2381-
$thismonth = current_time( 'm' );
2395+
$thisyear = (int) current_time( 'Y' );
2396+
$thismonth = (int) current_time( 'm' );
23822397
}
23832398

23842399
$unixmonth = mktime( 0, 0, 0, $thismonth, 1, $thisyear );
23852400
$last_day = gmdate( 't', $unixmonth );
23862401

23872402
// Get the next and previous month and year with at least one post.
2388-
$previous_prepared_query = $wpdb->prepare(
2389-
"SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
2390-
FROM $wpdb->posts
2391-
WHERE post_date < '$thisyear-$thismonth-01'
2392-
AND post_type = %s AND post_status = 'publish'
2393-
ORDER BY post_date DESC
2394-
LIMIT 1",
2395-
$post_type
2403+
$previous = $wpdb->get_row(
2404+
$wpdb->prepare(
2405+
"SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
2406+
FROM $wpdb->posts
2407+
WHERE post_date < '%d-%d-01'
2408+
AND post_type = %s AND post_status = 'publish'
2409+
ORDER BY post_date DESC
2410+
LIMIT 1",
2411+
$thisyear,
2412+
zeroise( $thismonth, 2 ),
2413+
$post_type
2414+
)
23962415
);
2397-
$previous = $wpdb->get_row( $previous_prepared_query );
2398-
2399-
$next_prepared_query = $wpdb->prepare(
2400-
"SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
2401-
FROM $wpdb->posts
2402-
WHERE post_date > '$thisyear-$thismonth-{$last_day} 23:59:59'
2403-
AND post_type = %s AND post_status = 'publish'
2404-
ORDER BY post_date ASC
2405-
LIMIT 1",
2406-
$post_type
2416+
2417+
$next = $wpdb->get_row(
2418+
$wpdb->prepare(
2419+
"SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
2420+
FROM $wpdb->posts
2421+
WHERE post_date > '%d-%d-%d 23:59:59'
2422+
AND post_type = %s AND post_status = 'publish'
2423+
ORDER BY post_date ASC
2424+
LIMIT 1",
2425+
$thisyear,
2426+
zeroise( $thismonth, 2 ),
2427+
$last_day,
2428+
$post_type
2429+
)
24072430
);
2408-
$next = $wpdb->get_row( $next_prepared_query );
24092431

24102432
/* translators: Calendar caption: 1: Month name, 2: 4-digit year. */
24112433
$calendar_caption = _x( '%1$s %2$s', 'calendar caption' );
@@ -2439,14 +2461,21 @@ function get_calendar( $args = array() ) {
24392461
$daywithpost = array();
24402462

24412463
// Get days with posts.
2442-
$dayswithposts_prepared_query = $wpdb->prepare(
2443-
"SELECT DISTINCT DAYOFMONTH(post_date)
2444-
FROM $wpdb->posts WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00'
2445-
AND post_type = %s AND post_status = 'publish'
2446-
AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59'",
2447-
$post_type
2464+
$dayswithposts = $wpdb->get_results(
2465+
$wpdb->prepare(
2466+
"SELECT DISTINCT DAYOFMONTH(post_date)
2467+
FROM $wpdb->posts WHERE post_date >= '%d-%d-01 00:00:00'
2468+
AND post_type = %s AND post_status = 'publish'
2469+
AND post_date <= '%d-%d-%d 23:59:59'",
2470+
$thisyear,
2471+
zeroise( $thismonth, 2 ),
2472+
$post_type,
2473+
$thisyear,
2474+
zeroise( $thismonth, 2 ),
2475+
$last_day
2476+
),
2477+
ARRAY_N
24482478
);
2449-
$dayswithposts = $wpdb->get_results( $dayswithposts_prepared_query, ARRAY_N );
24502479

24512480
if ( $dayswithposts ) {
24522481
foreach ( (array) $dayswithposts as $daywith ) {
@@ -2456,7 +2485,7 @@ function get_calendar( $args = array() ) {
24562485

24572486
// See how much we should pad in the beginning.
24582487
$pad = calendar_week_mod( (int) gmdate( 'w', $unixmonth ) - $week_begins );
2459-
if ( 0 != $pad ) {
2488+
if ( $pad > 0 ) {
24602489
$calendar_output .= "\n\t\t" . '<td colspan="' . esc_attr( $pad ) . '" class="pad">&nbsp;</td>';
24612490
}
24622491

@@ -2469,9 +2498,9 @@ function get_calendar( $args = array() ) {
24692498
}
24702499
$newrow = false;
24712500

2472-
if ( current_time( 'j' ) == $day &&
2473-
current_time( 'm' ) == $thismonth &&
2474-
current_time( 'Y' ) == $thisyear ) {
2501+
if ( (int) current_time( 'j' ) === $day &&
2502+
(int) current_time( 'm' ) === $thismonth &&
2503+
(int) current_time( 'Y' ) === $thisyear ) {
24752504
$calendar_output .= '<td id="today">';
24762505
} else {
24772506
$calendar_output .= '<td>';
@@ -2494,13 +2523,13 @@ function get_calendar( $args = array() ) {
24942523

24952524
$calendar_output .= '</td>';
24962525

2497-
if ( 6 == calendar_week_mod( (int) gmdate( 'w', mktime( 0, 0, 0, $thismonth, $day, $thisyear ) ) - $week_begins ) ) {
2526+
if ( 6 === (int) calendar_week_mod( (int) gmdate( 'w', mktime( 0, 0, 0, $thismonth, $day, $thisyear ) ) - $week_begins ) ) {
24982527
$newrow = true;
24992528
}
25002529
}
25012530

25022531
$pad = 7 - calendar_week_mod( (int) gmdate( 'w', mktime( 0, 0, 0, $thismonth, $day, $thisyear ) ) - $week_begins );
2503-
if ( 0 != $pad && 7 != $pad ) {
2532+
if ( 0 < $pad && $pad < 7 ) {
25042533
$calendar_output .= "\n\t\t" . '<td class="pad" colspan="' . esc_attr( $pad ) . '">&nbsp;</td>';
25052534
}
25062535

@@ -2511,19 +2540,23 @@ function get_calendar( $args = array() ) {
25112540
$calendar_output .= '<nav aria-label="' . __( 'Previous and next months' ) . '" class="wp-calendar-nav">';
25122541

25132542
if ( $previous ) {
2514-
$calendar_output .= "\n\t\t" . '<span class="wp-calendar-nav-prev"><a href="' . get_month_link( $previous->year, $previous->month ) . '">&laquo; ' .
2515-
$wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) ) .
2516-
'</a></span>';
2543+
$calendar_output .= "\n\t\t" . sprintf(
2544+
'<span class="wp-calendar-nav-prev"><a href="%1$s">&laquo; %2$s</a></span>',
2545+
get_month_link( $previous->year, $previous->month ),
2546+
$wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) )
2547+
);
25172548
} else {
25182549
$calendar_output .= "\n\t\t" . '<span class="wp-calendar-nav-prev">&nbsp;</span>';
25192550
}
25202551

25212552
$calendar_output .= "\n\t\t" . '<span class="pad">&nbsp;</span>';
25222553

25232554
if ( $next ) {
2524-
$calendar_output .= "\n\t\t" . '<span class="wp-calendar-nav-next"><a href="' . get_month_link( $next->year, $next->month ) . '">' .
2525-
$wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) ) .
2526-
' &raquo;</a></span>';
2555+
$calendar_output .= "\n\t\t" . sprintf(
2556+
'<span class="wp-calendar-nav-next"><a href="%1$s">%2$s &raquo;</a></span>',
2557+
get_month_link( $next->year, $next->month ),
2558+
$wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) )
2559+
);
25272560
} else {
25282561
$calendar_output .= "\n\t\t" . '<span class="wp-calendar-nav-next">&nbsp;</span>';
25292562
}

0 commit comments

Comments
 (0)