fix: budget check strict comparison bug — 0 !== 0.0 in PHP (v4.4.2)
is_budget_exceeded() used `0 === $budget` but floatval() returns float, so 0 (int) === 0.0 (float) is always false. This caused unlimited budget ($0) to be treated as exceeded, blocking all AI generation. Same bug existed in the admin display (showed "$0.00" instead of "Unlimited" for budget remaining). This was a P1 bug that prevented ALL AI content generation since v4.3.0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -483,7 +483,7 @@ class PSA_Admin {
|
||||
$current_spend = PSA_Cost_Tracker::get_monthly_spend();
|
||||
$current_tokens = PSA_Cost_Tracker::get_monthly_tokens();
|
||||
$budget = floatval( self::get_setting( 'monthly_budget', PSA_Config::DEFAULT_MONTHLY_BUDGET ) );
|
||||
$budget_remaining = ( 0 === $budget ) ? __( 'Unlimited', 'peptide-search-ai' ) : '$' . number_format( max( 0, $budget - $current_spend ), 2 );
|
||||
$budget_remaining = ( 0.0 === $budget ) ? __( 'Unlimited', 'peptide-search-ai' ) : '$' . number_format( max( 0, $budget - $current_spend ), 2 );
|
||||
$recent_logs = PSA_Cost_Tracker::get_recent_logs( 20 );
|
||||
|
||||
?>
|
||||
|
||||
@@ -208,8 +208,8 @@ class PSA_Cost_Tracker {
|
||||
$settings = get_option( 'psa_settings', array() );
|
||||
$budget = floatval( $settings['monthly_budget'] ?? PSA_Config::DEFAULT_MONTHLY_BUDGET );
|
||||
|
||||
// Budget of 0 = unlimited.
|
||||
if ( 0 === $budget ) {
|
||||
// Budget of 0 = unlimited. Use loose comparison because floatval() returns float.
|
||||
if ( 0.0 === $budget ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user