diff --git a/src/Payment/Revenue.php b/src/Payment/Revenue.php index 20ab8dd2..f575e10e 100644 --- a/src/Payment/Revenue.php +++ b/src/Payment/Revenue.php @@ -283,8 +283,9 @@ class Revenue { $where[] = 'status = %s'; $params[] = $status; } - $currency = sanitize_key((string) ($args['currency'] ?? '')); - if (in_array($currency, ['CNY', 'points'], true)) { + $currency = strtolower(sanitize_key((string) ($args['currency'] ?? ''))); + if (in_array($currency, ['cny', 'points'], true)) { + $currency = $currency === 'points' ? 'points' : 'CNY'; $where[] = 'currency = %s'; $params[] = $currency; } @@ -317,8 +318,9 @@ class Revenue { $where = 'author_id = %d'; $params = [$user_id]; - $currency = sanitize_key((string) ($args['currency'] ?? '')); - if (in_array($currency, ['CNY', 'points'], true)) { + $currency = strtolower(sanitize_key((string) ($args['currency'] ?? ''))); + if (in_array($currency, ['cny', 'points'], true)) { + $currency = $currency === 'points' ? 'points' : 'CNY'; $where .= ' AND currency = %s'; $params[] = $currency; } @@ -388,8 +390,9 @@ class Revenue { $where[] = 'post_id = %d'; $params[] = $post_id; } - $currency = sanitize_key((string) ($args['currency'] ?? '')); - if (in_array($currency, ['CNY', 'points'], true)) { + $currency = strtolower(sanitize_key((string) ($args['currency'] ?? ''))); + if (in_array($currency, ['cny', 'points'], true)) { + $currency = $currency === 'points' ? 'points' : 'CNY'; $where[] = 'currency = %s'; $params[] = $currency; } @@ -406,7 +409,8 @@ class Revenue { } } $where_sql = $where ? 'WHERE ' . implode(' AND ', $where) : ''; - $total = (int) ($params ? $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$this->table()} {$where_sql}", $params)) : $wpdb->get_var("SELECT COUNT(*) FROM {$this->table()}")); + $count_sql = "SELECT COUNT(*) FROM {$this->table()} {$where_sql}"; + $total = (int) ($params ? $wpdb->get_var($wpdb->prepare($count_sql, $params)) : $wpdb->get_var($count_sql)); $items_params = array_merge($params, [$limit, $offset]); $items = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$this->table()} {$where_sql} ORDER BY created_at DESC LIMIT %d OFFSET %d", $items_params), ARRAY_A); return ['items' => $items ?: [], 'total' => $total, 'page' => (int) floor($offset / $limit) + 1, 'max_pages' => (int) ceil(max(1, $total) / $limit)];