diff --git a/includes/tab-ai.php b/includes/tab-ai.php index 5a77c31..d73c922 100644 --- a/includes/tab-ai.php +++ b/includes/tab-ai.php @@ -34,20 +34,62 @@ public function content(){ } public function process_post() { - // update - if ( isset( $_POST['ai_nonce'] ) - && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['ai_nonce'] ) ), 'ai' ) ) { - - $settings = [ - 'llm_endpoint' => sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_endpoint'] ?? '' ) ), - 'llm_api_key' => sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_api_key'] ?? '' ) ), - 'llm_model' => sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_model'] ?? '' ) ), - 'transcript_llm_endpoint' => sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_endpoint'] ?? '' ) ), - 'transcript_llm_api_key' => sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_api_key'] ?? '' ) ), - 'transcript_llm_model' => sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_model'] ?? '' ) ) + // Process Chat Model Form + $ai_chat_nonce_verified = isset( $_POST['ai_chat_nonce'] ) + && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['ai_chat_nonce'] ) ), 'ai_chat' ); + + $ai_transcript_nonce_verified = isset( $_POST['ai_transcript_nonce'] ) + && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['ai_transcript_nonce'] ) ), 'ai_transcript' ); + + if ( !$ai_chat_nonce_verified && !$ai_transcript_nonce_verified ) { + return [ + 'is_update' => false, + 'updated' => false + ]; + } + // Get current settings fresh from database + $current_settings = get_site_option( 'DT_AI_connection_settings', [ + 'llm_provider' => '', + 'llm_provider_chat_path' => '', + 'llm_endpoint' => '', + 'llm_api_key' => '', + 'llm_model' => '', + 'transcript_llm_provider' => '', + 'transcript_llm_provider_transcript_path' => '', + 'transcript_llm_endpoint' => '', + 'transcript_llm_api_key' => '', + 'transcript_llm_model' => '' + ] ); + + if ( $ai_chat_nonce_verified ) { + + + $updated_settings = $current_settings; + $updated_settings['llm_provider'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_providers'] ?? '' ) ); + $updated_settings['llm_provider_chat_path'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_provider_chat_paths'] ?? '' ) ); + $updated_settings['llm_endpoint'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_endpoint'] ?? '' ) ); + $updated_settings['llm_api_key'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_api_key'] ?? '' ) ); + $updated_settings['llm_model'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_llm_model'] ?? '' ) ); + + update_site_option( 'DT_AI_connection_settings', $updated_settings ); + + return [ + 'is_update' => true, + 'updated' => true ]; + } + + // Process Transcription Model Form + if ( $ai_transcript_nonce_verified ) { + + $updated_settings = $current_settings; + $updated_settings['transcript_llm_provider'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_providers'] ?? '' ) ); + $updated_settings['transcript_llm_provider_transcript_path'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_provider_transcript_paths'] ?? '' ) ); + $updated_settings['transcript_llm_endpoint'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_endpoint'] ?? '' ) ); + $updated_settings['transcript_llm_api_key'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_api_key'] ?? '' ) ); + $updated_settings['transcript_llm_model'] = sanitize_text_field( wp_unslash( $_POST['dt_ai_transcript_llm_model'] ?? '' ) ); - update_site_option( 'DT_AI_connection_settings', $settings ); + update_site_option( 'DT_AI_connection_settings', $updated_settings ); return [ 'is_update' => true, @@ -55,22 +97,31 @@ public function process_post() { ]; } - return [ - 'is_update' => false, - 'updated' => false - ]; + return false; } public function list_keys( $processed ){ $network_settings = get_site_option( 'DT_AI_connection_settings', [ + 'llm_provider' => '', + 'llm_provider_chat_path' => '', 'llm_endpoint' => '', 'llm_api_key' => '', 'llm_model' => '', + 'transcript_llm_provider' => '', + 'transcript_llm_provider_transcript_path' => '', 'transcript_llm_endpoint' => '', 'transcript_llm_api_key' => '', 'transcript_llm_model' => '' ] ); + $ai_providers = apply_filters( 'dt_ai_providers', [] ); + + $selected_ai_provider = $network_settings['llm_provider'] ?? ''; + $selected_ai_provider_chat_path = $network_settings['llm_provider_chat_path'] ?? ''; + + $selected_ai_transcript_provider = $network_settings['transcript_llm_provider'] ?? ''; + $selected_ai_transcript_provider_chat_path = $network_settings['transcript_llm_provider_transcript_path'] ?? ''; + if ( isset( $processed['is_update'], $processed['updated'] ) && $processed['is_update'] ) { ?>
@@ -81,9 +132,9 @@ public function list_keys( $processed ){ - -
- + + + @@ -91,12 +142,52 @@ public function list_keys( $processed ){ + + + + @@ -112,19 +203,24 @@ public function list_keys( $processed ){ Model
+ Provider + + +
Endpoint - + + +
- +
- +
-
+
+
+ + +
+ @@ -132,12 +228,52 @@ public function list_keys( $processed ){ + + + + @@ -153,13 +289,13 @@ public function list_keys( $processed ){ Model @@ -167,6 +303,143 @@ public function list_keys( $processed ){
+ Provider + + +
Endpoint - + + +
- +
- +

+