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

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

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