Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../themes/Divi/includes/builder/feature
File: Library.php
* @type string $type
[500] Fix | Delete
* @type string $url
[501] Fix | Delete
* }
[502] Fix | Delete
* ...
[503] Fix | Delete
* }
[504] Fix | Delete
* @type array[] $sorted {
[505] Fix | Delete
* Sorted Ids
[506] Fix | Delete
*
[507] Fix | Delete
* @type int[] $categories
[508] Fix | Delete
* @type int[] $packs
[509] Fix | Delete
* }
[510] Fix | Delete
* }
[511] Fix | Delete
*/
[512] Fix | Delete
$saved_layouts_data = apply_filters( 'et_builder_library_saved_layouts', array(
[513] Fix | Delete
'categories' => $layout_categories,
[514] Fix | Delete
'packs' => $layout_packs,
[515] Fix | Delete
'layouts' => $layouts,
[516] Fix | Delete
'sorted' => self::_sort_builder_library_data( $layout_categories, $layout_packs ),
[517] Fix | Delete
) );
[518] Fix | Delete
[519] Fix | Delete
/**
[520] Fix | Delete
* Filters custom tabs layout data for the library modal. Custom tabs must be registered
[521] Fix | Delete
* via the {@see 'et_builder_library_modal_custom_tabs'} filter.
[522] Fix | Delete
*
[523] Fix | Delete
* @since 3.1
[524] Fix | Delete
*
[525] Fix | Delete
* @param array[] $custom_layouts_data {
[526] Fix | Delete
* Custom Layouts Data Organized By Modal Tab
[527] Fix | Delete
*
[528] Fix | Delete
* @type array[] $tab_slug See {@see 'et_builder_library_saved_layouts'} for array structure.
[529] Fix | Delete
* ...
[530] Fix | Delete
* }
[531] Fix | Delete
* @param array[] $saved_layouts_data {@see 'et_builder_library_saved_layouts'} for array structure.
[532] Fix | Delete
*/
[533] Fix | Delete
$custom_layouts_data = apply_filters( 'et_builder_library_custom_layouts', array(
[534] Fix | Delete
'existing_pages' => $this->builder_library_modal_custom_tabs_existing_pages(),
[535] Fix | Delete
), $saved_layouts_data );
[536] Fix | Delete
[537] Fix | Delete
return array(
[538] Fix | Delete
'layouts_data' => $saved_layouts_data,
[539] Fix | Delete
'custom_layouts_data' => $custom_layouts_data,
[540] Fix | Delete
);
[541] Fix | Delete
}
[542] Fix | Delete
[543] Fix | Delete
/**
[544] Fix | Delete
* Filters data for the 'Your Existing Pages' tab.
[545] Fix | Delete
*
[546] Fix | Delete
* @since 3.4
[547] Fix | Delete
*
[548] Fix | Delete
* @return array[] $saved_layouts_data {
[549] Fix | Delete
* Existing Pages/Posts Data
[550] Fix | Delete
*
[551] Fix | Delete
* @type array[] $categories {
[552] Fix | Delete
* Post Types Filters
[553] Fix | Delete
*
[554] Fix | Delete
* @type $id mixed[] {
[555] Fix | Delete
* Post Type
[556] Fix | Delete
*
[557] Fix | Delete
* @type int $id Id.
[558] Fix | Delete
* @type int[] $layouts Id's of layouts in filter.
[559] Fix | Delete
* @type string $name Name.
[560] Fix | Delete
* @type string $slug Slug.
[561] Fix | Delete
* }
[562] Fix | Delete
* ...
[563] Fix | Delete
* }
[564] Fix | Delete
* @type array[] $packs {
[565] Fix | Delete
* Layout Packs
[566] Fix | Delete
*
[567] Fix | Delete
* @type $id mixed[] {
[568] Fix | Delete
* Pack
[569] Fix | Delete
*
[570] Fix | Delete
* @type string $category_ids Category ids.
[571] Fix | Delete
* @type string $category_slug Primary category slug.
[572] Fix | Delete
* @type string $date Published date.
[573] Fix | Delete
* @type string $description Description.
[574] Fix | Delete
* @type int $id Id.
[575] Fix | Delete
* @type int[] $layouts Id's of layouts in pack.
[576] Fix | Delete
* @type string $name Name.
[577] Fix | Delete
* @type string $screenshot Screenshot URL.
[578] Fix | Delete
* @type string $slug Slug.
[579] Fix | Delete
* @type string $thumbnail Thumbnail URL.
[580] Fix | Delete
* }
[581] Fix | Delete
* ...
[582] Fix | Delete
* }
[583] Fix | Delete
* @type object[] $layouts {
[584] Fix | Delete
* Pages/Posts Data
[585] Fix | Delete
*
[586] Fix | Delete
* @type object {
[587] Fix | Delete
* Page/Post Object
[588] Fix | Delete
*
[589] Fix | Delete
* @type int $id ID
[590] Fix | Delete
* @type string[] $categories
[591] Fix | Delete
* @type int[] $category_ids
[592] Fix | Delete
* @type string $category_slug
[593] Fix | Delete
* @type int $date
[594] Fix | Delete
* @type string $description
[595] Fix | Delete
* @type int $index
[596] Fix | Delete
* @type bool $is_global
[597] Fix | Delete
* @type bool $is_landing
[598] Fix | Delete
* @type string $name
[599] Fix | Delete
* @type string $screenshot
[600] Fix | Delete
* @type string $short_name
[601] Fix | Delete
* @type string $slug
[602] Fix | Delete
* @type string $thumbnail
[603] Fix | Delete
* @type string $thumbnail_small
[604] Fix | Delete
* @type string $type
[605] Fix | Delete
* @type string $url
[606] Fix | Delete
* }
[607] Fix | Delete
* ...
[608] Fix | Delete
* }
[609] Fix | Delete
* @type array[] $sorted {
[610] Fix | Delete
* Sorted Ids
[611] Fix | Delete
*
[612] Fix | Delete
* @type int[] $categories
[613] Fix | Delete
* @type int[] $packs
[614] Fix | Delete
* }
[615] Fix | Delete
* }
[616] Fix | Delete
*/
[617] Fix | Delete
protected function builder_library_modal_custom_tabs_existing_pages() {
[618] Fix | Delete
et_core_nonce_verified_previously();
[619] Fix | Delete
[620] Fix | Delete
$categories = array();
[621] Fix | Delete
$packs = array();
[622] Fix | Delete
$layouts = array();
[623] Fix | Delete
$index = 0;
[624] Fix | Delete
[625] Fix | Delete
$thumbnail = self::_get_image_size_name( 'thumbnail' );
[626] Fix | Delete
$thumbnail_small = self::_get_image_size_name( 'thumbnail_small' );
[627] Fix | Delete
$screenshot = self::_get_image_size_name( 'screenshot' );
[628] Fix | Delete
[629] Fix | Delete
/**
[630] Fix | Delete
* Array of post types that should be listed as categories under "Existing Pages".
[631] Fix | Delete
*
[632] Fix | Delete
* @since 4.0
[633] Fix | Delete
*
[634] Fix | Delete
* @param string[] $post_types
[635] Fix | Delete
*/
[636] Fix | Delete
$post_types = apply_filters( 'et_library_builder_post_types', et_builder_get_builder_post_types() );
[637] Fix | Delete
[638] Fix | Delete
// Remove Extra's category layouts from "Your Existing Pages" layout list
[639] Fix | Delete
if ( in_array( 'layout', $post_types ) ) {
[640] Fix | Delete
unset( $post_types[ array_search( 'layout', $post_types ) ] );
[641] Fix | Delete
}
[642] Fix | Delete
[643] Fix | Delete
if ( wp_doing_ajax() ) {
[644] Fix | Delete
// VB case
[645] Fix | Delete
$exclude = isset( $_POST['postId'] ) ? (int) $_POST['postId'] : false;
[646] Fix | Delete
} else {
[647] Fix | Delete
// BB case
[648] Fix | Delete
$exclude = get_the_ID();
[649] Fix | Delete
}
[650] Fix | Delete
[651] Fix | Delete
if ( $post_types ) {
[652] Fix | Delete
$category_id = 1;
[653] Fix | Delete
$layout_index = 0;
[654] Fix | Delete
[655] Fix | Delete
// Keep track of slugs in case there are duplicates.
[656] Fix | Delete
$seen = array();
[657] Fix | Delete
[658] Fix | Delete
foreach ( $post_types as $post_type ) {
[659] Fix | Delete
if ( ET_BUILDER_LAYOUT_POST_TYPE === $post_type ) {
[660] Fix | Delete
continue;
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
$post_type_obj = get_post_type_object( $post_type );
[664] Fix | Delete
[665] Fix | Delete
if ( ! $post_type_obj ) {
[666] Fix | Delete
continue;
[667] Fix | Delete
}
[668] Fix | Delete
[669] Fix | Delete
$category = new StdClass();
[670] Fix | Delete
[671] Fix | Delete
$category->id = $category_id;
[672] Fix | Delete
$category->layouts = array();
[673] Fix | Delete
$category->slug = $post_type;
[674] Fix | Delete
$category->name = $post_type_obj->label;
[675] Fix | Delete
[676] Fix | Delete
$query = new ET_Core_Post_Query( $post_type );
[677] Fix | Delete
[678] Fix | Delete
$posts = $query
[679] Fix | Delete
// Do not include unused Theme Builder layouts. For more information
[680] Fix | Delete
// see et_theme_builder_trash_draft_and_unused_posts().
[681] Fix | Delete
->not()->with_meta( '_et_theme_builder_marked_as_unused' )
[682] Fix | Delete
->run();
[683] Fix | Delete
[684] Fix | Delete
$posts = self::$_->array_sort_by( is_array( $posts ) ? $posts : array( $posts ), 'post_name' );
[685] Fix | Delete
[686] Fix | Delete
if ( ! empty( $posts ) ) {
[687] Fix | Delete
foreach ( $posts as $post ) {
[688] Fix | Delete
// Check if page builder is activated.
[689] Fix | Delete
if ( ! et_pb_is_pagebuilder_used( $post->ID ) ) {
[690] Fix | Delete
continue;
[691] Fix | Delete
}
[692] Fix | Delete
[693] Fix | Delete
// Do not add the current page to the list
[694] Fix | Delete
if ( $post->ID === $exclude ) {
[695] Fix | Delete
continue;
[696] Fix | Delete
}
[697] Fix | Delete
[698] Fix | Delete
// Check if content has shortcode.
[699] Fix | Delete
if ( ! has_shortcode( $post->post_content, 'et_pb_section' ) ) {
[700] Fix | Delete
continue;
[701] Fix | Delete
}
[702] Fix | Delete
[703] Fix | Delete
// Only include posts that the user is allowed to edit
[704] Fix | Delete
if ( ! current_user_can( 'edit_post', $post->ID ) ) {
[705] Fix | Delete
continue;
[706] Fix | Delete
}
[707] Fix | Delete
[708] Fix | Delete
$title = html_entity_decode( $post->post_title );
[709] Fix | Delete
[710] Fix | Delete
$slug = $post->post_name;
[711] Fix | Delete
[712] Fix | Delete
if ( ! $slug ) {
[713] Fix | Delete
// Generate a slug, if none is available - this is necessary as draft posts
[714] Fix | Delete
// that have never been published will not have a slug by default.
[715] Fix | Delete
$slug = wp_unique_post_slug( $post->post_title . '-' . $post->ID, $post->ID, $post->post_status, $post->post_type, $post->post_parent );
[716] Fix | Delete
}
[717] Fix | Delete
[718] Fix | Delete
if ( empty( $title ) || empty( $slug ) ) {
[719] Fix | Delete
continue;
[720] Fix | Delete
}
[721] Fix | Delete
[722] Fix | Delete
// Make sure we don't have duplicate slugs since we're using them as key in React.
[723] Fix | Delete
// slugs should always be unique but enabling/disabling WPML can break this rule.
[724] Fix | Delete
if ( isset( $seen[ $slug ] ) ) {
[725] Fix | Delete
continue;
[726] Fix | Delete
}
[727] Fix | Delete
[728] Fix | Delete
$type_label = et_theme_builder_is_layout_post_type( $post_type )
[729] Fix | Delete
? $post_type_obj->labels->singular_name
[730] Fix | Delete
: $post_type;
[731] Fix | Delete
[732] Fix | Delete
$seen[ $slug ] = true;
[733] Fix | Delete
$layout = new stdClass();
[734] Fix | Delete
$layout->index = $index;
[735] Fix | Delete
$layout->id = $post->ID;
[736] Fix | Delete
$layout->date = $post->post_date;
[737] Fix | Delete
$layout->status = $post->post_status;
[738] Fix | Delete
$layout->icon = 'layout';
[739] Fix | Delete
$layout->type = $type_label;
[740] Fix | Delete
$layout->name = et_core_intentionally_unescaped( $title, 'react_jsx' );
[741] Fix | Delete
$layout->short_name = et_core_intentionally_unescaped( $title, 'react_jsx' );
[742] Fix | Delete
$layout->slug = $slug;
[743] Fix | Delete
$layout->url = esc_url( wp_make_link_relative( get_permalink( $post ) ) );
[744] Fix | Delete
[745] Fix | Delete
$layout->thumbnail = esc_url( get_the_post_thumbnail_url( $post->ID, $thumbnail ) );
[746] Fix | Delete
$layout->thumbnail_small = esc_url( get_the_post_thumbnail_url( $post->ID, $thumbnail_small ) );
[747] Fix | Delete
$layout->screenshot = esc_url( get_the_post_thumbnail_url( $post->ID, $screenshot ) );
[748] Fix | Delete
[749] Fix | Delete
$layout->categories = array();
[750] Fix | Delete
$layout->category_ids = array( $category_id );
[751] Fix | Delete
[752] Fix | Delete
$layout->is_global = false;
[753] Fix | Delete
$layout->is_landing = false;
[754] Fix | Delete
$layout->description = '';
[755] Fix | Delete
$layout->category_slug = $post_type;
[756] Fix | Delete
// $layout_index is the array index, not the $post->ID
[757] Fix | Delete
$category->layouts[] = $layout_index;
[758] Fix | Delete
[759] Fix | Delete
$post_status_object = get_post_status_object( $post->post_status );
[760] Fix | Delete
[761] Fix | Delete
$layout->status = isset( $post_status_object->label ) ? $post_status_object->label : $post->post_status;
[762] Fix | Delete
[763] Fix | Delete
$layouts[ $layout_index++ ] = $layout;
[764] Fix | Delete
[765] Fix | Delete
$index++;
[766] Fix | Delete
}
[767] Fix | Delete
}
[768] Fix | Delete
[769] Fix | Delete
$categories[ $category_id++ ] = $category;
[770] Fix | Delete
}
[771] Fix | Delete
}
[772] Fix | Delete
[773] Fix | Delete
if ( count( $categories ) > 1) {
[774] Fix | Delete
// Sort categories (post_type in this case) by slug
[775] Fix | Delete
uasort( $categories, array( 'self', 'compare_by_slug' ) );
[776] Fix | Delete
}
[777] Fix | Delete
[778] Fix | Delete
return array(
[779] Fix | Delete
'categories' => $categories,
[780] Fix | Delete
'packs' => $packs,
[781] Fix | Delete
'layouts' => $layouts,
[782] Fix | Delete
'options' => array(
[783] Fix | Delete
'content' => array(
[784] Fix | Delete
'title' => array(
[785] Fix | Delete
et_core_intentionally_unescaped( self::__( '%d Pages' ), 'react_jsx' ),
[786] Fix | Delete
et_core_intentionally_unescaped( self::__( '%d Page' ), 'react_jsx' ),
[787] Fix | Delete
),
[788] Fix | Delete
),
[789] Fix | Delete
'sidebar' => array(
[790] Fix | Delete
'title' => et_core_intentionally_unescaped( self::__( 'Find A Page' ), 'react_jsx' ),
[791] Fix | Delete
),
[792] Fix | Delete
'list' => array(
[793] Fix | Delete
'columns' => array(
[794] Fix | Delete
'status' => et_core_intentionally_unescaped( self::__( 'Status' ), 'react_jsx' ),
[795] Fix | Delete
),
[796] Fix | Delete
),
[797] Fix | Delete
),
[798] Fix | Delete
'sorted' => array(
[799] Fix | Delete
'categories' => array_keys( $categories ),
[800] Fix | Delete
'packs' => $packs,
[801] Fix | Delete
),
[802] Fix | Delete
);
[803] Fix | Delete
}
[804] Fix | Delete
[805] Fix | Delete
/**
[806] Fix | Delete
* Get custom tabs for the library modal.
[807] Fix | Delete
*
[808] Fix | Delete
* @param string $post_type
[809] Fix | Delete
*
[810] Fix | Delete
* @return array[] {
[811] Fix | Delete
* Custom Tabs
[812] Fix | Delete
*
[813] Fix | Delete
* @type string $tab_slug Tab display name.
[814] Fix | Delete
* ...
[815] Fix | Delete
* }
[816] Fix | Delete
*/
[817] Fix | Delete
public static function builder_library_modal_custom_tabs( $post_type ) {
[818] Fix | Delete
/**
[819] Fix | Delete
* Filters custom tabs for the library modal.
[820] Fix | Delete
*
[821] Fix | Delete
* @since 3.1
[822] Fix | Delete
*
[823] Fix | Delete
* @param array[] $custom_tabs See {@self::builder_library_modal_custom_tabs()} return value.
[824] Fix | Delete
*/
[825] Fix | Delete
$custom_tabs = array();
[826] Fix | Delete
[827] Fix | Delete
if ( 'layout' !== $post_type ) {
[828] Fix | Delete
$custom_tabs['existing_pages'] = esc_html__( 'Your Existing Pages', 'et_builder' );
[829] Fix | Delete
}
[830] Fix | Delete
[831] Fix | Delete
return apply_filters( 'et_builder_library_modal_custom_tabs', $custom_tabs, $post_type );
[832] Fix | Delete
}
[833] Fix | Delete
[834] Fix | Delete
/**
[835] Fix | Delete
* Gets the post types that have existing layouts built for them.
[836] Fix | Delete
*
[837] Fix | Delete
* @since 3.1 Supersedes {@see et_pb_get_standard_post_types()}
[838] Fix | Delete
* Supersedes {@see et_pb_get_used_built_for_post_types()}
[839] Fix | Delete
* @since 2.0
[840] Fix | Delete
*
[841] Fix | Delete
* @param string $type Accepts 'standard' or 'all'. Default 'standard'.
[842] Fix | Delete
*
[843] Fix | Delete
* @return string[] $post_types
[844] Fix | Delete
*/
[845] Fix | Delete
public static function built_for_post_types( $type = 'standard' ) {
[846] Fix | Delete
static $all_built_for_post_types;
[847] Fix | Delete
[848] Fix | Delete
if ( 'standard' === $type ) {
[849] Fix | Delete
return self::$_standard_post_types;
[850] Fix | Delete
}
[851] Fix | Delete
[852] Fix | Delete
if ( $all_built_for_post_types ) {
[853] Fix | Delete
return $all_built_for_post_types;
[854] Fix | Delete
}
[855] Fix | Delete
[856] Fix | Delete
global $wpdb;
[857] Fix | Delete
[858] Fix | Delete
return $all_built_for_post_types = $wpdb->get_col(
[859] Fix | Delete
$wpdb->prepare(
[860] Fix | Delete
"SELECT DISTINCT( meta_value ) FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value > ''",
[861] Fix | Delete
'_et_pb_built_for_post_type'
[862] Fix | Delete
)
[863] Fix | Delete
);
[864] Fix | Delete
}
[865] Fix | Delete
[866] Fix | Delete
/**
[867] Fix | Delete
* Get the class instance.
[868] Fix | Delete
*
[869] Fix | Delete
* @since 3.0.99
[870] Fix | Delete
*
[871] Fix | Delete
* @return ET_Builder_Library
[872] Fix | Delete
*/
[873] Fix | Delete
public static function instance() {
[874] Fix | Delete
if ( ! self::$_instance ) {
[875] Fix | Delete
self::$_instance = new self;
[876] Fix | Delete
}
[877] Fix | Delete
[878] Fix | Delete
return self::$_instance;
[879] Fix | Delete
}
[880] Fix | Delete
[881] Fix | Delete
/**
[882] Fix | Delete
* Performs one-time maintenance tasks on library layouts in the database.
[883] Fix | Delete
* {@see 'admin_init'}
[884] Fix | Delete
*
[885] Fix | Delete
* @since 3.1 Relocated from `builder/layouts.php`. New task: create 'Legacy Layouts' category.
[886] Fix | Delete
* @since 2.0
[887] Fix | Delete
*/
[888] Fix | Delete
public static function update_old_layouts() {
[889] Fix | Delete
$layouts = ET_Builder_Post_Type_Layout::instance();
[890] Fix | Delete
[891] Fix | Delete
if ( 'yes' !== get_theme_mod( 'et_updated_layouts_built_for_post_types', 'no' ) ) {
[892] Fix | Delete
$posts = $layouts
[893] Fix | Delete
->query()
[894] Fix | Delete
->not()->with_meta( '_et_pb_built_for_post_type' )
[895] Fix | Delete
->run();
[896] Fix | Delete
[897] Fix | Delete
foreach ( (array) $posts as $single_post ) {
[898] Fix | Delete
update_post_meta( $single_post->ID, '_et_pb_built_for_post_type', 'page' );
[899] Fix | Delete
}
[900] Fix | Delete
[901] Fix | Delete
set_theme_mod( 'et_updated_layouts_built_for_post_types', 'yes' );
[902] Fix | Delete
}
[903] Fix | Delete
[904] Fix | Delete
if ( ! et_get_option( 'et_pb_layouts_updated', false ) ) {
[905] Fix | Delete
$types = array(
[906] Fix | Delete
'section',
[907] Fix | Delete
'row',
[908] Fix | Delete
'module',
[909] Fix | Delete
'fullwidth_section',
[910] Fix | Delete
'specialty_section',
[911] Fix | Delete
'fullwidth_module',
[912] Fix | Delete
);
[913] Fix | Delete
[914] Fix | Delete
$posts = $layouts
[915] Fix | Delete
->query()
[916] Fix | Delete
->not()->is_type( $types )
[917] Fix | Delete
->run();
[918] Fix | Delete
[919] Fix | Delete
foreach ( (array) $posts as $single_post ) {
[920] Fix | Delete
if ( ! get_the_terms( $single_post->ID, 'layout_type' ) ) {
[921] Fix | Delete
wp_set_object_terms( $single_post->ID, 'layout', 'layout_type', true );
[922] Fix | Delete
}
[923] Fix | Delete
}
[924] Fix | Delete
[925] Fix | Delete
et_update_option( 'et_pb_layouts_updated', true );
[926] Fix | Delete
}
[927] Fix | Delete
[928] Fix | Delete
if ( ! et_get_option( 'library_removed_legacy_layouts', false ) ) {
[929] Fix | Delete
$posts = $layouts
[930] Fix | Delete
->query()
[931] Fix | Delete
->with_meta( '_et_pb_predefined_layout' )
[932] Fix | Delete
->run();
[933] Fix | Delete
[934] Fix | Delete
foreach ( $posts as $post ) {
[935] Fix | Delete
if ( 'layout' === get_post_meta( $post->ID, '_et_pb_built_for_post_type', true ) ) {
[936] Fix | Delete
// Don't touch Extra's Category Builder layouts.
[937] Fix | Delete
continue;
[938] Fix | Delete
}
[939] Fix | Delete
[940] Fix | Delete
// Sanity check just to be safe
[941] Fix | Delete
if ( get_post_meta( $post->ID, '_et_pb_predefined_layout', true ) ) {
[942] Fix | Delete
wp_delete_post( $post->ID, true );
[943] Fix | Delete
}
[944] Fix | Delete
}
[945] Fix | Delete
[946] Fix | Delete
et_update_option( 'library_removed_legacy_layouts', true );
[947] Fix | Delete
}
[948] Fix | Delete
}
[949] Fix | Delete
[950] Fix | Delete
/**
[951] Fix | Delete
* AJAX Callback: Gets a layout by ID.
[952] Fix | Delete
*
[953] Fix | Delete
* @since 3.0.99
[954] Fix | Delete
*
[955] Fix | Delete
* @global $_POST['id'] The id of the desired layout.
[956] Fix | Delete
* @global $_POST ['nonce'] Nonce: 'et_builder_library_get_layout'.
[957] Fix | Delete
*
[958] Fix | Delete
* @return string|void $layout JSON encoded. See return value of {@see et_pb_retrieve_templates()}
[959] Fix | Delete
* for array structure.
[960] Fix | Delete
*/
[961] Fix | Delete
public function wp_ajax_et_builder_library_get_layout() {
[962] Fix | Delete
et_core_security_check( 'edit_posts', 'et_builder_library_get_layout', 'nonce' );
[963] Fix | Delete
[964] Fix | Delete
$id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
[965] Fix | Delete
[966] Fix | Delete
if ( empty( $id ) ) {
[967] Fix | Delete
wp_send_json_error();
[968] Fix | Delete
}
[969] Fix | Delete
[970] Fix | Delete
$result = array();
[971] Fix | Delete
$post = get_post( $id );
[972] Fix | Delete
[973] Fix | Delete
$post_type = isset( $post->post_type ) ? $post->post_type : ET_BUILDER_LAYOUT_POST_TYPE;
[974] Fix | Delete
[975] Fix | Delete
switch ( $post_type ) {
[976] Fix | Delete
case ET_BUILDER_LAYOUT_POST_TYPE:
[977] Fix | Delete
$layouts = et_pb_retrieve_templates( 'layout', '', 'all', '0', 'all', 'all', array(), $post_type );
[978] Fix | Delete
[979] Fix | Delete
foreach ( $layouts as $layout ) {
[980] Fix | Delete
if ( $id === $layout['ID'] ) {
[981] Fix | Delete
$result = $layout;
[982] Fix | Delete
break;
[983] Fix | Delete
}
[984] Fix | Delete
}
[985] Fix | Delete
[986] Fix | Delete
$result['savedShortcode'] = $result['shortcode'];
[987] Fix | Delete
[988] Fix | Delete
if ( ! isset( $_POST['is_BB'] ) ) {
[989] Fix | Delete
$result['savedShortcode'] = et_fb_process_shortcode( $result['savedShortcode'] );
[990] Fix | Delete
} else {
[991] Fix | Delete
$post_content_processed = do_shortcode( $result['shortcode'] );
[992] Fix | Delete
$result['migrations'] = ET_Builder_Module_Settings_Migration::$migrated;
[993] Fix | Delete
}
[994] Fix | Delete
[995] Fix | Delete
unset( $result['shortcode'] );
[996] Fix | Delete
break;
[997] Fix | Delete
default:
[998] Fix | Delete
$post_content = $post->post_content;
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function