PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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-new-offline-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-new-offline-donation-email.php
335 lines
1 <?php
2 /**
3 * New Offline Donation Email
4 *
5 * This class handles all email notification settings.
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 2.0
12 */
13
14 // Exit if access directly.
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 if ( ! class_exists( 'Give_New_Offline_Donation_Email' ) ) :
20
21 /**
22 * Give_New_Offline_Donation_Email
23 *
24 * @abstract
25 * @since 2.0
26 */
27 class Give_New_Offline_Donation_Email extends Give_Email_Notification {
28 /* @var Give_Payment $payment */
29 public $payment;
30
31 /**
32 * Create a class instance.
33 *
34 * @access public
35 * @since 2.0
36 */
37 public function init() {
38 // Initialize empty payment.
39 $this->payment = new Give_Payment( 0 );
40
41 $this->load(
42 array(
43 'id' => 'new-offline-donation',
44 'label' => __( 'New Offline Donation', 'give' ),
45 'description' => __( 'Sent to designated recipient(s) for a new (pending) offline donation.', 'give' ),
46 'has_recipient_field' => true,
47 'notification_status' => give_is_gateway_active( 'offline' ) ? 'enabled' : 'disabled',
48 'notification_status_editable' => false,
49 'preview_email_tags_values' => array(
50 'payment_method' => esc_html__( 'Offline', 'give' ),
51 ),
52 'default_email_subject' => $this->get_default_email_subject(),
53 'default_email_message' => ( false !== give_get_option( 'new-offline-donation_email_message' ) ) ? give_get_option( 'new-offline-donation_email_message' ) : $this->get_default_email_message(),
54 'default_email_header' => __( 'New Offline Donation!', 'give' ),
55 'notices' => array(
56 'non-notification-status-editable' => sprintf(
57 '%1$s <a href="%2$s">%3$s &raquo;</a>',
58 __( 'This notification is automatically toggled based on whether the gateway is enabled or not.', 'give' ),
59 esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-settings&tab=gateways&section=offline-donations' ) ),
60 __( 'Edit Setting', 'give' )
61 ),
62 ),
63 )
64 );
65
66 add_action( 'give_insert_payment', array( $this, 'setup_email_notification' ) );
67 add_action( 'give_save_settings_give_settings', array( $this, 'set_notification_status' ), 10, 2 );
68 }
69
70 /**
71 * Get default email subject.
72 *
73 * @since 2.0
74 * @access public
75 * @return string
76 */
77 public function get_default_email_subject() {
78 /**
79 * Filter the default subject.
80 * Note: This filter will deprecate soon.
81 *
82 * @since 1.0
83 */
84 $subject = apply_filters(
85 'give_offline_admin_donation_notification_subject',
86 __( 'New Pending Donation', 'give' )
87 );
88
89 /**
90 * Filter the default subject
91 *
92 * @since 2.0
93 */
94 return apply_filters(
95 "give_{$this->config['id']}_get_default_email_subject",
96 $subject,
97 $this
98 );
99 }
100
101
102 /**
103 * Get default email message.
104 *
105 * @since 2.0
106 * @access public
107 *
108 * @return string
109 */
110 public function get_default_email_message() {
111 $message = __( 'Dear Admin,', 'give' ) . "\n\n";
112 $message .= __( 'An offline donation has been made on your website:', 'give' ) . ' ' . get_bloginfo( 'name' ) . ' ';
113 $message .= __( 'Hooray! The donation is in a pending status and is awaiting payment. Donation instructions have been emailed to the donor. Once you receive payment, be sure to mark the donation as complete using the link below.', 'give' ) . "\n\n";
114
115 $message .= '<strong>' . __( 'Donor:', 'give' ) . '</strong> {fullname}' . "\n";
116 $message .= '<strong>' . __( 'Amount:', 'give' ) . '</strong> {amount}' . "\n\n";
117
118 $message .= sprintf(
119 '<a href="%1$s">%2$s</a>',
120 admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&view=view-payment-details&id=' . $this->payment->ID ),
121 __( 'Click Here to View and/or Update Donation Details', 'give' )
122 ) . "\n\n";
123
124 /**
125 * Filter the donation receipt email message
126 * Note: This filter will deprecate soon.
127 *
128 * @since 1.0
129 *
130 * @param string $message
131 */
132 $message = apply_filters(
133 'give_default_new_offline_donation_email',
134 $message,
135 $this->payment->ID
136 );
137
138 /**
139 * Filter the default message
140 *
141 * @since 2.0
142 */
143 return apply_filters(
144 "give_{$this->config['id']}_get_default_email_message",
145 $message,
146 $this
147 );
148 }
149
150
151 /**
152 * Get message
153 *
154 * @since 2.0
155 *
156 * @param int $form_id
157 *
158 * @return string
159 */
160 public function get_email_message( $form_id = null ) {
161 $message = Give_Email_Notification_Util::get_value(
162 $this,
163 Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_message',
164 $form_id,
165 $this->config['default_email_message']
166 );
167
168 /**
169 * Filter the email message.
170 * Note: This filter will deprecate soon.
171 *
172 * @since 1.0
173 */
174 $message = apply_filters(
175 'give_offline_admin_donation_notification',
176 $message,
177 $this->payment->ID
178 );
179
180 /**
181 * Filter the email message
182 *
183 * @since 2.0
184 */
185 return apply_filters(
186 "give_{$this->config['id']}_get_email_message",
187 $message,
188 $this,
189 $form_id
190 );
191 }
192
193
194 /**
195 * Get attachments.
196 *
197 * @since 2.0
198 *
199 * @param int $form_id
200 *
201 * @return array
202 */
203 public function get_email_attachments( $form_id = null ) {
204 /**
205 * Filter the attachments.
206 * Note: This filter will deprecate soon.
207 *
208 * @since 1.0
209 */
210 $attachment = apply_filters(
211 'give_offline_admin_donation_notification_attachments',
212 array(),
213 $this->payment->ID
214 );
215
216 /**
217 * Filter the attachments.
218 *
219 * @since 2.0
220 */
221 return apply_filters(
222 "give_{$this->config['id']}_get_email_attachments",
223 $attachment,
224 $this
225 );
226 }
227
228
229 /**
230 * Set email data.
231 *
232 * @since 2.0
233 */
234 public function setup_email_data() {
235 // Set header.
236 Give()->emails->__set(
237 'headers',
238 apply_filters(
239 'give_offline_admin_donation_notification_headers',
240 Give()->emails->get_headers(),
241 $this->payment->ID
242 )
243 );
244 }
245
246 /**
247 * Setup email notification.
248 *
249 * @since 2.0
250 * @access public
251 *
252 * @param int $payment_id
253 */
254 public function setup_email_notification( $payment_id ) {
255 $this->payment = new Give_Payment( $payment_id );
256
257 if ( ! $this->payment->ID ) {
258 wp_die(
259 esc_html__( 'Cheatin&#8217; uh?', 'give' ),
260 esc_html__( 'Error', 'give' ),
261 array(
262 'response' => 400,
263 )
264 );
265 }
266
267 // Exit if not donation was not with offline donation.
268 if ( 'offline' !== $this->payment->gateway ) {
269 return;
270 }
271
272 // Set email data.
273 $this->setup_email_data();
274
275 // Send email.
276 $this->send_email_notification(
277 array(
278 'payment_id' => $this->payment->ID,
279 )
280 );
281 }
282
283 /**
284 * Set notification status
285 *
286 * @since 2.0
287 * @access public
288 *
289 * @param $update_options
290 * @param $option_name
291 */
292 public function set_notification_status( $update_options, $option_name ) {
293 // Get updated settings.
294 $update_options = give_get_settings();
295
296 $notification_status = isset( $update_options['gateways']['offline'] ) ? 'enabled' : 'disabled';
297
298 if (
299 empty( $update_options[ "{$this->config['id']}_notification" ] )
300 || $notification_status !== $update_options[ "{$this->config['id']}_notification" ]
301 ) {
302 $update_options[ "{$this->config['id']}_notification" ] = $notification_status;
303 update_option( $option_name, $update_options, false );
304 }
305 }
306
307 /**
308 * Register email settings to form metabox.
309 *
310 * @since 2.0
311 * @access public
312 *
313 * @param array $settings
314 * @param int $form_id
315 *
316 * @return array
317 */
318 public function add_metabox_setting_field( $settings, $form_id ) {
319
320 if ( in_array( 'offline', array_keys( give_get_enabled_payment_gateways( $form_id ) ) ) ) {
321 $settings[] = array(
322 'id' => $this->config['id'],
323 'title' => $this->config['label'],
324 'fields' => $this->get_setting_fields( $form_id ),
325 );
326 }
327
328 return $settings;
329 }
330 }
331
332 endif; // End class_exists check
333
334 return Give_New_Offline_Donation_Email::get_instance();
335