PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / admin / emails / class-failed-donation-email.php
give / includes / admin / emails Last commit date
abstract-email-notification.php 4 years ago ajax-handler.php 3 weeks ago backward-compatibility.php 6 years ago class-donation-receipt-email.php 4 years ago class-donor-note-email.php 6 years ago class-donor-register-email.php 4 years ago class-email-access-email.php 1 week ago class-email-notification-table.php 3 years ago class-email-notification-util.php 6 years ago class-email-notifications.php 5 months ago class-email-setting-field.php 3 years ago class-failed-donation-email.php 5 months ago class-new-donation-email.php 6 years ago class-new-donor-register-email.php 4 years ago class-new-offline-donation-email.php 9 months ago class-offline-donation-instruction-email.php 6 years ago filters.php 4 years ago
class-failed-donation-email.php
275 lines
1 <?php
2 /**
3 * Failed Donation Email
4 *
5 * Donation Notification will be sent to recipient(s) when a donation status is changed to failed.
6 *
7 * @package Give
8 * @subpackage Classes/Emails
9 * @copyright Copyright (c) 2016, GiveWP
10 * @license https://opensource.org/licenses/gpl-license GNU Public License
11 * @since 4.14.0
12 */
13
14 // Exit if access directly.
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 use Give\Donations\Models\Donation;
20
21 if ( ! class_exists( 'Give_Failed_Donation_Email' ) ) :
22
23 /**
24 * @since 4.14.0
25 */
26 class Give_Failed_Donation_Email extends Give_Email_Notification {
27
28 /* @var Donation|null $donation */
29 private $donation;
30
31 /**
32 * @since 4.14.0
33 */
34 public function init() {
35
36 $this->load(
37 array(
38 'id' => 'failed-donation',
39 'label' => __( 'Failed Donation', 'give' ),
40 'description' => __( 'Sent to designated recipient(s) when a donation status is changed to failed.', 'give' ),
41 'has_recipient_field' => true,
42 'notification_status' => 'enabled',
43 'form_metabox_setting' => true,
44 'default_email_subject' => esc_attr__( 'Failed Donation - #{payment_id}', 'give' ),
45 'default_email_message' => ( false !== give_get_option( 'failed-donation_email_message' ) ) ? give_get_option( 'failed-donation_email_message' ) : $this->get_default_email_message(),
46 'default_email_header' => __( 'Failed Donation!', 'give' ),
47 )
48 );
49
50 add_action( "give_{$this->config['id']}_email_notification", array( $this, 'setup_email_notification' ) );
51 add_action( 'give_update_payment_status', array( $this, 'maybe_send_email_notification' ), 10, 3 );
52 }
53
54 /**
55 * @since 4.14.0
56 *
57 * @return string
58 */
59 private function get_default_email_message() {
60 $default_email_body = __( 'Hi there,', 'give' ) . "\n\n";
61 $default_email_body .= __( 'This email is to inform you that a donation has failed on your website:', 'give' ) . ' {site_url}' . ".\n\n";
62 $default_email_body .= '<strong>' . __( 'Donor:', 'give' ) . '</strong> {name}' . "\n";
63 $default_email_body .= '<strong>' . __( 'Donation:', 'give' ) . '</strong> {donation}' . "\n";
64 $default_email_body .= '<strong>' . __( 'Amount:', 'give' ) . '</strong> {amount}' . "\n";
65 $default_email_body .= '<strong>' . __( 'Payment Method:', 'give' ) . '</strong> {payment_method}' . "\n";
66 $default_email_body .= '<strong>' . __( 'Payment ID:', 'give' ) . '</strong> {payment_id}' . "\n\n";
67 $default_email_body .= __( 'Thank you,', 'give' ) . "\n\n";
68 $default_email_body .= '{sitename}' . "\n";
69
70 /**
71 * Filter the default failed donation notification email message.
72 *
73 * @since 4.14.0
74 *
75 * @param string $default_email_body Default email message.
76 */
77 return apply_filters( 'give_default_failed_donation_notification_email', $default_email_body );
78 }
79
80 /**
81 * @since 4.14.0
82 *
83 * @param int $payment_id The ID number of the payment.
84 * @param string $new_status The status of the payment.
85 * @param string $old_status The status of the payment prior to being changed.
86 *
87 * @return void
88 */
89 public function maybe_send_email_notification( $payment_id, $new_status, $old_status ) {
90 if ( $new_status === $old_status ) {
91 return;
92 }
93
94 $donation = Donation::find( (int) $payment_id );
95 if ( ! $donation || ! $donation->status->isFailed() ) {
96 return;
97 }
98
99 if ( ! give_is_setting_enabled( $this->get_notification_status() ) ) {
100 return;
101 }
102
103 /**
104 * Fires when a donation status is changed to failed.
105 *
106 * @param int $payment_id Payment ID.
107 *
108 * @since 4.14.0
109 */
110 do_action( "give_{$this->config['id']}_email_notification", $payment_id );
111 }
112
113 /**
114 * @since 4.14.0
115 *
116 * @param int $form_id
117 *
118 * @return string
119 */
120 public function get_email_subject( $form_id = null ) {
121 $subject = wp_strip_all_tags(
122 Give_Email_Notification_Util::get_value(
123 $this,
124 Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_subject',
125 $form_id,
126 $this->config['default_email_subject']
127 )
128 );
129
130 /**
131 * Filters the failed donation notification subject.
132 *
133 * @since 4.14.0
134 */
135 $subject = apply_filters( "give_{$this->config['id']}_get_email_subject", $subject, $this, $form_id );
136
137 return $subject;
138 }
139
140
141 /**
142 * @since 4.14.0
143 *
144 * @param int $form_id
145 *
146 * @return string
147 */
148 public function get_email_message( $form_id = null ) {
149 $message = Give_Email_Notification_Util::get_value(
150 $this,
151 Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_message',
152 $form_id,
153 $this->config['default_email_message']
154 );
155
156 /**
157 * Filter the email message
158 *
159 * @since 4.14.0
160 */
161 $message = apply_filters(
162 "give_{$this->config['id']}_get_default_email_message",
163 $message,
164 $this,
165 $form_id
166 );
167
168 return $message;
169 }
170
171
172 /**
173 * @since 4.14.0
174 *
175 * @param int $form_id
176 * @return array
177 */
178 public function get_email_attachments( $form_id = null ) {
179 /**
180 * Filters the failed donation notification email attachments.
181 * By default, there is no attachment but plugins can hook in to provide one more multiple.
182 *
183 * @since 4.14.0
184 */
185 $attachments = apply_filters(
186 "give_{$this->config['id']}_get_email_attachments",
187 array(),
188 $this,
189 $form_id
190 );
191
192 return $attachments;
193 }
194
195 /**
196 * @since 4.14.0
197 */
198 public function setup_email_data() {
199 /**
200 * Filters the from name.
201 *
202 * @since 4.14.0
203 */
204 $from_name = apply_filters(
205 'give_failed_donation_from_name',
206 Give()->emails->get_from_name(),
207 $this->donation->id,
208 null
209 );
210
211 /**
212 * Filters the from email.
213 *
214 * @since 4.14.0
215 */
216 $from_email = apply_filters(
217 'give_failed_donation_from_address',
218 Give()->emails->get_from_address(),
219 $this->donation->id,
220 null
221 );
222
223 Give()->emails->__set( 'from_name', $from_name );
224 Give()->emails->__set( 'from_email', $from_email );
225
226 /**
227 * Filters the failed donation notification email headers.
228 *
229 * @since 4.14.0
230 */
231 $headers = apply_filters(
232 'give_failed_donation_notification_headers',
233 Give()->emails->get_headers(),
234 $this->donation->id,
235 null
236 );
237
238 Give()->emails->__set( 'headers', $headers );
239 }
240
241 /**
242 * @since 4.14.0
243 *
244 * @param int $payment_id
245 */
246 public function setup_email_notification( $payment_id ) {
247 // Get the Donation model.
248 $this->donation = Donation::find( $payment_id );
249
250 if ( ! $this->donation ) {
251 wp_die(
252 esc_html__( 'Cheatin&#8217; uh?', 'give' ),
253 esc_html__( 'Error', 'give' ),
254 array(
255 'response' => 400,
256 )
257 );
258 }
259
260 // Set email data.
261 $this->setup_email_data();
262
263 // Send email.
264 $this->send_email_notification(
265 array(
266 'payment_id' => $payment_id,
267 )
268 );
269 }
270 }
271
272 endif;
273
274 return Give_Failed_Donation_Email::get_instance();
275