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 / DonationForms / Controllers / DonationFormsRequestController.php
give / src / DonationForms / Controllers Last commit date
DonateController.php 2 years ago DonationConfirmationReceiptViewController.php 1 year ago DonationFormViewController.php 2 years ago DonationFormsRequestController.php 1 year ago
DonationFormsRequestController.php
137 lines
1 <?php
2
3 namespace Give\DonationForms\Controllers;
4
5 use Exception;
6 use Give\Campaigns\Repositories\CampaignRepository;
7 use Give\Campaigns\ValueObjects\CampaignType;
8 use Give\DonationForms\Models\DonationForm;
9 use Give\DonationForms\ValueObjects\DonationFormsRoute;
10 use Give\Framework\QueryBuilder\QueryBuilder;
11 use WP_REST_Request;
12 use WP_REST_Response;
13
14 /**
15 * @since 4.2.0
16 */
17 class DonationFormsRequestController
18 {
19 /**
20 * @since 4.2.0
21 */
22 public function getForm(WP_REST_Request $request): WP_REST_Response
23 {
24 $form = DonationForm::find($request->get_param('id'));
25
26 if ( ! $form) {
27 return new WP_REST_Response(__('Form not found', 'give'), 404);
28 }
29
30 return new WP_REST_Response($form->toArray());
31 }
32
33 /**
34 * @since 4.2.0
35 */
36 public function getForms(WP_REST_Request $request): WP_REST_Response
37 {
38 $ids = $request->get_param('ids');
39 $page = $request->get_param('page');
40 $perPage = $request->get_param('per_page');
41 $status = $request->get_param('status');
42
43 $query = DonationForm::query();
44
45 if ( ! in_array('orphaned', $status)) {
46 $query->whereIn('post_status', $status);
47 } else {
48 // get orphaned forms only
49 $query
50 ->whereNotIn('ID', function (QueryBuilder $builder) {
51 $builder
52 ->from('give_campaign_forms')
53 ->select('form_id');
54 })
55 // p2p forms
56 ->whereNotIn('ID', function (QueryBuilder $builder) {
57 $builder
58 ->from('give_campaigns')
59 ->select('form_id')
60 ->where('campaign_type', CampaignType::CORE, '!=');
61 });
62 }
63
64 if ( ! empty($ids)) {
65 $query->whereIn('id', $ids);
66 }
67
68 $totalQuery = clone $query;
69
70 $query
71 ->limit($perPage)
72 ->offset(($page - 1) * $perPage);
73
74 $forms = $query->getAll() ?? [];
75 $totalForms = empty($forms) ? 0 : $totalQuery->count();
76 $totalPages = $totalForms === 0 ? 0 : (int)ceil($totalForms / $perPage);
77
78 $forms = array_map(function ($form) {
79 return $form->toArray();
80 }, $forms);
81
82 $response = rest_ensure_response($forms);
83 $response->header('X-WP-Total', $totalForms);
84 $response->header('X-WP-TotalPages', $totalPages);
85
86 $base = add_query_arg(
87 map_deep($request->get_query_params(), function ($value) {
88 if (is_bool($value)) {
89 $value = $value ? 'true' : 'false';
90 }
91
92 return urlencode($value);
93 }),
94 rest_url(DonationFormsRoute::FORMS)
95 );
96
97 if ($page > 1) {
98 $prevPage = $page - 1;
99
100 if ($prevPage > $totalPages) {
101 $prevPage = $totalPages;
102 }
103
104 $response->link_header('prev', add_query_arg('page', $prevPage, $base));
105 }
106
107 if ($totalPages > $page) {
108 $nextPage = $page + 1;
109 $response->link_header('next', add_query_arg('page', $nextPage, $base));
110 }
111
112 return $response;
113 }
114
115 /**
116 * @since 4.2.0
117 *
118 * @throws Exception
119 */
120 public function associateFormsWithCampaign(WP_REST_Request $request): WP_REST_Response
121 {
122 $formIDs = $request->get_param('formIDs');
123 $campaignId = $request->get_param('campaignId');
124 $campaignRepository = give(CampaignRepository::class);
125
126 if ($campaign = $campaignRepository->getById($campaignId)) {
127 foreach ($formIDs as $formID) {
128 $campaignRepository->addCampaignForm($campaign, $formID);
129 }
130
131 return new WP_REST_Response($formIDs);
132 }
133
134 return new WP_REST_Response('Campaign not found', 404);
135 }
136 }
137