PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.2.2
GiveWP – Donation Plugin and Fundraising Platform v3.2.2
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 3 years ago class-export.php 3 years ago class-give-export-donations.php 5 years ago export-actions.php 3 years ago export-functions.php 4 years ago give-export-donations-exporter.php 3 years ago give-export-donations-functions.php 5 years ago pdf-reports.php 5 years ago
class-export-earnings.php
186 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 * Include a nonce check when authenticating
79 *
80 * @since 2.21.4
81 *
82 * @return bool
83 */
84 public function can_export() {
85 return (bool) apply_filters( 'give_export_capability', current_user_can( 'export_give_reports' ) && wp_verify_nonce($_REQUEST['give-nonce'], 'give_earnings_export'));
86 }
87
88 /**
89 * Get the Export Data
90 *
91 * @access public
92 * @since 1.0
93 * @return array $data The data for the CSV file
94 */
95 public function get_data()
96 {
97 $dates = $this->getDatesFromRequest();
98
99 $data = [];
100 $year = $dates->startYear;
101 $stats = new Give_Payment_Stats();
102
103 while ($year <= $dates->endYear) {
104 if ($year === $dates->startYear && $year === $dates->endYear) {
105 $m1 = $dates->startMonth;
106 $m2 = $dates->endMonth;
107 } elseif ($year === $dates->startYear) {
108 $m1 = $dates->startMonth;
109 $m2 = 12;
110 } elseif ($year === $dates->endYear) {
111 $m1 = 1;
112 $m2 = $dates->endMonth;
113 } else {
114 $m1 = 1;
115 $m2 = 12;
116 }
117
118 while ($m1 <= $m2) {
119 $date1 = mktime(0, 0, 0, $m1, 1, $year);
120 $date2 = mktime(0, 0, 0, $m1, cal_days_in_month(CAL_GREGORIAN, $m1, $year), $year);
121
122 $data[] = [
123 'date' => date_i18n('F Y', $date1),
124 'donations' => $stats->get_sales(0, $date1, $date2),
125 'earnings' => give_format_amount($stats->get_earnings(0, $date1, $date2), ['sanitize' => false]),
126 ];
127
128 $m1++;
129 }
130
131 $year++;
132 }
133
134 $data = apply_filters('give_export_get_data', $data);
135 $data = apply_filters("give_export_get_data_{$this->export_type}", $data);
136
137 return $data;
138 }
139
140 /**
141 * @since 2.21.2
142 *
143 * @return object|null
144 */
145 private function getDatesFromRequest()
146 {
147 $dates = new stdClass();
148 $firstDonation = give()->donations->getFirstDonation();
149 $lastDonation = give()->donations->getLatestDonation();
150
151 if ($firstDonation === null ) {
152 return (object)[
153 'startYear' => date('Y'),
154 'endYear' => date('Y' ),
155 'startMonth' => date('m'),
156 'endMonth' => date('m')
157 ];
158 }
159
160 if (!isset($_POST['start_year'], $_POST['end_year'], $_POST['start_month'], $_POST['end_month'])) {
161 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
162 'Start year & month, End year & month can not be empty. Please enter validate dates to export revenue and donation stats.'
163 );
164 }
165
166 $dates->startYear = (string)absint($_POST['start_year']);
167 $dates->endYear = (string)absint($_POST['end_year']);
168 $dates->startMonth = (string)absint($_POST['start_month']);
169 $dates->endMonth = (string)absint($_POST['end_month']);
170
171 if ($firstDonation && $firstDonation->createdAt->format('Y') > $dates->startYear) {
172 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
173 'Start year cannot be less than first donation year'
174 );
175 }
176
177 if ($lastDonation && $lastDonation->createdAt->format('Y') < $dates->endYear) {
178 throw new \Give\Framework\Exceptions\Primitives\InvalidArgumentException(
179 'End year cannot be greater than last donation year'
180 );
181 }
182
183 return $dates;
184 }
185 }
186