Skip to content

Commit

Permalink
Remove changes unrelated to gutenberg/62529.
Browse files Browse the repository at this point in the history
  • Loading branch information
oandregal committed Jun 17, 2024
1 parent 5e08be5 commit 646df13
Showing 1 changed file with 30 additions and 61 deletions.
91 changes: 30 additions & 61 deletions src/wp-includes/class-wp-theme-json-resolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,6 @@ class WP_Theme_JSON_Resolver {
*/
protected static $theme_json_file_cache = array();

/**
* Cache of parsed and translated style variation theme.json partials.
*
* @since 6.6.0
* @var array
*/
protected static $style_variations_cache = array();

/**
* Processes a file that adheres to the theme.json schema
* and returns an array with its contents, or a void array if none found.
Expand Down Expand Up @@ -701,32 +693,45 @@ private static function recursively_iterate_json( $dir ) {
}

/**
* Determines the scope of a style variation.
* Determines if a supplied style variation matches the provided scope.
*
* For backwards compatibility, if a variation does not define any scope
* related property, e.g. `blockTypes`, it is assumed to be a theme style
* variation.
*
* @since 6.6.0
*
* @param array $variation Theme.json shaped style variation object.
* @return string
* @param array $variation Theme.json shaped style variation object.
* @param string $scope Scope to check e.g. theme, block etc.
* @return boolean
*/
protected static function get_style_variation_scope( $variation ) {
if ( isset( $variation['blockTypes'] ) ) {
return 'block';
private static function style_variation_has_scope( $variation, $scope ) {
if ( 'block' === $scope ) {
return isset( $variation['blockTypes'] );
}

if ( 'theme' === $scope ) {
return ! isset( $variation['blockTypes'] );
}

return 'theme';
return false;
}

/**
* Retrieves all style variation partials defined by the theme (parent and child).
* Returns the style variations defined by the theme.
*
* @since 6.6.0
* @since 6.0.0
* @since 6.2.0 Returns parent theme variations if theme is a child.
* @since 6.6.0 Added configurable scope parameter to allow filtering
* theme.json partial files by the scope to which they
* can be applied e.g. theme vs block etc.
*
* @param string $scope The scope or type of style variation to retrieve e.g. theme, block etc.
* @return array
*/
protected static function get_style_variation_files() {
public static function get_style_variations( $scope = 'theme' ) {
$variation_files = array();
$variations = array();
$base_directory = get_stylesheet_directory() . '/styles';
$template_directory = get_template_directory() . '/styles';
if ( is_dir( $base_directory ) ) {
Expand All @@ -745,54 +750,18 @@ protected static function get_style_variation_files() {
$variation_files = array_merge( $variation_files, $variation_files_parent );
}
ksort( $variation_files );

return $variation_files;
}

/**
* Returns the style variations defined by the theme (parent and child).
*
* @since 6.2.0 Returns parent theme variations if theme is a child.
* @since 6.6.0 Added cache and configurable scope parameter to allow
* filtering theme.json partial files by the scope to
* which they can be applied e.g. theme vs block etc.
*
* @param string $scope The scope or type of style variation to retrieve e.g. theme, block etc.
* @return array
*/
public static function get_style_variations( $scope = 'theme' ) {
$theme_dir = get_stylesheet_directory();
$locale = get_locale();
if ( isset( static::$style_variations_cache[ $theme_dir ][ $locale ][ $scope ] ) ) {
return static::$style_variations_cache[ $theme_dir ][ $locale ][ $scope ];
}

$variation_files = static::get_style_variation_files();
$variations = array(
'theme' => array(),
'block' => array(),
);

foreach ( $variation_files as $path => $file ) {
$decoded_file = wp_json_file_decode( $path, array( 'associative' => true ) );
if ( is_array( $decoded_file ) ) {
$variation_scope = static::get_style_variation_scope( $decoded_file );

if ( $variation_scope ) {
$translated = static::translate( $decoded_file, wp_get_theme()->get( 'TextDomain' ) );
$variation = ( new WP_Theme_JSON( $translated ) )->get_raw_data();

if ( empty( $variation['title'] ) ) {
$variation['title'] = basename( $path, '.json' );
}

$variations[ $variation_scope ][] = $variation;
if ( is_array( $decoded_file ) && static::style_variation_has_scope( $decoded_file, $scope ) ) {
$translated = static::translate( $decoded_file, wp_get_theme()->get( 'TextDomain' ) );
$variation = ( new WP_Theme_JSON( $translated ) )->get_raw_data();
if ( empty( $variation['title'] ) ) {
$variation['title'] = basename( $path, '.json' );
}
$variations[] = $variation;
}
}
static::$style_variations_cache[ $theme_dir ][ $locale ] = $variations;

return static::$style_variations_cache[ $theme_dir ][ $locale ][ $scope ];
return $variations;
}

/**
Expand Down

0 comments on commit 646df13

Please sign in to comment.