You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.2 KiB
PHTML
167 lines
4.2 KiB
PHTML
8 months ago
|
<?php
|
||
|
/**
|
||
|
* File containing Local Library Item Editor class.
|
||
|
*
|
||
|
* @package Builder
|
||
|
* @subpackage ThemeBuilder
|
||
|
* @since 4.18.0
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Local Library Item Editor class.
|
||
|
*/
|
||
|
class ET_Theme_Builder_Local_Library_Item_Editor {
|
||
|
/**
|
||
|
* Hold the class instance.
|
||
|
*
|
||
|
* @var ET_Theme_Builder_Local_Library_Item_Editor[]
|
||
|
*/
|
||
|
private static $_instances;
|
||
|
|
||
|
/**
|
||
|
* Interim Theme Builder Id.
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
protected static $_theme_builder_id;
|
||
|
|
||
|
/**
|
||
|
* Library Item.
|
||
|
*
|
||
|
* @var ET_Theme_Builder_Local_Library_Item
|
||
|
*/
|
||
|
public $item;
|
||
|
|
||
|
/**
|
||
|
* Class contructor.
|
||
|
*
|
||
|
* @param int $item_id Item Id.
|
||
|
*/
|
||
|
public function __construct( $item_id ) {
|
||
|
if ( ! self::$_theme_builder_id ) {
|
||
|
self::$_theme_builder_id = et_theme_builder_insert_library_theme_builder();
|
||
|
}
|
||
|
|
||
|
$this->item = new ET_Theme_Builder_Local_Library_Item( $item_id );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the singleton instance.
|
||
|
*
|
||
|
* @param int $item_id Item Id.
|
||
|
*
|
||
|
* @return ET_Theme_Builder_Local_Library_Item_Editor
|
||
|
*/
|
||
|
public static function instance( $item_id ) {
|
||
|
if ( ! isset( self::$_instances[ $item_id ] ) ) {
|
||
|
self::$_instances[ $item_id ] = new ET_Theme_Builder_Local_Library_Item_Editor( $item_id );
|
||
|
}
|
||
|
|
||
|
return self::$_instances[ $item_id ];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the interim Theme Builder Id for the current request.
|
||
|
*
|
||
|
* @return int
|
||
|
*/
|
||
|
public static function get_interim_theme_builder_id() {
|
||
|
return self::$_theme_builder_id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Init Library Template Item.
|
||
|
*/
|
||
|
public function init_library_template_item_editor() {
|
||
|
if ( ! isset( self::$_theme_builder_id ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// Insert template.
|
||
|
$template_id = et_theme_builder_create_template_from_library_template( $this->item->item_post );
|
||
|
|
||
|
if ( ! $template_id ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
add_post_meta( self::$_theme_builder_id, '_et_template', $template_id );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Init Library Template Item.
|
||
|
*/
|
||
|
public function init_library_set_item_editor() {
|
||
|
if ( ! isset( self::$_theme_builder_id ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$template_ids = get_post_meta( $this->item->item_post->ID, '_et_template_id', false );
|
||
|
$default_template_item_id = (int) get_post_meta( $this->item->item_post->ID, '_et_default_template_id', true );
|
||
|
$global_layouts = array();
|
||
|
|
||
|
foreach ( $template_ids as $maybe_template_id ) {
|
||
|
$template_item_id = absint( $maybe_template_id );
|
||
|
$template_item = new ET_Theme_Builder_Local_Library_Item( $template_item_id );
|
||
|
|
||
|
if ( ! isset( $template_item->item_post ) || ! is_a( $template_item->item_post, 'WP_Post' ) ) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
// Insert template.
|
||
|
$template_id = et_theme_builder_create_template_from_library_template( $template_item->item_post, $global_layouts );
|
||
|
|
||
|
if ( ! $template_id ) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if ( $template_item_id === $default_template_item_id ) {
|
||
|
$global_layouts = array(
|
||
|
'body' => (int) get_post_meta( $template_id, '_et_body_layout_id', true ),
|
||
|
'header' => (int) get_post_meta( $template_id, '_et_header_layout_id', true ),
|
||
|
'footer' => (int) get_post_meta( $template_id, '_et_footer_layout_id', true ),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
add_post_meta( self::$_theme_builder_id, '_et_template', $template_id );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Init Library Item.
|
||
|
*/
|
||
|
public function init_library_item_editor() {
|
||
|
if ( ! is_a( $this->item, 'ET_Theme_Builder_Local_Library_Item' ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$item_type = $this->item->get_item_type();
|
||
|
|
||
|
if ( ET_THEME_BUILDER_ITEM_TEMPLATE === $item_type ) {
|
||
|
$this->init_library_template_item_editor();
|
||
|
} elseif ( ET_THEME_BUILDER_ITEM_SET === $item_type ) {
|
||
|
$this->init_library_set_item_editor();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the item title field formatted to be displayed in Theme Builder.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_library_item_editor_item_title() {
|
||
|
if ( ET_THEME_BUILDER_ITEM_SET === $this->item->get_item_type() ) {
|
||
|
return sprintf(
|
||
|
'%1$s: %2$s',
|
||
|
esc_html_x( 'Edit Set', 'Edit Set using Theme Builder', 'et_builder' ),
|
||
|
$this->item->get_item_title()
|
||
|
);
|
||
|
} elseif ( ET_THEME_BUILDER_ITEM_TEMPLATE === $this->item->get_item_type() ) {
|
||
|
return sprintf(
|
||
|
'%1$s: %2$s',
|
||
|
esc_html_x( 'Edit Template', 'Edit Template using Theme Builder', 'et_builder' ),
|
||
|
$this->item->get_item_title()
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|