Current File : /home/kelaby89/onlycnc.com.au/wp-content/themes/ondustry/inc/class/class-block-patterns.php |
<?php
/**
* Block Pattern Class
*
* @author Jegstudio
* @package ondustry
*/
namespace Ondustry;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use WP_Block_Pattern_Categories_Registry;
/**
* Init Class
*
* @package ondustry
*/
class Block_Patterns {
/**
* Instance variable
*
* @var $instance
*/
private static $instance;
/**
* Class instance.
*
* @return BlockPatterns
*/
public static function instance() {
if ( null === static::$instance ) {
static::$instance = new static();
}
return static::$instance;
}
/**
* Class constructor.
*/
public function __construct() {
$this->register_block_patterns();
$this->register_synced_patterns();
}
/**
* Register Block Patterns
*/
private function register_block_patterns() {
$block_pattern_categories = array(
'ondustry-core' => array( 'label' => __( 'Ondustry Core Patterns', 'ondustry' ) ),
);
if ( defined( 'GUTENVERSE' ) ) {
$block_pattern_categories['ondustry-gutenverse'] = array( 'label' => __( 'Ondustry Gutenverse Patterns', 'ondustry' ) );
$block_pattern_categories['ondustry-pro'] = array( 'label' => __( 'Ondustry Gutenverse PRO Patterns', 'ondustry' ) );
}
$block_pattern_categories = apply_filters( 'ondustry_block_pattern_categories', $block_pattern_categories );
foreach ( $block_pattern_categories as $name => $properties ) {
if ( ! WP_Block_Pattern_Categories_Registry::get_instance()->is_registered( $name ) ) {
register_block_pattern_category( $name, $properties );
}
}
$block_patterns = array(
);
if ( defined( 'GUTENVERSE' ) ) {
$block_patterns[] = 'ondustry-404-gutenverse-hero';
$block_patterns[] = 'ondustry-single-post-gutenverse-hero';
$block_patterns[] = 'ondustry-single-post-gutenverse-content';
$block_patterns[] = 'ondustry-gutenverse-header';
$block_patterns[] = 'ondustry-gutenverse-footer';
$block_patterns[] = 'ondustry-index-gutenverse-hero';
$block_patterns[] = 'ondustry-page-gutenverse-hero';
$block_patterns[] = 'ondustry-archive-gutenverse-hero';
$block_patterns[] = 'ondustry-search-gutenverse-hero';
}
$block_patterns = apply_filters( 'ondustry_block_patterns', $block_patterns );
$pattern_list = get_option( 'ondustry_synced_pattern_imported', false );
if ( ! $pattern_list ) {
$pattern_list = array();
}
if ( function_exists( 'register_block_pattern' ) ) {
foreach ( $block_patterns as $block_pattern ) {
$pattern_file = get_theme_file_path( '/inc/patterns/' . $block_pattern . '.php' );
$pattern_data = require $pattern_file;
if ( (bool) $pattern_data['is_sync'] ) {
$post = get_page_by_path( $block_pattern . '-synced', OBJECT, 'wp_block' );
/**Download Image */
$content = wp_slash( $pattern_data['content'] );
if ( $pattern_data['images'] ) {
$images = json_decode( $pattern_data['images'] );
foreach ( $images as $key => $image ) {
$url = $image->image_url;
$data = Helper::check_image_exist( $url );
if ( ! $data ) {
$data = Helper::handle_file( $url );
}
$content = str_replace( $url, $data['url'], $content );
$image_id = $image->image_id;
if ( $image_id && 'null' !== $image_id ) {
$content = str_replace( '"imageId\":' . $image_id, '"imageId\":' . $data['id'], $content );
}
}
}
if ( empty( $post ) ) {
$post_id = wp_insert_post(
array(
'post_name' => $block_pattern . '-synced',
'post_title' => $pattern_data['title'],
'post_content' => $content,
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'wp_block',
)
);
if ( ! is_wp_error( $post_id ) ) {
$pattern_category = $pattern_data['categories'];
foreach( $pattern_category as $category ){
wp_set_object_terms( $post_id, $category, 'wp_pattern_category' );
}
}
$pattern_data['content'] = '<!-- wp:block {"ref":' . $post_id . '} /-->';
$pattern_data['inserter'] = false;
$pattern_data['slug'] = $block_pattern;
$pattern_list[] = $pattern_data;
}
} else {
register_block_pattern(
'ondustry/' . $block_pattern,
require $pattern_file
);
}
}
update_option( 'ondustry_synced_pattern_imported', $pattern_list );
}
}
/**
* Register Synced Patterns
*/
private function register_synced_patterns() {
$patterns = get_option( 'ondustry_synced_pattern_imported' );
foreach ( $patterns as $block_pattern ) {
register_block_pattern(
'ondustry/' . $block_pattern['slug'],
$block_pattern
);
}
}
}