/var/www/vhosts/ihelp.ro/ajutam.ro/wp-content/plugins/give/src/API/Endpoints/Reports
NameSizeModeActions
AverageDonation.php70530644editdlrm
DonationsVsIncome.php30620644editdlrm
Endpoint.php118050644editdlrm
FormPerformance.php41810644editdlrm
Income.php44160644editdlrm
IncomeBreakdown.php44430644editdlrm
PaymentMethods.php24770644editdlrm
PaymentStatuses.php38560644editdlrm
RecentDonations.php21850644editdlrm
TopDonors.php30340644editdlrm
TotalDonors.php56330644editdlrm
TotalIncome.php61520644editdlrm
TotalRefunds.php54770644editdlrm
Edit: /var/www/vhosts/ihelp.ro/ajutam.ro/wp-content/plugins/give/src/API/Endpoints/Reports/Income.php (4416B)
endpoint = 'income'; } public function getReport($request) { $start = date_create($request->get_param('start')); $end = date_create($request->get_param('end')); $diff = date_diff($start, $end); $dataset = []; switch (true) { case ($diff->days > 12): $interval = round($diff->days / 12); $data = $this->get_data($start, $end, 'P' . $interval . 'D'); break; case ($diff->days > 5): $data = $this->get_data($start, $end, 'P1D'); break; case ($diff->days > 4): $data = $this->get_data($start, $end, 'PT12H'); break; case ($diff->days > 2): $data = $this->get_data($start, $end, 'PT3H'); break; case ($diff->days >= 0): $data = $this->get_data($start, $end, 'PT1H'); break; } return $data; } public function get_data($start, $end, $intervalStr) { $tooltips = []; $income = []; $interval = new \DateInterval($intervalStr); $periodStart = clone $start; $periodEnd = clone $start; // Subtract interval to set up period start date_sub($periodStart, $interval); while ($periodStart < $end) { $values = $this->get_values($periodStart->format('Y-m-d H:i:s'), $periodEnd->format('Y-m-d H:i:s')); $incomeForPeriod = $values['earnings']; $donorsForPeriod = $values['donor_count']; $time = $periodEnd->format('Y-m-d H:i:s'); switch ($intervalStr) { case 'P1D': $time = $periodStart->format('Y-m-d'); $periodLabel = $periodStart->format('l'); break; case 'PT12H': case 'PT3H': case 'PT1H': $periodLabel = $periodStart->format('D ga') . ' - ' . $periodEnd->format('D ga'); break; default: $periodLabel = $periodStart->format('M j, Y') . ' - ' . $periodEnd->format('M j, Y'); } $income[] = [ 'x' => $time, 'y' => $incomeForPeriod, ]; $tooltips[] = [ 'title' => give_currency_filter( give_format_amount($incomeForPeriod), [ 'currency_code' => $this->currency, 'decode_currency' => true, 'sanitize' => false, ] ), 'body' => $donorsForPeriod . ' ' . __('Donors', 'give'), 'footer' => $periodLabel, ]; // Add interval to set up next period date_add($periodStart, $interval); date_add($periodEnd, $interval); } if ($intervalStr === 'P1D') { $income = array_slice($income, 1); $tooltips = array_slice($tooltips, 1); } // Create data objec to be returned, with 'highlights' object containing total and average figures to display $data = [ 'datasets' => [ [ 'data' => $income, 'tooltips' => $tooltips, ], ], ]; return $data; } public function get_values($startStr, $endStr) { $paymentObjects = $this->getPayments($startStr, $endStr); $earnings = 0; $donors = []; foreach ($paymentObjects as $paymentObject) { if ($paymentObject->date >= $startStr && $paymentObject->date < $endStr) { if ($paymentObject->status == 'publish' || $paymentObject->status == 'give_subscription') { $earnings += $paymentObject->total; $donors[] = $paymentObject->donor_id; } } } $unique = array_unique($donors); return [ 'earnings' => $earnings, 'donor_count' => count($unique), ]; } }