at path:
ROOT
/
wp-content
/
plugins
/
tutor
/
template-import
/
TemplateImporter.php
run:
R
W
Run
TemplateImportInit.php
588 By
2026-04-14 05:34:27
R
W
Run
Delete
Rename
TemplateImporter.php
6.84 KB
2026-04-14 05:34:27
R
W
Run
Delete
Rename
error_log
up
📄
TemplateImporter.php
Save
<?php /** * Template importer * * @package Tutor\TemplateImporter * @author Themeum <support@themeum.com> * @link https://themeum.com * @since 3.9.2 */ namespace Tutor\TemplateImport; use AllowDynamicProperties; use Droip\ExportImport\TemplateImport; use Tutor\Helpers\TemplateImportHelper; use TUTOR\Input; use Tutor\Traits\JsonResponse; defined( 'ABSPATH' ) || exit; /** * Template import handler class * * @since 3.9.2 */ #[AllowDynamicProperties] class TemplateImporter { use JsonResponse; /** * Template dependency endpoint * * @var string */ public $template_import_dependency_api; /** * Register default hooks and actions for WordPress * * @since 3.9.2 * * @param TemplateImportHelper $helper Template helper. */ public function __construct( TemplateImportHelper $helper ) { $this->template_helper_cls = $helper; $this->template_import_dependency_api = $this->template_helper_cls->make_url( 'template-import-dependencies' ); add_action( 'wp_ajax_tutor_template_required_plugin_install', array( $this, 'tutor_template_required_plugin_install' ) ); add_action( 'wp_ajax_import_droip_template', array( $this, 'import_droip_template' ) ); add_action( 'wp_ajax_process_droip_template', array( $this, 'process_droip_template' ) ); add_action( 'wp_ajax_tutor_template_import_list', array( $this, 'tutor_template_import_list' ) ); } /** * AJAX callback to install a plugin. * * @since 3.9.2 * * @return array response array */ public function tutor_template_required_plugin_install() { if ( current_user_can( 'manage_options' ) === false ) { return $this->json_response( __( 'Permission denied!', 'tutor' ), array(), 400 ); } tutor_utils()->check_nonce(); $plugin_name = Input::post( 'plugin_name' ); try { $required_plugins = $this->template_dependency(); $plugin_info = $required_plugins[ $plugin_name ]; if ( empty( $plugin_info ) ) { return $this->json_response( __( 'Required plugin info missing!', 'tutor' ), array(), 400 ); } $this->installing_plugin( $plugin_info ); } catch ( \Throwable $th ) { return $this->json_response( __( 'Something went wrong!', 'tutor' ), array(), 400 ); } } /** * Template Dependency * * @since 3.9.2 * * @return array */ public function template_dependency() { $dependent_plugins = array(); $response = wp_remote_get( $this->template_import_dependency_api, array( 'headers' => array( 'Secret-Key' => 't344d5d71sae7dcb546b8cf55e594808', ), ) ); if ( is_wp_error( $response ) ) { return array(); } $body = wp_remote_retrieve_body( $response ); $data = json_decode( $body, true ); if ( ! empty( $data ) && 200 === $data['status'] ) { $dependent_plugins = $data['body_response'] ?? array(); } return $dependent_plugins; } /** * Install plugin. * * @param array $plugin_info installed plugin details. * * @since 3.9.2 * * @return array */ public function installing_plugin( $plugin_info ) { try { if ( ! class_exists( 'WP_Upgrader' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; } if ( 'plugin' === $plugin_info['type'] && ! empty( $plugin_info['src'] ) ) { if ( ! function_exists( 'plugins_api' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; } $is_install_plugin = $this->is_plugin_installed( $plugin_info['path'] ); if ( ! $is_install_plugin ) { $upgrader = new \Plugin_Upgrader( new \WP_Ajax_Upgrader_Skin() ); $installed = $upgrader->install( $plugin_info['src'] ); if ( is_wp_error( $installed ) ) { return $this->json_response( __( 'Plugin installation error!', 'tutor' ), array(), 400 ); } } $activate = activate_plugin( $plugin_info['path'], '', false, false ); return $this->json_response( __( 'Plugin installed successfully!', 'tutor' ) ); } elseif ( 'theme' === $plugin_info['type'] && ! empty( $plugin_info['src'] ) ) { require_once ABSPATH . 'wp-admin/includes/theme-install.php'; $is_theme_installed = wp_get_theme( $plugin_info['slug'] )->exists(); if ( ! $is_theme_installed ) { $upgrader = new \Theme_Upgrader( new \WP_Ajax_Upgrader_Skin() ); $installed = $upgrader->install( $plugin_info['src'] ); if ( is_wp_error( $installed ) ) { return $this->json_response( __( 'Theme installation error!', 'tutor' ), array(), 400 ); } } switch_theme( $plugin_info['slug'] ); if ( wp_get_theme()->get_stylesheet() !== $plugin_info['slug'] ) { return $this->json_response( __( 'Error: while activating theme!', 'tutor' ), array(), 400 ); } return $this->json_response( __( 'Theme installed and activated successfully.', 'tutor' ) ); } else { return $this->json_response( __( 'Plugin or theme nothing installed!', 'tutor' ) ); } } catch ( \Throwable $th ) { return $this->json_response( __( 'Something went wrong!', 'tutor' ), array(), 400 ); } } /** * Add comment or reply * * @since 3.9.2 * * @return Array */ public function import_droip_template() { try { if ( current_user_can( 'manage_options' ) === false ) { return self::json_response( __( 'Permission denied!', 'tutor' ), null, 400 ); } tutor_utils()->check_nonce(); $template_id = Input::post( 'template_id' ); $selected_mode = Input::post( 'selected_mode' ); $template_to_download = $this->template_helper_cls->get_template_download_url( $template_id ); $template_import = new TemplateImport(); $is_import = $template_import->import( $template_to_download, true, $selected_mode ); if ( $is_import ) { return self::json_response( __( 'Content imported', 'tutor' ), null, 200 ); } else { return self::json_response( __( 'Content importing error!', 'tutor' ), null, 400 ); } } catch ( \Throwable $th ) { return self::json_response( __( 'Something went wrong!', 'tutor' ), null, 400 ); } } /** * Process_droip_template description * * @since 3.9.2 * * @return array description */ public function process_droip_template() { $template_import = new TemplateImport(); $is_process = $template_import->process(); return self::json_response( '', $is_process, 200 ); } /** * Check plugin is install or not * * @param string $plugin_path plugin-slug. * * @since 3.9.2 * * @return bool */ private function is_plugin_installed( $plugin_path ) { $installed_plugins = get_plugins(); foreach ( $installed_plugins as $plugin_file => $plugin_data ) { if ( $plugin_path === $plugin_file ) { return true; } } return false; } /** * Get Template list. * * @since 3.9.2 */ public function tutor_template_import_list() { ob_start(); require_once tutor()->path . 'views/templates/templates-list.php'; $contents = ob_get_clean(); $this->json_response( __( 'Successfully fetched!', 'tutor' ), $contents ); } }