PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / Donors / Controllers / DonorsRequestController.php
give / src / Donors / Controllers Last commit date
DonorsRequestController.php 4 years ago
DonorsRequestController.php
131 lines
1 <?php
2
3 namespace Give\Donors\Controllers;
4
5 use Give\Framework\Database\DB;
6 use Give\Framework\QueryBuilder\QueryBuilder;
7 use WP_REST_Request;
8
9 /**
10 * Donors Request Controller class
11 *
12 * @since 2.21.0
13 */
14 class DonorsRequestController
15 {
16 /**
17 * @var WP_REST_Request
18 */
19 private $request;
20
21 /**
22 * @param WP_REST_Request $request
23 */
24 public function __construct(WP_REST_Request $request)
25 {
26 $this->request = $request;
27 }
28
29 /**
30 * @since 2.21.0
31 *
32 * @return array
33 */
34 public function getDonors(): array
35 {
36 $page = $this->request->get_param('page');
37 $perPage = $this->request->get_param('perPage');
38
39 $query = DB::table('give_donors')
40 ->select(
41 'id',
42 ['user_id', 'userId'],
43 'email',
44 'name',
45 ['purchase_value', 'donationRevenue'],
46 ['purchase_count', 'donationCount'],
47 ['payment_ids', 'paymentIds'],
48 ['date_created', 'createdAt']
49 )
50 ->attachMeta(
51 'give_donormeta',
52 'id',
53 'donor_id',
54 ['_give_donor_title_prefix', 'titlePrefix']
55 )
56 ->limit($perPage)
57 ->orderBy('id', 'DESC')
58 ->offset(($page - 1) * $perPage);
59
60 $query = $this->getWhereConditions($query);
61
62 $query->limit($perPage);
63
64 return $query->getAll();
65 }
66
67 /**
68 * @since 2.21.0
69 *
70 * @return int
71 */
72 public function getTotalDonorsCount(): int
73 {
74 $query = DB::table('give_donors');
75 $query = $this->getWhereConditions($query);
76
77 return $query->count();
78 }
79
80 /**
81 * @param QueryBuilder $builder
82 * @since 2.21.0
83 *
84 * @return QueryBuilder
85 */
86 private function getWhereConditions(QueryBuilder $builder): QueryBuilder
87 {
88 $search = $this->request->get_param('search');
89 $start = $this->request->get_param('start');
90 $end = $this->request->get_param('end');
91 $form = $this->request->get_param('form');
92
93 if ($search) {
94 if (ctype_digit($search)) {
95 $builder->where('id', $search);
96 } else {
97 $builder->whereLike('name', $search);
98 $builder->orWhereLike('email', $search);
99 }
100 }
101
102 if ($start && $end) {
103 $builder->whereBetween('date_created', $start, $end);
104 } else if ($start) {
105 $builder->where('date_created', $start, '>=');
106 } else if ($end) {
107 $builder->where('date_created', $end, '<=');
108 }
109
110 if ($form) {
111 $builder
112 ->whereIn('id', static function (QueryBuilder $builder) use ($form) {
113 $builder
114 ->from('give_donationmeta')
115 ->distinct()
116 ->select('meta_value')
117 ->where('meta_key', '_give_payment_donor_id')
118 ->whereIn('donation_id', static function (QueryBuilder $builder) use ($form) {
119 $builder
120 ->from('give_donationmeta')
121 ->select('donation_id')
122 ->where('meta_key', '_give_payment_form_id')
123 ->where('meta_value', $form);
124 });
125 });
126 }
127
128 return $builder;
129 }
130 }
131