feat: add cost/token tracking, monthly budget system, and dry-run mode
- Create PSA_Cost_Tracker class with database table for API call logging - Log prompt/completion tokens and estimated cost for every OpenRouter API call - Implement monthly budget system with hard stop (budget of 0 = unlimited) - Add budget checks in validate_peptide_name() and generate_peptide_content() - Add dry_run() method to estimate costs before making API calls - Display monthly usage summary and recent API logs in admin settings - Add monthly_budget setting to admin interface with number input field - Update uninstall.php to drop psa_api_logs table on plugin removal Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
42
uninstall.php
Executable file
42
uninstall.php
Executable file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Fired when the plugin is uninstalled.
|
||||
*
|
||||
* Cleans up all plugin data: peptide posts, post meta, options, transients, and rewrite rules.
|
||||
*
|
||||
* @package PeptideSearchAI
|
||||
*/
|
||||
|
||||
// Abort if not called by WordPress.
|
||||
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $wpdb;
|
||||
|
||||
// 1. Delete all peptide custom posts and their meta.
|
||||
$peptide_ids = $wpdb->get_col(
|
||||
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'peptide'"
|
||||
);
|
||||
|
||||
if ( ! empty( $peptide_ids ) ) {
|
||||
foreach ( $peptide_ids as $post_id ) {
|
||||
wp_delete_post( (int) $post_id, true ); // Force delete, bypass trash.
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Delete plugin options.
|
||||
delete_option( 'psa_settings' );
|
||||
|
||||
// 3. Delete all plugin transients (validation cache, rate limits).
|
||||
$wpdb->query(
|
||||
"DELETE FROM {$wpdb->options}
|
||||
WHERE option_name LIKE '_transient_psa_%'
|
||||
OR option_name LIKE '_transient_timeout_psa_%'"
|
||||
);
|
||||
|
||||
// 4. Drop API logs table.
|
||||
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}psa_api_logs" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
|
||||
// 5. Flush rewrite rules to clean up the peptide post type permalinks.
|
||||
flush_rewrite_rules();
|
||||
Reference in New Issue
Block a user