PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.0.3
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.0.3
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Classes / SendEmail.php
wp-user-avatar / src / Classes Last commit date
Installer 5 years ago AdminNotices.php 4 years ago AjaxHandler.php 4 years ago Autologin.php 4 years ago BuddyPressBbPress.php 5 years ago EditUserProfile.php 4 years ago ExtensionManager.php 4 years ago FileUploader.php 4 years ago FormPreviewHandler.php 5 years ago FormRepository.php 4 years ago FormShortcodeDefaults.php 5 years ago GDPR.php 4 years ago Geolocation.php 4 years ago GlobalSiteAccess.php 4 years ago ImageUploader.php 4 years ago LoginAuth.php 4 years ago Miscellaneous.php 4 years ago ModifyRedirectDefaultLinks.php 4 years ago PPRESS_Session.php 4 years ago PROFILEPRESS_sql.php 4 years ago PasswordReset.php 4 years ago ProfileUrlRewrite.php 4 years ago RegistrationAuth.php 4 years ago SendEmail.php 4 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 4 years ago UserSignupLocationListingPage.php 4 years ago UsernameEmailRestrictLogin.php 4 years ago WPProfileFieldParserTrait.php 4 years ago WelcomeEmailAfterSignup.php 4 years ago default-email-template.php 4 years ago index.php 5 years ago
SendEmail.php
145 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5 use ProfilePressVendor\Pelago\Emogrifier;
6
7 class SendEmail
8 {
9 protected $sender_name;
10
11 protected $sender_email;
12
13 protected $content_type;
14
15 protected $to;
16
17 protected $subject;
18
19 protected $message;
20
21 public function __construct($to, $subject, $message)
22 {
23 $this->to = $to;
24 $this->subject = $subject;
25 $this->message = $message;
26 }
27
28 public function email_content_type()
29 {
30 return ppress_get_setting('email_content_type', 'text/html', true);
31 }
32
33 public function email_sender_name()
34 {
35 return sanitize_text_field(
36 ppress_get_setting('email_sender_name', ppress_site_title(), true)
37 );
38 }
39
40 public function email_sender_email()
41 {
42 return sanitize_email(
43 ppress_get_setting('email_sender_email', 'wordpress@' . ppress_site_url_without_scheme(), true)
44 );
45 }
46
47 public function get_headers()
48 {
49 $headers = [];
50 if ( ! defined('W3GUY_LOCAL')) {
51 $headers[] = "From: {$this->email_sender_name()} <{$this->email_sender_email()}>";
52 $headers[] = "Reply-To: {$this->email_sender_name()} <{$this->email_sender_email()}>";
53 }
54 $headers[] = sprintf("Content-type: %s", $this->email_content_type());
55 $headers[] = 'charset=UTF-8';
56
57 return apply_filters('ppress_email_headers', $headers);
58 }
59
60 public function before_send()
61 {
62 add_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
63
64 add_filter('wp_mail_from', [$this, 'email_sender_email']);
65 add_filter('wp_mail_from_name', [$this, 'email_sender_name']);
66 add_filter('wp_mail_content_type', [$this, 'email_content_type']);
67 }
68
69 public function after_send()
70 {
71 remove_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
72
73 remove_filter('wp_mail_from', [$this, 'email_sender_email']);
74 remove_filter('wp_mail_from_name', [$this, 'email_sender_name']);
75 remove_filter('wp_mail_content_type', [$this, 'email_content_type']);
76 }
77
78 public function templatified_email()
79 {
80 $message = $this->message;
81
82 if ($this->email_content_type() == 'text/html') {
83 $message = htmlspecialchars_decode(stripslashes($message));
84 $email_template = ppress_get_setting('email_template_type', 'default', true);
85
86 if ($email_template == 'default') {
87 ob_start();
88 $email_subject = $this->subject;
89 $email_content = $this->message;
90 require dirname(__FILE__) . '/default-email-template.php';
91 $message = ob_get_clean();
92 }
93
94 if (class_exists('DOMDocument') && ! is_customize_preview()) {
95 /** @see https://github.com/MyIntervals/emogrifier/tree/v2.2.0 */
96 $emogrifier = new Emogrifier();
97 $emogrifier->setHtml($message);
98 $message = $emogrifier->emogrify();
99 }
100 }
101
102 return $message;
103 }
104
105 /**
106 * @param \WP_Error $wp_error
107 */
108 public function log_wp_mail_failed($wp_error)
109 {
110 $mail_error_data = $wp_error->get_error_data();
111
112 $context = [
113 'to' => $mail_error_data['to'],
114 'subject' => $mail_error_data['subject']
115 ];
116
117 ppress_log_error($wp_error->get_error_message() . ' => ' . json_encode($context));
118 }
119
120 public function send()
121 {
122 if (empty($this->to) || empty($this->message) || empty($this->subject)) {
123 return false;
124 }
125
126 $this->message = $this->templatified_email();
127
128 $this->before_send();
129
130 $result = wp_mail($this->to, $this->subject, $this->message, $this->get_headers());
131
132 // if failed, try without the header.
133 if ( ! $result) {
134 $result = wp_mail($this->to, $this->subject, $this->message);
135 }
136
137 $this->after_send();
138
139 if ( ! $result) {
140 return false;
141 }
142
143 return $result;
144 }
145 }