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