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