wp/wp-includes/class-wp-customize-setting.php
changeset 9 177826044cd9
parent 7 cf61fcea0001
child 16 a86126ab1dd4
--- a/wp/wp-includes/class-wp-customize-setting.php	Mon Oct 14 18:06:33 2019 +0200
+++ b/wp/wp-includes/class-wp-customize-setting.php	Mon Oct 14 18:28:13 2019 +0200
@@ -66,9 +66,9 @@
 	public $default = '';
 
 	/**
-	 * Options for rendering the live preview of changes in Theme Customizer.
+	 * Options for rendering the live preview of changes in Customizer.
 	 *
-	 * Set this value to 'postMessage' to enable a custom Javascript handler to render changes to this setting
+	 * Set this value to 'postMessage' to enable a custom JavaScript handler to render changes to this setting
 	 * as opposed to reloading the whole page.
 	 *
 	 * @link https://developer.wordpress.org/themes/customize-api
@@ -135,7 +135,6 @@
 	 * Cache of multidimensional values to improve performance.
 	 *
 	 * @since 4.4.0
-	 * @static
 	 * @var array
 	 */
 	protected static $aggregated_multidimensionals = array();
@@ -169,15 +168,15 @@
 		}
 
 		$this->manager = $manager;
-		$this->id = $id;
+		$this->id      = $id;
 
 		// Parse the ID for array keys.
 		$this->id_data['keys'] = preg_split( '/\[/', str_replace( ']', '', $this->id ) );
 		$this->id_data['base'] = array_shift( $this->id_data['keys'] );
 
 		// Rebuild the ID.
-		$this->id = $this->id_data[ 'base' ];
-		if ( ! empty( $this->id_data[ 'keys' ] ) ) {
+		$this->id = $this->id_data['base'];
+		if ( ! empty( $this->id_data['keys'] ) ) {
 			$this->id .= '[' . implode( '][', $this->id_data['keys'] ) . ']';
 		}
 
@@ -311,8 +310,8 @@
 			return true;
 		}
 
-		$id_base = $this->id_data['base'];
-		$is_multidimensional = ! empty( $this->id_data['keys'] );
+		$id_base                 = $this->id_data['base'];
+		$is_multidimensional     = ! empty( $this->id_data['keys'] );
 		$multidimensional_filter = array( $this, '_multidimensional_preview_filter' );
 
 		/*
@@ -321,19 +320,19 @@
 		 * then the preview short-circuits because there is nothing that needs
 		 * to be previewed.
 		 */
-		$undefined = new stdClass();
+		$undefined     = new stdClass();
 		$needs_preview = ( $undefined !== $this->post_value( $undefined ) );
