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

386 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 update_user_meta($user_data->ID, 'default_password_nag', true); //Set up the Password change nag.
154
155 } else {
156 $key = wp_generate_password(20, false);
157 do_action('retrieve_password_key', $user_data->user_login, $key);
158
159 if (empty($wp_hasher)) {
160 require_once ABSPATH . 'wp-includes/class-phpass.php';
161 $wp_hasher = new PasswordHash(8, true);
162 }
163 $hashed = $wp_hasher->HashPassword($key);
164 $wpdb->update($wpdb->users, array('user_activation_key' => time() . ":" . $hashed), array('user_login' => $user_data->user_login));
165 $reset_page = uwp_get_option('reset_page', false);
166 if ($reset_page) {
167 $reset_link = add_query_arg(array(
168 'key' => $key,
169 'login' => rawurlencode($user_data->user_login),
170 ), get_permalink($reset_page));
171 } else {
172 $reset_link = site_url("reset?key=$key&login=" . rawurlencode($user_data->user_login), 'login');
173 }
174 }
175
176 $reset_message_search_array = array(
177 '[#new_password#]',
178 '[#reset_link#]',
179 );
180 $reset_message_replace_array = array(
181 $new_pass,
182 $reset_link
183 );
184 $message = str_replace($reset_message_search_array, $reset_message_replace_array, $message);
185 }
186
187 $subject_search_array = array(
188 '[#site_name_url#]',
189 '[#site_name#]',
190 '[#to_name#]',
191 '[#from_name#]',
192 '[#user_name#]',
193 '[#from_email#]',
194 '[#user_login#]',
195 '[#username#]',
196 '[#current_date#]'
197 );
198 $subject_replace_array = array(
199 $siteurl_link,
200 $sitefromEmailName,
201 $user_name,
202 $site_name,
203 $user_name,
204 $site_email,
205 $user_login,
206 $user_login,
207 $current_date
208 );
209 $subject = str_replace($subject_search_array, $subject_replace_array, $subject);
210
211 $headers = array();
212 $headers[] = 'Content-type: text/html; charset=UTF-8';
213 $headers[] = "Reply-To: " . $site_email;
214 $headers[] = 'From: ' . $sitefromEmailName . ' <' . $sitefromEmail . '>';
215
216 $to = $user_email;
217
218 $to = apply_filters('uwp_send_email_to', $to, $message_type, $user_id);
219
220 $subject = apply_filters('uwp_send_email_subject', $subject, $message_type, $user_id);
221
222 $message = apply_filters('uwp_send_email_message', $message, $message_type, $user_id);
223
224 $headers = apply_filters('uwp_send_email_headers', $headers, $message_type, $user_id);
225
226 $sent = wp_mail($to, $subject, $message, $headers);
227
228
229 if (!$sent) {
230 if (is_array($to)) {
231 $to = implode(',', $to);
232 }
233 $err = $this->get_mail_errors();
234 $log_message = sprintf(
235 __("Email from UsersWP failed to send.\nMessage type: %s\nSend time: %s\nTo: %s\nSubject: %s\nError: %s\n\n", 'userswp'),
236 $message_type,
237 date_i18n('F j Y H:i:s', current_time('timestamp')),
238 $to,
239 $subject,
240 $err
241 );
242 uwp_error_log($log_message);
243 return false;
244 } else {
245 return true;
246 }
247 }
248
249 /**
250 * All UsersWP admin mails happen via this method.
251 *
252 * @since 1.0.0
253 * @package userswp
254 * @param string $message_type Message type.
255 * @param int $user_id User ID. Not admin user ID.
256 * @return bool True when success. False when error.
257 */
258 public function send_admin_email( $message_type, $user_id)
259 {
260
261 $login_page_url = wp_login_url();
262
263 $extras = apply_filters('uwp_send_admin_mail_extras', "", $message_type, $user_id);
264 $subject = apply_filters('uwp_send_admin_mail_subject', "", $message_type);
265 $message = apply_filters('uwp_send_admin_mail_message', "", $message_type);
266
267 if (!empty($subject)) {
268 $subject = __(stripslashes_deep($subject), 'userswp');
269 }
270
271 if (!empty($message)) {
272 $message = __(stripslashes_deep($message), 'userswp');
273 }
274
275 $sitefromEmail = apply_filters('uwp_send_mail_admin_email', get_option('admin_email'));
276 $sitefromEmailName = apply_filters('uwp_send_mail_admin_blogname', stripslashes(get_option('blogname')));
277
278 $siteurl = home_url();
279 $siteurl_link = '<a href="' . $siteurl . '">' . $siteurl . '</a>';
280 $loginurl = $login_page_url;
281 $loginurl_link = '<a href="' . $loginurl . '">'.__('login', 'userswp').'</a>';
282
283 $current_date = date_i18n('Y-m-d H:i:s', current_time('timestamp'));
284
285 $site_email = get_option('admin_email');
286
287 $site_name = stripslashes(get_option('blogname'));
288
289 $search_array = array(
290 '[#site_name_url#]',
291 '[#site_name#]',
292 '[#from_name#]',
293 '[#login_url#]',
294 '[#from_email#]',
295 '[#current_date#]',
296 '[#extras#]',
297 );
298 $replace_array = array(
299 $siteurl_link,
300 $sitefromEmailName,
301 $site_name,
302 $loginurl_link,
303 $site_email,
304 $current_date,
305 $extras
306 );
307 $message = str_replace($search_array, $replace_array, $message);
308
309 $search_array = array(
310 '[#site_name_url#]',
311 '[#site_name#]',
312 '[#from_name#]',
313 '[#from_email#]',
314 '[#current_date#]'
315 );
316 $replace_array = array(
317 $siteurl_link,
318 $sitefromEmailName,
319 $site_name,
320 $site_email,
321 $current_date
322 );
323 $subject = str_replace($search_array, $replace_array, $subject);
324
325 $headers = array();
326 $headers[] = 'Content-type: text/html; charset=UTF-8';
327 $headers[] = "Reply-To: " . $site_email;
328 $headers[] = 'From: ' . $sitefromEmailName . ' <' . $sitefromEmail . '>';
329
330 $to = $site_email;
331
332 $to = apply_filters('uwp_send_admin_email_to', $to, $message_type, $user_id);
333
334 $subject = apply_filters('uwp_send_admin_email_subject', $subject, $message_type, $user_id);
335
336 $message = apply_filters('uwp_send_admin_email_message', $message, $message_type, $user_id);
337
338 $headers = apply_filters('uwp_send_admin_email_headers', $headers, $message_type, $user_id);
339
340 $sent = wp_mail($to, $subject, $message, $headers);
341
342 if (!$sent) {
343 if (is_array($to)) {
344 $to = implode(',', $to);
345 }
346 $err = $this->get_mail_errors();
347 $log_message = sprintf(
348 __("Email from UsersWP failed to send.\nMessage type: %s\nSend time: %s\nTo: %s\nSubject: %s\nError: %s\n\n", 'userswp'),
349 $message_type,
350 date_i18n('F j Y H:i:s', current_time('timestamp')),
351 $to,
352 $subject,
353 $err
354 );
355 uwp_error_log($log_message);
356 return false;
357 } else {
358 return true;
359 }
360 }
361
362
363 /**
364 * Gets the original error message from phpmailer.
365 *
366 * @since 1.0.7
367 * @package userswp
368 * @return string Error messages.
369 */
370 public function get_mail_errors() {
371 // wp mail debugging
372 global $ts_mail_errors;
373 global $phpmailer;
374
375 if (!isset($ts_mail_errors)) $ts_mail_errors = array();
376
377 if (isset($phpmailer)) {
378 $ts_mail_errors[] = $phpmailer->ErrorInfo;
379 }
380
381 $out = json_encode($ts_mail_errors);
382
383 return $out;
384 }
385
386 }