ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
2026-09-12 09:48:04
Editing: ai-app.php
Cancel
Save Changes
<?php if ( ! defined( 'ET_AI_SERVER_URL' ) ) { define( 'ET_AI_SERVER_URL', 'https://ai.elegantthemes.com/api/v1' ); } if ( ! defined( 'ET_AI_PLACEHOLDER_LANDSCAPE_IMAGE_DATA' ) ) { define( 'ET_AI_PLACEHOLDER_LANDSCAPE_IMAGE_DATA', 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA4MCIgaGVpZ2h0PSI1NDAiIHZpZXdCb3g9IjAgMCAxMDgwIDU0MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZmlsbD0iI0VCRUJFQiIgZD0iTTAgMGgxMDgwdjU0MEgweiIvPgogICAgICAgIDxwYXRoIGQ9Ik00NDUuNjQ5IDU0MGgtOTguOTk1TDE0NC42NDkgMzM3Ljk5NSAwIDQ4Mi42NDR2LTk4Ljk5NWwxMTYuMzY1LTExNi4zNjVjMTUuNjItMTUuNjIgNDAuOTQ3LTE1LjYyIDU2LjU2OCAwTDQ0NS42NSA1NDB6IiBmaWxsLW9wYWNpdHk9Ii4xIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz4KICAgICAgICA8Y2lyY2xlIGZpbGwtb3BhY2l0eT0iLjA1IiBmaWxsPSIjMDAwIiBjeD0iMzMxIiBjeT0iMTQ4IiByPSI3MCIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDgwIDM3OXYxMTMuMTM3TDcyOC4xNjIgMTQwLjMgMzI4LjQ2MiA1NDBIMjE1LjMyNEw2OTkuODc4IDU1LjQ0NmMxNS42Mi0xNS42MiA0MC45NDgtMTUuNjIgNTYuNTY4IDBMMTA4MCAzNzl6IiBmaWxsLW9wYWNpdHk9Ii4yIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz4KICAgIDwvZz4KPC9zdmc+Cg==' ); } class ET_AI_App { /** * @var ET_AI_App */ private static $_instance; /** * Get the class instance. * * @since ?? * * @return ET_AI_App */ public static function instance() { if ( ! self::$_instance ) { self::$_instance = new self(); self::init_hooks(); } return self::$_instance; } /** * Update ET Account. * * @since ?? * * @return void */ public static function et_builder_update_et_account_local() { // Username and API saved shall be reflected in Theme Options. // Hence, using the same cap used in Theme Options. et_core_security_check( 'edit_theme_options', 'et_builder_update_et_account', 'wp_nonce' ); $username = isset( $_POST['et_username'] ) ? sanitize_text_field( $_POST['et_username'] ) : ''; $api_key = isset( $_POST['et_api_key'] ) ? sanitize_text_field( $_POST['et_api_key'] ) : ''; $result = update_site_option( 'et_automatic_updates_options', [ 'username' => $username, 'api_key' => $api_key, ] ); if ( $result ) { wp_send_json_success(); } else { wp_send_json_error(); } } /** * Update AJAX calls list. * * @since ?? * * @return Array */ public static function update_ajax_calls_list() { return [ 'action' => array( 'et_builder_update_et_account_local', 'et_ai_upload_image', 'et_ai_layout_save_defaults', 'et_ai_shortcode_string_to_object', ), ]; } /** * AJAX Callback: Upload thumbnail and assign it to specified post. * * @since 4.17.0 * * @global $_FILES['imageFile'] File to upload. * @global $_POST['postId'] Post id to set thumbnail for. * * @return void */ public static function et_ai_upload_image() { et_core_security_check( 'edit_posts', 'et_ai_upload_image', 'wp_nonce' ); // Get image URL from POST data $image_url_raw = isset( $_POST['imageURL'] ) ? esc_url_raw( $_POST['imageURL'] ) : ''; // Check if image URL is valid if ( $image_url_raw && '' !== $image_url_raw ) { // Download image and add it to Media Library $upload = media_sideload_image( $image_url_raw, get_the_id(), null, 'id' ); // Check for errors while downloading image if ( is_wp_error( $upload ) ) { wp_send_json_error( [ 'message' => $upload->get_error_message() ] ); } // Get attachment ID and image URL $attachment_id = is_wp_error( $upload ) ? 0 : $upload; $image_url = get_attached_file( $attachment_id ); // Convert image to JPG and compress with quality of 80 $image_editor = wp_get_image_editor( $image_url ); if ( ! is_wp_error( $image_editor ) ) { $image_editor->set_quality( 80 ); $saved = $image_editor->save( null, 'image/jpeg' ); if ( ! is_wp_error( $saved ) ) { wp_delete_attachment( $attachment_id, true ); $attachment_id = wp_insert_attachment( [ 'post_mime_type' => 'image/jpeg', 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $saved['path'] ) ), 'post_content' => '', 'post_status' => 'inherit', ], $saved['path'] ); wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $saved['path'] ) ); } } // Send success response with attachment ID and URL wp_send_json_success( [ 'localImageID' => $attachment_id, 'localImageURL' => wp_get_attachment_url( $attachment_id ), ] ); } } /** * AJAX Callback: Delete images. * * @since ?? * * @return void */ public static function et_ai_delete_images() { et_core_security_check( 'manage_options', 'et_ai_delete_images', 'wp_nonce' ); $image_ids = isset( $_POST['image_ids'] ) ? array_map( 'intval', $_POST['image_ids'] ) : []; if ( ! empty( $image_ids ) ) { foreach ( $image_ids as $image_id ) { wp_delete_attachment( $image_id, true ); } } } /** * Initialize hooks. * * @since ?? * * @return void */ public static function init_hooks() { add_filter( 'et_builder_load_requests', [ 'ET_AI_App', 'update_ajax_calls_list' ] ); add_action( 'wp_ajax_et_builder_update_et_account_local', [ 'ET_AI_App', 'et_builder_update_et_account_local' ] ); add_action( 'wp_ajax_et_ai_upload_image', [ 'ET_AI_App', 'et_ai_upload_image' ] ); add_action( 'wp_ajax_et_ai_layout_save_defaults', [ 'ET_AI_App', 'et_ai_layout_save_defaults' ] ); add_action( 'wp_ajax_et_ai_delete_images', [ 'ET_AI_App', 'et_ai_delete_images' ] ); add_action( 'wp_ajax_et_ai_shortcode_string_to_object', [ 'ET_AI_App', 'et_ai_shortcode_string_to_object' ] ); } /** * AJAX Callback: Save layout prompt fonts and colors settings. * * @since ?? * * @return void */ public static function et_ai_layout_save_defaults() { et_core_security_check( 'manage_options', 'et_ai_layout_save_defaults', 'wp_nonce' ); $options = [ 'heading_font' => 'et_ai_layout_heading_font', 'body_font' => 'et_ai_layout_body_font', 'heading_font_color' => 'et_ai_layout_heading_font_color', 'body_font_color' => 'et_ai_layout_body_font_color', 'primary_color' => 'et_ai_layout_primary_color', 'secondary_color' => 'et_ai_layout_secondary_color', 'site_description' => 'et_ai_layout_site_description', ]; foreach ( $options as $post_key => $option_name ) { if ( isset( $_POST[ $post_key ] ) ) { et_update_option( $option_name, sanitize_text_field( $_POST[ $post_key ] ) ); } } wp_send_json_success(); } /** * Gets the available languages. * * @return array Available languages. */ public static function get_available_languages() { $translations = get_site_transient( 'available_translations' ); $available_languages = []; if ( ! $translations ) { /** Load WordPress Translation Install API */ require_once ABSPATH . 'wp-admin/includes/translation-install.php'; $translations = wp_get_available_translations(); } foreach ( $translations as $translation => $translation_data ) { if ( ! isset( $translation_data['english_name'] ) ) { continue; } $english_name = $translation_data['english_name']; $available_languages[ $english_name ] = $english_name; } return $available_languages; } /** * Gets the available fonts. * * @return array Available fonts. */ public static function get_available_fonts() { $user_fonts = et_builder_get_custom_fonts(); $ai_app_fonts = et_builder_get_fonts( array( 'prepend_standard_fonts' => false, ) ); // combine google fonts with custom user fonts. $ai_app_fonts = array_merge( $user_fonts, $ai_app_fonts ); $et_domain_fonts = array( 'ru_RU' => 'cyrillic', 'uk' => 'cyrillic', 'bg_BG' => 'cyrillic', 'vi' => 'vietnamese', 'el' => 'greek', 'ar' => 'arabic', 'he_IL' => 'hebrew', 'th' => 'thai', 'si_lk' => 'sinhala', 'bn_bd' => 'bengali', 'ta_lk' => 'tamil', 'te' => 'telegu', 'km' => 'khmer', 'kn' => 'kannada', 'ml_in' => 'malayalam', 'ja' => 'japanese', 'ko_KR' => 'korean', 'ml_IN' => 'malayalam', 'zh_CN' => 'chinese-simplified', ); $font_choices = array(); $site_domain = get_locale(); $removed_fonts_mapping = et_builder_old_fonts_mapping(); foreach ( $ai_app_fonts as $font_name => $font_properties ) { $use_parent_font = false; if ( isset( $removed_fonts_mapping[ $font_name ] ) ) { $parent_font = $removed_fonts_mapping[ $font_name ]['parent_font']; $font_properties['character_set'] = $ai_app_fonts[ $parent_font ]['character_set']; $use_parent_font = true; } if ( '' !== $site_domain && isset( $et_domain_fonts[ $site_domain ] ) && isset( $font_properties['character_set'] ) && false === strpos( $font_properties['character_set'], $et_domain_fonts[ $site_domain ] ) ) { continue; } $font_choices[ $font_name ] = $font_name; } return $font_choices; } /** * Gets the language name in English. * * @return string Language name in English. Otherwise the locale. */ public static function get_language_english_name() { $current_locale = get_locale(); $translations = get_site_transient( 'available_translations' ); if ( ! $translations ) { /** Load WordPress Translation Install API */ require_once ABSPATH . 'wp-admin/includes/translation-install.php'; $translations = wp_get_available_translations(); } // Output the language name. return isset( $translations[ $current_locale ]['english_name'] ) ? $translations[ $current_locale ]['english_name'] : $current_locale; } /** * ET_AI_App helpers. * * @since ?? */ public static function get_ai_app_helpers() { if ( ! defined( 'ET_AI_PLUGIN_DIR' ) ) { define( 'ET_AI_PLUGIN_DIR', get_template_directory() . '/ai-app' ); } $ai_default_heading_font = et_get_option( 'et_ai_layout_heading_font', '' ); $ai_default_body_font = et_get_option( 'et_ai_layout_body_font', '' ); $heading_font_color = et_get_option( 'et_ai_layout_heading_font_color', '' ); $body_font_color = et_get_option( 'et_ai_layout_body_font_color', '' ); $primary_color = et_get_option( 'et_ai_layout_primary_color', '' ); $secondary_color = et_get_option( 'et_ai_layout_secondary_color', '' ); $default_site_description = wp_unslash( et_get_option( 'et_ai_layout_site_description' ) ); $website_body_font_color = et_get_option( 'font_color', '' ); $website_heading_font_color = et_get_option( 'header_color', '' ); $website_body_font = et_get_option( 'body_font', '' ); $website_heading_font = et_get_option( 'heading_font', '' ); $attributes = array( 'i18n' => [ 'userPrompt' => require ET_AI_PLUGIN_DIR . '/i18n/user-prompt.php', 'authorization' => require ET_AI_PLUGIN_DIR . '/i18n/authorization.php', 'aiCode' => require ET_AI_PLUGIN_DIR . '/i18n/ai-code.php', 'aiImageEditor' => require ET_AI_PLUGIN_DIR . '/i18n/ai-image-editor.php', ], 'ajaxurl' => is_ssl() ? admin_url( 'admin-ajax.php' ) : admin_url( 'admin-ajax.php', 'http' ), 'nonces' => [ 'et_builder_update_et_account' => wp_create_nonce( 'et_builder_update_et_account' ), 'et_ai_upload_image' => wp_create_nonce( 'et_ai_upload_image' ), 'et_ai_layout_save_defaults' => wp_create_nonce( 'et_ai_layout_save_defaults' ), 'et_ai_delete_images' => wp_create_nonce( 'et_ai_delete_images' ), 'et_ai_shortcode_string_to_object' => wp_create_nonce( 'et_ai_shortcode_string_to_object' ), ], 'site_name' => '', 'site_description' => '', 'page_name' => get_the_title(), 'post_type' => get_post_type(), 'site_language' => self::get_language_english_name(), 'available_languages' => self::get_available_languages(), 'available_fonts' => self::get_available_fonts(), 'images_uri' => ET_AI_PLUGIN_URI . '/images', 'ai_server_url' => ET_AI_SERVER_URL, 'ai_default_heading_font' => $ai_default_heading_font, 'ai_default_body_font' => $ai_default_body_font, 'heading_font_color' => $heading_font_color, 'body_font_color' => $body_font_color, 'website_body_font_color' => $website_body_font_color, 'website_heading_font_color' => $website_heading_font_color, 'website_body_font' => $website_body_font, 'website_heading_font' => $website_heading_font, 'primary_color' => $primary_color, 'secondary_color' => $secondary_color, 'default_site_desc' => $default_site_description, 'woocommerce_status' => class_exists( 'WooCommerce' ) ? 'active' : 'inactive', 'placeholder_image' => ET_AI_PLACEHOLDER_LANDSCAPE_IMAGE_DATA, 'product_version' => ET_BUILDER_PRODUCT_VERSION, ); $is_onboarding = is_admin() && isset( $_GET['page'] ) && 'et_onboarding' === $_GET['page']; if ( 'page' === get_post_type() || $is_onboarding ) { if ( is_multisite() ) { $sample_tagline = sprintf( __( 'Just another %s site' ), get_network()->site_name ); } else { $sample_tagline = __( 'Just another WordPress site' ); } if ( get_bloginfo( 'description' ) !== $sample_tagline ) { $attributes['site_description'] = get_bloginfo( 'description' ); } $attributes['site_name'] = get_bloginfo( 'name' ); } return $attributes; } /** * AJAX Callback :: Convert shortcode string to object. * * @since ?? * * @return object */ public static function et_ai_shortcode_string_to_object() { et_core_security_check( 'manage_options', 'et_ai_shortcode_string_to_object', 'wp_nonce' ); // phpcs:ignore ET.Sniffs.ValidatedSanitizedInput -- Value in `$_POST['shortcode_string']` is processed by `et_fb_process_shortcode`. $shortcode_string = isset( $_POST['shortcode_string'] ) ? $_POST['shortcode_string'] : ''; if ( empty( $shortcode_string ) ) { wp_send_json_error( esc_html__( 'Invalid shortcode string.', 'et_builder' ) ); } $shortcode_obj = et_fb_process_shortcode( stripslashes( $shortcode_string ) ); wp_send_json_success( $shortcode_obj ); } /** * Load the Cloud App scripts. * * @since ?? * * @return void */ public static function load_js( $enqueue_prod_scripts = true, $skip_react_loading = false ) { if ( defined( 'ET_BUILDER_PLUGIN_ACTIVE' ) ) { if ( ! defined( 'ET_AI_PLUGIN_URI' ) ) { define( 'ET_AI_PLUGIN_URI', untrailingslashit( plugin_dir_url( __FILE__ ) ) ); } if ( ! defined( 'ET_AI_PLUGIN_DIR' ) ) { define( 'ET_AI_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) ); } } else { if ( ! defined( 'ET_AI_PLUGIN_URI' ) ) { define( 'ET_AI_PLUGIN_URI', get_template_directory_uri() . '/ai-app' ); } if ( ! defined( 'ET_AI_PLUGIN_DIR' ) ) { define( 'ET_AI_PLUGIN_DIR', get_template_directory() . '/ai-app' ); } } $CORE_VERSION = defined( 'ET_CORE_VERSION' ) ? ET_CORE_VERSION : ''; $ET_DEBUG = defined( 'ET_DEBUG' ) && ET_DEBUG; $DEBUG = $ET_DEBUG; $home_url = wp_parse_url( get_site_url() ); $build_dir_uri = ET_AI_PLUGIN_URI . '/build'; $common_scripts = ET_COMMON_URL . '/scripts'; $cache_buster = $DEBUG ? mt_rand() / mt_getrandmax() : $CORE_VERSION; $asset_path = ET_AI_PLUGIN_DIR . '/build/et-ai-app.bundle.js'; if ( file_exists( $asset_path ) ) { wp_enqueue_style( 'et-ai-styles', "{$build_dir_uri}/et-ai-app.bundle.css", [], (string) $cache_buster ); } wp_enqueue_script( 'es6-promise', "{$common_scripts}/es6-promise.auto.min.js", [], '4.2.2', true ); $BUNDLE_DEPS = [ 'jquery', 'react', 'react-dom', 'es6-promise', ]; if ( $DEBUG || $enqueue_prod_scripts || file_exists( $asset_path ) ) { $BUNDLE_URI = ! file_exists( $asset_path ) ? "{$home_url['scheme']}://{$home_url['host']}:31498/et-ai-app.bundle.js" : "{$build_dir_uri}/et-ai-app.bundle.js"; // Skip the React loading if we already have React ( Gutenberg editor for example ) to avoid conflicts. if ( ! $skip_react_loading ) { if ( function_exists( 'et_fb_enqueue_react' ) ) { et_fb_enqueue_react(); } } wp_enqueue_script( 'et-ai-app', $BUNDLE_URI, $BUNDLE_DEPS, (string) $cache_buster, true ); wp_localize_script( 'et-ai-app', 'et_ai_data', self::get_ai_app_helpers() ); } } } ET_AI_App::instance();
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete