Files
medicalalert-web-reloaded/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Patterns/PatternsHelper.php
Tony Volpe 8f4b5efda6 Merged in feature/MAW-855-import-code-into-aws (pull request #2)
code import from pantheon

* code import from pantheon
2023-12-04 23:08:14 +00:00

119 lines
2.8 KiB
PHP

<?php
namespace Automattic\WooCommerce\Blocks\Patterns;
use WP_Error;
/**
* Pattern Images Helper class.
*/
class PatternsHelper {
/**
* Returns the pattern content.
*
* @param string $pattern_slug The pattern slug.
*
* @return array The pattern content.
*/
public static function get_pattern_content( string $pattern_slug ) {
$pattern = self::get_patterns_dictionary( $pattern_slug );
if ( empty( $pattern ) ) {
return array();
}
if ( ! isset( $pattern['content'] ) ) {
return array();
}
return $pattern['content'];
}
/**
* Returns the pattern images.
*
* @param string $pattern_slug The pattern slug.
*
* @return array The pattern images.
*/
public static function get_pattern_images( string $pattern_slug ): array {
$pattern = self::get_patterns_dictionary( $pattern_slug );
if ( empty( $pattern ) ) {
return array();
}
if ( ! isset( $pattern['images'] ) ) {
return array();
}
if ( ! isset( $pattern['images_total'] ) ) {
return array();
}
return $pattern['images'];
}
/**
* Returns the image for the given pattern.
*
* @param array $images The array of images.
* @param int $index The index of the image to return.
* @param string $default_image The default image to return.
*
* @return string The image.
*/
public static function get_image_url( array $images, int $index, string $default_image ): string {
$image = filter_var( $default_image, FILTER_VALIDATE_URL )
? $default_image
: plugins_url( $default_image, dirname( __DIR__ ) );
if ( isset( $images[ $index ] ) ) {
$image = $images[ $index ];
}
return $image;
}
/**
* Get the Patterns Dictionary.
*
* @param string|null $pattern_slug The pattern slug.
*
* @return mixed|WP_Error|null
*/
private static function get_patterns_dictionary( $pattern_slug = null ) {
$patterns_dictionary = get_option( PatternUpdater::WC_BLOCKS_PATTERNS_CONTENT );
if ( ! empty( $patterns_dictionary ) ) {
if ( empty( $pattern_slug ) ) {
return $patterns_dictionary;
}
foreach ( $patterns_dictionary as $pattern_dictionary ) {
if ( $pattern_dictionary['slug'] === $pattern_slug ) {
return $pattern_dictionary;
}
}
}
$patterns_dictionary_file = plugin_dir_path( __FILE__ ) . 'dictionary.json';
if ( ! file_exists( $patterns_dictionary_file ) ) {
return new WP_Error( 'missing_patterns_dictionary', __( 'The patterns dictionary is missing.', 'woocommerce' ) );
}
$patterns_dictionary = wp_json_file_decode( $patterns_dictionary_file, array( 'associative' => true ) );
if ( ! empty( $pattern_slug ) ) {
foreach ( $patterns_dictionary as $pattern_dictionary ) {
if ( $pattern_dictionary['slug'] === $pattern_slug ) {
return $pattern_dictionary;
}
}
}
return $patterns_dictionary;
}
}