prefix and hardcoded plugin constant; no user input // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- uninstall.php is expected to drop the plugin's own tables when the administrator opts in $wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $wpdb->prefix . $acquis_table ) ); } // ── Delete all known plugin options ─────────────────────────────────────── $acquis_uninstall_options = array( 'acquis_db_version', 'acquis_activated_time', 'acquis_install_id', 'acquis_link_expiry_minutes', 'acquis_success_message', 'acquis_button_label', 'acquis_modal_title', 'acquis_modal_subtitle', 'acquis_modal_header_color', 'acquis_modal_accent_color', 'acquis_show_powered_by', 'acquis_delete_data_on_uninstall', 'acquis_from_name', 'acquis_from_email', 'acquis_email_subject', 'acquis_delivery_mode', 'acquis_retention_email_logs', 'acquis_mailchimp_api_key', 'acquis_mailchimp_list_id', 'acquis_mailchimp_enabled', 'acquis_brevo_api_key', 'acquis_brevo_list_id', 'acquis_brevo_enabled', 'acquis_brevo_double_optin', 'acquis_brevo_doi_template_id', 'acquis_mailwizz_api_url', 'acquis_mailwizz_api_key', 'acquis_mailwizz_api_public_key', 'acquis_mailwizz_list_id', 'acquis_mailwizz_enabled', 'acquis_mailwizz_custom_fields', ); foreach ( $acquis_uninstall_options as $acquis_option ) { delete_option( $acquis_option ); } // ── Delete the per-user "promo banner snoozed until" flag ───────────────── delete_metadata( 'user', 0, 'acquis_promo_snoozed_until', '', true ); // ── Delete any dynamically created acquis_ options ──────────────────────── $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( 'acquis_' ) . '%' ) ); // ── Remove protected upload directory guard files ───────────────────────── $acquis_upload_dir = wp_upload_dir(); $acquis_protect_dir = $acquis_upload_dir['basedir'] . '/acquis-protected'; if ( is_dir( $acquis_protect_dir ) ) { foreach ( array( '.htaccess', 'index.php' ) as $acquis_guard_file ) { $acquis_guard_path = $acquis_protect_dir . '/' . $acquis_guard_file; if ( file_exists( $acquis_guard_path ) ) { wp_delete_file( $acquis_guard_path ); } } }