PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.21.2
GiveWP – Donation Plugin and Fundraising Platform v2.21.2
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / admin / tools / export / class-export-earnings.php
give / includes / admin / tools / export Last commit date
class-batch-export-donors.php 5 years ago class-batch-export.php 4 years ago class-core-settings-export.php 7 years ago class-export-earnings.php 4 years ago class-export.php 6 years ago class-give-export-donations.php 5 years ago export-actions.php 4 years ago export-functions.php 4 years ago give-export-donations-exporter.php 6 years ago give-export-donations-functions.php 5 years ago pdf-reports.php 5 years ago
class-export-earnings.php
164 lines
1 <?php
2 /**
3 * Earnings Export Class
4 *
5 * This class handles earnings export
6 *
7 * @package Give
8 * @since 1.0
9 * @copyright Copyright (c) 2016, GiveWP
10 * @license https://opensource.org/licenses/gpl-license GNU Public License
11 * @subpackage Admin/Reports
12 */
13
14 // Exit if accessed directly.
15
16 if (!defined('ABSPATH')) {
17 exit;
18 }
19
20 /**
21 * Give_Earnings_Export Class
22 *
23 * @since 1.0
24 */
25 class Give_Earnings_Export extends Give_Export
26 {
27
28 /**
29 * Our export type. Used for export-type specific filters/actions
30 *
31 * @since 1.0
32 * @var string
33 */
34 public $export_type = 'earnings';
35
36 /**
37 * Set the export headers
38 *
39 * @access public
40 * @since 1.6
41 * @return void
42 */
43 public function headers()
44 {
45 give_ignore_user_abort();
46
47 nocache_headers();
48 header('Content-Type: text/csv; charset=utf-8');
49 header(
50 'Content-Disposition: attachment; filename=' . apply_filters(
51 'give_earnings_export_filename',
52 'give-export-' . $this->export_type . '-' . date('n') . '-' . date('Y')
53 ) . '.csv'
54 );
55 header('Expires: 0');
56 }
57
58 /**
59 * Set the CSV columns
60 *
61 * @access public
62 * @since 1.0
63 * @return array $cols All the columns
64 */
65 public function csv_cols()
66 {
67 $cols = [
68 'date' => __('Date', 'give'),
69 'donations' => __('Donations', 'give'),
70 /* translators: %s: currency */
71 'earnings' => sprintf(__('Revenue (%s)', 'give'), give_currency_symbol('', true)),
72 ];
73
74 return $cols;
75 }
76
77 /**
78 * Get the Export Data
79 *
80 * @access public
81 * @since 1.0
82 * @return array $data The data for the CSV file
83 */
84 public function get_data()
85 {
86 $dates = $this->getDatesFromRequest();
87
88 $data = [];
89 $year = $dates->startYear;
90 $stats = new Give_Payment_Stats();
91
92 while ($year <= $dates->endYear) {
93 if ($year === $dates->startYear && $year === $dates->endYear) {
94 $m1 = $dates->startMonth;
95 $m2 = $dates->endMonth;
96 } elseif ($year === $dates->startYear) {
97 $m1 = $dates->startMonth;
98 $m2 = 12;
99 } elseif ($year === $dates->endYear) {
100 $m1 = 1;
101 $m2 = $dates->endMonth;
102 } else {
103 $m1 = 1;
104 $m2 = 12;
105 }
106
107 while ($m1 <= $m2) {
108 $date1 = mktime(0, 0, 0, $m1, 1, $year);
109 $date2 = mktime(0, 0, 0, $m1, cal_days_in_month(CAL_GREGORIAN, $m1, $year), $year);
110
111 $data[] = [
112 'date' => date_i18n('F Y', $date1),
113 'donations' => $stats->get_sales(0, $date1, $date2),
114 'earnings' => give_format_amount($stats->get_earnings(0, $date1, $date2), ['sanitize' => false]),
115 ];
116
117 $m1++;
118 }
119
120 $year++;
121 }
122
123 $data = apply_filters('give_export_get_data', $data);
124 $data = apply_filters("give_export_get_data_{$this->export_type}", $data);
125
126 return $data;
127 }
128
129 /**
130 * @since 2.21.2
131 */
132 private function getDatesFromRequest(): \stdClass
133 {
134 $dates = new \stdClass();
135 $firstDonation = give()->donations->getFirstDonation();
136 $lastDonation = give()->donations->getLatestDonation();
137
138 if (!isset($_POST['start_year'], $_POST['end_year'], $_POST['start_month'], $_POST['end_month'])) {
139 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
140 'Start year & month, End year & month can not be empty. Please enter validate dates to export revenue and donation stats.'
141 );
142 }
143
144 $dates->startYear = (string)absint($_POST['start_year']);
145 $dates->endYear = (string)absint($_POST['end_year']);
146 $dates->startMonth = (string)absint($_POST['start_month']);
147 $dates->endMonth = (string)absint($_POST['end_month']);
148
149 if ($firstDonation && $firstDonation->createdAt->format('Y') > $dates->startYear) {
150 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
151 'Start year cannot be less than first donation year'
152 );
153 }
154
155 if ($lastDonation && $lastDonation->createdAt->format('Y') < $dates->endYear) {
156 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
157 'End year cannot be greater than last donation year'
158 );
159 }
160
161 return $dates;
162 }
163 }
164