-		$value = null;
+		$value         = null;
 
 		// Since no post value was defined, check if we have an initial value set.
 		if ( ! $needs_preview ) {
 			if ( $this->is_multidimensional_aggregated ) {
-				$root = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
+				$root  = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
 				$value = $this->multidimensional_get( $root, $this->id_data['keys'], $undefined );
 			} else {
-				$default = $this->default;
+				$default       = $this->default;
 				$this->default = $undefined; // Temporarily set default to undefined so we can detect if existing value is set.
-				$value = $this->value();
+				$value         = $this->value();
 				$this->default = $default;
 			}
 			$needs_preview = ( $undefined === $value ); // Because the default needs to be supplied.
@@ -348,7 +347,7 @@
 		}
 
 		switch ( $this->type ) {
-			case 'theme_mod' :
+			case 'theme_mod':
 				if ( ! $is_multidimensional ) {
 					add_filter( "theme_mod_{$id_base}", array( $this, '_preview_filter' ) );
 				} else {
@@ -359,7 +358,7 @@
 					self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'][ $this->id ] = $this;
 				}
 				break;
-			case 'option' :
+			case 'option':
 				if ( ! $is_multidimensional ) {
 					add_filter( "pre_option_{$id_base}", array( $this, '_preview_filter' ) );
 				} else {
@@ -371,8 +370,7 @@
 					self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'][ $this->id ] = $this;
 				}
 				break;
-			default :
-
+			default:
 				/**
 				 * Fires when the WP_Customize_Setting::preview() method is called for settings
 				 * not handled as theme_mods or options.
@@ -436,7 +434,7 @@
 			return $original;
 		}
 
-		$undefined = new stdClass(); // Symbol hack.
+		$undefined  = new stdClass(); // Symbol hack.
 		$post_value = $this->post_value( $undefined );
 		if ( $undefined !== $post_value ) {
 			$value = $post_value;
@@ -483,8 +481,8 @@
 
 			// Do the replacements of the posted/default sub value into the root value.
 			$value = $previewed_setting->post_value( $previewed_setting->default );
-			$root = self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'];
-			$root = $previewed_setting->multidimensional_replace( $root, $previewed_setting->id_data['keys'], $value );
+			$root  = self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'];
+			$root  = $previewed_setting->multidimensional_replace( $root, $previewed_setting->id_data['keys'], $value );
 			self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'] = $root;
 
 			// Mark this setting having been applied so that it will be skipped when the filter is called again.
@@ -596,7 +594,7 @@
 		 */
 		$validity = apply_filters( "customize_validate_{$this->id}", $validity, $value, $this );
 
-		if ( is_wp_error( $validity ) && empty( $validity->errors ) ) {
+		if ( is_wp_error( $validity ) && ! $validity->has_errors() ) {
 			$validity = true;
 		}
 		return $validity;
@@ -720,7 +718,7 @@
 	 * @return mixed The value.
 	 */
 	public function value() {
-		$id_base = $this->id_data['base'];
+		$id_base      = $this->id_data['base'];
 		$is_core_type = ( 'option' === $this->type || 'theme_mod' === $this->type );
 
 		if ( ! $is_core_type && ! $this->is_multidimensional_aggregated ) {
@@ -753,7 +751,7 @@
 			$value = apply_filters( "customize_value_{$id_base}", $value, $this );
 		} elseif ( $this->is_multidimensional_aggregated ) {
 			$root_value = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
-			$value = $this->multidimensional_get( $root_value, $this->id_data['keys'], $this->default );
+			$value      = $this->multidimensional_get( $root_value, $this->id_data['keys'], $this->default );
 
 			// Ensure that the post value is used if the setting is previewed, since preview filters aren't applying on cached $root_value.
 			if ( $this->is_previewed ) {
@@ -786,8 +784,9 @@
 		 */
 		$value = apply_filters( "customize_sanitize_js_{$this->id}", $this->value(), $this );
 
-		if ( is_string( $value ) )
-			return html_entity_decode( $value, ENT_QUOTES, 'UTF-8');
+		if ( is_string( $value ) ) {
+			return html_entity_decode( $value, ENT_QUOTES, 'UTF-8' );
+		}
 
 		return $value;
 	}
@@ -816,11 +815,13 @@
 	 * @return bool False if theme doesn't support the setting or user can't change setting, otherwise true.
 	 */
 	final public function check_capabilities() {
-		if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) )
+		if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) {
 			return false;
+		}
 
-		if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) )
+		if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) {
 			return false;
+		}
 
 		return true;
 	}
@@ -836,21 +837,25 @@
 	 * @return array|void Keys are 'root', 'node', and 'key'.
 	 */
 	final protected function multidimensional( &$root, $keys, $create = false ) {
-		if ( $create && empty( $root ) )
+		if ( $create && empty( $root ) ) {
 			$root = array();
+		}
 
-		if ( ! isset( $root ) || empty( $keys ) )
+		if ( ! isset( $root ) || empty( $keys ) ) {
 			return;
+		}
 
 		$last = array_pop( $keys );
 		$node = &$root;
 
 		foreach ( $keys as $key ) {
-			if ( $create && ! isset( $node[ $key ] ) )
+			if ( $create && ! isset( $node[ $key ] ) ) {
 				$node[ $key ] = array();
+			}
 
-			if ( ! is_array( $node ) || ! isset( $node[ $key ] ) )
+			if ( ! is_array( $node ) || ! isset( $node[ $key ] ) ) {
 				return;
+			}
 
 			$node = &$node[ $key ];
 		}
@@ -865,8 +870,9 @@
 			}
 		}
 
-		if ( ! isset( $node[ $last ] ) )
+		if ( ! isset( $node[ $last ] ) ) {
 			return;
+		}
 
 		return array(
 			'root' => &$root,
@@ -886,15 +892,17 @@
 	 * @return mixed
 	 */
 	final protected function multidimensional_replace( $root, $keys, $value ) {
-		if ( ! isset( $value ) )
+		if ( ! isset( $value ) ) {
 			return $root;
-		elseif ( empty( $keys ) ) // If there are no keys, we're replacing the root.
+		} elseif ( empty( $keys ) ) { // If there are no keys, we're replacing the root.
 			return $value;
+		}
 
 		$result = $this->multidimensional( $root, $keys, true );
 
-		if ( isset( $result ) )
+		if ( isset( $result ) ) {
 			$result['node'][ $result['key'] ] = $value;
+		}
 
 		return $root;
 	}
@@ -910,8 +918,9 @@
 	 * @return mixed The requested value or the default value.
 	 */
 	final protected function multidimensional_get( $root, $keys, $default = null ) {
-		if ( empty( $keys ) ) // If there are no keys, test the root.
+		if ( empty( $keys ) ) { // If there are no keys, test the root.
 			return isset( $root ) ? $root : $default;
+		}
 
 		$result = $this->multidimensional( $root, $keys );
 		return isset( $result ) ? $result['node'][ $result['key'] ] : $default;