PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 260805
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v260805
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 260805, at src/includes/classes/user-deletions.inc.php

228 lines 12.1 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_reminders_enable');
131
132 delete_user_option($user_id, 's2member_file_download_access_arc');
133 delete_user_option($user_id, 's2member_file_download_access_log');
134
135 delete_user_option($user_id, 's2member_last_auto_eot_time');
136 delete_user_option($user_id, 's2member_login_counter');
137 delete_user_option($user_id, 's2member_notes');
138
139 if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls'])
140 {
141 foreach(preg_split("/[\r\n\t]+/", $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls']) as $url) // Handle EOT Notifications on user deletion.
142
143 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)))
144 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)))
145 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)))
146 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)))
147 if(($url = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_email)), $url)))
148 if(($url = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_login)), $url)))
149 if(($url = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_reg_ip)), $url)))
150 if(($url = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_id)), $url)))
151 {
152 if(is_array($fields) && !empty($fields))
153 foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
154 if(!($url = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(maybe_serialize($val))), $url)))
155 break;
156
157 if(($url = trim(preg_replace('/%%(.+?)%%/i', '', $url))))
158 c_ws_plugin__s2member_utils_urls::remote($url);
159 }
160 }
161 if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients'])
162 {
163 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status();
164 c_ws_plugin__s2member_email_configs::email_config_release();
165
166 $msg = $sbj = '(s2Member / API Notification Email) - EOT/Deletion';
167 $msg .= "\n\n"; // Spacing in the message body.
168
169 $msg .= 'eot_del_type: %%eot_del_type%%'."\n";
170 $msg .= 'subscr_id: %%subscr_id%%'."\n";
171 $msg .= 'subscr_baid: %%subscr_baid%%'."\n";
172 $msg .= 'subscr_cid: %%subscr_cid%%'."\n";
173 $msg .= 'user_first_name: %%user_first_name%%'."\n";
174 $msg .= 'user_last_name: %%user_last_name%%'."\n";
175 $msg .= 'user_full_name: %%user_full_name%%'."\n";
176 $msg .= 'user_email: %%user_email%%'."\n";
177 $msg .= 'user_login: %%user_login%%'."\n";
178 $msg .= 'user_ip: %%user_ip%%'."\n";
179 $msg .= 'user_id: %%user_id%%'."\n";
180
181 if(is_array($fields) && !empty($fields))
182 foreach($fields as $var => $val)
183 $msg .= $var.': %%'.$var.'%%'."\n";
184
185 $msg .= 'cv0: %%cv0%%'."\n";
186 $msg .= 'cv1: %%cv1%%'."\n";
187 $msg .= 'cv2: %%cv2%%'."\n";
188 $msg .= 'cv3: %%cv3%%'."\n";
189 $msg .= 'cv4: %%cv4%%'."\n";
190 $msg .= 'cv5: %%cv5%%'."\n";
191 $msg .= 'cv6: %%cv6%%'."\n";
192 $msg .= 'cv7: %%cv7%%'."\n";
193 $msg .= 'cv8: %%cv8%%'."\n";
194 $msg .= 'cv9: %%cv9%%';
195
196 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)))
197 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)))
198 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)))
199 if(($msg = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name.' '.$user->last_name)), $msg)))
200 if(($msg = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $msg)))
201 if(($msg = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $msg)))
202 if(($msg = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $msg)))
203 if(($msg = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $msg)))
204 {
205 if(is_array($fields) && !empty($fields))
206 foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
207 if(!($msg = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $msg)))
208 break;
209
210 if($sbj && ($msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg)))) // Still have a ``$sbj`` and a ``$msg``?
211
212 foreach(c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients']) as $recipient)
213 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');
214 }
215 if($email_configs_were_on) // Back on?
216 c_ws_plugin__s2member_email_configs::email_config();
217 }
218 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
219 do_action('ws_plugin__s2member_during_handle_user_deletions', get_defined_vars());
220 unset($__refs, $__v);
221 }
222 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
223 do_action('ws_plugin__s2member_after_handle_user_deletions', get_defined_vars());
224 unset($__refs, $__v);
225 }
226 }
227 }
228