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

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

322 lines 20.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Email configurations for s2Member.
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\Email_Configs
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_email_configs"))
21 {
22 /**
23 * Email configurations for s2Member.
24 *
25 * @package s2Member\Email_Configs
26 * @since 3.5
27 */
28 class c_ws_plugin__s2member_email_configs
29 {
30 /**
31 * Filters email addresses passed to ``wp_mail()``.
32 *
33 * @package s2Member\Email_Configs
34 * @since 3.5
35 *
36 * @attaches-to ``add_filter("wp_mail");``
37 *
38 * @param array $array Expects an array passed through by the Filter.
39 * @return array Returns the array passed through by the Filter.
40 */
41 public static function email_filter ($array = FALSE)
42 {
43 if (!empty ($array["to"]) && is_string ($array["to"]))
44 $array["to"] = str_replace (array ('\"', '"'), "", $array["to"]);
45 /**/
46 if (!empty ($array["to"]) && is_string ($array["to"]) && strpos ($array["to"], ";") !== false)
47 $array["to"] = c_ws_plugin__s2member_utils_strings::trim_deep (preg_split ("/;+/", $array["to"]));
48 /**/
49 return apply_filters ("ws_plugin__s2member_after_email_filter", $array, get_defined_vars ());
50 }
51 /**
52 * Modifies email From: `"Name" <address>`.
53 *
54 * These Filters are only needed during registration.
55 *
56 * @package s2Member\Email_Configs
57 * @since 3.5
58 *
59 * @return null
60 */
61 public static function email_config ()
62 {
63 do_action ("ws_plugin__s2member_before_email_config", get_defined_vars ());
64 /**/
65 c_ws_plugin__s2member_email_configs::email_config_release ();
66 add_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
67 add_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
68 /**/
69 do_action ("ws_plugin__s2member_after_email_config", get_defined_vars ());
70 /**/
71 return; /* Return for uniformity. */
72 }
73 /**
74 * A sort of callback function that applies the email Filter.
75 *
76 * @package s2Member\Email_Configs
77 * @since 3.5
78 *
79 * @attaches-to ``add_filter("wp_mail_from");``
80 *
81 * @param str $email Expects the email address to be passed in by the Filter.
82 * @return str s2Member-configured email address.
83 */
84 public static function _email_config_email ($email = FALSE)
85 {
86 do_action ("_ws_plugin__s2member_before_email_config_email", get_defined_vars ());
87 /**/
88 return apply_filters ("_ws_plugin__s2member_email_config_email", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"], get_defined_vars ());
89 }
90 /**
91 * A sort of callback function that applies the name Filter.
92 *
93 * @package s2Member\Email_Configs
94 * @since 3.5
95 *
96 * @attaches-to ``add_filter("wp_mail_from_name");``
97 *
98 * @param str $name Expects the name to be passed in by the Filter.
99 * @return str s2Member-configured name.
100 */
101 public static function _email_config_name ($name = FALSE)
102 {
103 do_action ("_ws_plugin__s2member_before_email_config_name", get_defined_vars ());
104 /**/
105 return apply_filters ("_ws_plugin__s2member_email_config_name", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"], get_defined_vars ());
106 }
107 /**
108 * Checks the status of Filters being applied to the email From: "Name" <address>.
109 *
110 * @package s2Member\Email_Configs
111 * @since 3.5
112 *
113 * @param bool $any Optional. Defaults to false. If true, return true if ANY Filters are being applied, not just those applied by s2Member.
114 * @return bool True if Filters are being applied, else false.
115 */
116 public static function email_config_status ($any = FALSE)
117 {
118 do_action ("ws_plugin__s2member_before_email_config_status", get_defined_vars ());
119 /**/
120 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"))
121 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
122 /**/
123 else if ($any && (has_filter ("wp_mail_from") || has_filter ("wp_mail_from_name")))
124 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
125 /**/
126 return apply_filters ("ws_plugin__s2member_email_config_status", false, get_defined_vars ());
127 }
128 /**
129 * Releases Filters that modify the email From: "Name" <address>.
130 *
131 * @package s2Member\Email_Configs
132 * @since 3.5
133 *
134 * @param bool $all Optional. Defaults to false. If true, remove ALL Filters, not just those applied by s2Member.
135 * @return null
136 */
137 public static function email_config_release ($all = FALSE)
138 {
139 do_action ("ws_plugin__s2member_before_email_config_release", get_defined_vars ());
140 /**/
141 remove_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
142 remove_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
143 /**/
144 if ($all) /* If ``$all`` is true, remove ALL attached WordPress® Filters. */
145 remove_all_filters("wp_mail_from") . remove_all_filters ("wp_mail_from_name");
146 /**/
147 do_action ("ws_plugin__s2member_after_email_config_release", get_defined_vars ());
148 /**/
149 return; /* Return for uniformity. */
150 }
151 /**
152 * Converts primitive Role names in emails sent by WordPress®.
153 *
154 * Only necessary with this particular email: `wpmu_signup_user_notification_email`.
155 *
156 * @package s2Member\Email_Configs
157 * @since 3.5
158 *
159 * @attaches-to: ``add_filter("wpmu_signup_user_notification_email");``
160 *
161 * @param str $message Expects the message string to be passed in by the Filter.
162 * @return str Message after having been Filtered by s2Member.
163 */
164 public static function ms_nice_email_roles ($message = FALSE)
165 {
166 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
167 do_action ("ws_plugin__s2member_before_ms_nice_email_roles", get_defined_vars ());
168 unset ($__refs, $__v); /* Unset defined __refs, __v. */
169 /**/
170 $message = preg_replace ("/ as a (subscriber|s2member_level[0-9]+)/i", " " . _x ("as a Member", "s2member-front", "s2member"), $message);
171 /**/
172 return apply_filters ("ws_plugin__s2member_ms_nice_email_roles", $message, get_defined_vars ());
173 }
174 /**
175 * Handles new User notifications.
176 *
177 * @package s2Member\Email_Configs
178 * @since 110707
179 *
180 * @param str|int $user_id A numeric WordPress® User ID.
181 * @param str $user_pass Optional. A plain text version of the User's password.
182 * If omitted, only the administrative notification will be sent.
183 * @param array $notify An array of directives. Must be non-empty, with at least one of these values `user,admin`.
184 * @return bool True if all required parameters are supplied, else false.
185 */
186 public static function new_user_notification ($user_id = FALSE, $user_pass = FALSE, $notify = array ("user", "admin"))
187 {
188 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
189 do_action ("ws_plugin__s2member_before_new_user_notification", get_defined_vars ());
190 unset ($__refs, $__v); /* Unset defined __refs, __v. */
191 /**/
192 if ($user_id && ($user = new WP_User ($user_id)) && !empty ($user->ID) && ($user_id = $user->ID) && is_array ($notify) && !empty ($notify))
193 {
194 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
195 c_ws_plugin__s2member_email_configs::email_config_release ();
196 /**/
197 if (in_array ("user", $notify) && $user_pass) /* Send User a notification? */
198 {
199 $fields = get_user_option ("s2member_custom_fields", $user_id);
200 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
201 $user_full_name = trim ($user->first_name . " " . $user->last_name);
202 $user_ip = $_SERVER["REMOTE_ADDR"];
203 /**/
204 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_subject"]))
205 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
206 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
207 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
208 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
209 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
210 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
211 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
212 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
213 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
214 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
215 {
216 if (is_array ($fields) && !empty ($fields))
217 foreach ($fields as $var => $val) /* Custom Registration Fields. */
218 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
219 break;
220 /**/
221 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_message"]))
222 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
223 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
224 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
225 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
226 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
227 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
228 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
229 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
230 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
231 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
232 {
233 if (is_array ($fields) && !empty ($fields))
234 foreach ($fields as $var => $val) /* Custom Registration Fields. */
235 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
236 break;
237 /**/
238 if (($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
239 c_ws_plugin__s2member_email_configs::email_config () . wp_mail ('"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user_full_name) . '" <' . $user->user_email . '>', $sbj, $msg, "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") . c_ws_plugin__s2member_email_configs::email_config_release ();
240 }
241 }
242 }
243 /**/
244 if (in_array ("admin", $notify) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"])
245 {
246 $fields = get_user_option ("s2member_custom_fields", $user_id);
247 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
248 $user_full_name = trim ($user->first_name . " " . $user->last_name);
249 $user_ip = $_SERVER["REMOTE_ADDR"];
250 /**/
251 if (($rec = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"]))
252 if (($rec = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $rec)))
253 if (($rec = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $rec)))
254 if (($rec = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name)), $rec)))
255 if (($rec = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name)), $rec)))
256 if (($rec = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq (c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name)), $rec)))
257 if (($rec = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $rec)))
258 if (($rec = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $rec)))
259 if (($rec = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $rec)))
260 if (($rec = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $rec)))
261 if (($rec = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $rec)))
262 {
263 if (is_array ($fields) && !empty ($fields))
264 foreach ($fields as $var => $val) /* Custom Registration Fields. */
265 if (!($rec = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $rec)))
266 break;
267 /**/
268 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_subject"]))
269 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
270 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
271 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
272 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
273 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
274 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
275 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
276 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
277 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
278 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
279 {
280 if (is_array ($fields) && !empty ($fields))
281 foreach ($fields as $var => $val) /* Custom Registration Fields. */
282 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
283 break;
284 /**/
285 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_message"]))
286 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
287 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
288 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
289 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
290 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
291 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
292 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
293 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
294 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
295 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
296 {
297 if (is_array ($fields) && !empty ($fields))
298 foreach ($fields as $var => $val) /* Custom Registration Fields. */
299 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
300 break;
301 /**/
302 if (($recipients = preg_split ("/;+/", preg_replace ("/%%(.+?)%%/i", "", $rec))) && ($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
303 {
304 foreach (c_ws_plugin__s2member_utils_strings::trim_deep ($recipients) as $recipient)
305 ($recipient) ? wp_mail ($recipient, $sbj, $msg, "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;
306 }
307 }
308 }
309 }
310 }
311 /**/
312 if ($email_configs_were_on) /* Back on? */
313 c_ws_plugin__s2member_email_configs::email_config ();
314 /**/
315 return apply_filters ("ws_plugin__s2member_new_user_notification", true, get_defined_vars ());
316 }
317 else
318 return apply_filters ("ws_plugin__s2member_new_user_notification", false, get_defined_vars ());
319 }
320 }
321 }
322 ?>