PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.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 / src / DonationForms / Controllers / DonationFormsRequestController.php
give / src / DonationForms / Controllers Last commit date
DonationFormsRequestController.php 4 years ago
DonationFormsRequestController.php
113 lines
1 <?php
2
3 namespace Give\DonationForms\Controllers;
4
5 use Give\DonationForms\ValueObjects\DonationFormMetaKeys;
6 use Give\Framework\Database\DB;
7 use WP_REST_Request;
8
9 /**
10 * Donation Forms Request Controller class
11 *
12 * @since 2.21.0
13 */
14 class DonationFormsRequestController
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 * @return array
31 */
32 public function getForms(): array
33 {
34 $page = $this->request->get_param('page');
35 $perPage = $this->request->get_param('perPage');
36 $search = $this->request->get_param('search');
37 $status = $this->request->get_param('status');
38
39 $query = DB::table('posts')
40 ->select(
41 'id',
42 ['post_date', 'createdAt'],
43 ['post_date_gmt', 'createdAtGmt'],
44 ['post_status', 'status'],
45 ['post_title', 'title']
46 )
47 ->attachMeta('give_formmeta', 'id', 'form_id',
48 [DonationFormMetaKeys::FORM_EARNINGS, 'revenue'],
49 [DonationFormMetaKeys::DONATION_LEVELS, 'donationLevels'],
50 [DonationFormMetaKeys::SET_PRICE, 'setPrice'],
51 [DonationFormMetaKeys::GOAL_OPTION, 'goalEnabled']
52 )
53 ->where('post_type', 'give_forms')
54 ->limit($perPage)
55 ->orderBy('id', 'DESC')
56 ->offset(($page - 1) * $perPage);
57
58 // Status
59 if ($status === 'any') {
60 $query->whereIn('post_status', ['publish', 'draft', 'pending', 'private']);
61 } else {
62 $query->where('post_status', $status);
63 }
64
65 // Search
66 if ($search) {
67 if (ctype_digit($search)) {
68 $query->where('ID', $search);
69 } else {
70 $searchTerms = array_map('trim', explode(' ', $search));
71 foreach ($searchTerms as $term) {
72 if ($term) {
73 $query->whereLike('post_title', $term);
74 }
75 }
76 }
77 }
78
79 return $query->getAll();
80 }
81
82 /**
83 * @return int
84 */
85 public function getTotalFormsCount(): int
86 {
87 $search = $this->request->get_param('search');
88 $status = $this->request->get_param('status');
89 $perPage = $this->request->get_param('perPage');
90
91 $query = DB::table('posts')
92 ->where('post_type', 'give_forms');
93
94 if ($status === 'any') {
95 $query->whereIn('post_status', ['publish', 'draft', 'pending']);
96 } else {
97 $query->where('post_status', $status);
98 }
99
100 if ($search) {
101 if (ctype_digit($search)) {
102 $query->where('ID', $search);
103 } else {
104 $query->whereLike('post_title', $search);
105 }
106 }
107
108 $query->limit($perPage);
109
110 return $query->count();
111 }
112 }
113