PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.1
GiveWP – Donation Plugin and Fundraising Platform v4.3.1
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 / src / API / REST / V3 / Routes / Campaigns / GetCampaignStatistics.php
give / src / API / REST / V3 / Routes / Campaigns Last commit date
ValueObjects 1 year ago GetCampaignComments.php 1 year ago GetCampaignRevenue.php 1 year ago GetCampaignStatistics.php 1 year ago RegisterCampaignRoutes.php 1 year ago
GetCampaignStatistics.php
94 lines
1 <?php
2
3 namespace Give\API\REST\V3\Routes\Campaigns;
4
5 use DateInterval;
6 use DatePeriod;
7 use DateTimeImmutable;
8 use Exception;
9 use Give\API\REST\V3\Routes\Campaigns\ValueObjects\CampaignRoute;
10 use Give\API\RestRoute;
11 use Give\Campaigns\CampaignDonationQuery;
12 use Give\Campaigns\Models\Campaign;
13 use Give\Framework\Support\Facades\DateTime\Temporal;
14 use WP_REST_Response;
15 use WP_REST_Server;
16
17 /**
18 * @since 4.0.0
19 */
20 class GetCampaignStatistics implements RestRoute
21 {
22 /**
23 * @since 4.0.0
24 */
25 public function registerRoute()
26 {
27 register_rest_route(
28 CampaignRoute::NAMESPACE,
29 CampaignRoute::CAMPAIGN . '/statistics',
30 [
31 [
32 'methods' => WP_REST_Server::READABLE,
33 'callback' => [$this, 'handleRequest'],
34 'permission_callback' => function () {
35 return current_user_can('manage_options');
36 },
37 ],
38 'args' => [
39 'id' => [
40 'type' => 'integer',
41 'required' => true,
42 'sanitize_callback' => 'absint',
43 ],
44 'rangeInDays' => [
45 'type' => 'integer',
46 'required' => false,
47 'sanitize_callback' => 'absint',
48 'default' => 0, // Zero to mean "all time".
49 ],
50 ],
51 ]
52 );
53 }
54
55 /**
56 * @since 4.0.0
57 *
58 * @throws Exception
59 */
60 public function handleRequest($request): WP_REST_Response
61 {
62 $campaign = Campaign::find($request->get_param('id'));
63
64 $query = new CampaignDonationQuery($campaign);
65
66 if(!$request->get_param('rangeInDays')) {
67 return new WP_REST_Response([[
68 'amountRaised' => $query->sumIntendedAmount(),
69 'donationCount' => $query->countDonations(),
70 'donorCount' => $query->countDonors(),
71 ]]);
72 }
73
74 $days = $request->get_param('rangeInDays');
75 $date = new DateTimeImmutable('now', wp_timezone());
76 $interval = DateInterval::createFromDateString("-$days days");
77 $period = new DatePeriod($date, $interval, 1);
78
79 return new WP_REST_Response(array_map(function($targetDate) use ($query, $interval) {
80
81 $query = $query->between(
82 Temporal::withStartOfDay($targetDate->add($interval)),
83 Temporal::withEndOfDay($targetDate)
84 );
85
86 return [
87 'amountRaised' => $query->sumIntendedAmount(),
88 'donationCount' => $query->countDonations(),
89 'donorCount' => $query->countDonors(),
90 ];
91 }, iterator_to_array($period) ));
92 }
93 }
94