PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 260909
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v260909
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 releases
s2member / src / includes / classes / user-deletions.inc.php

user-deletions.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions 260909, at src/includes/classes/user-deletions.inc.php

233 lines 12.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * User deletion routines.
5 *
6 * Copyright: © 2009-2011
7 * {@link http://websharks-inc.com/ WebSharks, Inc.}
8 * (coded in the USA)
9 *
10 * Released under the terms of the GNU General Public License.
11 * You should have received a copy of the GNU General Public License,
12 * along with this software. In the main directory, see: /licensing/
13 * If not, see: {@link http://www.gnu.org/licenses/}.
14 *
15 * @package s2Member\User_Deletions
16 * @since 3.5
17 */
18 if(!defined('WPINC')) // MUST have WordPress.
19 exit ('Do not access this file directly.');
20
21 if(!class_exists('c_ws_plugin__s2member_user_deletions'))
22 {
23 /**
24 * User deletion routines.
25 *
26 * @package s2Member\User_Deletions
27 * @since 3.5
28 */
29 class c_ws_plugin__s2member_user_deletions
30 {
31 /**
32 * Handles Multisite User removal deletions.
33 *
34 * @package s2Member\User_Deletions
35 * @since 3.5
36 *
37 * @attaches-to ``add_action('remove_user_from_blog');``
38 *
39 * @param int|string $user_id Numeric WordPress User ID.
40 * @param int|string $blog_id Numeric WordPress Blog ID.
41 * @param bool $s2says Optional. Defaults to false. If true, it's definitely OK to process this deletion?
42 * The ``$s2says`` flag can be used when/if the routine is called directly for whatever reason.
43 */
44 public static function handle_ms_user_deletions($user_id = 0, $blog_id = 0, $s2says = FALSE)
45 {
46 static $processed = array(); // No duplicate processing.
47 global $pagenow; // Need this to detect the current admin page.
48
49 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
50 do_action('ws_plugin__s2member_before_handle_ms_user_deletions', get_defined_vars());
51 unset($__refs, $__v);
52
53 if($user_id && is_multisite() && empty($processed[$user_id]) && ($s2says || (is_blog_admin() && $pagenow === 'users.php')))
54 {
55 $processed[$user_id] = TRUE;
56
57 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
58 do_action('ws_plugin__s2member_during_handle_ms_user_deletions_before', get_defined_vars());
59 unset($__refs, $__v);
60
61 c_ws_plugin__s2member_user_deletions::handle_user_deletions($user_id);
62
63 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
64 do_action('ws_plugin__s2member_during_handle_ms_user_deletions_after', get_defined_vars());
65 unset($__refs, $__v);
66 }
67 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
68 do_action('ws_plugin__s2member_after_handle_ms_user_deletions', get_defined_vars());
69 unset($__refs, $__v);
70 }
71
72 /**
73 * Handles User removals/deletions.
74 *
75 * @package s2Member\User_Deletions
76 * @since 3.5
77 *
78 * @attaches-to ``add_action('delete_user');``
79 * @attaches-to ``add_action('wpmu_delete_user');``
80 *
81 * @param int|string $user_id Numeric WordPress User ID.
82 */
83 public static function handle_user_deletions($user_id = 0)
84 {
85 static $processed = array(); // No duplicate processing.
86
87 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
88 do_action('ws_plugin__s2member_before_handle_user_deletions', get_defined_vars());
89 unset($__refs, $__v);
90
91 if($user_id && empty($processed[$user_id]) && ($processed[$user_id] = TRUE))
92 {
93 $eot_del_type = // Configure EOT/DEL type (possibly through this global variable).
94 (!empty($GLOBALS['ws_plugin__s2member_eot_del_type'])) ? // Is the global available for use?
95 $GLOBALS['ws_plugin__s2member_eot_del_type'] : 'user-removal-deletion'; // Else use default.
96
97 $custom = get_user_option('s2member_custom', $user_id);
98 $subscr_id = get_user_option('s2member_subscr_id', $user_id);
99 $subscr_baid = get_user_option('s2member_subscr_baid', $user_id);
100 $subscr_cid = get_user_option('s2member_subscr_cid', $user_id);
101 $fields = get_user_option('s2member_custom_fields', $user_id);
102 $user_reg_ip = get_user_option('s2member_registration_ip', $user_id);
103
104 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
105 do_action('ws_plugin__s2member_during_handle_user_before_deletions', get_defined_vars());
106 do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'removal-deletion');
107 unset($__refs, $__v);
108
109 delete_user_option($user_id, 's2member_custom');
110 delete_user_option($user_id, 's2member_subscr_gateway');
111 delete_user_option($user_id, 's2member_subscr_id');
112 delete_user_option($user_id, 's2member_subscr_baid');
113 delete_user_option($user_id, 's2member_subscr_cid');
114
115 delete_user_option($user_id, 's2member_custom_fields');
116 delete_user_option($user_id, 's2member_registration_ip');
117
118 delete_user_option($user_id, 's2member_ipn_signup_vars');
119 delete_user_option($user_id, 's2member_paid_registration_times');
120 delete_user_option($user_id, 's2member_access_cap_times');
121 delete_user_option($user_id, 's2member_coupon_codes');
122 delete_user_option($user_id, 's2member_coupon_uses');
123 delete_user_option($user_id, 's2member_sp_references');
124
125 delete_user_option($user_id, 's2member_last_status_scan');
126 delete_user_option($user_id, 's2member_last_reminder_scan');
127 delete_user_option($user_id, 's2member_first_payment_txn_id');
128 delete_user_option($user_id, 's2member_last_payment_time');
129 delete_user_option($user_id, 's2member_auto_eot_time');
130 delete_user_option($user_id, 's2member_auto_eot_details');
131 delete_user_option($user_id, 's2member_reminders_enable');
132 delete_user_option($user_id, 's2member_eot_reminder_state');
133
134 delete_user_option($user_id, 's2member_file_download_access_arc');
135 delete_user_option($user_id, 's2member_file_download_access_log');
136
137 delete_user_option($user_id, 's2member_last_auto_eot_time');
138 delete_user_option($user_id, 's2member_last_auto_eot_details');
139 delete_user_option($user_id, 's2member_last_auto_eot_processed_time');
140 delete_user_option($user_id, 's2member_eot_pending_deletion');
141 delete_user_option($user_id, 's2member_login_counter');
142 delete_user_option($user_id, 's2member_notes');
143
144 if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls'])
145 {
146 foreach(preg_split("/[\r\n\t]+/", $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls']) as $url) // Handle EOT Notifications on user deletion.
147
148 if(($url = c_ws_plugin__s2member_utils_strings::fill_cvs($url, $custom, true)) && ($url = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($eot_del_type)), $url)) && ($url = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_id)), $url)))
149 if(($url = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_baid)), $url)) && ($url = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_cid)), $url)))
150 if(($url = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->first_name)), $url)) && ($url = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->last_name)), $url)))
151 if(($url = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(trim($user->first_name.' '.$user->last_name))), $url)))
152 if(($url = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_email)), $url)))
153 if(($url = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_login)), $url)))
154 if(($url = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_reg_ip)), $url)))
155 if(($url = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_id)), $url)))
156 {
157 if(is_array($fields) && !empty($fields))
158 foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
159 if(!($url = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(maybe_serialize($val))), $url)))
160 break;
161
162 if(($url = trim(preg_replace('/%%(.+?)%%/i', '', $url))))
163 c_ws_plugin__s2member_utils_urls::remote($url);
164 }
165 }
166 if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients'])
167 {
168 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status();
169 c_ws_plugin__s2member_email_configs::email_config_release();
170
171 $msg = $sbj = '(s2Member / API Notification Email) - EOT/Deletion';
172 $msg .= "\n\n"; // Spacing in the message body.
173
174 $msg .= 'eot_del_type: %%eot_del_type%%'."\n";
175 $msg .= 'subscr_id: %%subscr_id%%'."\n";
176 $msg .= 'subscr_baid: %%subscr_baid%%'."\n";
177 $msg .= 'subscr_cid: %%subscr_cid%%'."\n";
178 $msg .= 'user_first_name: %%user_first_name%%'."\n";
179 $msg .= 'user_last_name: %%user_last_name%%'."\n";
180 $msg .= 'user_full_name: %%user_full_name%%'."\n";
181 $msg .= 'user_email: %%user_email%%'."\n";
182 $msg .= 'user_login: %%user_login%%'."\n";
183 $msg .= 'user_ip: %%user_ip%%'."\n";
184 $msg .= 'user_id: %%user_id%%'."\n";
185
186 if(is_array($fields) && !empty($fields))
187 foreach($fields as $var => $val)
188 $msg .= $var.': %%'.$var.'%%'."\n";
189
190 $msg .= 'cv0: %%cv0%%'."\n";
191 $msg .= 'cv1: %%cv1%%'."\n";
192 $msg .= 'cv2: %%cv2%%'."\n";
193 $msg .= 'cv3: %%cv3%%'."\n";
194 $msg .= 'cv4: %%cv4%%'."\n";
195 $msg .= 'cv5: %%cv5%%'."\n";
196 $msg .= 'cv6: %%cv6%%'."\n";
197 $msg .= 'cv7: %%cv7%%'."\n";
198 $msg .= 'cv8: %%cv8%%'."\n";
199 $msg .= 'cv9: %%cv9%%';
200
201 if(($msg = c_ws_plugin__s2member_utils_strings::fill_cvs($msg, $custom)) && ($msg = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($eot_del_type), $msg)) && ($msg = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_id), $msg)))
202 if(($msg = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_baid), $msg)) && ($msg = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_cid), $msg)))
203 if(($msg = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->first_name), $msg)) && ($msg = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->last_name), $msg)))
204 if(($msg = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name.' '.$user->last_name)), $msg)))
205 if(($msg = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $msg)))
206 if(($msg = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $msg)))
207 if(($msg = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $msg)))
208 if(($msg = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $msg)))
209 {
210 if(is_array($fields) && !empty($fields))
211 foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
212 if(!($msg = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $msg)))
213 break;
214
215 if($sbj && ($msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg)))) // Still have a ``$sbj`` and a ``$msg``?
216
217 foreach(c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients']) as $recipient)
218 wp_mail($recipient, apply_filters('ws_plugin__s2member_eot_del_notification_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_eot_del_notification_email_msg', $msg, get_defined_vars()), 'Content-Type: text/plain; charset=UTF-8');
219 }
220 if($email_configs_were_on) // Back on?
221 c_ws_plugin__s2member_email_configs::email_config();
222 }
223 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
224 do_action('ws_plugin__s2member_during_handle_user_deletions', get_defined_vars());
225 unset($__refs, $__v);
226 }
227 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
228 do_action('ws_plugin__s2member_after_handle_user_deletions', get_defined_vars());
229 unset($__refs, $__v);
230 }
231 }
232 }
233