PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.23
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.23
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.23, at includes/class-emails.php

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