includes(); // Start image importing after site import complete. add_filter( 'astra_sites_image_importer_skip_image', array( $this, 'skip_image' ), 10, 2 ); add_action( 'astra_sites_import_complete', array( $this, 'start_process' ) ); add_action( 'astra_sites_process_single', array( $this, 'start_process_single' ) ); if ( current_user_can( 'manage_options' ) ) { add_action( 'admin_init', array( $this, 'start_importer' ) ); } add_action( 'wp_ajax_astra-sites-update-library', array( $this, 'update_library' ) ); add_action( 'wp_ajax_astra-sites-update-library-complete', array( $this, 'update_library_complete' ) ); add_action( 'wp_ajax_astra-sites-import-all-categories-and-tags', array( $this, 'import_all_categories_and_tags' ) ); add_action( 'wp_ajax_astra-sites-import-all-categories', array( $this, 'import_all_categories' ) ); add_action( 'wp_ajax_astra-sites-import-block-categories', array( $this, 'import_block_categories' ) ); add_action( 'wp_ajax_astra-sites-import-page-builders', array( $this, 'import_page_builders' ) ); add_action( 'wp_ajax_astra-sites-import-blocks', array( $this, 'import_blocks' ) ); add_action( 'wp_ajax_astra-sites-get-sites-request-count', array( $this, 'sites_requests_count' ) ); add_action( 'wp_ajax_astra-sites-get-blocks-request-count', array( $this, 'blocks_requests_count' ) ); add_action( 'wp_ajax_astra-sites-import-sites', array( $this, 'import_sites' ) ); add_action( 'wp_ajax_astra-sites-get-all-categories', array( $this, 'get_all_categories' ) ); add_action( 'wp_ajax_astra-sites-get-all-categories-and-tags', array( $this, 'get_all_categories_and_tags' ) ); add_action( 'astra_sites_site_import_batch_complete', array( $this, 'sync_batch_complete' ) ); } /** * Update the latest checksum after all the import batch processes are done. */ public function sync_batch_complete() { Astra_Sites_Importer::get_instance()->update_latest_checksums(); } /** * Include Files * * @since 2.5.0 */ public function includes() { // Core Helpers - Image. // @todo This file is required for Elementor. // Once we implement our logic for updating elementor data then we'll delete this file. require_once ABSPATH . 'wp-admin/includes/image.php'; // Core Helpers - Image Downloader. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-astra-sites-image-importer.php'; // Core Helpers - Batch Processing. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-async-request.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-background-process.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-background-process-astra.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-background-process-astra-single.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-background-process-astra-site-importer.php'; // Prepare Widgets. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-widgets.php'; // Prepare Page Builders. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-beaver-builder.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-elementor.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-gutenberg.php'; require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-brizy.php'; // Prepare Misc. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-misc.php'; // Prepare Customizer. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-customizer.php'; // Process Importer. require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/class-astra-sites-batch-processing-importer.php'; self::$process_all = new WP_Background_Process_Astra(); self::$process_single = new WP_Background_Process_Astra_Single(); self::$process_site_importer = new WP_Background_Process_Astra_Site_Importer(); } /** * Import All Categories * * @since 2.6.22 * @return void */ public function import_all_categories() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } Astra_Sites_Batch_Processing_Importer::get_instance()->import_all_categories(); wp_send_json_success(); } /** * Import All Categories and Tags * * @since 2.6.22 * @return void */ public function import_all_categories_and_tags() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } Astra_Sites_Batch_Processing_Importer::get_instance()->import_all_categories_and_tags(); wp_send_json_success(); } /** * Import Block Categories * * @since 2.0.0 * @return void */ public function import_block_categories() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } Astra_Sites_Batch_Processing_Importer::get_instance()->import_block_categories(); wp_send_json_success(); } /** * Import Page Builders * * @since 2.0.0 * @return void */ public function import_page_builders() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } Astra_Sites_Batch_Processing_Importer::get_instance()->import_page_builders(); wp_send_json_success(); } /** * Import Blocks * * @since 2.0.0 * @return void */ public function import_blocks() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'edit_posts' ) ) { wp_send_json_error(); } $page_no = isset( $_POST['page_no'] ) ? absint( $_POST['page_no'] ) : ''; if ( $page_no ) { $sites_and_pages = Astra_Sites_Batch_Processing_Importer::get_instance()->import_blocks( $page_no ); wp_send_json_success(); } wp_send_json_error(); } /** * Import Sites * * @since 2.0.0 * @return void */ public function import_sites() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'edit_posts' ) ) { wp_send_json_error(); } $page_no = isset( $_POST['page_no'] ) ? absint( $_POST['page_no'] ) : ''; if ( $page_no ) { $sites_and_pages = Astra_Sites_Batch_Processing_Importer::get_instance()->import_sites( $page_no ); $page_builder_keys = wp_list_pluck( $sites_and_pages, 'astra-site-page-builder' ); $default_page_builder = Astra_Sites_Page::get_instance()->get_setting( 'page_builder' ); $current_page_builder_sites = array(); foreach ( $page_builder_keys as $site_id => $page_builder ) { if ( $default_page_builder === $page_builder ) { $current_page_builder_sites[ $site_id ] = $sites_and_pages[ $site_id ]; } } wp_send_json_success( $current_page_builder_sites ); } wp_send_json_error(); } /** * Sites Requests Count * * @since 2.0.0 * @return void */ public function sites_requests_count() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } // Get count. $total_requests = $this->get_total_requests(); if ( $total_requests ) { wp_send_json_success( $total_requests ); } wp_send_json_error(); } /** * Blocks Requests Count * * @since 2.1.0 * @return void */ public function blocks_requests_count() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'You are not allowed to perform this action', 'astra-sites' ); } // Get count. $total_requests = $this->get_total_blocks_requests(); if ( $total_requests ) { wp_send_json_success( $total_requests ); } wp_send_json_error(); } /** * Update Library Complete * * @since 2.0.0 * @return void */ public function update_library_complete() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error(); } Astra_Sites_Importer::get_instance()->update_latest_checksums(); do_action( 'starter_templates_save_sites_count_as_per_page_builder' ); update_site_option( 'astra-sites-batch-is-complete', 'no' ); update_site_option( 'astra-sites-manual-sync-complete', 'yes' ); wp_send_json_success(); } /** * Get Last Exported Checksum Status * * @since 2.0.0 * @return string Checksums Status. */ public function get_last_export_checksums() { $old_last_export_checksums = get_site_option( 'astra-sites-last-export-checksums', '' ); $new_last_export_checksums = $this->set_last_export_checksums(); $checksums_status = 'no'; if ( empty( $old_last_export_checksums ) ) { $checksums_status = 'yes'; } if ( $new_last_export_checksums !== $old_last_export_checksums ) { $checksums_status = 'yes'; } return apply_filters( 'astra_sites_checksums_status', $checksums_status ); } /** * Set Last Exported Checksum * * @since 2.0.0 * @return string Checksums Status. */ public function set_last_export_checksums() { if ( ! empty( $this->last_export_checksums ) ) { return $this->last_export_checksums; } $api_args = array( 'timeout' => 60, ); $response = wp_remote_get( trailingslashit( Astra_Sites::get_instance()->get_api_domain() ) . 'wp-json/astra-sites/v1/get-last-export-checksums', $api_args ); if ( ! is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) === 200 ) { $result = json_decode( wp_remote_retrieve_body( $response ), true ); // Set last export checksums. if ( ! empty( $result['last_export_checksums'] ) ) { update_site_option( 'astra-sites-last-export-checksums-latest', $result['last_export_checksums'] ); $this->last_export_checksums = $result['last_export_checksums']; } } return $this->last_export_checksums; } /** * Update Library * * @since 2.0.0 * @return void */ public function update_library() { check_ajax_referer( 'astra-sites', '_ajax_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error(); } if ( 'no' === $this->get_last_export_checksums() ) { wp_send_json_success( 'updated' ); } wp_send_json_success(); } /** * Start Importer * * @since 2.0.0 * @return void */ public function start_importer() { $process_sync = apply_filters( 'astra_sites_initial_sync', true ); if ( ! $process_sync ) { return; } $is_fresh_site = get_site_option( 'astra-sites-fresh-site', '' ); if ( empty( $is_fresh_site ) && '' === $is_fresh_site ) { $dir = ASTRA_SITES_DIR . 'inc/json'; // First time user save the data of sites, pages, categories etc from the JSON file. $list_files = $this->get_default_assets(); foreach ( $list_files as $key => $file_name ) { if ( file_exists( $dir . '/' . $file_name . '.json' ) ) { $data = Astra_Sites::get_instance()->get_filesystem()->get_contents( $dir . '/' . $file_name . '.json' ); if ( ! empty( $data ) ) { update_site_option( $file_name, json_decode( $data, true ) ); } } } // Also, Trigger the batch to get latest data. // If batch failed then user have at least the data from the JSON file. update_site_option( 'astra-sites-fresh-site', 'no' ); } $this->process_import(); } /** * Json Files Names. * * @since 2.6.1 * @return array */ public function get_default_assets() { return array( 'astra-blocks-1', 'astra-sites-site-category', 'astra-sites-all-site-categories', 'astra-blocks-4', 'astra-sites-page-builders', 'astra-blocks-3', 'astra-blocks-2', 'astra-blocks-categories', 'astra-sites-requests', 'astra-sites-and-pages-page-1', 'astra-sites-and-pages-page-2', 'astra-sites-and-pages-page-3', 'astra-sites-and-pages-page-4', 'astra-sites-and-pages-page-5', 'astra-sites-and-pages-page-6', 'astra-sites-and-pages-page-7', 'astra-sites-and-pages-page-8', 'astra-sites-and-pages-page-9', 'astra-sites-and-pages-page-10', 'astra-sites-and-pages-page-11', 'astra-sites-and-pages-page-12', 'astra-sites-and-pages-page-13', 'astra-sites-and-pages-page-14', 'astra-sites-and-pages-page-15', 'astra-sites-and-pages-page-16', 'astra-sites-and-pages-page-17', 'astra-sites-and-pages-page-18', 'astra-sites-and-pages-page-19', 'astra-sites-and-pages-page-20', 'astra-sites-and-pages-page-21', 'astra-sites-and-pages-page-22', 'astra-sites-and-pages-page-23', 'astra-sites-and-pages-page-24', ); } /** * Process Batch * * @since 2.0.0 * @return mixed */ public function process_batch() { $process_sync = apply_filters( 'astra_sites_process_sync_batch', true ); if ( ! $process_sync ) { return; } if ( 'no' === $this->get_last_export_checksums() ) { $this->log( 'Library is up to date!' ); if ( defined( 'WP_CLI' ) ) { WP_CLI::line( 'Library is up to date!' ); } return; } $status = Astra_Sites_Page::get_instance()->test_cron(); if ( is_wp_error( $status ) ) { astra_sites_error_log( 'Error! Batch Not Start due to disabled cron events!' ); update_site_option( 'astra-sites-batch-status-string', 'Error! Batch Not Start due to disabled cron events!' ); if ( defined( 'WP_CLI' ) ) { WP_CLI::line( 'Error! Batch Not Start due to disabled cron events!' ); } else { // For non- WP CLI request return to prevent the request. return; } } $this->log( 'Sync Library Started!' ); // Added the categories and tags. $this->log( 'Added All Categories and tags in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_all_categories_and_tags(); } else { self::$process_site_importer->push_to_queue( array( 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_all_categories_and_tags', ) ); } // Added the categories. $this->log( 'Added All Site Categories in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_all_categories(); } else { self::$process_site_importer->push_to_queue( array( 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_all_categories', ) ); } // Added the page_builders. $this->log( 'Added page builders in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_page_builders(); } else { self::$process_site_importer->push_to_queue( array( 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_page_builders', ) ); } // Get count. $total_requests = $this->get_total_blocks_requests(); if ( $total_requests ) { $this->log( 'BLOCK: Total Blocks Requests ' . $total_requests ); for ( $page = 1; $page <= $total_requests; $page++ ) { $this->log( 'BLOCK: Added page ' . $page . ' in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_blocks( $page ); } else { self::$process_site_importer->push_to_queue( array( 'page' => $page, 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_blocks', ) ); } } } // Added the categories. $this->log( 'Added Block Categories in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_block_categories(); } else { self::$process_site_importer->push_to_queue( array( 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_block_categories', ) ); } // Get count. $total_requests = $this->get_total_requests(); if ( $total_requests ) { $this->log( 'Total Requests ' . $total_requests ); for ( $page = 1; $page <= $total_requests; $page++ ) { $this->log( 'Added page ' . $page . ' in queue.' ); if ( defined( 'WP_CLI' ) ) { Astra_Sites_Batch_Processing_Importer::get_instance()->import_sites( $page ); } else { self::$process_site_importer->push_to_queue( array( 'page' => $page, 'instance' => Astra_Sites_Batch_Processing_Importer::get_instance(), 'method' => 'import_sites', ) ); } } } if ( defined( 'WP_CLI' ) ) { $this->log( 'Sync Process Complete.' ); } else { // Dispatch Queue. $this->log( 'Dispatch the Queue!' ); self::$process_site_importer->save()->dispatch(); } } /** * Log * * @since 2.0.0 * * @param string $message Log message. * @return void. */ public function log( $message = '' ) { if ( defined( 'WP_CLI' ) ) { WP_CLI::line( $message ); } else { astra_sites_error_log( $message ); update_site_option( 'astra-sites-batch-status-string', $message ); } } /** * Process Import * * @since 2.0.0 * * @return mixed Null if process is already started. */ public function process_import() { $process_sync = apply_filters( 'astra_sites_process_auto_sync_library', true ); if ( ! $process_sync ) { return; } // Batch is already started? Then return. $status = get_site_option( 'astra-sites-batch-status' ); if ( 'in-process' === $status ) { return; } // Check batch expiry. $expired = get_site_transient( 'astra-sites-import-check' ); if ( false !== $expired ) { return; } // For 1 week. set_site_transient( 'astra-sites-import-check', 'true', apply_filters( 'astra_sites_sync_check_time', WEEK_IN_SECONDS ) ); update_site_option( 'astra-sites-batch-status', 'in-process' ); // Process batch. $this->process_batch(); } /** * Get Total Requests * * @return integer */ public function get_total_requests() { astra_sites_error_log( 'Getting Total Pages' ); update_site_option( 'astra-sites-batch-status-string', 'Getting Total Pages' ); $api_args = array( 'timeout' => 60, ); $response = wp_remote_get( trailingslashit( Astra_Sites::get_instance()->get_api_domain() ) . 'wp-json/astra-sites/v1/get-total-pages/?per_page=15', $api_args ); if ( ! is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) === 200 ) { $total_requests = json_decode( wp_remote_retrieve_body( $response ), true ); if ( isset( $total_requests['pages'] ) ) { $this->log( 'Updated requests ' . $total_requests['pages'] ); update_site_option( 'astra-sites-requests', $total_requests['pages'] ); do_action( 'astra_sites_sync_get_total_pages', $total_requests['pages'] ); return $total_requests['pages']; } } astra_sites_error_log( 'Request Failed! Still Calling..' ); update_site_option( 'astra-sites-batch-status-string', 'Request Failed! Still Calling..' ); } /** * Get Blocks Total Requests * * @return integer */ public function get_total_blocks_requests() { astra_sites_error_log( 'BLOCK: Getting Total Blocks' ); update_site_option( 'astra-sites-batch-status-string', 'Getting Total Blocks' ); $api_args = array( 'timeout' => 60, ); $query_args = array( 'page_builder' => 'elementor', 'wireframe' => 'yes', ); $api_url = add_query_arg( $query_args, trailingslashit( Astra_Sites::get_instance()->get_api_domain() ) . 'wp-json/astra-blocks/v1/get-blocks-count/' ); $response = wp_remote_get( $api_url, $api_args ); if ( ! is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) === 200 ) { $total_requests = json_decode( wp_remote_retrieve_body( $response ), true ); if ( isset( $total_requests['pages'] ) ) { astra_sites_error_log( 'BLOCK: Updated requests ' . $total_requests['pages'] ); update_site_option( 'astra-blocks-batch-status-string', 'Updated requests ' . $total_requests['pages'] ); update_site_option( 'astra-blocks-requests', $total_requests['pages'] ); do_action( 'astra_sites_sync_blocks_requests', $total_requests['pages'] ); return $total_requests['pages']; } } astra_sites_error_log( 'BLOCK: Request Failed! Still Calling..' ); update_site_option( 'astra-blocks-batch-status-string', 'Request Failed! Still Calling..' ); } /** * Start Single Page Import * * @param int $page_id Page ID . * @since 2.0.0 * @return void */ public function start_process_single( $page_id ) { astra_sites_error_log( '=================== ' . Astra_Sites_White_Label::get_instance()->get_white_label_name( ASTRA_SITES_NAME ) . ' - Single Page - Importing Images for Blog name \'' . get_the_title( $page_id ) . '\' (' . $page_id . ') ===================' ); $default_page_builder = Astra_Sites_Page::get_instance()->get_setting( 'page_builder' ); if ( 'gutenberg' === $default_page_builder ) { // Add "gutenberg" in import [queue]. self::$process_single->push_to_queue( array( 'page_id' => $page_id, 'instance' => Astra_Sites_Batch_Processing_Gutenberg::get_instance(), ) ); } // Add "brizy" in import [queue]. if ( 'brizy' === $default_page_builder && is_plugin_active( 'brizy/brizy.php' ) ) { // Add "gutenberg" in import [queue]. self::$process_single->push_to_queue( array( 'page_id' => $page_id, 'instance' => Astra_Sites_Batch_Processing_Brizy::get_instance(), ) ); } // Add "bb-plugin" in import [queue]. if ( 'beaver-builder' === $default_page_builder && ( is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) || is_plugin_active( 'bb-plugin/fl-builder.php' ) ) ) { // Add "gutenberg" in import [queue]. self::$process_single->push_to_queue( array( 'page_id' => $page_id, 'instance' => Astra_Sites_Batch_Processing_Beaver_Builder::get_instance(), ) ); } // Add "elementor" in import [queue]. if ( 'elementor' === $default_page_builder ) { // @todo Remove required `allow_url_fopen` support. if ( ini_get( 'allow_url_fopen' ) ) { if ( is_plugin_active( 'elementor/elementor.php' ) ) { // !important, Clear the cache after images import. \Elementor\Plugin::$instance->posts_css_manager->clear_cache(); $import = new \Elementor\TemplateLibrary\Astra_Sites_Batch_Processing_Elementor(); self::$process_single->push_to_queue( array( 'page_id' => $page_id, 'instance' => $import, ) ); } } else { astra_sites_error_log( 'Couldn\'t not import image due to allow_url_fopen() is disabled!' ); } } // Dispatch Queue. self::$process_single->save()->dispatch(); } /** * Skip Image from Batch Processing. * * @since 1.0.14 * * @param boolean $can_process Batch process image status. * @param array $attachment Batch process image input. * @return boolean */ public function skip_image( $can_process, $attachment ) { if ( isset( $attachment['url'] ) && ! empty( $attachment['url'] ) ) { // If image URL contain current site URL? then return true to skip that image from import. if ( strpos( $attachment['url'], site_url() ) !== false ) { return true; } if ( strpos( $attachment['url'], 'brainstormforce.com' ) !== false || strpos( $attachment['url'], 'wpastra.com' ) !== false || strpos( $attachment['url'], 'sharkz.in' ) !== false || strpos( $attachment['url'], 'websitedemos.net' ) !== false ) { return false; } } return true; } /** * Start Image Import * * @since 1.0.14 * * @return void */ public function start_process() { set_transient( 'astra_sites_batch_process_started', 'yes', HOUR_IN_SECONDS ); /** WordPress Plugin Administration API */ require_once ABSPATH . 'wp-admin/includes/plugin.php'; require_once ABSPATH . 'wp-admin/includes/update.php'; $this->includes(); $wxr_id = get_site_option( 'astra_sites_imported_wxr_id', 0 ); if ( $wxr_id ) { wp_delete_attachment( $wxr_id, true ); Astra_Sites_Importer_Log::add( 'Deleted Temporary WXR file ' . $wxr_id ); delete_option( 'astra_sites_imported_wxr_id' ); Astra_Sites_Importer_Log::add( 'Option `astra_sites_imported_wxr_id` Deleted.' ); } $classes = array(); Astra_Sites_Importer_Log::add( 'Batch Process Started..' ); Astra_Sites_Importer_Log::add( Astra_Sites_White_Label::get_instance()->get_white_label_name( ASTRA_SITES_NAME ) . ' - Importing Images for Blog name \'' . get_bloginfo( 'name' ) . '\' (' . get_current_blog_id() . ')' ); // Add "widget" in import [queue]. $classes[] = Astra_Sites_Batch_Processing_Widgets::get_instance(); // Add "gutenberg" in import [queue]. $classes[] = Astra_Sites_Batch_Processing_Gutenberg::get_instance(); // Add "brizy" in import [queue]. if ( is_plugin_active( 'brizy/brizy.php' ) ) { $classes[] = Astra_Sites_Batch_Processing_Brizy::get_instance(); } // Add "bb-plugin" in import [queue]. // Add "beaver-builder-lite-version" in import [queue]. if ( is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) || is_plugin_active( 'bb-plugin/fl-builder.php' ) ) { $classes[] = Astra_Sites_Batch_Processing_Beaver_Builder::get_instance(); } // Add "elementor" in import [queue]. // @todo Remove required `allow_url_fopen` support. if ( ini_get( 'allow_url_fopen' ) && is_plugin_active( 'elementor/elementor.php' ) ) { $import = new \Elementor\TemplateLibrary\Astra_Sites_Batch_Processing_Elementor(); $classes[] = $import; } // Add "astra-addon" in import [queue]. if ( is_plugin_active( 'astra-addon/astra-addon.php' ) ) { $classes[] = Astra_Sites_Compatibility_Astra_Pro::get_instance(); } // Add "misc" in import [queue]. $classes[] = Astra_Sites_Batch_Processing_Misc::get_instance(); // Add "customizer" in import [queue]. $classes[] = Astra_Sites_Batch_Processing_Customizer::get_instance(); if ( defined( 'WP_CLI' ) ) { WP_CLI::line( 'Batch Process Started..' ); // Process all classes. foreach ( $classes as $key => $class ) { if ( method_exists( $class, 'import' ) ) { $class->import(); } } WP_CLI::line( 'Batch Process Complete!' ); } else { // Add all classes to batch queue. foreach ( $classes as $key => $class ) { self::$process_all->push_to_queue( $class ); } // Dispatch Queue. self::$process_all->save()->dispatch(); } } /** * Get all post id's * * @since 1.0.14 * * @param array $post_types Post types. * @return array */ public static function get_pages( $post_types = array() ) { if ( $post_types ) { $args = array( 'post_type' => $post_types, // Query performance optimization. 'fields' => 'ids', 'no_found_rows' => true, 'post_status' => 'publish', 'posts_per_page' => -1, ); $query = new WP_Query( $args ); // Have posts? if ( $query->have_posts() ) : return $query->posts; endif; } return null; } /** * Get Supporting Post Types.. * * @since 1.3.7 * @param integer $feature Feature. * @return array */ public static function get_post_types_supporting( $feature ) { global $_wp_post_type_features; $post_types = array_keys( wp_filter_object_list( $_wp_post_type_features, array( $feature => true ) ) ); return $post_types; } /** * Get all categories. * * @return void */ public function get_all_categories() { if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) { if ( ! current_user_can( 'customize' ) ) { wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) ); } $all_categories = get_site_option( 'astra-sites-all-site-categories', array() ); wp_send_json_success( $all_categories ); } wp_send_json_error( __( 'You are not allowed to perform this action.', 'astra-sites' ) ); } /** * Get all categories and tags. * * @return void */ public function get_all_categories_and_tags() { if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) { if ( ! current_user_can( 'customize' ) ) { wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) ); } $all_categories_and_tags = get_site_option( 'astra-sites-all-site-categories-and-tags', array() ); wp_send_json_success( $all_categories_and_tags ); } wp_send_json_error( __( 'You are not allowed to perform this action.', 'astra-sites' ) ); } } /** * Kicking this off by calling 'get_instance()' method */ Astra_Sites_Batch_Processing::get_instance(); endif;