Linux puskom-ProLiant-DL385-Gen10 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64
/
home
/
puskom
/
mastur
/
colibri-page-builder
/
src
/
DemoImport
/
Hooks
/
//home/puskom/mastur/colibri-page-builder/src/DemoImport/Hooks/PreparationHook.php
<?php namespace ColibriWP\PageBuilder\DemoImport\Hooks; use ColibriWP\PageBuilder\DemoImport\DemoImport; use ColibriWP\PageBuilder\OCDI\Helpers; use ColibriWP\PageBuilder\OCDI\Importer; use ColibriWP\PageBuilder\OCDI\OneClickDemoImport; use Plugin_Upgrader; use ProteusThemes\WPContentImporter2\WXRImporter; use function ExtendBuilder\array_get_value; use function ExtendBuilder\custom_post_prefix; use function ExtendBuilder\register_custom_post_type; class PreparationHook extends ImportHook { function transientKey() { return 'informations'; } public function run() { $self = $this; add_filter( 'wxr_importer.pre_process.post', function ( $data ) use ( $self ) { update_option( 'colibriwp_predesign_front_page_index', 0 ); if ( ! $self->getTransient( 'plugins_installed', false ) ) { $self->setTransient( 'plugins_installed', true ); $self->installPlugins( $data ); } return $data; }, 0 ); add_action( 'extendthemes-ocdi/before_content_import_execution', array( $this, 'clear' ), 1, 3 ); add_action( 'extendthemes-ocdi/before_content_import_execution', array( $this, 'beforeImportContent' ), 10, 3 ); add_action( 'extendthemes-ocdi/after_all_import_execution', array( $this, 'emptyGlobalTransient' ), PHP_INT_MAX ); } public function installPlugins( $pre_process_data ) { $importer_data = OneClickDemoImport::get_instance()->get_current_importer_data(); $customizer_file = array_get_value( $importer_data, 'selected_import_files.customizer', false ); $data = null; if ( $customizer_file && file_exists( $customizer_file ) ) { $raw = Helpers::data_from_file( $customizer_file ); if ( is_wp_error( $raw ) ) { return; } $data = unserialize( $raw ); } if ( is_array( $data ) ) { $active_plugins = array_get_value( $data, 'options.active_plugins', array() ); $installed = false; foreach ( $active_plugins as $active_plugin ) { if ( strpos( $active_plugin, 'colibri-page-builder' ) !== false ) { continue; } if ( $this->installPlugin( $active_plugin ) ) { DemoImport::log_info( 'Installed Plugin: ' . $active_plugin ); OneClickDemoImport::get_instance()->importer; $installed = true; $this->loadPlugin( $active_plugin ); } else { DemoImport::log_error( 'Failed to install:' . $active_plugin ); } } } if ( $installed ) { DemoImport::log_info( 'Plugins instalantion requests new ajax call' ); $this->requestAnotherJSCall( $pre_process_data ); } } public function installPlugin( $plugin ) { $active_plugins = get_option( 'active_plugins' ); if ( in_array( $plugin, $active_plugins ) ) { return true; } if ( file_exists( WP_PLUGIN_DIR . "/$plugin" ) ) { return true; } $path = wp_normalize_path( $plugin ); $path_parts = explode( "/", $path ); $slug = array_shift( $path_parts ); if ( ! function_exists( 'plugins_api' ) ) { include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api.. } if ( ! class_exists( 'Plugin_Upgrader' ) ) { /** Plugin_Upgrader class */ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; } $api = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false, ), ) ); if ( is_wp_error( $api ) ) { return false; } $upgrader = new Plugin_Upgrader( new \Automatic_Upgrader_Skin() ); $result = $upgrader->install( $api->download_link ); return ( $result === true ); } private function loadPlugin( $plugin ) { $active_plugins = get_option( 'active_plugins', array() ); array_push( $active_plugins, $plugin ); $active_plugins = array_unique( $active_plugins ); update_option( 'active_plugins', $active_plugins ); } private function requestAnotherJSCall( $pre_process_data ) { add_filter( 'extendthemes-ocdi/time_for_one_ajax_call', "__return_zero" ); /** @var Importer $importer */ $importer = OneClickDemoImport::get_instance()->importer; $importer->new_ajax_request_maybe( $pre_process_data ); } public function clear() { global $wp_post_types; if ( ! isset( $wp_post_types[ custom_post_prefix() . 'sidebar' ] ) ) { register_custom_post_type( 'sidebar' ); } } public function beforeImportContent( $to_import, $import, $selected_inddex ) { $data = OneClickDemoImport::get_instance()->get_current_importer_data(); $content_file = array_get_value( $data, 'selected_import_files.content', false ); $importer_options = apply_filters( 'extendthemes-ocdi/importer_options', array( 'fetch_attachments' => true, ) ); $importer = new WXRImporter( $importer_options ); $info = $importer->get_preliminary_information( $content_file ); unset( $importer ); $transient_data = array( 'siteurl' => $info->siteurl, 'home' => $info->home, ); $this->setGlobalTransient( 'source_data', $transient_data ); } }