'sanitize_text_field', ]); register_setting('aiar_light_settings', 'aiar_light_disable_ai', [ 'sanitize_callback' => 'absint', // stores as 0 or 1 ]); register_setting('aiar_light_settings', 'aiar_light_business_description', [ 'sanitize_callback' => 'wp_kses_post', // allows safe HTML ]); register_setting('aiar_light_settings', 'aiar_light_selected_form', [ 'sanitize_callback' => 'sanitize_text_field', ]); }); function aiarlight_enqueue_admin_styles( $hook ) { // Only load on your plugin's admin page (slug = aiar-light) if ( $hook !== 'toplevel_page_aiar-light' ) { return; } // Google font (optional) wp_enqueue_style( 'inter-font', 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap', [], null ); // Your admin styles wp_enqueue_style( 'aiarlight-admin-style', plugin_dir_url( __FILE__ ) . 'css/admin-style.css', [], '1.0.0' ); } add_action( 'admin_enqueue_scripts', 'aiarlight_enqueue_admin_styles' ); // 2) Admin page with tabs function aiar_light_admin_page() { $allowed_tabs = ['settings', 'logs', 'pro', 'info']; // phpcs:disable WordPress.Security.NonceVerification.Recommended // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $tab_raw = isset( $_GET['tab'] ) ? sanitize_key( wp_unslash( $_GET['tab'] ) ) : 'settings'; $tab = in_array( $tab_raw, $allowed_tabs, true ) ? $tab_raw : 'settings'; // phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized // phpcs:enable WordPress.Security.NonceVerification.Recommended ?>
' . nl2br( esc_html( $ai ) ) . '
'; wp_mail( $email, "Reply from {$company}", $message, $headers ); }); // Privacy: Exporter & eraser add_filter( 'wp_privacy_personal_data_exporters', function( $exporters ) { $exporters['aiar-light-logs'] = [ 'exporter_friendly_name' => __( 'AI Auto Responder Logs','ai-auto-responder-light' ), 'callback' => 'aiar_light_export_logs', ]; return $exporters; } ); function aiar_light_export_logs( $email_address ) { $data = get_option( 'aiar_light_conversation_logs', [] ); $export_items = []; foreach ( $data as $entry ) { if ( ! empty( $entry['email'] ) && $entry['email'] === $email_address ) { $export_items[] = [ 'group_id' => 'aiar-light-logs', 'group_label' => __( 'AI Auto Responder Conversations','ai-auto-responder-light' ), 'item_id' => uniqid( 'aiar_log_' ), 'data' => [ __( 'Date','ai-auto-responder-light' ) => $entry['time'], __( 'Prompt','ai-auto-responder-light' ) => $entry['prompt'], __( 'Response','ai-auto-responder-light' ) => $entry['response'], ], ]; } } return [ 'data' => $export_items, 'done' => true ]; } add_filter( 'wp_privacy_personal_data_erasers', function( $erasers ) { $erasers['aiar-light-logs'] = [ 'eraser_friendly_name' => __( 'AI Auto Responder Logs','ai-auto-responder-light' ), 'callback' => 'aiar_light_erase_logs', ]; return $erasers; } ); function aiar_light_erase_logs( $email_address ) { $data = get_option( 'aiar_light_conversation_logs', [] ); $new = array_filter( $data, function( $entry ) use ( $email_address ) { return empty( $entry['email'] ) || $entry['email'] !== $email_address; } ); update_option( 'aiar_light_conversation_logs', array_values( $new ) ); return [ 'items_removed' => count( $data ) - count( $new ), 'items_retained' => count( $new ), 'messages' => [], 'done' => true, ]; } ?>