PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.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 / Donors / Endpoints / DeleteDonor.php
give / src / Donors / Endpoints Last commit date
DeleteDonor.php 2 years ago Endpoint.php 4 years ago ListDonors.php 3 years ago SwitchDonorView.php 4 years ago
DeleteDonor.php
143 lines
1 <?php
2
3 namespace Give\Donors\Endpoints;
4
5 use Exception;
6 use Give\Donors\Models\Donor;
7 use WP_Error;
8 use WP_REST_Request;
9 use WP_REST_Response;
10
11 class DeleteDonor extends Endpoint
12 {
13 /**
14 * @var string
15 */
16 protected $endpoint = 'admin/donors/delete';
17
18 /**
19 * @inheritDoc
20 */
21 public function registerRoute()
22 {
23 register_rest_route(
24 'give-api/v2',
25 $this->endpoint,
26 [
27 [
28 'methods' => 'DELETE',
29 'callback' => [$this, 'handleRequest'],
30 'permission_callback' => [$this, 'permissionsCheck'],
31 ],
32 'args' => [
33 'ids' => [
34 'type' => 'string',
35 'required' => true,
36 'validate_callback' => function ($ids) {
37 foreach ($this->splitString($ids) as $id) {
38 if ( ! $this->validateInt($id)) {
39 return false;
40 }
41 }
42
43 return true;
44 },
45 ],
46 'deleteDonationsAndRecords' => [
47 'type' => 'boolean',
48 'required' => 'false',
49 'default' => 'false',
50 ],
51 ],
52 ]
53 );
54 }
55
56 /**
57 * @since 3.0.0 update validation to align with legacy view
58 * @since 2.25.2
59 *
60 * @inheritDoc
61 */
62 public function permissionsCheck()
63 {
64 $donor_edit_role = apply_filters('give_edit_donors_role', 'edit_give_payments');
65
66 if (!current_user_can($donor_edit_role)) {
67 return new WP_Error(
68 'rest_forbidden',
69 esc_html__('You don\'t have permission to edit Donors', 'give'),
70 ['status' => $this->authorizationStatusCode()]
71 );
72 }
73
74 return true;
75 }
76
77 /**
78 * @since 2.20.0
79 * @since 2.23.1 Cast `$ids` as integers.
80 *
81 * @param WP_REST_Request $request
82 *
83 * @return WP_REST_Response
84 */
85 public function handleRequest(WP_REST_Request $request)
86 {
87 $ids = array_map('intval', $this->splitString($request->get_param('ids')));
88 $delete_donation = $request->get_param('deleteDonationsAndRecords');
89 $errors = $successes = [];
90
91 foreach ($ids as $id) {
92 try {
93 /**
94 * Fires before deleting donor.
95 *
96 * @since 2.20.0
97 *
98 * @param int $donor_id The ID of the donor.
99 * @param bool $delete_donor Confirm Donor Deletion.
100 * @param bool $delete_donation Confirm Donor related donations deletion.
101 */
102 do_action('give_pre_delete_donor', $id, true, $delete_donation);
103 $donor = Donor::find($id);
104 if ($delete_donation) {
105 foreach ($donor->donations as $donation) {
106 $donation->delete();
107 }
108 } else {
109 give_update_payment_meta($id, '_give_payment_donor_id', 0);
110 }
111 $donor->delete();
112 $successes[] = $id;
113 } catch (Exception $e) {
114 $errors[] = $id;
115 }
116 }
117
118 return new WP_REST_Response([
119 'errors' => $errors,
120 'successes' => $successes,
121 ]);
122 }
123
124
125 /**
126 * Split string
127 *
128 * @since 2.20.0
129 *
130 * @param string $ids
131 *
132 * @return string[]
133 */
134 protected function splitString($ids)
135 {
136 if (strpos($ids, ',')) {
137 return array_map('trim', explode(',', $ids));
138 }
139
140 return [trim($ids)];
141 }
142 }
143