WP_Dependencies::all_deps( mixed $handles, bool $recursion = false, int|false $group = false )

Determines dependencies.


Description

Recursively builds an array of items to process taking dependencies into account. Does NOT catch infinite loops.


Parameters

$handles

(mixed) (Required) Item handle and argument (string) or item handles and arguments (array of strings).

$recursion

(bool) (Optional) Internal flag that function is calling itself.

Default value: false

$group

(int|false) (Optional) Group level: (int) level, (false) no groups.

Default value: false


Return

(bool) True on success, false on failure.


Source

File: wp-includes/class.wp-dependencies.php

	public function all_deps( $handles, $recursion = false, $group = false ) {
		if ( !$handles = (array) $handles )
			return false;

		foreach ( $handles as $handle ) {
			$handle_parts = explode('?', $handle);
			$handle = $handle_parts[0];
			$queued = in_array($handle, $this->to_do, true);

			if ( in_array($handle, $this->done, true) ) // Already done
				continue;

			$moved     = $this->set_group( $handle, $recursion, $group );
			$new_group = $this->groups[ $handle ];

			if ( $queued && !$moved ) // already queued and in the right group
				continue;

			$keep_going = true;
			if ( !isset($this->registered[$handle]) )
				$keep_going = false; // Item doesn't exist.
			elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
				$keep_going = false; // Item requires dependencies that don't exist.
			elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $new_group ) )
				$keep_going = false; // Item requires dependencies that don't exist.

			if ( ! $keep_going ) { // Either item or its dependencies don't exist.
				if ( $recursion )
					return false; // Abort this branch.
				else
					continue; // We're at the top level. Move on to the next one.
			}

			if ( $queued ) // Already grabbed it and its dependencies.
				continue;

			if ( isset($handle_parts[1]) )
				$this->args[$handle] = $handle_parts[1];

			$this->to_do[] = $handle;
		}

		return true;
	}


Changelog

Changelog
Version Description
WP-2.8.0 Added the $group parameter.
WP-2.6.0 Moved from WP_Scripts.
WP-2.1.0 Introduced.