Merge pull request 'Worktree creator income rework' (#405) from worktree-creator-income-rework into main

Reviewed-on: CYL/wordpress-theme-aksrt#405
This commit is contained in:
2026-08-07 12:56:03 +08:00
+11 -7
View File
@@ -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)];