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
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 110815, at includes/classes/email-configs.inc.php

319 lines 20.1 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 (); /* Release all. */
66 /**/
67 add_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
68 add_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
69 /**/
70 do_action ("ws_plugin__s2member_after_email_config", get_defined_vars ());
71 /**/
72 return; /* Return for uniformity. */
73 }
74 /**
75 * A sort of callback function that applies the email Filter.
76 *
77 * @package s2Member\Email_Configs
78 * @since 3.5
79 *
80 * @attaches-to ``add_filter("wp_mail_from");``
81 *
82 * @param str $email Expects the email address to be passed in by the Filter.
83 * @return str s2Member-configured email address.
84 */
85 public static function _email_config_email ($email = FALSE)
86 {
87 do_action ("_ws_plugin__s2member_before_email_config_email", get_defined_vars ());
88 /**/
89 return apply_filters ("_ws_plugin__s2member_email_config_email", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"], get_defined_vars ());
90 }
91 /**
92 * A sort of callback function that applies the name Filter.
93 *
94 * @package s2Member\Email_Configs
95 * @since 3.5
96 *
97 * @attaches-to ``add_filter("wp_mail_from_name");``
98 *
99 * @param str $name Expects the name to be passed in by the Filter.
100 * @return str s2Member-configured name.
101 */
102 public static function _email_config_name ($name = FALSE)
103 {
104 do_action ("_ws_plugin__s2member_before_email_config_name", get_defined_vars ());
105 /**/
106 return apply_filters ("_ws_plugin__s2member_email_config_name", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"], get_defined_vars ());
107 }
108 /**
109 * Checks the status of Filters being applied to the email From: "Name" <address>.
110 *
111 * @package s2Member\Email_Configs
112 * @since 3.5
113 *
114 * @param bool $any Optional. Defaults to true. If true, return true if ANY Filters are being applied, not just those applied by s2Member.
115 * @return bool True if Filters are being applied, else false.
116 */
117 public static function email_config_status ($any = TRUE)
118 {
119 do_action ("ws_plugin__s2member_before_email_config_status", get_defined_vars ());
120 /**/
121 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"))
122 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
123 /**/
124 else if ($any && (has_filter ("wp_mail_from") || has_filter ("wp_mail_from_name")))
125 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
126 /**/
127 return apply_filters ("ws_plugin__s2member_email_config_status", false, get_defined_vars ());
128 }
129 /**
130 * Releases Filters that modify the email From: "Name" <address>.
131 *
132 * @package s2Member\Email_Configs
133 * @since 3.5
134 *
135 * @param bool $all Optional. Defaults to true. If true, remove ALL Filters, not just those applied by s2Member.
136 * @return null
137 */
138 public static function email_config_release ($all = TRUE)
139 {
140 do_action ("ws_plugin__s2member_before_email_config_release", get_defined_vars ());
141 /**/
142 remove_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
143 remove_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
144 /**/
145 if ($all) /* If $all is true, then we remove all attached WordPress® Filters. */
146 remove_all_filters ("wp_mail_from") . remove_all_filters ("wp_mail_from_name");
147 /**/
148 do_action ("ws_plugin__s2member_after_email_config_release", get_defined_vars ());
149 /**/
150 return; /* Return for uniformity. */
151 }
152 /**
153 * Converts primitive Role names in emails sent by WordPress®.
154 *
155 * Only necessary with this particular email: `wpmu_signup_user_notification_email`.
156 *
157 * @package s2Member\Email_Configs
158 * @since 3.5
159 *
160 * @attaches-to: ``add_filter("wpmu_signup_user_notification_email");``
161 *
162 * @param str $message Expects the message string to be passed in by the Filter.
163 * @return str Message after having been Filtered by s2Member.
164 */
165 public static function ms_nice_email_roles ($message = FALSE)
166 {
167 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
168 do_action ("ws_plugin__s2member_before_ms_nice_email_roles", get_defined_vars ());
169 unset ($__refs, $__v); /* Unset defined __refs, __v. */
170 /**/
171 $message = preg_replace ("/ as a (subscriber|s2member_level[0-9]+)/i", " as a Member", $message);
172 /**/
173 return apply_filters ("ws_plugin__s2member_ms_nice_email_roles", $message, get_defined_vars ());
174 }
175 /**
176 * Handles new User notifications.
177 *
178 * @package s2Member\Email_Configs
179 * @since 110707
180 *
181 * @param str|int $user_id A numeric WordPress® User ID.
182 * @param str $user_pass Optional. A plain text version of the User's password.
183 * If omitted, only the administrative notification will be sent.
184 * @param array $notify An array of directives. Must be non-empty, with at least one of these values `user,admin`.
185 * @return bool True if all required parameters are supplied, else false.
186 */
187 public static function new_user_notification ($user_id = FALSE, $user_pass = FALSE, $notify = array ("user", "admin"))
188 {
189 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
190 do_action ("ws_plugin__s2member_before_new_user_notification", get_defined_vars ());
191 unset ($__refs, $__v); /* Unset defined __refs, __v. */
192 /**/
193 if ($user_id && ($user = new WP_User ($user_id)) && ($user_id = $user->ID) && is_array ($notify) && !empty ($notify))
194 {
195 if (in_array ("user", $notify) && !empty ($user_pass)) /* Send User a notification? */
196 {
197 $fields = get_user_option ("s2member_custom_fields", $user_id);
198 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
199 $user_full_name = trim ($user->first_name . " " . $user->last_name);
200 $user_ip = $_SERVER["REMOTE_ADDR"];
201 /**/
202 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_subject"]))
203 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
204 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
205 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
206 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
207 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
208 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
209 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
210 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
211 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
212 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
213 {
214 if (is_array ($fields) && !empty ($fields))
215 foreach ($fields as $var => $val) /* Custom Registration Fields. */
216 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
217 break;
218 /**/
219 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_message"]))
220 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
221 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
222 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
223 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
224 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
225 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
226 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
227 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
228 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
229 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
230 {
231 if (is_array ($fields) && !empty ($fields))
232 foreach ($fields as $var => $val) /* Custom Registration Fields. */
233 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
234 break;
235 /**/
236 if (($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
237 {
238 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");
239 }
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 return apply_filters ("ws_plugin__s2member_new_user_notification", true, get_defined_vars ());
313 }
314 else
315 return apply_filters ("ws_plugin__s2member_new_user_notification", false, get_defined_vars ());
316 }
317 }
318 }
319 ?>