PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.2.0
GiveWP – Donation Plugin and Fundraising Platform v2.2.0
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 / includes / admin / donors / donor-functions.php
give / includes / admin / donors Last commit date
class-donor-table.php 7 years ago donor-actions.php 7 years ago donor-functions.php 7 years ago donors.php 7 years ago
donor-functions.php
216 lines
1 <?php
2 /**
3 * Donors
4 *
5 * @package Give
6 * @subpackage Admin/Donors
7 * @copyright Copyright (c) 2016, WordImpress
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Register a view for the single donor view.
19 *
20 * @param array $views An array of existing views.
21 *
22 * @since 1.0
23 *
24 * @return array The altered list of views.
25 */
26 function give_register_default_donor_views( $views ) {
27
28 $default_views = array(
29 'overview' => 'give_donor_view',
30 'delete' => 'give_donor_delete_view',
31 'notes' => 'give_donor_notes_view',
32 );
33
34 return array_merge( $views, $default_views );
35
36 }
37
38 add_filter( 'give_donor_views', 'give_register_default_donor_views', 1, 1 );
39
40 /**
41 * Register a tab for the single donor view.
42 *
43 * @param array $tabs An array of existing tabs.
44 *
45 * @since 1.0
46 *
47 * @return array The altered list of tabs
48 */
49 function give_register_default_donor_tabs( $tabs ) {
50
51 $default_tabs = array(
52 'overview' => array(
53 'dashicon' => 'dashicons-admin-users',
54 'title' => __( 'Donor Profile', 'give' ),
55 ),
56 'notes' => array(
57 'dashicon' => 'dashicons-admin-comments',
58 'title' => __( 'Donor Notes', 'give' ),
59 ),
60 );
61
62 return array_merge( $tabs, $default_tabs );
63 }
64
65 add_filter( 'give_donor_tabs', 'give_register_default_donor_tabs', 1, 1 );
66
67 /**
68 * Register the Delete icon as late as possible so it's at the bottom.
69 *
70 * @param array $tabs An array of existing tabs.
71 *
72 * @since 1.0
73 *
74 * @return array The altered list of tabs, with 'delete' at the bottom.
75 */
76 function give_register_delete_donor_tab( $tabs ) {
77
78 $tabs['delete'] = array(
79 'dashicon' => 'dashicons-trash',
80 'title' => __( 'Delete Donor', 'give' ),
81 );
82
83 return $tabs;
84 }
85
86 add_filter( 'give_donor_tabs', 'give_register_delete_donor_tab', PHP_INT_MAX, 1 );
87
88 /**
89 * Connect and Reconnect Donor with User profile.
90 *
91 * @todo $address is unnecessary param because we are store address to user.
92 *
93 * @param Give_Donor $donor Donor Object.
94 * @param array $donor_data Donor Post Variables.
95 * @param array $address Address Information.
96 *
97 * @since 1.8.14
98 *
99 * @return array
100 */
101 function give_connect_user_donor_profile( $donor, $donor_data, $address ) {
102
103 $donor_id = $donor->id;
104 $previous_user_id = $donor->user_id;
105
106 /**
107 * Fires before editing a donor.
108 *
109 * @param int $donor_id The ID of the donor.
110 * @param array $donor_data The donor data.
111 * @param array $address The donor's address.
112 *
113 * @since 1.0
114 */
115 do_action( 'give_pre_edit_donor', $donor_id, $donor_data, $address );
116
117 $output = array();
118
119 if ( $donor->update( $donor_data ) ) {
120
121 // Create and Update Donor First Name and Last Name in Meta Fields.
122 $donor->update_meta( '_give_donor_first_name', $donor_data['first_name'] );
123 $donor->update_meta( '_give_donor_last_name', $donor_data['last_name'] );
124 $donor->update_meta( '_give_donor_title_prefix', $donor_data['title'] );
125
126 // Fetch disconnected user id, if exists.
127 $disconnected_user_id = $donor->get_meta( '_give_disconnected_user_id', true );
128
129 // Flag User and Donor Disconnection.
130 delete_user_meta( $disconnected_user_id, '_give_is_donor_disconnected' );
131
132 // Check whether the disconnected user id and the reconnected user id are same or not.
133 // If both are same then delete user id store in donor meta.
134 if ( $donor_data['user_id'] === $disconnected_user_id ) {
135 delete_user_meta( $disconnected_user_id, '_give_disconnected_donor_id' );
136 $donor->delete_meta( '_give_disconnected_user_id' );
137 }
138
139 $output['success'] = true;
140 $donor_data = array_merge( $donor_data, $address );
141 $output['customer_info'] = $donor_data;
142
143 } else {
144
145 $output['success'] = false;
146
147 }
148
149 /**
150 * Fires after editing a donor.
151 *
152 * @param int $donor_id The ID of the donor.
153 * @param array $donor_data The donor data.
154 *
155 * @since 1.0
156 */
157 do_action( 'give_post_edit_donor', $donor_id, $donor_data );
158
159 return $output;
160 }
161
162 /**
163 * This function is used to delete donor and related donation without redirection.
164 *
165 * @param int|Give_Donor $donor Donor ID or List of Donor IDs.
166 * @param array $args List of arguments to handle donor and related donation deletion process.
167 *
168 * @type bool delete_donation Delete donor linked donations if set to true. Default is false.
169 *
170 * @since 2.2
171 *
172 * @return int
173 */
174 function give_delete_donor_and_related_donation( $donor, $args = array() ) {
175
176 // Default Arguments.
177 $default_args = array(
178 'delete_donation' => false,
179 );
180
181 $args = wp_parse_args( $args, $default_args );
182
183 // If $donor not an instance of Give_Donor then create one.
184 if ( ! $donor instanceof Give_Donor ) {
185 $donor = new Give_Donor( $donor );
186 }
187
188 if ( $donor->id > 0 ) {
189
190 // Delete Donor.
191 $donor_deleted = Give()->donors->delete( $donor->id );
192
193 // Fetch linked donations of a particular donor.
194 $donation_ids = explode( ',', $donor->payment_ids );
195
196 // Proceed to delete related donation, if user opted and donor is deleted successfully.
197 if ( $donor_deleted && $args['delete_donation'] ) {
198 foreach ( $donation_ids as $donation_id ) {
199 give_delete_donation( $donation_id );
200 }
201
202 return 2; // Donor and linked Donations deleted.
203
204 } else {
205 foreach ( $donation_ids as $donation_id ) {
206 give_update_payment_meta( $donation_id, '_give_payment_donor_id', 0 );
207 }
208 }
209
210 return 1; // Donor deleted but not linked donations.
211 }
212
213 return 0; // Incorrect donor id or donor not exists.
214
215 }
216