HEX
Server: Apache
System: Linux od-b43f49 4.9.0-0.bpo.12-amd64 #1 SMP Debian 4.9.210-1+deb9u1~deb8u1 (2020-06-09) x86_64
User: uid181852 (181852)
PHP: 8.2.30
Disabled: passthru,exec,system,popen,shell_exec,proc_open,pcntl_exec
Upload Files
File: /home/clients/94735d3feef25fe7d1511e6bdd8b0ef6/web/wp-content/plugins/pods/src/Pods/Pod_Manager.php
<?php

namespace Pods;

use Pods;

/**
 * Manage Pods instances for reuse.
 *
 * @since 2.9.0
 */
class Pod_Manager {

	/**
	 * The list of Pods instances.
	 *
	 * @since 2.9.0
	 *
	 * @var Pods[]
	 */
	private $instances;

	/**
	 * Get the Pods object for a specific pod name and item ID. Possibly use already built-object if available.
	 *
	 * @since 2.9.0
	 *
	 * @param array|string $args The list of arguments to use or the Pod name to use.
	 *
	 * @return bool|Pods|WP_Error The Pods object, the WP_Error message, or false if the Pods object is not found.
	 */
	public function get_pod( $args = [] ) {
		if ( is_string( $args ) ) {
			$args = [
				'name' => $args,
			];

			$func_args = func_get_args();

			if ( isset( $func_args[1] ) ) {
				if ( is_array( $func_args[1] ) ) {
					$args['find'] = $func_args[1];
				} else {
					$args['id'] = $func_args[1];
				}
			}
		}

		if ( ! isset( $args['name'] ) ) {
			return new WP_Error( __( 'Pod name is required.', 'pods' ) );
		}

		$key         = $args['name'];
		$id          = isset( $args['id'] ) ? $args['id'] : null;
		$find        = isset( $args['find'] ) ? $args['find'] : null;
		$store_by_id = isset( $args['store_by_id'] ) && ! $args['store_by_id'];
		$validation  = isset( $args['validation'] ) && $args['validation'];

		if ( $id && $store_by_id ) {
			$key .= '/' . $id;
		}

		if ( isset( $this->instances[ $key ] ) ) {
			if ( $id && ! $store_by_id && (int) $this->instances[ $key ]->id() !== (int) $id ) {
				$this->instances[ $key ]->fetch( $id );
			} elseif ( $find ) {
				$this->instances[ $key ]->find( $find );
			}

			return $this->instances[ $key ];
		}

		$pod = pods( $args['name'], $id );

		if ( $validation ) {
			if ( ! $pod || ! $pod->valid() ) {
				return new WP_Error( __( 'Pod not found.', 'pods' ) );
			}

			if ( $id && ! $pod->exists() ) {
				return new WP_Error( __( 'Pod item not found.', 'pods' ) );
			}
		}

		if ( $pod && $find ) {
			$pod->find( $find );
		}

		if ( $pod ) {
			$this->instances[ $key ] = $pod;
		}

		return $pod;
	}

}