path( 'MODULES_DIR', 'ai/class-vc-ai-module-settings.php' ); /** * Module entry point. * * @since 7.7 */ class Vc_Ai_Module { /** * Settings object. * * @var Vc_Ai_Module_Settings */ public $settings; /** * Vc_Ai_Module constructor. * * @since 8.0 */ public function __construct() { $this->settings = new Vc_Ai_Module_Settings(); $this->settings->init(); } /** * Module init. * * @since 7.7 */ public function init() { require_once vc_path_dir( 'MODULES_DIR', 'ai/helpers.php' ); add_action( 'wp_ajax_wpb_ai_api_get_response', [ $this, 'get_ai_api_response' ] ); add_action( 'wp_ajax_wpb_ai_generate_content_check_cache', [ $this, 'get_generate_ai_content_check_cache' ] ); add_action( 'wp_ajax_wpb_ai_get_modal_data', [ $this, 'get_modal_ai_data' ] ); add_action( 'wp_ajax_wpb_ai_get_token_usage', [ $this, 'get_token_usage_data' ] ); add_filter( 'vc_single_param_edit_holder_output', [ $this, 'add_ai_icon_to_attributes' ], 10, 2 ); add_filter( 'vc_roles_parts_list', [ $this, 'add_ai_role_parts' ], 10, 1 ); add_filter( 'vc_get_editor_locale', [ $this, 'add_module_localization' ], 10, 1 ); add_filter( 'vc_get_settings_locale', [ $this, 'add_module_localization' ], 10, 1 ); } /** * Get response from AI API. * * @sine 7.2 */ public function get_ai_api_response() { vc_user_access()->checkAdminNonce()->validateDie(); require_once vc_path_dir( 'MODULES_DIR', 'ai/class-vc-ai-api-connector.php' ); $ai_api_connector = new Vc_Ai_Api_Connector(); $content = $ai_api_connector->get_ai_content( vc_request_param( 'data' ) ); if ( is_wp_error( $content ) ) { wp_send_json_error( $content ); } wp_send_json_success( $content ); } /** * Get content generated by AI. * * @sine 7.2 */ public function get_generate_ai_content_check_cache() { vc_user_access()->checkAdminNonce()->validateDie(); require_once vc_path_dir( 'MODULES_DIR', 'ai/class-vc-ai-api-connector.php' ); $api_connector = new Vc_Ai_Api_Connector(); $content = $api_connector->get_api_response_data_from_cache( vc_request_param( 'data' ) ); if ( is_wp_error( $content ) ) { wp_send_json_error( $content ); } wp_send_json_success( $content ); } /** * Get AI modal content. * * @sine 7.2 */ public function get_modal_ai_data() { vc_user_access()->checkAdminNonce()->validateDie(); require_once vc_path_dir( 'MODULES_DIR', 'ai/class-vc-ai-modal-controller.php' ); $modal_controller = new Vc_Ai_Modal_Controller(); $data = $modal_controller->get_modal_data( vc_request_param( 'data' ) ); // in case of error we should show it inside modal content. wp_send_json_success( $data ); } /** * Get AI token usage corresponding to current active license. * * @sine 7.7 */ public function get_token_usage_data() { vc_user_access()->checkAdminNonce()->validateDie(); require_once vc_path_dir( 'MODULES_DIR', 'ai/class-vc-ai-modal-controller.php' ); $modal_controller = new Vc_Ai_Modal_Controller(); $data = $modal_controller->get_token_usage_request(); if ( is_wp_error( $data ) ) { wp_send_json_error( $data ); } wp_send_json_success( $data ); } /** * Add ai icon to our element attributes. * * @since 7.7 * @param string $output * @param array $param * @return string */ public function add_ai_icon_to_attributes( $output, $param ) { $form_line = '