PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 4 years ago Endpoint.php 4 years ago ListDonors.php 4 years ago SwitchDonorView.php 4 years ago
DeleteDonor.php
120 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 * @param WP_REST_Request $request
57 *
58 * @since 2.20.0
59 *
60 * @return WP_REST_Response
61 */
62 public function handleRequest(WP_REST_Request $request)
63 {
64 $ids = $this->splitString($request->get_param('ids'));
65 $delete_donation = $request->get_param('deleteDonationsAndRecords');
66 $errors = $successes = [];
67
68 foreach ($ids as $id) {
69 try {
70 /**
71 * Fires before deleting donor.
72 *
73 * @param int $donor_id The ID of the donor.
74 * @param bool $delete_donor Confirm Donor Deletion.
75 * @param bool $delete_donation Confirm Donor related donations deletion.
76 *
77 * @since 2.20.0
78 */
79 do_action( 'give_pre_delete_donor', $id, true, $delete_donation );
80 $donor = Donor::find($id);
81 if ($delete_donation) {
82 foreach( $donor->donations as $donation ) {
83 $donation->delete();
84 }
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 * @param string $ids
107 * @since 2.20.0
108 *
109 * @return string[]
110 */
111 protected function splitString($ids)
112 {
113 if (strpos($ids, ',')) {
114 return array_map('trim', explode(',', $ids));
115 }
116
117 return [trim($ids)];
118 }
119 }
120