/home/preegmxb/gymnyou.com/wp-content/plugins/canvas/core/class-canvas-layouts.php
<?php
/**
* Integration of the Layouts into the plugin.
*
* @package Canvas
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* Integration Layouts class.
*/
class CNVS_Layouts {
/**
* Constructor
*/
public function __construct() {
// Register custom post type.
add_action( 'init', array( $this, 'add_custom_post_type' ) );
add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
}
/**
* Register custom post type.
*/
public function add_custom_post_type() {
register_post_type(
'canvas_layout',
array(
'label' => __( 'Canvas Layouts', 'canvas' ),
'public' => false,
'publicly_queryable' => false,
'has_archive' => false,
'show_ui' => true,
'exclude_from_search' => true,
'show_in_nav_menus' => false,
'rewrite' => false,
'menu_icon' => 'dashicons-editor-table',
'hierarchical' => false,
'show_in_menu' => false,
'show_in_admin_bar' => false,
'show_in_rest' => true,
'capability_type' => 'post',
'supports' => array(
'title',
'editor',
'thumbnail',
),
)
);
}
/**
* Get layouts data.
*
* @return array
*/
public function get_layouts_data() {
// Predefined layouts.
$layouts = apply_filters( 'canvas_register_layouts', array() );
$categories = apply_filters( 'canvas_register_layouts_categories', array() );
if ( $layouts ) {
// Parse layouts JSON.
foreach ( $layouts as $k => $data ) {
$json = file_get_contents( $data['json'] );
$json = json_decode( $json, true );
if ( isset( $json['content'] ) ) {
$layouts[ $k ]['content'] = $json['content'];
}
}
// Get layouts from DB.
global $post;
$backup_global_post = $post;
$local_layouts_query = new WP_Query(
array(
'post_type' => 'canvas_layout',
'posts_per_page' => -1,
'showposts' => -1,
'paged' => -1,
)
);
while ( $local_layouts_query->have_posts() ) {
$local_layouts_query->the_post();
$db_template = get_post();
$image_id = get_post_thumbnail_id( $db_template->ID );
$image_data = wp_get_attachment_image_src( $image_id, 'large' );
$layouts[ 'db-layout-' . $db_template->ID ] = array(
'title' => $db_template->post_title,
'content' => $db_template->post_content,
'thumbnail' => isset( $image_data[0] ) ? $image_data[0] : false,
'category' => array( 'db-layouts' ),
);
// add category.
if ( ! isset( $categories['db-layouts'] ) ) {
$categories['db-layouts'] = esc_html__( 'User Layouts', 'canvas' );
}
}
wp_reset_postdata();
$post = $backup_global_post;
}
return array(
'layouts' => $layouts,
'categories' => $categories,
);
}
/**
* Enqueue block editor specific scripts.
*/
public function enqueue_block_editor_assets() {
wp_enqueue_script(
'canvas-layouts',
CNVS_URL . 'layouts/extension/index.js',
array( 'wp-editor', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-edit-post', 'wp-compose', 'wp-components' ),
filemtime( CNVS_PATH . 'layouts/extension/index.js' )
);
wp_localize_script( 'jquery-ui-core', 'canvasLayouts', $this->get_layouts_data() );
}
/**
* Enqueue admin layouts list scripts.
*/
public function admin_enqueue_scripts() {
$screen = get_current_screen();
if ( isset( $screen->id ) && 'edit-canvas_layout' === $screen->id ) {
wp_enqueue_style( 'wp-components' );
wp_enqueue_script(
'canvas-layouts',
CNVS_URL . 'layouts/admin-list/index.js',
array( 'wp-editor', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-edit-post', 'wp-compose', 'wp-components', 'wp-api-fetch', 'lodash' ),
filemtime( CNVS_PATH . 'layouts/admin-list/index.js' ),
true
);
}
}
}
new CNVS_Layouts();