PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / trunk
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions vtrunk
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 / src / includes / classes / email-configs.inc.php

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

484 lines 33.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * Email configurations for s2Member.
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\Email_Configs
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_email_configs'))
22 {
23 /**
24 * Email configurations for s2Member.
25 *
26 * @package s2Member\Email_Configs
27 * @since 3.5
28 */
29 class c_ws_plugin__s2member_email_configs
30 {
31 /**
32 * Modifies email From: `"Name" <address>`.
33 *
34 * These Filters are only needed during registration.
35 *
36 * @package s2Member\Email_Configs
37 * @since 3.5
38 */
39 public static function email_config ()
40 {
41 do_action('ws_plugin__s2member_before_email_config', get_defined_vars ());
42
43 c_ws_plugin__s2member_email_configs::email_config_release ();
44
45 add_filter ('wp_mail_from', 'c_ws_plugin__s2member_email_configs::_email_config_email');
46 add_filter ('wp_mail_from_name', 'c_ws_plugin__s2member_email_configs::_email_config_name');
47
48 do_action('ws_plugin__s2member_after_email_config', get_defined_vars ());
49 }
50
51 /**
52 * A sort of callback function that applies the email Filter.
53 *
54 * @package s2Member\Email_Configs
55 * @since 3.5
56 *
57 * @attaches-to ``add_filter('wp_mail_from');``
58 *
59 * @param string $email Expects the email address to be passed in by the Filter.
60 * @return string s2Member-configured email address.
61 */
62 public static function _email_config_email ($email = '')
63 {
64 do_action('_ws_plugin__s2member_before_email_config_email', get_defined_vars ());
65
66 return apply_filters('_ws_plugin__s2member_email_config_email', $GLOBALS['WS_PLUGIN__']['s2member']['o']['reg_email_from_email'], get_defined_vars ());
67 }
68
69 /**
70 * A sort of callback function that applies the name Filter.
71 *
72 * @package s2Member\Email_Configs
73 * @since 3.5
74 *
75 * @attaches-to ``add_filter('wp_mail_from_name');``
76 *
77 * @param string $name Expects the name to be passed in by the Filter.
78 * @return string s2Member-configured name.
79 */
80 public static function _email_config_name ($name = '')
81 {
82 do_action('_ws_plugin__s2member_before_email_config_name', get_defined_vars ());
83
84 return apply_filters('_ws_plugin__s2member_email_config_name', $GLOBALS['WS_PLUGIN__']['s2member']['o']['reg_email_from_name'], get_defined_vars ());
85 }
86
87 /**
88 * Checks the status of Filters being applied to the email From: "Name" <address>.
89 *
90 * @package s2Member\Email_Configs
91 * @since 3.5
92 *
93 * @param bool $any Optional. Defaults to false. If true, return true if ANY Filters are being applied, not just those applied by s2Member.
94 * @return bool True if Filters are being applied, else false.
95 */
96 public static function email_config_status ($any = FALSE)
97 {
98 do_action('ws_plugin__s2member_before_email_config_status', get_defined_vars ());
99
100 if (has_filter ('wp_mail_from', 'c_ws_plugin__s2member_email_configs::_email_config_email') || has_filter ('wp_mail_from_name', 'c_ws_plugin__s2member_email_configs::_email_config_name'))
101 return apply_filters('ws_plugin__s2member_email_config_status', true, get_defined_vars ());
102
103 else if ($any && (has_filter ('wp_mail_from') || has_filter ('wp_mail_from_name')))
104 return apply_filters('ws_plugin__s2member_email_config_status', true, get_defined_vars ());
105
106 return apply_filters('ws_plugin__s2member_email_config_status', false, get_defined_vars ());
107 }
108
109 /**
110 * Releases Filters that modify the email From: "Name" <address>.
111 *
112 * @package s2Member\Email_Configs
113 * @since 3.5
114 *
115 * @param bool $all Optional. Defaults to false. If true, remove ALL Filters, not just those applied by s2Member.
116 */
117 public static function email_config_release ($all = FALSE)
118 {
119 do_action('ws_plugin__s2member_before_email_config_release', get_defined_vars ());
120
121 remove_filter ('wp_mail_from', 'c_ws_plugin__s2member_email_configs::_email_config_email');
122 remove_filter ('wp_mail_from_name', 'c_ws_plugin__s2member_email_configs::_email_config_name');
123
124 if ($all) // If ``$all`` is true, remove ALL attached WordPress Filters.
125 remove_all_filters ('wp_mail_from') . remove_all_filters ('wp_mail_from_name');
126
127 do_action('ws_plugin__s2member_after_email_config_release', get_defined_vars ());
128 }
129
130 /**
131 * Converts primitive Role names in emails sent by WordPress.
132 *
133 * Only necessary with this particular email: `wpmu_signup_user_notification_email`.
134 *
135 * @package s2Member\Email_Configs
136 * @since 3.5
137 *
138 * @attaches-to ``add_filter('wpmu_signup_user_notification_email');``
139 *
140 * @param string $message Expects the message string to be passed in by the Filter.
141 * @return string Message after having been Filtered by s2Member.
142 */
143 public static function ms_nice_email_roles ($message = '')
144 {
145 foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
146 do_action('ws_plugin__s2member_before_ms_nice_email_roles', get_defined_vars ());
147 unset($__refs, $__v); // Housekeeping.
148
149 $message = preg_replace ('/ as a (subscriber|s2member_level[0-9]+)/i', ' ' . _x ('as a Member', 's2member-front', 's2member'), $message);
150
151 return apply_filters('ws_plugin__s2member_ms_nice_email_roles', $message, get_defined_vars ());
152 }
153
154 /**
155 * Filters email addresses passed to ``wp_mail()``.
156 *
157 * @package s2Member\Email_Configs
158 * @since 3.5
159 *
160 * @attaches-to ``add_filter('wp_mail');``
161 * @uses {@link s2Member\Utilities\c_ws_plugin__s2member_utils_strings::parse_emails()}
162 *
163 * @param array $array Expects an array passed through by the Filter.
164 * @return array Returns the array passed through by the Filter.
165 */
166 public static function email_filter ($array = array())
167 {
168 if (isset ($array['to']) && !empty($array['to'])) // Filter list of recipients?
169 // Reduces `"Name" <email>`, to just an email address *(for best cross-platform compatibility across various MTAs)*.
170 // Also works around bug in PHP versions prior to fix in 5.2.11. See bug report: <https://bugs.php.net/bug.php?id=28038>.
171 // Also supplements WordPress. WordPress currently does NOT support semicolon `;` delimitation, s2Member does.
172 $array['to'] = implode (',', c_ws_plugin__s2member_utils_strings::parse_emails ($array['to']));
173
174 return apply_filters('ws_plugin__s2member_after_email_filter', $array, get_defined_vars ());
175 }
176
177 /**
178 * Resets a User/Member password and resends the New User Notification email message (to the User/Member only).
179 *
180 * @package s2Member\Email_Configs
181 * @since 110707
182 *
183 * @param string|int $user_id A numeric WordPress User ID.
184 * @param string $user_pass Optional. A plain text version of the User's password.
185 * If omitted, a new password will be generated automatically.
186 * @param array $notify An array of directives. Must be non-empty, with at least one of these values `user,admin`.
187 * This defaults to a value of `array('user')`. We notify the User/Member only (and NOT the administrator).
188 * @param string $user_email Optional. This defaults to the user's currently configured email address.
189 * @return bool True if all required parameters are supplied, else false.
190 */
191 public static function reset_pass_resend_new_user_notification ($user_id = 0, $user_pass = '', $notify = array('user'), $user_email = '')
192 {
193 foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
194 do_action('ws_plugin__s2member_before_reset_pass_resend_new_user_notification', get_defined_vars ());
195 unset($__refs, $__v); // Housekeeping.
196
197 $user_id = (int)$user_id;
198 $user_pass = (string)$user_pass;
199 $notify = (array)$notify;
200 $user_email = (string)$user_email;
201
202 if ($user_id && ($user = new WP_User ($user_id)) && !empty($user->ID) && ($user_id = $user->ID) && $notify)
203 {
204 remove_filter('random_password', 'c_ws_plugin__s2member_registrations::generate_password');
205 $user_pass = $user_pass ? $user_pass : wp_generate_password(); // ↑ Make sure it's w/o filter.
206 wp_set_password($user_pass, $user_id);
207
208 $return = c_ws_plugin__s2member_email_configs::new_user_notification($user_id, $user_pass, $notify, $user_email);
209 }
210 return apply_filters('ws_plugin__s2member_reset_pass_resend_new_user_notification', !empty($return) ? true : false, get_defined_vars ());
211 }
212
213 /**
214 * Handles new User/Member notifications.
215 *
216 * @package s2Member\Email_Configs
217 * @since 110707
218 *
219 * @param string|int $user_id A numeric WordPress User ID.
220 * @param string $user_pass Optional; plain text pass. No longer suggested, by here for back compat.
221 * @param array $notify An array of directives. Must be non-empty, with at least one of these values `user,admin`.
222 * @param string $user_email Optional. This defaults to the user's currently configured email address.
223 * @return bool True if all required parameters are supplied, else false.
224 */
225 public static function new_user_notification ($user_id = 0, $user_pass = '', $notify = array('user', 'admin'), $user_email = '')
226 {
227 foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
228 do_action('ws_plugin__s2member_before_new_user_notification', get_defined_vars ());
229 unset($__refs, $__v); // Housekeeping.
230
231 $user_id = (int)$user_id;
232 $user_pass = (string)$user_pass;
233 $notify = (array)$notify;
234 $user_email = (string)$user_email;
235
236 if(!$user_pass && !empty($GLOBALS['ws_plugin__s2member_plain_text_pass']))
237 $user_pass = (string)$GLOBALS['ws_plugin__s2member_plain_text_pass'];
238
239 if ($user_id && ($user = new WP_User($user_id)) && !empty($user->ID) && ($user_id = $user->ID) && $notify)
240 {
241 $is_gte_wp43 = version_compare(get_bloginfo('version'), '4.3', '>=');
242
243 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
244 c_ws_plugin__s2member_email_configs::email_config_release ();
245
246 if (in_array('user', $notify, true)
247
248 // Exclude custom password generated via `wp-login.php` or BP.
249 && empty($GLOBALS['ws_plugin__s2member_custom_wp_login_bp_password'])
250
251 && ( // One of these conditions must be true.
252 ($user_pass && stripos($GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_message'], '%%user_pass%%') !== false)
253 || ($is_gte_wp43 && stripos($GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_message'], '%%wp_set_pass_url%%') !== false)
254 || ($is_gte_wp43 && stripos(($GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_message'] = sprintf(_x("Your Username/Password for:\n%s\n\nUsername: %%%%user_login%%%%\nTo set your password, visit: %%%%wp_set_pass_url%%%%\n\n%%%%wp_login_url%%%%", 's2member-front', 's2member'), get_bloginfo('name'))), '%%wp_set_pass_url%%') !== false)
255 )
256 ) {
257 if($is_gte_wp43 && stripos($GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_message'], '%%wp_set_pass_url%%') !== false)
258 {
259 remove_filter('random_password', 'c_ws_plugin__s2member_registrations::generate_password');
260 $user_activation_key = wp_generate_password(20, false); // ↑ Make sure it's w/o filter.
261 do_action('retrieve_password_key', $user->user_login, $user_activation_key);
262
263 if(!class_exists('PasswordHash'))
264 require_once ABSPATH.WPINC.'/class-phpass.php';
265 $wp_hasher = new PasswordHash(8, true);
266
267 $user_activation_key_hash = time().':'.$wp_hasher->HashPassword($user_activation_key);
268 $GLOBALS['wpdb']->update($GLOBALS['wpdb']->users, array('user_activation_key' => $user_activation_key_hash), array('user_login' => $user->user_login));
269
270 $wp_set_pass_url_args = array(
271 'action' => 'rp',
272 'key' => $user_activation_key,
273 'login' => $user->user_login,
274 );
275 $wp_set_pass_url = add_query_arg(urlencode_deep($wp_set_pass_url_args), wp_login_url());
276 }
277 else $wp_set_pass_url = wp_lostpassword_url(); // Default behavior; and older versions of WordPress.
278
279 $fields = get_user_option ('s2member_custom_fields', $user_id);
280 $custom = get_user_option ('s2member_custom', $user_id);
281
282 $role = c_ws_plugin__s2member_user_access::user_access_role($user);
283 $label = c_ws_plugin__s2member_user_access::user_access_label($user);
284 $level = c_ws_plugin__s2member_user_access::user_access_level($user);
285 $ccaps = implode(',', c_ws_plugin__s2member_user_access::user_access_ccaps($user));
286
287 $user->user_email = ($user_email) ? $user_email : $user->user_email;
288 $user_full_name = trim ($user->first_name . ' ' . $user->last_name);
289 $user_ip = c_ws_plugin__s2member_utils_ip::current();
290
291 //251228 Sanitize values before replacements.
292 foreach (array('user_ip', 'user_pass', 'wp_set_pass_url', 'fields', 'custom', 'user_full_name', 'ccaps') as $_var) {
293 if (isset($$_var)) {
294 $$_var = c_ws_plugin__s2member_utils_strings::strip_php_tags_deep($$_var);
295 }
296 }
297 foreach (array('first_name','last_name','user_email','user_login') as $_var) {
298 if (isset($user->$_var)) {
299 $user->$_var = c_ws_plugin__s2member_utils_strings::strip_php_tags_deep($user->$_var);
300 }
301 }
302
303 if (($sbj = $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_subject']))
304 if (($sbj = c_ws_plugin__s2member_utils_strings::fill_cvs($sbj, $custom)))
305 if (($sbj = preg_replace ('/%%wp_set_pass_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($wp_set_pass_url), $sbj)))
306 if (($sbj = preg_replace ('/%%wp_login_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (wp_login_url ()), $sbj)))
307 if (($sbj = preg_replace ('/%%role%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($role), $sbj)))
308 if (($sbj = preg_replace ('/%%label%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($label), $sbj)))
309 if (($sbj = preg_replace ('/%%level%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($level), $sbj)))
310 if (($sbj = preg_replace ('/%%ccaps%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($ccaps), $sbj)))
311 if (($sbj = preg_replace ('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name), $sbj)))
312 if (($sbj = preg_replace ('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name), $sbj)))
313 if (($sbj = preg_replace ('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_full_name), $sbj)))
314 if (($sbj = preg_replace ('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $sbj)))
315 if (($sbj = preg_replace ('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $sbj)))
316 if (($sbj = preg_replace ('/%%user_pass%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_pass), $sbj)))
317 if (($sbj = preg_replace ('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_ip), $sbj)))
318 if (($sbj = preg_replace ('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $sbj)))
319 {
320 if (is_array($fields) && !empty($fields))
321 foreach ($fields as $var => $val) // Custom Registration/Profile Fields.
322 if (!($sbj = preg_replace ('/%%' . preg_quote ($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $sbj)))
323 break; // Empty; we can stop here.
324
325 if (($msg = $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_email_message']))
326 if (($msg = c_ws_plugin__s2member_utils_strings::fill_cvs($msg, $custom)))
327 if (($msg = preg_replace ('/%%wp_set_pass_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($wp_set_pass_url), $msg)))
328 if (($msg = preg_replace ('/%%wp_login_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (wp_login_url ()), $msg)))
329 if (($msg = preg_replace ('/%%role%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($role), $msg)))
330 if (($msg = preg_replace ('/%%label%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($label), $msg)))
331 if (($msg = preg_replace ('/%%level%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($level), $msg)))
332 if (($msg = preg_replace ('/%%ccaps%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($ccaps), $msg)))
333 if (($msg = preg_replace ('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name), $msg)))
334 if (($msg = preg_replace ('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name), $msg)))
335 if (($msg = preg_replace ('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_full_name), $msg)))
336 if (($msg = preg_replace ('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $msg)))
337 if (($msg = preg_replace ('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $msg)))
338 if (($msg = preg_replace ('/%%user_pass%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_pass), $msg)))
339 if (($msg = preg_replace ('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_ip), $msg)))
340 if (($msg = preg_replace ('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $msg)))
341 {
342 if (is_array($fields) && !empty($fields))
343 foreach ($fields as $var => $val) // Custom Registration/Profile Fields.
344 if (!($msg = preg_replace ('/%%' . preg_quote ($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $msg)))
345 break; // Empty; we can stop here.
346
347 if (($sbj = trim (preg_replace ('/%%(.+?)%%/i', '', $sbj))) && ($msg = trim (preg_replace ('/%%(.+?)%%/i', '', $msg))))
348 {
349 if (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ())
350 {
351 $sbj = c_ws_plugin__s2member_utilities::evl($sbj, get_defined_vars());
352 $msg = c_ws_plugin__s2member_utilities::evl($msg, get_defined_vars());
353 }
354 //250617 HTML email support.
355 if (empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['html_emails_enabled'])) {
356 c_ws_plugin__s2member_email_configs::email_config () . wp_mail ($user->user_email, apply_filters('ws_plugin__s2member_welcome_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_welcome_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\n".'Content-Type: text/plain; charset=UTF-8') . c_ws_plugin__s2member_email_configs::email_config_release ();;
357 } else {
358 c_ws_plugin__s2member_utilities::mail($user->user_email, apply_filters('ws_plugin__s2member_welcome_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_welcome_email_msg', $msg, get_defined_vars()));
359 }
360 }
361 }
362 }
363 }
364 if (in_array('admin', $notify, true) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_admin_email_recipients'])
365 {
366 $fields = get_user_option ('s2member_custom_fields', $user_id);
367 $custom = get_user_option ('s2member_custom', $user_id);
368
369 $role = c_ws_plugin__s2member_user_access::user_access_role($user);
370 $label = c_ws_plugin__s2member_user_access::user_access_label($user);
371 $level = c_ws_plugin__s2member_user_access::user_access_level($user);
372 $ccaps = implode(',', c_ws_plugin__s2member_user_access::user_access_ccaps($user));
373
374 $user->user_email = ($user_email) ? $user_email : $user->user_email;
375 $user_full_name = trim ($user->first_name . ' ' . $user->last_name);
376 $user_ip = c_ws_plugin__s2member_utils_ip::current();
377
378 //251228 Sanitize values before replacements.
379 foreach (array('user_ip', 'user_pass', 'wp_set_pass_url', 'fields', 'custom', 'user_full_name', 'ccaps') as $_var) {
380 if (isset($$_var)) {
381 $$_var = c_ws_plugin__s2member_utils_strings::strip_php_tags_deep($$_var);
382 }
383 }
384 foreach (array('first_name','last_name','user_email','user_login') as $_var) {
385 if (isset($user->$_var)) {
386 $user->$_var = c_ws_plugin__s2member_utils_strings::strip_php_tags_deep($user->$_var);
387 }
388 }
389
390 if (($rec = $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_admin_email_recipients']))
391 if (($rec = c_ws_plugin__s2member_utils_strings::fill_cvs($rec, $custom)))
392 if (($rec = preg_replace ('/%%wp_login_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (wp_login_url ()), $rec)))
393 if (($rec = preg_replace ('/%%role%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($role), $rec)))
394 if (($rec = preg_replace ('/%%label%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($label), $rec)))
395 if (($rec = preg_replace ('/%%level%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($level), $rec)))
396 if (($rec = preg_replace ('/%%ccaps%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($ccaps), $rec)))
397 if (($rec = preg_replace ('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name)), $rec)))
398 if (($rec = preg_replace ('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name)), $rec)))
399 if (($rec = preg_replace ('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_refs ($user_full_name)), $rec)))
400 if (($rec = preg_replace ('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $rec)))
401 if (($rec = preg_replace ('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $rec)))
402 if (($rec = preg_replace ('/%%user_pass%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_pass), $rec)))
403 if (($rec = preg_replace ('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_ip), $rec)))
404 if (($rec = preg_replace ('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $rec)))
405 {
406 if (is_array($fields) && !empty($fields))
407 foreach ($fields as $var => $val) // Custom Registration/Profile Fields.
408 if (!($rec = preg_replace ('/%%' . preg_quote ($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $rec)))
409 break; // Empty; we can stop here.
410
411 if (($sbj = $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_admin_email_subject']))
412 if (($sbj = c_ws_plugin__s2member_utils_strings::fill_cvs($sbj, $custom)))
413 if (($sbj = preg_replace ('/%%wp_login_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (wp_login_url ()), $sbj)))
414 if (($sbj = preg_replace ('/%%role%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($role), $sbj)))
415 if (($sbj = preg_replace ('/%%label%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($label), $sbj)))
416 if (($sbj = preg_replace ('/%%level%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($level), $sbj)))
417 if (($sbj = preg_replace ('/%%ccaps%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($ccaps), $sbj)))
418 if (($sbj = preg_replace ('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name), $sbj)))
419 if (($sbj = preg_replace ('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name), $sbj)))
420 if (($sbj = preg_replace ('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_full_name), $sbj)))
421 if (($sbj = preg_replace ('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $sbj)))
422 if (($sbj = preg_replace ('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $sbj)))
423 if (($sbj = preg_replace ('/%%user_pass%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_pass), $sbj)))
424 if (($sbj = preg_replace ('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_ip), $sbj)))
425 if (($sbj = preg_replace ('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $sbj)))
426 {
427 if (is_array($fields) && !empty($fields))
428 foreach ($fields as $var => $val) // Custom Registration/Profile Fields.
429 if (!($sbj = preg_replace ('/%%' . preg_quote ($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $sbj)))
430 break; // Empty; we can stop here.
431
432 if (($msg = $GLOBALS['WS_PLUGIN__']['s2member']['o']['new_user_admin_email_message']))
433 if (($msg = c_ws_plugin__s2member_utils_strings::fill_cvs($msg, $custom)))
434 if (($msg = preg_replace ('/%%wp_login_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (wp_login_url ()), $msg)))
435 if (($msg = preg_replace ('/%%role%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($role), $msg)))
436 if (($msg = preg_replace ('/%%label%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($label), $msg)))
437 if (($msg = preg_replace ('/%%level%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($level), $msg)))
438 if (($msg = preg_replace ('/%%ccaps%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($ccaps), $msg)))
439 if (($msg = preg_replace ('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name), $msg)))
440 if (($msg = preg_replace ('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name), $msg)))
441 if (($msg = preg_replace ('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_full_name), $msg)))
442 if (($msg = preg_replace ('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $msg)))
443 if (($msg = preg_replace ('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $msg)))
444 if (($msg = preg_replace ('/%%user_pass%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_pass), $msg)))
445 if (($msg = preg_replace ('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_ip), $msg)))
446 if (($msg = preg_replace ('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $msg)))
447 {
448 if (is_array($fields) && !empty($fields))
449 foreach ($fields as $var => $val) // Custom Registration/Profile Fields.
450 if (!($msg = preg_replace ('/%%' . preg_quote ($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $msg)))
451 break; // Empty; we can stop here.
452
453 if (($rec = trim (preg_replace ('/%%(.+?)%%/i', '', $rec))) && ($sbj = trim (preg_replace ('/%%(.+?)%%/i', '', $sbj))) && ($msg = trim (preg_replace ('/%%(.+?)%%/i', '', $msg))))
454 {
455 if (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ())
456 {
457 $rec = c_ws_plugin__s2member_utilities::evl($rec, get_defined_vars());
458 $sbj = c_ws_plugin__s2member_utilities::evl($sbj, get_defined_vars());
459 $msg = c_ws_plugin__s2member_utilities::evl($msg, get_defined_vars());
460 }
461 foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($rec) as $recipient) // A list of receipients.
462 {
463 //250617 HTML email support.
464 if (empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['html_emails_enabled'])) {
465 wp_mail ($recipient, apply_filters('ws_plugin__s2member_admin_new_user_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_admin_new_user_email_msg', $msg, get_defined_vars()), 'Content-Type: text/plain; charset=UTF-8');
466 } else {
467 c_ws_plugin__s2member_utilities::mail($recipient, apply_filters('ws_plugin__s2member_admin_new_user_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_admin_new_user_email_msg', $msg, get_defined_vars()));
468 }
469 }
470 }
471 }
472 }
473 }
474 }
475 if ($email_configs_were_on) // Restore?
476 c_ws_plugin__s2member_email_configs::email_config();
477
478 return apply_filters('ws_plugin__s2member_new_user_notification', true, get_defined_vars ());
479 }
480 return apply_filters('ws_plugin__s2member_new_user_notification', false, get_defined_vars ());
481 }
482 }
483 }
484