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/core/componen...
File: Portability.php
* Export Theme Builder templates in chunks.
[500] Fix | Delete
*
[501] Fix | Delete
* @since 4.0
[502] Fix | Delete
*
[503] Fix | Delete
* @param integer $id Unique ID to represent this theme builder export process.
[504] Fix | Delete
* @param array $step
[505] Fix | Delete
* @param integer $steps
[506] Fix | Delete
* @param integer $step_index
[507] Fix | Delete
* @param integer $chunk
[508] Fix | Delete
*
[509] Fix | Delete
* @return array|false
[510] Fix | Delete
*/
[511] Fix | Delete
public function export_theme_builder( $id, $step, $steps, $step_index = 0, $chunk = 0 ) {
[512] Fix | Delete
$result = $this->serialize_theme_builder( $id, $step, $steps, $step_index, $chunk );
[513] Fix | Delete
[514] Fix | Delete
if ( false === $result ) {
[515] Fix | Delete
return false;
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
$temp_file_id = sanitize_file_name( 'et_theme_builder_export_' . $id );
[519] Fix | Delete
$temp_file = $this->temp_file( $temp_file_id, 'et_core_export' );
[520] Fix | Delete
[521] Fix | Delete
if ( $result['ready'] ) {
[522] Fix | Delete
$this->get_filesystem()->put_contents( $temp_file, wp_json_encode( $result[ 'data' ] ) );
[523] Fix | Delete
}
[524] Fix | Delete
[525] Fix | Delete
return array_merge( $result, array(
[526] Fix | Delete
'temp_file' => $temp_file,
[527] Fix | Delete
'temp_file_id' => $temp_file_id,
[528] Fix | Delete
) );
[529] Fix | Delete
}
[530] Fix | Delete
[531] Fix | Delete
/**
[532] Fix | Delete
* Get whether an array represents a valid Theme Builder export.
[533] Fix | Delete
*
[534] Fix | Delete
* @since 4.0
[535] Fix | Delete
*
[536] Fix | Delete
* @param array $export
[537] Fix | Delete
*
[538] Fix | Delete
* @return boolean
[539] Fix | Delete
*/
[540] Fix | Delete
public function is_valid_theme_builder_export( $export ) {
[541] Fix | Delete
$valid_context = isset( $export['context'] ) && $export['context'] === $this->instance->context;
[542] Fix | Delete
$has_templates = isset( $export['templates'] ) && is_array( $export['templates'] );
[543] Fix | Delete
$has_layouts = isset( $export['layouts'] ) && is_array( $export['layouts'] );
[544] Fix | Delete
[545] Fix | Delete
return $valid_context && $has_templates && $has_layouts;
[546] Fix | Delete
}
[547] Fix | Delete
[548] Fix | Delete
/**
[549] Fix | Delete
* Import a single layout in chunks.
[550] Fix | Delete
*
[551] Fix | Delete
* @since 4.0
[552] Fix | Delete
*
[553] Fix | Delete
* @param string $id Unique ID to represent this layout serialization.
[554] Fix | Delete
* @param array $layout
[555] Fix | Delete
* @param integer $chunk
[556] Fix | Delete
*
[557] Fix | Delete
* @return array|false
[558] Fix | Delete
*/
[559] Fix | Delete
public function import_layout( $id, $layout, $chunk = 0 ) {
[560] Fix | Delete
$post_id = 0;
[561] Fix | Delete
$import = $this->validate( $layout );
[562] Fix | Delete
[563] Fix | Delete
if ( false === $import ) {
[564] Fix | Delete
return false;
[565] Fix | Delete
}
[566] Fix | Delete
[567] Fix | Delete
$import['data'] = $this->apply_query( $import['data'], 'set' );
[568] Fix | Delete
[569] Fix | Delete
if ( ! isset( $import['context'] ) || ( isset( $import['context'] ) && 'et_builder' !== $import['context'] ) ) {
[570] Fix | Delete
return false;
[571] Fix | Delete
}
[572] Fix | Delete
[573] Fix | Delete
$result = $this->chunk_images( self::$_->array_get( $import, 'images', array() ), 'upload_images', $id, $chunk );
[574] Fix | Delete
[575] Fix | Delete
if ( $result['ready'] ) {
[576] Fix | Delete
$import['data'] = $this->replace_images_urls( $result['images'], $import['data'] );
[577] Fix | Delete
$post_type = self::$_->array_get( $import, 'post_type', 'post' );
[578] Fix | Delete
$post_title = self::$_->array_get( $import, 'post_title', '' );
[579] Fix | Delete
$post_meta = self::$_->array_get( $import, 'post_meta', array() );
[580] Fix | Delete
$post_type_object = get_post_type_object( $post_type );
[581] Fix | Delete
[582] Fix | Delete
if ( ! $post_type_object || ! current_user_can( $post_type_object->cap->create_posts ) ) {
[583] Fix | Delete
return false;
[584] Fix | Delete
}
[585] Fix | Delete
[586] Fix | Delete
$content = array_values( $import['data'] );
[587] Fix | Delete
$content = $content[0];
[588] Fix | Delete
$args = array(
[589] Fix | Delete
'post_type' => $post_type,
[590] Fix | Delete
'post_content' => current_user_can( 'unfiltered_html' ) ? $content : wp_kses_post( $content ),
[591] Fix | Delete
);
[592] Fix | Delete
[593] Fix | Delete
if ( ! empty( $post_title ) ) {
[594] Fix | Delete
$args['post_title'] = current_user_can( 'unfiltered_html' ) ? $post_title : wp_kses( $post_title );
[595] Fix | Delete
}
[596] Fix | Delete
[597] Fix | Delete
$post_id = et_theme_builder_insert_layout( $args );
[598] Fix | Delete
[599] Fix | Delete
if ( is_wp_error( $post_id ) ) {
[600] Fix | Delete
return false;
[601] Fix | Delete
}
[602] Fix | Delete
[603] Fix | Delete
foreach ( $post_meta as $entry ) {
[604] Fix | Delete
update_post_meta( $post_id, $entry['key'], $entry['value'] );
[605] Fix | Delete
}
[606] Fix | Delete
}
[607] Fix | Delete
[608] Fix | Delete
return array(
[609] Fix | Delete
'ready' => $result['ready'],
[610] Fix | Delete
'chunks' => $result['chunks'],
[611] Fix | Delete
'id' => $post_id,
[612] Fix | Delete
);
[613] Fix | Delete
}
[614] Fix | Delete
[615] Fix | Delete
/**
[616] Fix | Delete
* Import Theme Builder templates in chunks.
[617] Fix | Delete
*
[618] Fix | Delete
* @since 4.0
[619] Fix | Delete
*
[620] Fix | Delete
* @param integer $id Unique ID to represent this theme builder import process.
[621] Fix | Delete
* @param array $step
[622] Fix | Delete
* @param integer $steps
[623] Fix | Delete
* @param integer $step_index
[624] Fix | Delete
* @param integer $chunk
[625] Fix | Delete
*
[626] Fix | Delete
* @return array|false
[627] Fix | Delete
*/
[628] Fix | Delete
public function import_theme_builder( $id, $step, $steps, $step_index = 0, $chunk = 0 ) {
[629] Fix | Delete
if ( $step_index >= $steps ) {
[630] Fix | Delete
return false;
[631] Fix | Delete
}
[632] Fix | Delete
[633] Fix | Delete
$layout_id_map = array();
[634] Fix | Delete
$chunks = 1;
[635] Fix | Delete
[636] Fix | Delete
switch ( $step['type'] ) {
[637] Fix | Delete
case 'layout':
[638] Fix | Delete
$presets = et_()->array_get( $step, 'presets', array() );
[639] Fix | Delete
$presets_rewrite_map = et_()->array_get( $step, 'presets_rewrite_map', array() );
[640] Fix | Delete
$import_presets = et_()->array_get( $step, 'import_presets', false );
[641] Fix | Delete
$layouts = et_()->array_get( $step['data'], 'data', array() );
[642] Fix | Delete
[643] Fix | Delete
// Apply any presets to the layouts' shortcodes prior to importing them.
[644] Fix | Delete
if ( ! empty( $presets ) && ! empty( $layouts ) ) {
[645] Fix | Delete
foreach ( $layouts as $key => $layout ) {
[646] Fix | Delete
$shortcode_object = et_fb_process_shortcode( $layout );
[647] Fix | Delete
[648] Fix | Delete
if ( $import_presets ) {
[649] Fix | Delete
$this->rewrite_module_preset_ids( $shortcode_object, $presets, $presets_rewrite_map );
[650] Fix | Delete
} else {
[651] Fix | Delete
$this->apply_global_presets( $shortcode_object, $presets );
[652] Fix | Delete
}
[653] Fix | Delete
[654] Fix | Delete
$layouts[ $key ] = et_fb_process_to_shortcode( $shortcode_object, array(), '', false );
[655] Fix | Delete
}
[656] Fix | Delete
[657] Fix | Delete
$step['data']['data'] = $layouts;
[658] Fix | Delete
}
[659] Fix | Delete
[660] Fix | Delete
$result = $this->import_layout( $id, $step['data'], $chunk );
[661] Fix | Delete
[662] Fix | Delete
if ( false === $result ) {
[663] Fix | Delete
break;
[664] Fix | Delete
}
[665] Fix | Delete
[666] Fix | Delete
if ( $result['ready'] ) {
[667] Fix | Delete
if ( ! isset( $layout_id_map[ $step['id'] ] ) ) {
[668] Fix | Delete
$layout_id_map[ $step['id'] ] = array();
[669] Fix | Delete
}
[670] Fix | Delete
[671] Fix | Delete
// Since a single layout can be duplicated multiple times if
[672] Fix | Delete
// it's global we have to keep an array of duplicated ids.
[673] Fix | Delete
$layout_id_map[ $step['id'] ][ $step['template_id'] ] = $result['id'];
[674] Fix | Delete
}
[675] Fix | Delete
[676] Fix | Delete
$chunks = $result['chunks'];
[677] Fix | Delete
break;
[678] Fix | Delete
}
[679] Fix | Delete
[680] Fix | Delete
$ready = ( $step_index + 1 >= $steps ) && ( $chunk + 1 >= $chunks );
[681] Fix | Delete
[682] Fix | Delete
return array(
[683] Fix | Delete
'ready' => $ready,
[684] Fix | Delete
'chunks' => $chunks,
[685] Fix | Delete
'layout_id_map' => $layout_id_map,
[686] Fix | Delete
);
[687] Fix | Delete
}
[688] Fix | Delete
[689] Fix | Delete
/**
[690] Fix | Delete
* Download temporary file.
[691] Fix | Delete
*
[692] Fix | Delete
* @since 4.0
[693] Fix | Delete
*
[694] Fix | Delete
* @param string $filename
[695] Fix | Delete
* @param string $temp_file_id
[696] Fix | Delete
* @param string $temp_file
[697] Fix | Delete
* @return void
[698] Fix | Delete
*/
[699] Fix | Delete
public function download_file( $filename, $temp_file_id, $temp_file ) {
[700] Fix | Delete
$this->prevent_failure();
[701] Fix | Delete
[702] Fix | Delete
$filename = sanitize_file_name( $filename );
[703] Fix | Delete
[704] Fix | Delete
header( 'Content-Description: File Transfer' );
[705] Fix | Delete
header( "Content-Disposition: attachment; filename=\"{$filename}.json\"" );
[706] Fix | Delete
header( 'Content-Type: application/json' );
[707] Fix | Delete
header( 'Pragma: no-cache' );
[708] Fix | Delete
[709] Fix | Delete
if ( file_exists( $temp_file ) ) {
[710] Fix | Delete
echo et_core_esc_previously( $this->get_filesystem()->get_contents( $temp_file ) );
[711] Fix | Delete
}
[712] Fix | Delete
[713] Fix | Delete
$this->delete_temp_files( 'et_core_export', array( $temp_file_id => $temp_file ) );
[714] Fix | Delete
[715] Fix | Delete
wp_die();
[716] Fix | Delete
}
[717] Fix | Delete
[718] Fix | Delete
/**
[719] Fix | Delete
* Download Export Data.
[720] Fix | Delete
*
[721] Fix | Delete
* @since 2.7.0
[722] Fix | Delete
*/
[723] Fix | Delete
public function download_export() {
[724] Fix | Delete
$this->prevent_failure();
[725] Fix | Delete
et_core_nonce_verified_previously();
[726] Fix | Delete
[727] Fix | Delete
// Retrieve data.
[728] Fix | Delete
$timestamp = isset( $_GET['timestamp'] ) ? sanitize_text_field( $_GET['timestamp'] ) : null;
[729] Fix | Delete
$name = isset( $_GET['name'] ) ? sanitize_text_field( rawurldecode( $_GET['name'] ) ) : $this->instance->name;
[730] Fix | Delete
$filesystem = $this->set_filesystem();
[731] Fix | Delete
$temp_file = $this->temp_file( sanitize_file_name( $timestamp ), 'et_core_export' );
[732] Fix | Delete
[733] Fix | Delete
header( 'Content-Description: File Transfer' );
[734] Fix | Delete
header( "Content-Disposition: attachment; filename=\"{$name}.json\"" );
[735] Fix | Delete
header( 'Content-Type: application/json' );
[736] Fix | Delete
header( 'Pragma: no-cache' );
[737] Fix | Delete
[738] Fix | Delete
if ( file_exists( $temp_file ) ) {
[739] Fix | Delete
echo et_core_esc_previously( $filesystem->get_contents( $temp_file ) );
[740] Fix | Delete
}
[741] Fix | Delete
[742] Fix | Delete
$this->delete_temp_files( 'et_core_export' );
[743] Fix | Delete
[744] Fix | Delete
exit;
[745] Fix | Delete
}
[746] Fix | Delete
[747] Fix | Delete
protected function to_megabytes( $value ) {
[748] Fix | Delete
$unit = strtoupper( substr( $value, -1 ) );
[749] Fix | Delete
$amount = intval( substr( $value, 0, -1 ) );
[750] Fix | Delete
[751] Fix | Delete
// Known units
[752] Fix | Delete
switch ( $unit ) {
[753] Fix | Delete
case 'G': return $amount << 10;
[754] Fix | Delete
case 'M': return $amount;
[755] Fix | Delete
}
[756] Fix | Delete
[757] Fix | Delete
if ( is_numeric( $unit ) ) {
[758] Fix | Delete
// Numeric unit is present, assume bytes
[759] Fix | Delete
return intval( $value ) >> 20;
[760] Fix | Delete
}
[761] Fix | Delete
[762] Fix | Delete
// Unknown unit ...
[763] Fix | Delete
return intval( $value );
[764] Fix | Delete
[765] Fix | Delete
}// end to_megabytes()
[766] Fix | Delete
[767] Fix | Delete
/**
[768] Fix | Delete
* Get selected posts data.
[769] Fix | Delete
*
[770] Fix | Delete
* @since 2.7.0
[771] Fix | Delete
*/
[772] Fix | Delete
protected function export_posts_query() {
[773] Fix | Delete
et_core_nonce_verified_previously();
[774] Fix | Delete
[775] Fix | Delete
$args = array(
[776] Fix | Delete
'post_type' => $this->instance->target,
[777] Fix | Delete
'posts_per_page' => -1,
[778] Fix | Delete
'no_found_rows' => true,
[779] Fix | Delete
);
[780] Fix | Delete
[781] Fix | Delete
// Only include selected posts if set and not empty.
[782] Fix | Delete
if ( isset( $_POST['selection'] ) ) {
[783] Fix | Delete
$include = json_decode( stripslashes( $_POST['selection'] ), true );
[784] Fix | Delete
[785] Fix | Delete
if ( ! empty( $include ) ) {
[786] Fix | Delete
$include = array_map( 'intval', array_values( $include ) );
[787] Fix | Delete
$args['post__in'] = $include;
[788] Fix | Delete
}
[789] Fix | Delete
}
[790] Fix | Delete
[791] Fix | Delete
$get_posts = get_posts( apply_filters( "et_core_portability_export_wp_query_{$this->instance->context}", $args ) );
[792] Fix | Delete
$taxonomies = get_object_taxonomies( $this->instance->target );
[793] Fix | Delete
$posts = array();
[794] Fix | Delete
[795] Fix | Delete
foreach ( $get_posts as $key => $post ) {
[796] Fix | Delete
unset(
[797] Fix | Delete
$post->post_author,
[798] Fix | Delete
$post->guid
[799] Fix | Delete
);
[800] Fix | Delete
[801] Fix | Delete
$posts[$post->ID] = $post;
[802] Fix | Delete
[803] Fix | Delete
// Include post meta.
[804] Fix | Delete
$post_meta = (array) get_post_meta( $post->ID );
[805] Fix | Delete
[806] Fix | Delete
if ( isset( $post_meta['_edit_lock'] ) ) {
[807] Fix | Delete
unset(
[808] Fix | Delete
$post_meta['_edit_lock'],
[809] Fix | Delete
$post_meta['_edit_last']
[810] Fix | Delete
);
[811] Fix | Delete
}
[812] Fix | Delete
[813] Fix | Delete
$posts[$post->ID]->post_meta = $post_meta;
[814] Fix | Delete
[815] Fix | Delete
// Include terms.
[816] Fix | Delete
$get_terms = (array) wp_get_object_terms( $post->ID, $taxonomies );
[817] Fix | Delete
$terms = array();
[818] Fix | Delete
[819] Fix | Delete
// Order terms to make sure children are after the parents.
[820] Fix | Delete
while ( $term = array_shift( $get_terms ) ) {
[821] Fix | Delete
if ( 0 === $term->parent || isset( $terms[$term->parent] ) ) {
[822] Fix | Delete
$terms[$term->term_id] = $term;
[823] Fix | Delete
} else {
[824] Fix | Delete
// if parent category is also exporting then add the term to the end of the list and process it later
[825] Fix | Delete
// otherwise add a term as usual
[826] Fix | Delete
if ( $this->is_parent_term_included( $get_terms, $term->parent ) ) {
[827] Fix | Delete
$get_terms[] = $term;
[828] Fix | Delete
} else {
[829] Fix | Delete
$terms[$term->term_id] = $term;
[830] Fix | Delete
}
[831] Fix | Delete
}
[832] Fix | Delete
}
[833] Fix | Delete
[834] Fix | Delete
$posts[$post->ID]->terms = array();
[835] Fix | Delete
[836] Fix | Delete
foreach ( $terms as $term ) {
[837] Fix | Delete
$parents_data = array();
[838] Fix | Delete
[839] Fix | Delete
if ( $term->parent ) {
[840] Fix | Delete
$parent_slug = isset( $terms[$term->parent] ) ? $terms[$term->parent]->slug : $this->get_parent_slug( $term->parent, $term->taxonomy );
[841] Fix | Delete
$parents_data = $this->get_all_parents( $term->parent, $term->taxonomy );
[842] Fix | Delete
} else {
[843] Fix | Delete
$parent_slug = 0;
[844] Fix | Delete
}
[845] Fix | Delete
[846] Fix | Delete
$posts[$post->ID]->terms[$term->term_id] = array(
[847] Fix | Delete
'name' => $term->name,
[848] Fix | Delete
'slug' => $term->slug,
[849] Fix | Delete
'taxonomy' => $term->taxonomy,
[850] Fix | Delete
'parent' => $parent_slug,
[851] Fix | Delete
'all_parents' => $parents_data,
[852] Fix | Delete
'description' => $term->description
[853] Fix | Delete
);
[854] Fix | Delete
}
[855] Fix | Delete
}
[856] Fix | Delete
[857] Fix | Delete
return $posts;
[858] Fix | Delete
}
[859] Fix | Delete
[860] Fix | Delete
/**
[861] Fix | Delete
* Check whether the $parent_id included into the $terms_list.
[862] Fix | Delete
*
[863] Fix | Delete
* @since 2.7.0
[864] Fix | Delete
*
[865] Fix | Delete
* @param array $terms_list Array of term objects.
[866] Fix | Delete
* @param int $parent_id .
[867] Fix | Delete
*
[868] Fix | Delete
* @return bool
[869] Fix | Delete
*/
[870] Fix | Delete
protected function is_parent_term_included( $terms_list, $parent_id ) {
[871] Fix | Delete
$is_parent_found = false;
[872] Fix | Delete
[873] Fix | Delete
foreach ( $terms_list as $term => $term_details ) {
[874] Fix | Delete
if ( $parent_id === $term_details->term_id ) {
[875] Fix | Delete
$is_parent_found = true;
[876] Fix | Delete
}
[877] Fix | Delete
}
[878] Fix | Delete
[879] Fix | Delete
return $is_parent_found;
[880] Fix | Delete
}
[881] Fix | Delete
[882] Fix | Delete
/**
[883] Fix | Delete
* Retrieve the term slug.
[884] Fix | Delete
*
[885] Fix | Delete
* @since 2.7.0
[886] Fix | Delete
*
[887] Fix | Delete
* @param int $parent_id .
[888] Fix | Delete
* @param string $taxonomy .
[889] Fix | Delete
*
[890] Fix | Delete
* @return int|string
[891] Fix | Delete
*/
[892] Fix | Delete
protected function get_parent_slug( $parent_id, $taxonomy ) {
[893] Fix | Delete
$term_data = get_term( $parent_id, $taxonomy );
[894] Fix | Delete
$slug = '' === $term_data->slug ? 0 : $term_data->slug;
[895] Fix | Delete
[896] Fix | Delete
return $slug;
[897] Fix | Delete
}
[898] Fix | Delete
[899] Fix | Delete
/**
[900] Fix | Delete
* Prepare array of all parents so the correct hierarchy can be restored during the import.
[901] Fix | Delete
*
[902] Fix | Delete
* @since 2.7.0
[903] Fix | Delete
*
[904] Fix | Delete
* @param int $parent_id .
[905] Fix | Delete
* @param string $taxonomy .
[906] Fix | Delete
*
[907] Fix | Delete
* @return array
[908] Fix | Delete
*/
[909] Fix | Delete
protected function get_all_parents( $parent_id, $taxonomy ) {
[910] Fix | Delete
$parents_data_array = array();
[911] Fix | Delete
$parent = $parent_id;
[912] Fix | Delete
[913] Fix | Delete
// retrieve data for all parent categories
[914] Fix | Delete
if ( 0 !== $parent ) {
[915] Fix | Delete
while( 0 !== $parent ) {
[916] Fix | Delete
$parent_term_data = get_term( $parent, $taxonomy );
[917] Fix | Delete
$parents_data_array[$parent_term_data->slug] = array(
[918] Fix | Delete
'name' => $parent_term_data->name,
[919] Fix | Delete
'description' => $parent_term_data->description,
[920] Fix | Delete
'parent' => 0 !== $parent_term_data->parent ? $this->get_parent_slug( $parent_term_data->parent, $taxonomy ) : 0,
[921] Fix | Delete
);
[922] Fix | Delete
[923] Fix | Delete
$parent = $parent_term_data->parent;
[924] Fix | Delete
}
[925] Fix | Delete
}
[926] Fix | Delete
//reverse order of items, to simplify the restoring process
[927] Fix | Delete
return array_reverse( $parents_data_array );
[928] Fix | Delete
}
[929] Fix | Delete
[930] Fix | Delete
/**
[931] Fix | Delete
* Check if a layout exists in the database already based on both its title and its slug.
[932] Fix | Delete
*
[933] Fix | Delete
* @param string $title
[934] Fix | Delete
* @param string $slug
[935] Fix | Delete
*
[936] Fix | Delete
* @return int $post_id The post id if it exists, zero otherwise.
[937] Fix | Delete
*/
[938] Fix | Delete
protected static function layout_exists( $title, $slug ) {
[939] Fix | Delete
global $wpdb;
[940] Fix | Delete
[941] Fix | Delete
return (int) $wpdb->get_var( $wpdb->prepare(
[942] Fix | Delete
"SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_name = %s",
[943] Fix | Delete
array(
[944] Fix | Delete
wp_unslash( sanitize_post_field( 'post_title', $title, 0, 'db' ) ),
[945] Fix | Delete
wp_unslash( sanitize_post_field( 'post_name', $slug, 0, 'db' ) ),
[946] Fix | Delete
)
[947] Fix | Delete
) );
[948] Fix | Delete
}
[949] Fix | Delete
[950] Fix | Delete
/**
[951] Fix | Delete
* Imports Global Presets
[952] Fix | Delete
*
[953] Fix | Delete
* @since 4.0.10 Made public.
[954] Fix | Delete
*
[955] Fix | Delete
* @param array $presets - The Global Presets to be imported
[956] Fix | Delete
*
[957] Fix | Delete
* @return boolean
[958] Fix | Delete
*/
[959] Fix | Delete
public function import_global_presets( $presets ) {
[960] Fix | Delete
if ( ! is_array( $presets ) ) {
[961] Fix | Delete
return false;
[962] Fix | Delete
}
[963] Fix | Delete
[964] Fix | Delete
$all_modules = ET_Builder_Element::get_modules();
[965] Fix | Delete
$module_presets_manager = ET_Builder_Global_Presets_Settings::instance();
[966] Fix | Delete
$global_presets = $module_presets_manager->get_global_presets();
[967] Fix | Delete
$presets_to_import = array();
[968] Fix | Delete
[969] Fix | Delete
foreach ( $presets as $module_type => $module_presets ) {
[970] Fix | Delete
$presets_to_import[ $module_type ] = array(
[971] Fix | Delete
'presets' => array(),
[972] Fix | Delete
);
[973] Fix | Delete
[974] Fix | Delete
if ( ! isset( $global_presets->$module_type->presets ) ) {
[975] Fix | Delete
$initial_preset_structure = ET_Builder_Global_Presets_Settings::generate_module_initial_presets_structure( $module_type, $all_modules );
[976] Fix | Delete
[977] Fix | Delete
$global_presets->$module_type = $initial_preset_structure;
[978] Fix | Delete
}
[979] Fix | Delete
[980] Fix | Delete
$local_presets = $global_presets->$module_type->presets;
[981] Fix | Delete
$local_preset_names = array();
[982] Fix | Delete
[983] Fix | Delete
foreach ( $local_presets as $preset ) {
[984] Fix | Delete
array_push( $local_preset_names, $preset->name );
[985] Fix | Delete
}
[986] Fix | Delete
[987] Fix | Delete
foreach ( $module_presets['presets'] as $preset_id => $preset ) {
[988] Fix | Delete
$imported_name = sanitize_text_field( $preset['name'] );
[989] Fix | Delete
$name = in_array( $imported_name, $local_preset_names )
[990] Fix | Delete
? $imported_name . ' ' . esc_html__( 'imported', 'et-core' )
[991] Fix | Delete
: $imported_name;
[992] Fix | Delete
[993] Fix | Delete
$presets_to_import[ $module_type ]['presets'][ $preset_id ] = array(
[994] Fix | Delete
'name' => $name,
[995] Fix | Delete
'created' => time() * 1000,
[996] Fix | Delete
'updated' => time() * 1000,
[997] Fix | Delete
'version' => $preset['version'],
[998] Fix | Delete
'settings' => $preset['settings'],
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function