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

325 lines 20.8 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 * Modifies email From: `"Name" <address>`.
32 *
33 * These Filters are only needed during registration.
34 *
35 * @package s2Member\Email_Configs
36 * @since 3.5
37 *
38 * @return null
39 */
40 public static function email_config ()
41 {
42 do_action ("ws_plugin__s2member_before_email_config", get_defined_vars ());
43 /**/
44 c_ws_plugin__s2member_email_configs::email_config_release ();
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 return; /* Return for uniformity. */
51 }
52 /**
53 * A sort of callback function that applies the email Filter.
54 *
55 * @package s2Member\Email_Configs
56 * @since 3.5
57 *
58 * @attaches-to ``add_filter("wp_mail_from");``
59 *
60 * @param str $email Expects the email address to be passed in by the Filter.
61 * @return str s2Member-configured email address.
62 */
63 public static function _email_config_email ($email = FALSE)
64 {
65 do_action ("_ws_plugin__s2member_before_email_config_email", get_defined_vars ());
66 /**/
67 return apply_filters ("_ws_plugin__s2member_email_config_email", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"], get_defined_vars ());
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 str $name Expects the name to be passed in by the Filter.
78 * @return str s2Member-configured name.
79 */
80 public static function _email_config_name ($name = FALSE)
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 * Checks the status of Filters being applied to the email From: "Name" <address>.
88 *
89 * @package s2Member\Email_Configs
90 * @since 3.5
91 *
92 * @param bool $any Optional. Defaults to false. If true, return true if ANY Filters are being applied, not just those applied by s2Member.
93 * @return bool True if Filters are being applied, else false.
94 */
95 public static function email_config_status ($any = FALSE)
96 {
97 do_action ("ws_plugin__s2member_before_email_config_status", get_defined_vars ());
98 /**/
99 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"))
100 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
101 /**/
102 else if ($any && (has_filter ("wp_mail_from") || has_filter ("wp_mail_from_name")))
103 return apply_filters ("ws_plugin__s2member_email_config_status", true, get_defined_vars ());
104 /**/
105 return apply_filters ("ws_plugin__s2member_email_config_status", false, get_defined_vars ());
106 }
107 /**
108 * Releases Filters that modify the email From: "Name" <address>.
109 *
110 * @package s2Member\Email_Configs
111 * @since 3.5
112 *
113 * @param bool $all Optional. Defaults to false. If true, remove ALL Filters, not just those applied by s2Member.
114 * @return null
115 */
116 public static function email_config_release ($all = FALSE)
117 {
118 do_action ("ws_plugin__s2member_before_email_config_release", get_defined_vars ());
119 /**/
120 remove_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
121 remove_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
122 /**/
123 if ($all) /* If ``$all`` is true, remove ALL attached WordPress® Filters. */
124 remove_all_filters("wp_mail_from") . remove_all_filters ("wp_mail_from_name");
125 /**/
126 do_action ("ws_plugin__s2member_after_email_config_release", get_defined_vars ());
127 /**/
128 return; /* Return for uniformity. */
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 str $message Expects the message string to be passed in by the Filter.
141 * @return str Message after having been Filtered by s2Member.
142 */
143 public static function ms_nice_email_roles ($message = FALSE)
144 {
145 eval('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); /* Unset defined __refs, __v. */
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 * Filters email addresses passed to ``wp_mail()``.
155 *
156 * @package s2Member\Email_Configs
157 * @since 3.5
158 *
159 * @attaches-to ``add_filter("wp_mail");``
160 * @uses {@link s2Member\Utilities\c_ws_plugin__s2member_utils_strings::parse_emails()}
161 *
162 * @param array $array Expects an array passed through by the Filter.
163 * @return array Returns the array passed through by the Filter.
164 */
165 public static function email_filter ($array = FALSE)
166 {
167 if (isset ($array["to"]) && !empty ($array["to"])) /* Filter list of recipients? */
168 /* Reduces `"Name" <email>`, to just an email address *(for best cross-platform compatibility across various MTAs)*. */
169 /* 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>. */
170 /* Also supplements WordPress®. WordPress® currently does NOT support semicolon `;` delimitation, s2Member does. */
171 $array["to"] = implode (",", c_ws_plugin__s2member_utils_strings::parse_emails ($array["to"]));
172 /**/
173 return apply_filters ("ws_plugin__s2member_after_email_filter", $array, get_defined_vars ());
174 }
175 /**
176 * Handles new User/Member 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)) && !empty ($user->ID) && ($user_id = $user->ID) && is_array ($notify) && !empty ($notify))
194 {
195 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
196 c_ws_plugin__s2member_email_configs::email_config_release ();
197 /**/
198 if (in_array ("user", $notify) && $user_pass) /* Send User a notification? */
199 {
200 $fields = get_user_option ("s2member_custom_fields", $user_id);
201 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
202 $user_full_name = trim ($user->first_name . " " . $user->last_name);
203 $user_ip = $_SERVER["REMOTE_ADDR"];
204 /**/
205 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_subject"]))
206 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
207 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
208 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
209 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
210 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
211 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
212 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
213 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
214 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
215 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
216 {
217 if (is_array ($fields) && !empty ($fields))
218 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
219 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
220 break;
221 /**/
222 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_message"]))
223 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
224 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
225 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
226 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
227 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
228 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
229 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
230 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
231 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
232 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
233 {
234 if (is_array ($fields) && !empty ($fields))
235 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
236 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
237 break;
238 /**/
239 if (($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg)))) /* Still have a ``$sbj`` and a ``$msg``? */
240 /**/
241 c_ws_plugin__s2member_email_configs::email_config () . wp_mail ($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 ();
242 }
243 }
244 }
245 /**/
246 if (in_array ("admin", $notify)) /* Send Admin(s) a notification? */
247 if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"])
248 {
249 $fields = get_user_option ("s2member_custom_fields", $user_id);
250 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
251 $user_full_name = trim ($user->first_name . " " . $user->last_name);
252 $user_ip = $_SERVER["REMOTE_ADDR"];
253 /**/
254 if (($rec = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"]))
255 if (($rec = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $rec)))
256 if (($rec = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $rec)))
257 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)))
258 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)))
259 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)))
260 if (($rec = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $rec)))
261 if (($rec = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $rec)))
262 if (($rec = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $rec)))
263 if (($rec = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $rec)))
264 if (($rec = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $rec)))
265 {
266 if (is_array ($fields) && !empty ($fields))
267 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
268 if (!($rec = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $rec)))
269 break;
270 /**/
271 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_subject"]))
272 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
273 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
274 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
275 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
276 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
277 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
278 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
279 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
280 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
281 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
282 {
283 if (is_array ($fields) && !empty ($fields))
284 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
285 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
286 break;
287 /**/
288 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_message"]))
289 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
290 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
291 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
292 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
293 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
294 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
295 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
296 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
297 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
298 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
299 {
300 if (is_array ($fields) && !empty ($fields))
301 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
302 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
303 break;
304 /**/
305 if (($rec = trim (preg_replace ("/%%(.+?)%%/i", "", $rec))) && ($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
306 {
307 foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($rec) as $recipient) /* A possible list of recipients. */
308 wp_mail ($recipient, $sbj, $msg, "Content-Type: text/plain; charset=utf-8");
309 }
310 }
311 }
312 }
313 }
314 /**/
315 if ($email_configs_were_on) /* Back on? */
316 c_ws_plugin__s2member_email_configs::email_config ();
317 /**/
318 return apply_filters ("ws_plugin__s2member_new_user_notification", true, get_defined_vars ());
319 }
320 else
321 return apply_filters ("ws_plugin__s2member_new_user_notification", false, get_defined_vars ());
322 }
323 }
324 }
325 ?>