PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.13
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.13
1.2.73 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 All 173 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.13, at includes/class-emails.php

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