- if ($pay->flags->hasflag('donation')) {
- $donations = XDB::fetchAllAssoc('SELECT IF(p.display,
- IF(ap.pid IS NOT NULL, CONCAT(a.full_name, \' (\', pd.promo, \')\'), a.full_name),
- \'XXXX\') AS name, p.amount
- FROM payment_transactions AS p
- INNER JOIN accounts AS a ON (a.uid = p.uid)
- LEFT JOIN account_profiles AS ap ON (a.uid = ap.uid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_display AS pd ON (ap.pid = pd.pid)
- WHERE p.ref = {?}
- ORDER BY LENGTH(p.amount) DESC, p.amount DESC, name',
- $ref);
- $sum = 0;
- foreach ($donations as $d) {
- $amount = $d['amount'];
- $sum += trim(strtr(substr($amount, 0, strpos($amount, 'EUR')), ',', '.'));
- }
-
+ // Only if $id = -1, meaning only for donation the site's association
+ if ($ref == -1) {
+ $biggest_donations = XDB::fetchAllAssoc('SELECT IF(p.display,
+ IF(ap.pid IS NOT NULL, CONCAT(a.full_name, \' (\', pd.promo, \')\'), a.full_name),
+ \'XXXX\') AS name, p.amount, p.ts_confirmed
+ FROM payment_transactions AS p
+ INNER JOIN accounts AS a ON (a.uid = p.uid)
+ LEFT JOIN account_profiles AS ap ON (a.uid = ap.uid AND FIND_IN_SET(\'owner\', ap.perms))
+ LEFT JOIN profile_display AS pd ON (ap.pid = pd.pid)
+ WHERE p.ref = {?}
+ ORDER BY LENGTH(p.amount) DESC, p.amount DESC, name
+ LIMIT 10',
+ $pay->id);
+
+ $donations = XDB::fetchAllAssoc('(SELECT SUM(amount) AS amount, YEAR(ts_confirmed) AS year, MONTH(ts_confirmed) AS month, ts_confirmed
+ FROM payment_transactions
+ WHERE ref = {?} AND YEAR(ts_confirmed) = YEAR(CURDATE())
+ GROUP BY month)
+ UNION
+ (SELECT SUM(amount) AS amount, YEAR(ts_confirmed) AS year, 0 AS month, ts_confirmed
+ FROM payment_transactions
+ WHERE ref = {?} AND YEAR(ts_confirmed) < YEAR(CURDATE())
+ GROUP BY year)
+ ORDER BY year DESC, month DESC',
+ $pay->id, $pay->id);
+
+ $page->assign('biggest_donations', $biggest_donations);