164 lines
3.7 KiB
PHP
164 lines
3.7 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* This file handles Beaver Builder functionality during import.
|
||
|
*
|
||
|
* @package GP Premium
|
||
|
*/
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // No direct access, please.
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Search Beaver Builder content for images to download.
|
||
|
*
|
||
|
* @since 1.6
|
||
|
*/
|
||
|
class GeneratePress_Sites_Process_Beaver_Builder {
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*
|
||
|
* @since 1.6
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
$this->image_importer = new GeneratePress_Sites_Image_Importer();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Import
|
||
|
*
|
||
|
* @since 1.6
|
||
|
* @return void
|
||
|
*/
|
||
|
public function import() {
|
||
|
GeneratePress_Site_Library_Helper::log( '== Start Processing Beaver Builder Images ==' );
|
||
|
|
||
|
$post_ids = GeneratePress_Site_Library_Helper::get_all_posts();
|
||
|
|
||
|
if ( is_array( $post_ids ) ) {
|
||
|
foreach ( $post_ids as $post_id ) {
|
||
|
$this->import_single_post( $post_id );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Update post meta.
|
||
|
*
|
||
|
* @param integer $post_id Post ID.
|
||
|
* @return void
|
||
|
*/
|
||
|
public function import_single_post( $post_id = 0 ) {
|
||
|
|
||
|
if ( ! empty( $post_id ) ) {
|
||
|
|
||
|
// Get page builder data.
|
||
|
$data = get_post_meta( $post_id, '_fl_builder_data', true );
|
||
|
|
||
|
if ( ! empty( $data ) ) {
|
||
|
foreach ( $data as $key => $el ) {
|
||
|
// Import background images.
|
||
|
if ( 'row' === $el->type || 'column' === $el->type ) {
|
||
|
$data[ $key ]->settings = $this->import_background_images( $el->settings );
|
||
|
}
|
||
|
|
||
|
// Import module images.
|
||
|
if ( 'module' === $el->type ) {
|
||
|
$data[ $key ]->settings = $this->import_module_images( $el->settings );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Update page builder data.
|
||
|
update_post_meta( $post_id, '_fl_builder_data', $data );
|
||
|
update_post_meta( $post_id, '_fl_builder_draft', $data );
|
||
|
|
||
|
// Clear all cache.
|
||
|
FLBuilderModel::delete_asset_cache_for_all_posts();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Import Module Images.
|
||
|
*
|
||
|
* @param object $settings Module settings object.
|
||
|
* @return object
|
||
|
*/
|
||
|
public function import_module_images( $settings ) {
|
||
|
|
||
|
/**
|
||
|
* 1) Set photos.
|
||
|
*/
|
||
|
$settings = $this->import_photo( $settings );
|
||
|
|
||
|
/**
|
||
|
* 2) Set `$settings->data` for Only type 'image-icon'
|
||
|
*
|
||
|
* @todo Remove the condition `'image-icon' === $settings->type` if `$settings->data` is used only for the Image Icon.
|
||
|
*/
|
||
|
if ( isset( $settings->data ) && isset( $settings->photo ) && ! empty( $settings->photo ) && 'image-icon' === $settings->type ) {
|
||
|
$settings->data = FLBuilderPhoto::get_attachment_data( $settings->photo );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 3) Set `list item` module images
|
||
|
*/
|
||
|
if ( isset( $settings->add_list_item ) ) {
|
||
|
foreach ( $settings->add_list_item as $key => $value ) {
|
||
|
$settings->add_list_item[ $key ] = $this->import_photo( $value );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $settings;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Helper: Import BG Images.
|
||
|
*
|
||
|
* @param object $settings Row settings object.
|
||
|
* @return object
|
||
|
*/
|
||
|
public function import_background_images( $settings ) {
|
||
|
|
||
|
if ( ! empty( $settings->bg_image ) && ! empty( $settings->bg_image_src ) ) {
|
||
|
$image = array(
|
||
|
'url' => $settings->bg_image_src,
|
||
|
'id' => $settings->bg_image,
|
||
|
);
|
||
|
|
||
|
$downloaded_image = $this->image_importer->import( $image );
|
||
|
|
||
|
$settings->bg_image_src = $downloaded_image['url'];
|
||
|
$settings->bg_image = $downloaded_image['id'];
|
||
|
}
|
||
|
|
||
|
return $settings;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Helper: Import Photo.
|
||
|
*
|
||
|
* @param object $settings Row settings object.
|
||
|
* @return object
|
||
|
*/
|
||
|
public function import_photo( $settings ) {
|
||
|
|
||
|
if ( ! empty( $settings->photo ) && ! empty( $settings->photo_src ) ) {
|
||
|
$image = array(
|
||
|
'url' => $settings->photo_src,
|
||
|
'id' => $settings->photo,
|
||
|
);
|
||
|
|
||
|
$downloaded_image = $this->image_importer->import( $image );
|
||
|
|
||
|
$settings->photo_src = $downloaded_image['url'];
|
||
|
$settings->photo = $downloaded_image['id'];
|
||
|
}
|
||
|
|
||
|
return $settings;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|