Server IP : 192.158.238.246 / Your IP : 3.147.140.129 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/API/Endpoints/Reports/ |
Upload File : |
<?php /** * Top Donors endpoint * * @package Give */ namespace Give\API\Endpoints\Reports; class TopDonors extends Endpoint { public function __construct() { $this->endpoint = 'top-donors'; } public function getReport($request) { $start = date_create($request->get_param('start')); $end = date_create($request->get_param('end')); return $this->get_data($start, $end); } public function get_data($start, $end) { $paymentObjects = $this->getPayments($start->format('Y-m-d'), $end->format('Y-m-d 23:i:s'), 'date', -1); $donors = []; foreach ($paymentObjects as $paymentObject) { if ($paymentObject->status === 'publish' || $paymentObject->status === 'give_subscription') { $donors[$paymentObject->donor_id]['type'] = 'donor'; $donors[$paymentObject->donor_id]['earnings'] = isset($donors[$paymentObject->donor_id]['earnings']) ? $donors[$paymentObject->donor_id]['earnings'] += $paymentObject->total : $paymentObject->total; $donors[$paymentObject->donor_id]['total'] = give_currency_filter( give_format_amount($donors[$paymentObject->donor_id]['earnings'], ['sanitize' => false]), [ 'currency_code' => $this->currency, 'decode_currency' => true, 'sanitize' => false, ] ); $donors[$paymentObject->donor_id]['donations'] = isset($donors[$paymentObject->donor_id]['donations']) ? $donors[$paymentObject->donor_id]['donations'] += 1 : 1; $countLabel = _n('Donation', 'Donations', $donors[$paymentObject->donor_id]['donations'], 'give'); $donors[$paymentObject->donor_id]['count'] = $donors[$paymentObject->donor_id]['donations'] . ' ' . $countLabel; $donors[$paymentObject->donor_id]['name'] = $paymentObject->first_name . ' ' . $paymentObject->last_name; $donors[$paymentObject->donor_id]['email'] = $paymentObject->email; $donors[$paymentObject->donor_id]['image'] = give_validate_gravatar( $paymentObject->email ) ? get_avatar_url($paymentObject->email, 60) : null; $donors[$paymentObject->donor_id]['url'] = admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . absint( $paymentObject->donor_id ) ); } } $sorted = usort( $donors, function ($a, $b) { if ($a['earnings'] == $b['earnings']) { return 0; } return ($a['earnings'] > $b['earnings']) ? -1 : 1; } ); if ($sorted === true) { $donors = array_slice($donors, 0, 25); $donors = array_values($donors); } return $donors; } }