__( 'You do not have permission to perform this action.', 'abp-writer-ai-blog-generator' ), ) ); } $response = ABPW_Api_Client::get( '/config' ); if ( is_wp_error( $response ) ) { wp_send_json_error( array( 'message' => $response->get_error_message(), ) ); } wp_send_json_success( array( 'config' => isset( $response['config'] ) ? $response['config'] : null, ) ); } /** * Handle saving config via AJAX. */ public function handle_save_config() { check_ajax_referer( 'abpw_config_nonce', 'abpw_nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( array( 'message' => __( 'You do not have permission to perform this action.', 'abp-writer-ai-blog-generator' ), ) ); } // Sanitize inputs. $business_desc = isset( $_POST['business_desc'] ) ? sanitize_textarea_field( wp_unslash( $_POST['business_desc'] ) ) : ''; $location = isset( $_POST['location'] ) ? sanitize_text_field( wp_unslash( $_POST['location'] ) ) : ''; $language = isset( $_POST['language'] ) ? sanitize_text_field( wp_unslash( $_POST['language'] ) ) : ''; $keywords_raw = isset( $_POST['keywords'] ) ? sanitize_textarea_field( wp_unslash( $_POST['keywords'] ) ) : ''; $comm_style = isset( $_POST['comm_style'] ) ? sanitize_text_field( wp_unslash( $_POST['comm_style'] ) ) : ''; // Validate business description. $desc_len = mb_strlen( $business_desc ); if ( $desc_len < 50 || $desc_len > 1000 ) { wp_send_json_error( array( 'field' => 'business_desc', 'message' => __( 'Business description must be between 50 and 1000 characters.', 'abp-writer-ai-blog-generator' ), ) ); } // Validate language. if ( ! in_array( $language, self::$allowed_languages, true ) ) { wp_send_json_error( array( 'field' => 'language', 'message' => __( 'Please select a valid language.', 'abp-writer-ai-blog-generator' ), ) ); } // Validate keywords. $keywords_array = array_values( array_filter( array_map( 'trim', explode( ',', $keywords_raw ) ) ) ); $keyword_count = count( $keywords_array ); if ( $keyword_count < 5 || $keyword_count > 50 ) { wp_send_json_error( array( 'field' => 'keywords', 'message' => __( 'Please enter between 5 and 50 keywords separated by commas.', 'abp-writer-ai-blog-generator' ), ) ); } // Validate communication style. if ( ! in_array( $comm_style, self::$allowed_styles, true ) ) { wp_send_json_error( array( 'field' => 'comm_style', 'message' => __( 'Please select a valid communication style.', 'abp-writer-ai-blog-generator' ), ) ); } // Build API payload. $data = array( 'business_desc' => $business_desc, 'location' => $location, 'language' => $language, 'keywords' => $keywords_array, 'comm_style' => $comm_style, ); $response = ABPW_Api_Client::post( '/config', $data ); if ( is_wp_error( $response ) ) { wp_send_json_error( array( 'message' => $response->get_error_message(), ) ); } wp_send_json_success( array( 'config' => isset( $response['config'] ) ? $response['config'] : $data, 'message' => __( 'Configuration saved successfully.', 'abp-writer-ai-blog-generator' ), ) ); } }