import_single_post( $post_id ); } } /** * Update post meta. * * @param integer $post_id Post ID. * @return void */ public function import_single_post( $post_id = 0 ) { $is_bb_post = get_post_meta( $post_id, '_fl_builder_enabled', true ); if ( ! $is_bb_post ) { return; } // Is page imported with Starter Sites? // If not then skip batch process. $imported_from_demo_site = get_post_meta( $post_id, '_astra_sites_enable_for_batch', true ); if ( ! $imported_from_demo_site ) { return; } if ( defined( 'WP_CLI' ) ) { WP_CLI::line( 'Beaver Builder - Processing page: ' . $post_id ); } Astra_Sites_Importer_Log::add( '---- Processing WordPress Page - for Beaver Builder ---- "' . $post_id . '"' ); 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 ) { // Update 'row' images. if ( 'row' === $el->type ) { $data[ $key ]->settings = self::update_row( $el->settings ); } // Update 'module' images. if ( 'module' === $el->type ) { $data[ $key ]->settings = self::update_module( $el->settings ); } // Update 'column' images. if ( 'column' === $el->type ) { $data[ $key ]->settings = self::update_column( $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(); } // Clean the post excerpt. astra_sites_empty_post_excerpt( $post_id ); } } /** * Import Module Images. * * @param object $settings Module settings object. * @return object */ public static function update_module( $settings ) { // 1) Set photos. $settings = self::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 ); } if ( 'uabb-wp-forms-styler' === $settings->type ) { astra_sites_error_log( '--------WP Form Styler ID replacement start-------' ); $ids_mapping = get_option( 'astra_sites_wpforms_ids_mapping', array() ); if ( $ids_mapping ) { // Update WP form IDs. foreach ( $ids_mapping as $old_id => $new_id ) { if ( isset( $settings->wp_form_id ) && $old_id === $settings->wp_form_id ) { astra_sites_error_log( '--------WP Form Styler ID ' . $old_id . ' replaced to ' . $new_id . '-------' ); $settings->wp_form_id = $new_id; } } } astra_sites_error_log( '--------WP Form Styler ID replacement done-------' ); } // 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 ] = self::import_photo( $value ); } } // 4) Set `list item` module images. if ( isset( $settings->text ) ) { $settings->text = self::get_wpforms_mapping( $settings->text ); } elseif ( isset( $settings->html ) ) { $settings->html = self::get_wpforms_mapping( $settings->html ); } return $settings; } /** * Replace WP Forms shortcode. * * @since 2.0.0 * @param string $content Content. * @return string Content. */ private static function get_wpforms_mapping( $content = '' ) { $ids_mapping = get_option( 'astra_sites_wpforms_ids_mapping', array() ); astra_sites_error_log( wp_json_encode( $ids_mapping ) ); if ( $ids_mapping ) { // Update WP form IDs. foreach ( $ids_mapping as $old_id => $new_id ) { $content = str_replace( '[wpforms id="' . $old_id, '[wpforms id="' . $new_id, $content ); } } return $content; } /** * Import Column Images. * * @param object $settings Column settings object. * @return object */ public static function update_column( $settings ) { // 1) Set BG Images. $settings = self::import_bg_image( $settings ); return $settings; } /** * Import Row Images. * * @param object $settings Row settings object. * @return object */ public static function update_row( $settings ) { // 1) Set BG Images. $settings = self::import_bg_image( $settings ); return $settings; } /** * Helper: Import BG Images. * * @param object $settings Row settings object. * @return object */ public static function import_bg_image( $settings ) { if ( ( ! empty( $settings->bg_image ) && ! empty( $settings->bg_image_src ) ) ) { $image = array( 'url' => $settings->bg_image_src, 'id' => $settings->bg_image, ); $downloaded_image = Astra_Sites_Image_Importer::get_instance()->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 static function import_photo( $settings ) { if ( ! empty( $settings->photo ) && ! empty( $settings->photo_src ) ) { $image = array( 'url' => $settings->photo_src, 'id' => $settings->photo, ); $downloaded_image = Astra_Sites_Image_Importer::get_instance()->import( $image ); $settings->photo_src = $downloaded_image['url']; $settings->photo = $downloaded_image['id']; } return $settings; } } /** * Kicking this off by calling 'get_instance()' method */ Astra_Sites_Batch_Processing_Beaver_Builder::get_instance(); endif;