Current Path : /var/www/html/soar-backup/wp-content/plugins/give/src/API/Endpoints/Reports/ |
Current File : /var/www/html/soar-backup/wp-content/plugins/give/src/API/Endpoints/Reports/TopDonors.php |
<?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; } }