Code is Poetry.

WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.


Built from https://develop.svn.wordpress.org/trunk@42343


git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Gary Pendergast
2017-11-30 23:11:00 +00:00
parent 62be7ad218
commit aaf99e6913
610 changed files with 55731 additions and 43711 deletions

View File

@@ -16,19 +16,20 @@
* @package WordPress
*/
ignore_user_abort(true);
ignore_user_abort( true );
if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
if ( ! empty( $_POST ) || defined( 'DOING_AJAX' ) || defined( 'DOING_CRON' ) ) {
die();
}
/**
* Tell WordPress we are doing the CRON task.
*
* @var bool
*/
define('DOING_CRON', true);
define( 'DOING_CRON', true );
if ( !defined('ABSPATH') ) {
if ( ! defined( 'ABSPATH' ) ) {
/** Set up WordPress environment */
require_once( dirname( __FILE__ ) . '/wp-load.php' );
}
@@ -57,21 +58,24 @@ function _get_cron_lock() {
$value = wp_cache_get( 'doing_cron', 'transient', true );
} else {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron' ) );
if ( is_object( $row ) )
if ( is_object( $row ) ) {
$value = $row->option_value;
}
}
return $value;
}
if ( false === $crons = _get_cron_array() )
if ( false === $crons = _get_cron_array() ) {
die();
}
$keys = array_keys( $crons );
$keys = array_keys( $crons );
$gmt_time = microtime( true );
if ( isset($keys[0]) && $keys[0] > $gmt_time )
if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) {
die();
}
// The cron lock: a unix timestamp from when the cron was spawned.
@@ -79,14 +83,15 @@ $doing_cron_transient = get_transient( 'doing_cron' );
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
if ( empty( $doing_wp_cron ) ) {
if ( empty( $_GET[ 'doing_wp_cron' ] ) ) {
if ( empty( $_GET['doing_wp_cron'] ) ) {
// Called from external script/job. Try setting a lock.
if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) )
if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) ) {
return;
}
$doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
set_transient( 'doing_cron', $doing_wp_cron );
} else {
$doing_wp_cron = $_GET[ 'doing_wp_cron' ];
$doing_wp_cron = $_GET['doing_wp_cron'];
}
}
@@ -94,12 +99,14 @@ if ( empty( $doing_wp_cron ) ) {
* The cron lock (a unix timestamp set when the cron was spawned),
* must match $doing_wp_cron (the "key").
*/
if ( $doing_cron_transient != $doing_wp_cron )
if ( $doing_cron_transient != $doing_wp_cron ) {
return;
}
foreach ( $crons as $timestamp => $cronhooks ) {
if ( $timestamp > $gmt_time )
if ( $timestamp > $gmt_time ) {
break;
}
foreach ( $cronhooks as $hook => $keys ) {
@@ -108,8 +115,8 @@ foreach ( $crons as $timestamp => $cronhooks ) {
$schedule = $v['schedule'];
if ( $schedule != false ) {
$new_args = array($timestamp, $schedule, $hook, $v['args']);
call_user_func_array('wp_reschedule_event', $new_args);
$new_args = array( $timestamp, $schedule, $hook, $v['args'] );
call_user_func_array( 'wp_reschedule_event', $new_args );
}
wp_unschedule_event( $timestamp, $hook, $v['args'] );
@@ -123,16 +130,18 @@ foreach ( $crons as $timestamp => $cronhooks ) {
* @param string $hook Name of the hook that was scheduled to be fired.
* @param array $args The arguments to be passed to the hook.
*/
do_action_ref_array( $hook, $v['args'] );
do_action_ref_array( $hook, $v['args'] );
// If the hook ran too long and another cron process stole the lock, quit.
if ( _get_cron_lock() != $doing_wp_cron )
if ( _get_cron_lock() != $doing_wp_cron ) {
return;
}
}
}
}
if ( _get_cron_lock() == $doing_wp_cron )
if ( _get_cron_lock() == $doing_wp_cron ) {
delete_transient( 'doing_cron' );
}
die();