PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 1 year ago donor-actions.php 1 year ago donor-functions.php 1 year ago donors.php 7 months ago
donor-functions.php
207 lines
1 <?php
2 /**
3 * Donors
4 *
5 * @package Give
6 * @subpackage Admin/Donors
7 * @copyright Copyright (c) 2016, GiveWP
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 'legacy-overview' => 'give_donor_view',
30 'legacy-delete' => 'give_donor_delete_view',
31 'legacy-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 'legacy-overview' => array(
53 'title' => __( 'Donor Profile', 'give' ),
54 ),
55 'legacy-notes' => array(
56 'title' => __( 'Donor Notes', 'give' ),
57 ),
58 );
59
60 return array_merge( $tabs, $default_tabs );
61 }
62
63 add_filter( 'give_donor_tabs', 'give_register_default_donor_tabs', 1, 1 );
64
65 /**
66 * Register the Delete icon as late as possible so it's at the bottom.
67 *
68 * @param array $tabs An array of existing tabs.
69 *
70 * @since 1.0
71 *
72 * @return array The altered list of tabs, with 'delete' at the bottom.
73 */
74 function give_register_delete_donor_tab( $tabs ) {
75
76 $tabs['legacy-delete'] = array(
77 'title' => __( 'Delete Donor', 'give' ),
78 );
79
80 return $tabs;
81 }
82
83 add_filter( 'give_donor_tabs', 'give_register_delete_donor_tab', PHP_INT_MAX, 1 );
84
85 /**
86 * Connect and Reconnect Donor with User profile.
87 *
88 * @todo $address is unnecessary param because we are store address to user.
89 *
90 * @param Give_Donor $donor Donor Object.
91 * @param array $donor_data Donor Post Variables.
92 * @param array $address Address Information.
93 *
94 * @since 1.8.14
95 *
96 * @return array
97 */
98 function give_connect_user_donor_profile( $donor, $donor_data, $address ) {
99
100 $donor_id = $donor->id;
101
102 /**
103 * Fires before editing a donor.
104 *
105 * @param int $donor_id The ID of the donor.
106 * @param array $donor_data The donor data.
107 * @param array $address The donor's address.
108 *
109 * @since 1.0
110 */
111 do_action( 'give_pre_edit_donor', $donor_id, $donor_data, $address );
112
113 $output = array();
114
115 if ( $donor->update( $donor_data ) ) {
116
117 // Create and Update Donor First Name and Last Name in Meta Fields.
118 if ( ! empty( $donor_data['first_name'] ) ) {
119 $donor->update_meta( '_give_donor_first_name', $donor_data['first_name'] );
120 }
121
122 if ( isset( $donor_data['last_name'] ) ) {
123 $donor->update_meta( '_give_donor_last_name', $donor_data['last_name'] );
124 }
125
126 if ( isset( $donor_data['title'] ) ) {
127 $donor->update_meta( '_give_donor_title_prefix', $donor_data['title'] );
128 }
129
130 $output['success'] = true;
131 $donor_data = array_merge( $donor_data, $address );
132 $output['customer_info'] = $donor_data;
133
134 } else {
135
136 $output['success'] = false;
137
138 }
139
140 /**
141 * Fires after editing a donor.
142 *
143 * @param int $donor_id The ID of the donor.
144 * @param array $donor_data The donor data.
145 *
146 * @since 1.0
147 */
148 do_action( 'give_post_edit_donor', $donor_id, $donor_data );
149
150 return $output;
151 }
152
153 /**
154 * This function is used to delete donor and related donation without redirection.
155 *
156 * @param int|Give_Donor $donor Donor ID or List of Donor IDs.
157 * @param array $args List of arguments to handle donor and related donation deletion process.
158 *
159 * @type bool delete_donation Delete donor linked donations if set to true. Default is false.
160 *
161 * @since 2.2
162 *
163 * @return int
164 */
165 function give_delete_donor_and_related_donation( $donor, $args = array() ) {
166
167 // Default Arguments.
168 $default_args = array(
169 'delete_donation' => false,
170 );
171
172 $args = wp_parse_args( $args, $default_args );
173
174 // If $donor not an instance of Give_Donor then create one.
175 if ( ! $donor instanceof Give_Donor ) {
176 $donor = new Give_Donor( $donor );
177 }
178
179 if ( $donor->id > 0 ) {
180
181 // Delete Donor.
182 $donor_deleted = Give()->donors->delete( $donor->id );
183
184 // Fetch linked donations of a particular donor.
185 $donation_ids = explode( ',', $donor->payment_ids );
186
187 // Proceed to delete related donation, if user opted and donor is deleted successfully.
188 if ( $donor_deleted && $args['delete_donation'] ) {
189 foreach ( $donation_ids as $donation_id ) {
190 give_delete_donation( $donation_id );
191 }
192
193 return 2; // Donor and linked Donations deleted.
194
195 } else {
196 foreach ( $donation_ids as $donation_id ) {
197 give_update_payment_meta( $donation_id, '_give_payment_donor_id', 0 );
198 }
199 }
200
201 return 1; // Donor deleted but not linked donations.
202 }
203
204 return 0; // Incorrect donor id or donor not exists.
205
206 }
207