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

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

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