PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.12.0
GiveWP – Donation Plugin and Fundraising Platform v4.12.0
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 / Donors / Endpoints / DeleteDonor.php
give / src / Donors / Endpoints Last commit date
DeleteDonor.php 1 year ago Endpoint.php 8 months ago ListDonors.php 8 months ago ListDonorsStats.php 8 months ago SwitchDonorView.php 4 years ago
DeleteDonor.php
142 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 4.3.1 updated permissions check
58 * @since 3.0.0 update validation to align with legacy view
59 * @since 2.25.2
60 *
61 * @inheritDoc
62 */
63 public function permissionsCheck()
64 {
65 if (current_user_can('manage_options') || current_user_can('delete_give_payments')) {
66 return true;
67 }
68
69 return new WP_Error(
70 'rest_forbidden',
71 esc_html__('You don\'t have permission to delete Donors', 'give'),
72 ['status' => $this->authorizationStatusCode()]
73 );
74 }
75
76 /**
77 * @since 2.20.0
78 * @since 2.23.1 Cast `$ids` as integers.
79 *
80 * @param WP_REST_Request $request
81 *
82 * @return WP_REST_Response
83 */
84 public function handleRequest(WP_REST_Request $request)
85 {
86 $ids = array_map('intval', $this->splitString($request->get_param('ids')));
87 $delete_donation = $request->get_param('deleteDonationsAndRecords');
88 $errors = $successes = [];
89
90 foreach ($ids as $id) {
91 try {
92 /**
93 * Fires before deleting donor.
94 *
95 * @since 2.20.0
96 *
97 * @param int $donor_id The ID of the donor.
98 * @param bool $delete_donor Confirm Donor Deletion.
99 * @param bool $delete_donation Confirm Donor related donations deletion.
100 */
101 do_action('give_pre_delete_donor', $id, true, $delete_donation);
102 $donor = Donor::find($id);
103 if ($delete_donation) {
104 foreach ($donor->donations as $donation) {
105 $donation->delete();
106 }
107 } else {
108 give_update_payment_meta($id, '_give_payment_donor_id', 0);
109 }
110 $donor->delete();
111 $successes[] = $id;
112 } catch (Exception $e) {
113 $errors[] = $id;
114 }
115 }
116
117 return new WP_REST_Response([
118 'errors' => $errors,
119 'successes' => $successes,
120 ]);
121 }
122
123
124 /**
125 * Split string
126 *
127 * @since 2.20.0
128 *
129 * @param string $ids
130 *
131 * @return string[]
132 */
133 protected function splitString($ids)
134 {
135 if (strpos($ids, ',')) {
136 return array_map('trim', explode(',', $ids));
137 }
138
139 return [trim($ids)];
140 }
141 }
142