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 / email-configs.inc.php

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

326 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 /**/
46 add_filter ("wp_mail_from", "c_ws_plugin__s2member_email_configs::_email_config_email");
47 add_filter ("wp_mail_from_name", "c_ws_plugin__s2member_email_configs::_email_config_name");
48 /**/
49 do_action ("ws_plugin__s2member_after_email_config", get_defined_vars ());
50 /**/
51 return; /* Return for uniformity. */
52 }
53 /**
54 * A sort of callback function that applies the email Filter.
55 *
56 * @package s2Member\Email_Configs
57 * @since 3.5
58 *
59 * @attaches-to ``add_filter("wp_mail_from");``
60 *
61 * @param str $email Expects the email address to be passed in by the Filter.
62 * @return str s2Member-configured email address.
63 */
64 public static function _email_config_email ($email = FALSE)
65 {
66 do_action ("_ws_plugin__s2member_before_email_config_email", get_defined_vars ());
67 /**/
68 return apply_filters ("_ws_plugin__s2member_email_config_email", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"], get_defined_vars ());
69 }
70 /**
71 * A sort of callback function that applies the name Filter.
72 *
73 * @package s2Member\Email_Configs
74 * @since 3.5
75 *
76 * @attaches-to ``add_filter("wp_mail_from_name");``
77 *
78 * @param str $name Expects the name to be passed in by the Filter.
79 * @return str s2Member-configured name.
80 */
81 public static function _email_config_name ($name = FALSE)
82 {
83 do_action ("_ws_plugin__s2member_before_email_config_name", get_defined_vars ());
84 /**/
85 return apply_filters ("_ws_plugin__s2member_email_config_name", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"], get_defined_vars ());
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 * Releases Filters that modify the email From: "Name" <address>.
110 *
111 * @package s2Member\Email_Configs
112 * @since 3.5
113 *
114 * @param bool $all Optional. Defaults to false. If true, remove ALL Filters, not just those applied by s2Member.
115 * @return null
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 return; /* Return for uniformity. */
130 }
131 /**
132 * Converts primitive Role names in emails sent by WordPress®.
133 *
134 * Only necessary with this particular email: `wpmu_signup_user_notification_email`.
135 *
136 * @package s2Member\Email_Configs
137 * @since 3.5
138 *
139 * @attaches-to ``add_filter("wpmu_signup_user_notification_email");``
140 *
141 * @param str $message Expects the message string to be passed in by the Filter.
142 * @return str Message after having been Filtered by s2Member.
143 */
144 public static function ms_nice_email_roles ($message = FALSE)
145 {
146 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
147 do_action ("ws_plugin__s2member_before_ms_nice_email_roles", get_defined_vars ());
148 unset ($__refs, $__v); /* Unset defined __refs, __v. */
149 /**/
150 $message = preg_replace ("/ as a (subscriber|s2member_level[0-9]+)/i", " " . _x ("as a Member", "s2member-front", "s2member"), $message);
151 /**/
152 return apply_filters ("ws_plugin__s2member_ms_nice_email_roles", $message, get_defined_vars ());
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 = FALSE)
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 * Handles new User/Member notifications.
178 *
179 * @package s2Member\Email_Configs
180 * @since 110707
181 *
182 * @param str|int $user_id A numeric WordPress® User ID.
183 * @param str $user_pass Optional. A plain text version of the User's password.
184 * If omitted, only the administrative notification will be sent.
185 * @param array $notify An array of directives. Must be non-empty, with at least one of these values `user,admin`.
186 * @return bool True if all required parameters are supplied, else false.
187 */
188 public static function new_user_notification ($user_id = FALSE, $user_pass = FALSE, $notify = array ("user", "admin"))
189 {
190 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
191 do_action ("ws_plugin__s2member_before_new_user_notification", get_defined_vars ());
192 unset ($__refs, $__v); /* Unset defined __refs, __v. */
193 /**/
194 if ($user_id && ($user = new WP_User ($user_id)) && !empty ($user->ID) && ($user_id = $user->ID) && is_array ($notify) && !empty ($notify))
195 {
196 $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
197 c_ws_plugin__s2member_email_configs::email_config_release ();
198 /**/
199 if (in_array ("user", $notify) && $user_pass) /* Send User a notification? */
200 {
201 $fields = get_user_option ("s2member_custom_fields", $user_id);
202 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
203 $user_full_name = trim ($user->first_name . " " . $user->last_name);
204 $user_ip = $_SERVER["REMOTE_ADDR"];
205 /**/
206 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_subject"]))
207 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
208 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
209 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
210 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
211 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
212 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
213 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
214 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
215 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
216 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
217 {
218 if (is_array ($fields) && !empty ($fields))
219 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
220 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
221 break;
222 /**/
223 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_message"]))
224 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
225 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
226 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
227 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
228 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
229 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
230 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
231 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
232 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
233 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
234 {
235 if (is_array ($fields) && !empty ($fields))
236 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
237 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
238 break;
239 /**/
240 if (($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg)))) /* Still have a ``$sbj`` and a ``$msg``? */
241 /**/
242 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 ();
243 }
244 }
245 }
246 /**/
247 if (in_array ("admin", $notify)) /* Send Admin(s) a notification? */
248 if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"])
249 {
250 $fields = get_user_option ("s2member_custom_fields", $user_id);
251 $cv = preg_split ("/\|/", get_user_option ("s2member_custom", $user_id));
252 $user_full_name = trim ($user->first_name . " " . $user->last_name);
253 $user_ip = $_SERVER["REMOTE_ADDR"];
254 /**/
255 if (($rec = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"]))
256 if (($rec = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $rec)))
257 if (($rec = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $rec)))
258 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)))
259 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)))
260 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)))
261 if (($rec = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $rec)))
262 if (($rec = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $rec)))
263 if (($rec = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $rec)))
264 if (($rec = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $rec)))
265 if (($rec = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $rec)))
266 {
267 if (is_array ($fields) && !empty ($fields))
268 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
269 if (!($rec = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $rec)))
270 break;
271 /**/
272 if (($sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_subject"]))
273 if (($sbj = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)))
274 if (($sbj = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $sbj)))
275 if (($sbj = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $sbj)))
276 if (($sbj = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $sbj)))
277 if (($sbj = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $sbj)))
278 if (($sbj = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $sbj)))
279 if (($sbj = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $sbj)))
280 if (($sbj = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $sbj)))
281 if (($sbj = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $sbj)))
282 if (($sbj = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $sbj)))
283 {
284 if (is_array ($fields) && !empty ($fields))
285 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
286 if (!($sbj = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $sbj)))
287 break;
288 /**/
289 if (($msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_message"]))
290 if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)))
291 if (($msg = preg_replace ("/%%wp_login_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (wp_login_url ()), $msg)))
292 if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)))
293 if (($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
294 if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_full_name), $msg)))
295 if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_email), $msg)))
296 if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->user_login), $msg)))
297 if (($msg = preg_replace ("/%%user_pass%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_pass), $msg)))
298 if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_ip), $msg)))
299 if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
300 {
301 if (is_array ($fields) && !empty ($fields))
302 foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
303 if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
304 break;
305 /**/
306 if (($rec = trim (preg_replace ("/%%(.+?)%%/i", "", $rec))) && ($sbj = trim (preg_replace ("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
307 {
308 foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($rec) as $recipient) /* A possible list of recipients. */
309 wp_mail ($recipient, $sbj, $msg, "Content-Type: text/plain; charset=utf-8");
310 }
311 }
312 }
313 }
314 }
315 /**/
316 if ($email_configs_were_on) /* Back on? */
317 c_ws_plugin__s2member_email_configs::email_config ();
318 /**/
319 return apply_filters ("ws_plugin__s2member_new_user_notification", true, get_defined_vars ());
320 }
321 else
322 return apply_filters ("ws_plugin__s2member_new_user_notification", false, get_defined_vars ());
323 }
324 }
325 }
326 ?>