diff -r 346c88efed21 -r 5e2f62d02dcd wp/wp-includes/class.wp-dependencies.php --- a/wp/wp-includes/class.wp-dependencies.php Mon Jun 08 16:11:51 2015 +0000 +++ b/wp/wp-includes/class.wp-dependencies.php Tue Jun 09 03:35:32 2015 +0200 @@ -18,7 +18,7 @@ * @since 2.6.8 * @var array */ - var $registered = array(); + public $registered = array(); /** * An array of queued _WP_Dependency handle objects. @@ -27,7 +27,7 @@ * @since 2.6.8 * @var array */ - var $queue = array(); + public $queue = array(); /** * An array of _WP_Dependency handle objects to queue. @@ -36,7 +36,7 @@ * @since 2.6.0 * @var array */ - var $to_do = array(); + public $to_do = array(); /** * An array of _WP_Dependency handle objects already queued. @@ -45,7 +45,7 @@ * @since 2.6.0 * @var array */ - var $done = array(); + public $done = array(); /** * An array of additional arguments passed when a handle is registered. @@ -56,7 +56,7 @@ * @since 2.6.0 * @var array */ - var $args = array(); + public $args = array(); /** * An array of handle groups to enqueue. @@ -65,7 +65,7 @@ * @since 2.8.0 * @var array */ - var $groups = array(); + public $groups = array(); /** * A handle group to enqueue. @@ -74,7 +74,7 @@ * @since 2.8.0 * @var int */ - var $group = 0; + public $group = 0; /** * Process the items and dependencies. @@ -89,7 +89,7 @@ * @return array Handles of items that have been processed. */ public function do_items( $handles = false, $group = false ) { - /** + /* * If nothing is passed, print the queue. If a string is passed, * print that item. If an array is passed, print those items. */ @@ -99,7 +99,7 @@ foreach( $this->to_do as $key => $handle ) { if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) { - /** + /* * A single item may alias a set of items, by having dependencies, * but no source. Queuing the item queues the dependencies. * @@ -107,13 +107,13 @@ * add( 'scriptaculous', false, array( 'scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls' ) ); * * The src property is false. - **/ + */ if ( ! $this->registered[$handle]->src ) { $this->done[] = $handle; continue; } - /** + /* * Attempt to process the item. If successful, * add the handle to the done array. * @@ -325,6 +325,31 @@ } /** + * Recursively search the passed dependency tree for $handle + * + * @since 4.0.0 + * + * @param array $queue An array of queued _WP_Dependency handle objects. + * @param string $handle Name of the item. Should be unique. + * @return boolean Whether the handle is found after recursively searching the dependency tree. + */ + protected function recurse_deps( $queue, $handle ) { + foreach ( $queue as $queued ) { + if ( ! isset( $this->registered[ $queued ] ) ) { + continue; + } + + if ( in_array( $handle, $this->registered[ $queued ]->deps ) ) { + return true; + } elseif ( $this->recurse_deps( $this->registered[ $queued ]->deps, $handle ) ) { + return true; + } + } + + return false; + } + + /** * Query list for an item. * * @access public @@ -344,7 +369,10 @@ case 'enqueued' : case 'queue' : - return in_array( $handle, $this->queue ); + if ( in_array( $handle, $this->queue ) ) { + return true; + } + return $this->recurse_deps( $this->queue, $handle ); case 'to_do' : case 'to_print': // back compat @@ -401,7 +429,7 @@ * @since 2.6.0 * @var null */ - var $handle; + public $handle; /** * The handle source. @@ -410,7 +438,7 @@ * @since 2.6.0 * @var null */ - var $src; + public $src; /** * An array of handle dependencies. @@ -419,7 +447,7 @@ * @since 2.6.0 * @var array */ - var $deps = array(); + public $deps = array(); /** * The handle version. @@ -430,7 +458,7 @@ * @since 2.6.0 * @var bool|string */ - var $ver = false; + public $ver = false; /** * Additional arguments for the handle. @@ -439,7 +467,7 @@ * @since 2.6.0 * @var null */ - var $args = null; // Custom property, such as $in_footer or $media. + public $args = null; // Custom property, such as $in_footer or $media. /** * Extra data to supply to the handle. @@ -448,14 +476,14 @@ * @since 2.6.0 * @var array */ - var $extra = array(); + public $extra = array(); /** * Setup dependencies. * * @since 2.6.0 */ - function __construct() { + public function __construct() { @list( $this->handle, $this->src, $this->deps, $this->ver, $this->args ) = func_get_args(); if ( ! is_array($this->deps) ) $this->deps = array(); @@ -471,7 +499,7 @@ * @param mixed $data The data value to add. * @return bool False if not scalar, true otherwise. */ - function add_data( $name, $data ) { + public function add_data( $name, $data ) { if ( !is_scalar($name) ) return false; $this->extra[$name] = $data;