PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.11
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.11
1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 All 172 releases
userswp / includes / class-emails.php

class-emails.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.0.11, at includes/class-emails.php

396 lines 13.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Mails related functions
4 *
5 * All UsersWP related mails are sent via this class.
6 *
7 * @since 1.0.0
8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 */
10 class UsersWP_Mails {
11
12 /**
13 * All UsersWP user mails happen via this method.
14 *
15 * @since 1.0.0
16 * @package userswp
17 * @param string $message_type Message type.
18 * @param int $user_id User ID.
19 * @return bool True when success. False when error.
20 */
21 public function send( $message_type, $user_id)
22 {
23 $user_data = get_userdata($user_id);
24
25 $login_page_id = uwp_get_option('login_page', false);
26 if ($login_page_id) {
27 $login_page_url = get_permalink($login_page_id);
28 } else {
29 $login_page_url = wp_login_url();
30 }
31
32 $subject = "";
33 $message = "";
34
35 $extras = apply_filters('uwp_send_mail_extras', "", $message_type, $user_id);
36 $subject = apply_filters('uwp_send_mail_subject', $subject, $message_type);
37 $message = apply_filters('uwp_send_mail_message', $message, $message_type);
38
39 $contains_login_details_tag = false;
40 if (strpos($message, '[#login_details#]') !== false) {
41 $contains_login_details_tag = true;
42 }
43
44 if (!empty($subject)) {
45 $subject = __(stripslashes_deep($subject), 'userswp');
46 }
47
48 if (!empty($message)) {
49 $message = __(stripslashes_deep($message), 'userswp');
50 }
51
52 $sitefromEmail = get_option('admin_email');
53 $sitefromEmailName = stripslashes(get_option('blogname'));
54
55
56 $user_login = '';
57 if ($user_id > 0 && $user_info = get_userdata($user_id)) {
58 $user_login = $user_info->user_login;
59 }
60
61 $siteurl = home_url();
62 $siteurl_link = '<a href="' . $siteurl . '">' . $siteurl . '</a>';
63 $loginurl = $login_page_url;
64 $loginurl_link = '<a href="' . $loginurl . '">login</a>';
65
66 $current_date = date_i18n('Y-m-d H:i:s', current_time('timestamp'));
67
68 $site_email = get_option('admin_email');
69
70 $site_name = stripslashes(get_option('blogname'));
71
72 //user
73 $user_name = $user_data->display_name;
74 $user_email = $user_data->user_email;
75
76 $message_search_array = array(
77 '[#site_name_url#]',
78 '[#site_name#]',
79 '[#to_name#]',
80 '[#from_name#]',
81 '[#login_url#]',
82 '[#user_name#]',
83 '[#from_email#]',
84 '[#user_login#]',
85 '[#username#]',
86 '[#current_date#]',
87 '[#login_details#]',
88 );
89 $message_replace_array = array(
90 $siteurl_link,
91 $sitefromEmailName,
92 $user_name,
93 $site_name,
94 $loginurl_link,
95 $user_name,
96 $site_email,
97 $user_login,
98 $user_login,
99 $current_date,
100 $extras
101 );
102 $message = str_replace($message_search_array, $message_replace_array, $message);
103
104
105 // Applicable only for activate mails
106 if ($message_type == 'activate' && !$contains_login_details_tag) {
107 $user_data = get_userdata($user_id);
108 global $wpdb;
109 $key = wp_generate_password( 20, false );
110 do_action( 'uwp_activation_key', $user_data->user_login, $key );
111
112 global $wp_hasher;
113 if ( empty( $wp_hasher ) ) {
114 require_once ABSPATH . 'wp-includes/class-phpass.php';
115 $wp_hasher = new PasswordHash( 8, true );
116 }
117 $hashed = $wp_hasher->HashPassword( $key );
118 $wpdb->update( $wpdb->users, array( 'user_activation_key' => time().":".$hashed ), array( 'user_login' => $user_data->user_login ) );
119 update_user_meta( $user_id, 'uwp_mod', 'email_unconfirmed' );
120
121 $activation_link = add_query_arg(
122 array(
123 'uwp_activate' => 'yes',
124 'key' => $key,
125 'login' => $user_data->user_login
126 ),
127 site_url()
128 );
129
130 $activate_message_search_array = array(
131 '[#activation_link#]',
132 );
133 $activate_message_replace_array = array(
134 $activation_link
135 );
136 $message = str_replace($activate_message_search_array, $activate_message_replace_array, $message);
137 }
138
139 // Applicable only for forgot mails
140 if ($message_type == 'forgot' && !$contains_login_details_tag) {
141
142 $new_pass = "";
143 $reset_link = "";
144
145 global $wpdb, $wp_hasher;
146
147 $allow = apply_filters('allow_password_reset', true, $user_data->ID);
148 if ( ! $allow )
149 return false;
150 else if ( is_wp_error($allow) )
151 return false;
152
153 $as_password = apply_filters('uwp_forgot_message_as_password', false);
154
155 if ($as_password) {
156 $new_pass = wp_generate_password(12, false);
157 wp_set_password($new_pass, $user_data->ID);
158 update_user_meta($user_data->ID, 'default_password_nag', true); //Set up the Password change nag.
159
160 } else {
161 $key = wp_generate_password(20, false);
162 do_action('retrieve_password_key', $user_data->user_login, $key);
163
164 if (empty($wp_hasher)) {
165 require_once ABSPATH . 'wp-includes/class-phpass.php';
166 $wp_hasher = new PasswordHash(8, true);
167 }
168 $hashed = $wp_hasher->HashPassword($key);
169 $wpdb->update($wpdb->users, array('user_activation_key' => time() . ":" . $hashed), array('user_login' => $user_data->user_login));
170 $reset_page = uwp_get_option('reset_page', false);
171 if ($reset_page) {
172 $reset_link = add_query_arg(array(
173 'key' => $key,
174 'login' => rawurlencode($user_data->user_login),
175 ), get_permalink($reset_page));
176 } else {
177 $reset_link = site_url("reset?key=$key&login=" . rawurlencode($user_data->user_login), 'login');
178 }
179 }
180
181 $reset_message_search_array = array(
182 '[#new_password#]',
183 '[#reset_link#]',
184 );
185 $reset_message_replace_array = array(
186 $new_pass,
187 $reset_link
188 );
189 $message = str_replace($reset_message_search_array, $reset_message_replace_array, $message);
190 }
191
192 $subject_search_array = array(
193 '[#site_name_url#]',
194 '[#site_name#]',
195 '[#to_name#]',
196 '[#from_name#]',
197 '[#user_name#]',
198 '[#from_email#]',
199 '[#user_login#]',
200 '[#username#]',
201 '[#current_date#]'
202 );
203 $subject_replace_array = array(
204 $siteurl_link,
205 $sitefromEmailName,
206 $user_name,
207 $site_name,
208 $user_name,
209 $site_email,
210 $user_login,
211 $user_login,
212 $current_date
213 );
214 $subject = str_replace($subject_search_array, $subject_replace_array, $subject);
215
216 $headers = array();
217 $headers[] = 'Content-type: text/html; charset=UTF-8';
218 $headers[] = "Reply-To: " . $site_email;
219 $headers[] = 'From: ' . $sitefromEmailName . ' <' . $sitefromEmail . '>';
220
221 $to = $user_email;
222
223 $to = apply_filters('uwp_send_email_to', $to, $message_type, $user_id);
224
225 $subject = apply_filters('uwp_send_email_subject', $subject, $message_type, $user_id);
226
227 $message = apply_filters('uwp_send_email_message', $message, $message_type, $user_id);
228
229 $headers = apply_filters('uwp_send_email_headers', $headers, $message_type, $user_id);
230
231 $sent = wp_mail($to, $subject, $message, $headers);
232
233
234 if (!$sent) {
235 if (is_array($to)) {
236 $to = implode(',', $to);
237 }
238 $err = $this->get_mail_errors();
239 $log_message = sprintf(
240 __("Email from UsersWP failed to send.\nMessage type: %s\nSend time: %s\nTo: %s\nSubject: %s\nError: %s\n\n", 'userswp'),
241 $message_type,
242 date_i18n('F j Y H:i:s', current_time('timestamp')),
243 $to,
244 $subject,
245 $err
246 );
247 uwp_error_log($log_message);
248 return false;
249 } else {
250 return true;
251 }
252 }
253
254 /**
255 * All UsersWP admin mails happen via this method.
256 *
257 * @since 1.0.0
258 * @package userswp
259 * @param string $message_type Message type.
260 * @param int $user_id User ID. Not admin user ID.
261 * @return bool True when success. False when error.
262 */
263 public function send_admin_email( $message_type, $user_id)
264 {
265
266 $login_page_id = uwp_get_option('login_page', false);
267 if ($login_page_id) {
268 $login_page_url = get_permalink($login_page_id);
269 } else {
270 $login_page_url = wp_login_url();
271 }
272
273 $extras = apply_filters('uwp_send_admin_mail_extras', "", $message_type, $user_id);
274 $subject = apply_filters('uwp_send_admin_mail_subject', "", $message_type);
275 $message = apply_filters('uwp_send_admin_mail_message', "", $message_type);
276
277 if (!empty($subject)) {
278 $subject = __(stripslashes_deep($subject), 'userswp');
279 }
280
281 if (!empty($message)) {
282 $message = __(stripslashes_deep($message), 'userswp');
283 }
284
285 $sitefromEmail = apply_filters('uwp_send_mail_admin_email', get_option('admin_email'));
286 $sitefromEmailName = apply_filters('uwp_send_mail_admin_blogname', stripslashes(get_option('blogname')));
287
288 $siteurl = home_url();
289 $siteurl_link = '<a href="' . $siteurl . '">' . $siteurl . '</a>';
290 $loginurl = $login_page_url;
291 $loginurl_link = '<a href="' . $loginurl . '">login</a>';
292
293 $current_date = date_i18n('Y-m-d H:i:s', current_time('timestamp'));
294
295 $site_email = get_option('admin_email');
296
297 $site_name = stripslashes(get_option('blogname'));
298
299 $search_array = array(
300 '[#site_name_url#]',
301 '[#site_name#]',
302 '[#from_name#]',
303 '[#login_url#]',
304 '[#from_email#]',
305 '[#current_date#]',
306 '[#extras#]',
307 );
308 $replace_array = array(
309 $siteurl_link,
310 $sitefromEmailName,
311 $site_name,
312 $loginurl_link,
313 $site_email,
314 $current_date,
315 $extras
316 );
317 $message = str_replace($search_array, $replace_array, $message);
318
319 $search_array = array(
320 '[#site_name_url#]',
321 '[#site_name#]',
322 '[#from_name#]',
323 '[#from_email#]',
324 '[#current_date#]'
325 );
326 $replace_array = array(
327 $siteurl_link,
328 $sitefromEmailName,
329 $site_name,
330 $site_email,
331 $current_date
332 );
333 $subject = str_replace($search_array, $replace_array, $subject);
334
335 $headers = array();
336 $headers[] = 'Content-type: text/html; charset=UTF-8';
337 $headers[] = "Reply-To: " . $site_email;
338 $headers[] = 'From: ' . $sitefromEmailName . ' <' . $sitefromEmail . '>';
339
340 $to = $site_email;
341
342 $to = apply_filters('uwp_send_admin_email_to', $to, $message_type, $user_id);
343
344 $subject = apply_filters('uwp_send_admin_email_subject', $subject, $message_type, $user_id);
345
346 $message = apply_filters('uwp_send_admin_email_message', $message, $message_type, $user_id);
347
348 $headers = apply_filters('uwp_send_admin_email_headers', $headers, $message_type, $user_id);
349
350 $sent = wp_mail($to, $subject, $message, $headers);
351
352 if (!$sent) {
353 if (is_array($to)) {
354 $to = implode(',', $to);
355 }
356 $err = $this->get_mail_errors();
357 $log_message = sprintf(
358 __("Email from UsersWP failed to send.\nMessage type: %s\nSend time: %s\nTo: %s\nSubject: %s\nError: %s\n\n", 'userswp'),
359 $message_type,
360 date_i18n('F j Y H:i:s', current_time('timestamp')),
361 $to,
362 $subject,
363 $err
364 );
365 uwp_error_log($log_message);
366 return false;
367 } else {
368 return true;
369 }
370 }
371
372
373 /**
374 * Gets the original error message from phpmailer.
375 *
376 * @since 1.0.7
377 * @package userswp
378 * @return string Error messages.
379 */
380 public function get_mail_errors() {
381 // wp mail debugging
382 global $ts_mail_errors;
383 global $phpmailer;
384
385 if (!isset($ts_mail_errors)) $ts_mail_errors = array();
386
387 if (isset($phpmailer)) {
388 $ts_mail_errors[] = $phpmailer->ErrorInfo;
389 }
390
391 $out = json_encode($ts_mail_errors);
392
393 return $out;
394 }
395
396 }