ai_text_enhancer = $ai_text_enhancer;
$this->version = $version;
}
/**
* BLOCK EDITOR
*/
public function enqueue_editor_scripts() {
wp_register_script(
'ai-text-enhancer-editor',
plugin_dir_url( __FILE__ ) . '../build/index.js',
array(
'wp-blocks',
'wp-dom',
'wp-dom-ready',
'wp-edit-post'
),
$this->version,
false
);
wp_enqueue_script( 'ai-text-enhancer-editor' );
wp_localize_script( 'ai-text-enhancer-editor', 'phpvars', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'ai-text-enhancer-nonce' ),
'pluginurl' => plugin_dir_url( __FILE__ ),
) );
}
/**
* AI REQUEST
*/
public function ai_request() {
$options = get_option( 'aite_options' );
if ( !$options ) {
echo '{"status": "Failure", "error": "AI Text Enhancer: Please setup the AI api connection in the settings first."}';
die;
}
switch ( $options['aite_ai_provider'] ) {
case 'wordai':
$this->ai_request_wordai();
break;
case 'chatgpt':
$this->ai_request_chatgpt();
break;
default:
break;
}
}
/**
* WordAI API Request
*/
public function ai_request_wordai() {
$options = get_option( 'aite_options' );
$email = $options['wordai_email'];
$api_key = $options['wordai_apikey'];
$url = 'https://wai.wordai.com/api/rewrite';
$text = ( isset( $_REQUEST['text'] ) ? sanitize_textarea_field( wp_unslash( $_REQUEST['text'] ) ) : '' );
$return_rewrites = 'true';
$rewrite_num = $options['wordai_rewrite_num'];
$uniqueness = $options['wordai_uniqueness'];
// POST request with WP HTTP API.
$body = array(
'email' => $email,
'key' => $api_key,
'input' => $text,
'rewrite_num' => $rewrite_num,
'return_rewrites' => $return_rewrites,
'uniqueness' => $uniqueness,
);
$args = array(
'body' => $body,
'timeout' => '15',
);
$response = wp_remote_post( $url, $args );
echo wp_kses_post( $response['body'] );
die;
}
public function ai_request_chatgpt() {
}
/**
* Validate settings fields
*
* @param array $inputs The field values.
*/
public function aite_field_validation( $inputs ) {
$valid_inputs = array();
foreach ( $inputs as $option => $input ) {
switch ( $option ) {
case 'wordai_email':
$input = sanitize_email( $input );
if ( is_email( $input ) ) {
$valid_inputs[$option] = $input;
} else {
add_settings_error(
'aite_messages',
'aite_message',
__( 'Email is not correct', 'ai-text-enhancer' ),
'error'
);
}
break;
case 'wordai_apikey':
$valid_inputs[$option] = sanitize_text_field( $input );
break;
case 'chatgpt_apikey':
$valid_inputs[$option] = sanitize_text_field( $input );
break;
default:
$valid_inputs[$option] = sanitize_text_field( $input );
break;
}
}
return $valid_inputs;
}
/**
* SETTINGS
*/
public function settings_init() {
register_setting( 'ai-text-enhancer-settings', 'aite_options', array($this, 'aite_field_validation') );
/* SECTION: General */
add_settings_section(
'aite_section_general',
__( 'Select an AI provider', 'ai-text-enhancer' ),
array($this, 'aite_section_general_html'),
'ai-text-enhancer-settings',
array(
'before_section' => '
',
'after_section' => '
',
'section_class' => 'row',
)
);
if ( !aite_fs()->is_plan_or_trial( 'pro' ) || !aite_fs()->is_premium() ) {
add_settings_field(
'aite_ai_provider',
__( 'AI Provider', 'ai-text-enhancer' ),
array($this, 'aite_field_select_html'),
'ai-text-enhancer-settings',
'aite_section_general',
array(
'label_for' => 'aite_ai_provider',
'class' => 'aite_row',
'options' => array(array(
'value' => 'wordai',
'label' => __( 'WordAI 🇬🇧', 'ai-text-enhancer' ),
), array(
'value' => 'chatgpt',
'label' => __( 'ChatGPT-3.5 (Multilingual) [PRO]', 'ai-text-enhancer' ),
'disabled' => true,
)),
)
);
}
/* SECTION: WordAI */
add_settings_section(
'aite_section_wordai',
__( 'WordAI', 'ai-text-enhancer' ),
array($this, 'aite_section_wordai_html'),
'ai-text-enhancer-settings',
array(
'before_section' => '',
'after_section' => '
',
'section_class' => 'row row-wordai',
)
);
add_settings_field(
'wordai_email',
__( 'Email', 'ai-text-enhancer' ),
array($this, 'aite_field_text_html'),
'ai-text-enhancer-settings',
'aite_section_wordai',
array(
'label_for' => 'wordai_email',
'class' => 'aite_row',
)
);
add_settings_field(
'wordai_apikey',
__( 'API Key', 'ai-text-enhancer' ),
array($this, 'aite_field_text_html'),
'ai-text-enhancer-settings',
'aite_section_wordai',
array(
'label_for' => 'wordai_apikey',
'class' => 'aite_row',
)
);
add_settings_field(
'wordai_rewrite_num',
__( 'The number of rewrites you\'d like WordAI to create for your original text', 'ai-text-enhancer' ),
array($this, 'aite_field_number_html'),
'ai-text-enhancer-settings',
'aite_section_wordai',
array(
'label_for' => 'wordai_rewrite_num',
'class' => 'aite_row',
'min' => '1',
'max' => '10',
'default' => '1',
)
);
add_settings_field(
'wordai_uniqueness',
__( 'Uniqueness', 'ai-text-enhancer' ),
array($this, 'aite_field_number_html'),
'ai-text-enhancer-settings',
'aite_section_wordai',
array(
'label_for' => 'wordai_uniqueness',
'class' => 'aite_row',
'min' => '1',
'max' => '3',
'default' => '2',
)
);
}
/**
* Add the Settings page.
*/
public function settings_page() {
add_menu_page(
'AI Text Enhancer',
'AI Text Enhancer',
'manage_options',
'ai-text-enhancer-settings',
array($this, 'settings_page_html')
);
}
/**
* Top level menu callback function
*/
public function settings_page_html() {
// Check user capabilities.
if ( !current_user_can( 'manage_options' ) ) {
return;
}
// Check if the user have submitted the settings.
if ( isset( $_GET['settings-updated'] ) ) {
// Add settings saved message with the class of "updated".
add_settings_error(
'aite_messages',
'aite_message',
__( 'Settings Saved', 'ai-text-enhancer' ),
'updated'
);
}
// Show error/update messages.
settings_errors( 'aite_messages' );
require 'partials/settings-page.php';
}
/**
* Section: General
*
* @param array $args The settings array, defining title, id, callback.
*/
public function aite_section_general_html( $args ) {
require 'partials/settings-section-general.php';
}
/**
* Section: WordAI
*
* @param array $args The settings array, defining title, id, callback.
*/
public function aite_section_wordai_html( $args ) {
require 'partials/settings-section-wordai.php';
}
/**
* Section: ChatGPT
*
* @param array $args The settings array, defining title, id, callback.
*/
public function aite_section_chatgpt_html( $args ) {
require 'partials/settings-section-chatgpt.php';
}
/**
* Field Type: Text
*
* @param array $args The field values.
*/
public function aite_field_text_html( $args ) {
require 'partials/settings-field-text.php';
}
/**
* Field Type: Number
*
* @param array $args The field values.
*/
public function aite_field_number_html( $args ) {
require 'partials/settings-field-number.php';
}
/**
* Field Type: Select
*
* @param array $args The field values.
*/
public function aite_field_select_html( $args ) {
require 'partials/settings-field-select.php';
}
/**
* Global Admin styles
*/
public function enqueue_styles() {
wp_enqueue_style(
'ai-text-enhancer-admin-styles',
plugin_dir_url( __FILE__ ) . 'css/ai-text-enhancer-admin.css',
array(),
$this->version,
'all'
);
}
/**
* Global Admin JS
*/
public function enqueue_scripts() {
wp_enqueue_script(
'ai-text-enhancer-admin-script',
plugin_dir_url( __FILE__ ) . 'js/ai-text-enhancer-admin.js',
array('jquery'),
$this->version,
false
);
}
}