'array', 'sanitize_callback' => array( $this, 'sanitize_settings' ), 'default' => array(), ) ); // API Section add_settings_section( 'adambox_api_section', __( 'API Configuration', 'adambox' ), '__return_false', 'adambox' ); add_settings_field( 'openai_api_key', __( 'OpenAI API Key', 'adambox' ), array( $this, 'render_api_key_field' ), 'adambox', 'adambox_api_section' ); // Moderation Section add_settings_section( 'adambox_moderation_section', __( 'Moderation Controls', 'adambox' ), '__return_false', 'adambox' ); add_settings_field( 'moderation_strictness', __( 'Moderation Strictness', 'adambox' ), array( $this, 'render_strictness_field' ), 'adambox', 'adambox_moderation_section' ); add_settings_field( 'ai_intervention_level', __( 'AI Intervention Level', 'adambox' ), array( $this, 'render_intervention_field' ), 'adambox', 'adambox_moderation_section' ); } /** * Enqueue admin assets * * @param string $hook Current admin page hook. */ public function enqueue_assets( $hook ) { if ( 'settings_page_adambox' !== $hook ) { return; } $css_path = ADAMBOX_PLUGIN_DIR . 'assets/css/adambox-admin.css'; $js_path = ADAMBOX_PLUGIN_DIR . 'assets/js/adambox-admin.js'; wp_enqueue_style( 'adambox-admin', ADAMBOX_PLUGIN_URL . 'assets/css/adambox-admin.css', array(), file_exists( $css_path ) ? filemtime( $css_path ) : ADAMBOX_VERSION ); wp_enqueue_script( 'adambox-admin', ADAMBOX_PLUGIN_URL . 'assets/js/adambox-admin.js', array( 'jquery' ), file_exists( $js_path ) ? filemtime( $js_path ) : ADAMBOX_VERSION, true ); } /** * Sanitize settings input * * @param array $input Raw input. * @return array */ public function sanitize_settings( $input ) { $output = array(); $output['openai_api_key'] = isset( $input['openai_api_key'] ) ? sanitize_text_field( $input['openai_api_key'] ) : ''; $allowed_strictness = array( 'low', 'medium', 'high' ); $output['moderation_strictness'] = in_array( $input['moderation_strictness'] ?? 'medium', $allowed_strictness, true ) ? $input['moderation_strictness'] : 'medium'; $allowed_intervention = array( 'intervene_only', 'summarize_when_needed', 'actively_guide', ); $output['ai_intervention_level'] = in_array( $input['ai_intervention_level'] ?? 'intervene_only', $allowed_intervention, true ) ? $input['ai_intervention_level'] : 'intervene_only'; return $output; } /** * Render settings page */ public function render_settings_page() { ?>