WP_Dependencies::all_deps( string|string[] $handles, bool $recursion = false, int|false $group = false ): bool

Determines dependencies.

Description

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

Parameters

$handlesstring|string[]required
Item handle (string) or item handles (array of strings).
$recursionbooloptional
Internal flag that function is calling itself.

Default:false

$groupint|falseoptional
Group level: level (int), no group (false).

Default:false

Return

bool True on success, false on failure.

Source

public function all_deps( $handles, $recursion = false, $group = false ) {
	$handles = (array) $handles;
	if ( ! $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

VersionDescription
2.8.0Added the $group parameter.
2.6.0Moved from WP_Scripts.
2.1.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.