WP_Dependencies::all_deps

Advertisement

Summery Summery

Determines dependencies.

Syntax Syntax

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

Description Description

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

Parameters Parameters

$handles

(Required) Item handle (string) or item handles (array of strings).

$recursion

(Optional) Internal flag that function is calling itself.

Default value: false

$group

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

Default value: false

Return Return

(bool) True on success, false on failure.

Source Source

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

	 *                                   Default false.
	 * @return bool True on success, false on failure.
	 */
	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;
		}

Advertisement

Changelog Changelog

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

Advertisement

Leave a Reply