Файловый менеджер - Редактировать - /home/digitalm/invisalign/wp-content/themes/healthy-smiles/admin/installer/importer/forminator.php
Назад
<?php namespace HealthySmilesSpace\Admin\Installer\Importer; use HealthySmilesSpace\Core\Utils\API_Requests; use HealthySmilesSpace\Core\Utils\Utils; use Elementor\Plugin as Elementor_Plugin; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Forminator handler class is responsible for different methods on importing "Forminator" plugin forms. * * @since 1.0.0 */ class Forminator { /** * Forminator Import constructor. * * @since 1.0.0 */ public function __construct() { add_action( 'cmsmasters_set_import_status', array( get_called_class(), 'set_import_status' ) ); if ( self::activation_status() && API_Requests::check_token_status() ) { $this->remove_from_wp_export(); add_action( 'admin_init', array( $this, 'admin_init_actions' ) ); add_action( 'cmsmasters_regenerate_content_forminator_ids', array( $this, 'regenerate_content_forms_ids' ) ); } add_filter( 'forminator_form_model_to_exportable_data', array( $this, 'filter_export_data' ), 10, 3 ); } /** * Remove custom post types from WP export. * * @since 1.0.0 */ private function remove_from_wp_export() { global $wp_post_types; $wp_post_types['forminator_forms']->can_export = false; $wp_post_types['forminator_polls']->can_export = false; $wp_post_types['forminator_quizzes']->can_export = false; } /** * Activation status. * * @since 1.0.0 * * @return bool Activation status. */ public static function activation_status() { return class_exists( 'Forminator' ); } /** * Get import status. * * @since 1.0.0 * * @param string $default Import status by default, may be pending or done. * * @return string Import status. */ public static function get_import_status( $default = 'done' ) { return get_option( 'cmsmasters_healthy-smiles_' . Utils::get_demo() . '_forminator_import', $default ); } /** * Set import status. * * @since 1.0.0 * * @param string $status Import status, may be pending or done. */ public static function set_import_status( $status = 'pending' ) { if ( 'done' === self::get_import_status( false ) ) { return; } update_option( 'cmsmasters_healthy-smiles_' . Utils::get_demo() . '_forminator_import', $status ); } /** * Actions on admin_init hook. * * @since 1.0.0 */ public function admin_init_actions() { if ( 'pending' !== self::get_import_status( 'done' ) ) { return; } $this->import_forms(); self::set_import_status( 'done' ); } /** * Import forms. * * @since 1.0.0 */ protected function import_forms() { $response = API_Requests::post_request( 'get-forminator', array( 'demo' => Utils::get_demo() ) ); $response_code = wp_remote_retrieve_response_code( $response ); if ( 200 !== $response_code ) { return; } $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); $data = $response_body['data']; if ( empty( $data ) || ! is_array( $data ) ) { return; } foreach ( $data as $type => $forms ) { if ( empty( $forms ) ) { continue; } $class_type = ucfirst( $type ); $class_name = "Forminator_{$class_type}_Model"; foreach ( $forms as $form ) { $original_form = json_decode( $form, true ); $new_form = $class_name::create_from_import_data( $original_form ); $new_id = $new_form->id; if ( $new_id && isset( $original_form['post_id'] ) ) { $demo = Utils::get_demo(); $original_id = $original_form['post_id']; $forms_ids = get_transient( "cmsmasters_healthy-smiles_{$demo}_forminator_import_forms_ids" ); if ( false === $forms_ids ) { $forms_ids = array(); } $forms_ids[ $original_id ] = $new_id; set_transient( "cmsmasters_healthy-smiles_{$demo}_forminator_import_forms_ids", $forms_ids, HOUR_IN_SECONDS ); } } } } /** * Regenerate forms ids in elementor widgets. * * @since 1.0.0 */ public function regenerate_content_forms_ids() { $forms_ids = get_transient( 'cmsmasters_healthy-smiles_' . Utils::get_demo() . '_forminator_import_forms_ids' ); if ( empty( $forms_ids ) ) { return; } $post_ids = Utils::get_elementor_post_ids(); if ( empty( $post_ids ) ) { return; } foreach ( $post_ids as $post_id ) { $document = Elementor_Plugin::$instance->documents->get( $post_id ); if ( $document ) { $data = $document->get_elements_data(); } if ( empty( $data ) ) { continue; } $data = Elementor_Plugin::$instance->db->iterate_data( $data, function( $element ) use ( $forms_ids ) { if ( empty( $element['widgetType'] ) || 'cmsmasters-forminator' !== $element['widgetType'] || ! isset( $element['settings']['form_list'] ) ) { return $element; } $old_id = $element['settings']['form_list']; if ( isset( $forms_ids[ $old_id ] ) ) { $element['settings']['form_list'] = strval( $forms_ids[ $old_id ] ); } return $element; } ); $document->save( array( 'elements' => $data, ) ); } } /** * Filter export data. * * @since 1.0.0 * * @param array $exportable_data Exportable data. * @param string $module_type Module type. * @param int $model_id Model ID. * * @return array Filtered exportable data. */ public function filter_export_data( $exportable_data, $module_type, $model_id ) { $exportable_data['post_id'] = $model_id; return $exportable_data; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.23 | Генерация страницы: 0.04 |
proxy
|
phpinfo
|
Настройка