PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 257 releases
give / includes / admin / emails / class-new-offline-donation-email.php

class-new-offline-donation-email.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at includes/admin/emails/class-new-offline-donation-email.php

337 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 4.18.0 Check the gateway from meta before loading the legacy payment object.
250 * @since 2.0
251 * @access public
252 *
253 * @param int $payment_id
254 */
255 public function setup_email_notification( $payment_id ) {
256 // Exit if not donation was not with offline donation. Checked from meta first so every
257 // non-offline donation does not pay for building a Give_Payment on insert.
258 if ( 'offline' !== give_get_payment_gateway( $payment_id ) ) {
259 return;
260 }
261
262 $this->payment = new Give_Payment( $payment_id );
263
264 if ( ! $this->payment->ID ) {
265 wp_die(
266 esc_html__( 'Cheatin&#8217; uh?', 'give' ),
267 esc_html__( 'Error', 'give' ),
268 array(
269 'response' => 400,
270 )
271 );
272 }
273
274 // Set email data.
275 $this->setup_email_data();
276
277 // Send email.
278 $this->send_email_notification(
279 array(
280 'payment_id' => $this->payment->ID,
281 )
282 );
283 }
284
285 /**
286 * Set notification status
287 *
288 * @since 2.0
289 * @access public
290 *
291 * @param $update_options
292 * @param $option_name
293 */
294 public function set_notification_status( $update_options, $option_name ) {
295 // Get updated settings.
296 $update_options = give_get_settings();
297
298 $notification_status = isset( $update_options['gateways']['offline'] ) ? 'enabled' : 'disabled';
299
300 if (
301 empty( $update_options[ "{$this->config['id']}_notification" ] )
302 || $notification_status !== $update_options[ "{$this->config['id']}_notification" ]
303 ) {
304 $update_options[ "{$this->config['id']}_notification" ] = $notification_status;
305 update_option( $option_name, $update_options, false );
306 }
307 }
308
309 /**
310 * Register email settings to form metabox.
311 *
312 * @since 2.0
313 * @access public
314 *
315 * @param array $settings
316 * @param int $form_id
317 *
318 * @return array
319 */
320 public function add_metabox_setting_field( $settings, $form_id ) {
321
322 if ( in_array( 'offline', array_keys( give_get_enabled_payment_gateways( $form_id ) ) ) ) {
323 $settings[] = array(
324 'id' => $this->config['id'],
325 'title' => $this->config['label'],
326 'fields' => $this->get_setting_fields( $form_id ),
327 );
328 }
329
330 return $settings;
331 }
332 }
333
334 endif; // End class_exists check
335
336 return Give_New_Offline_Donation_Email::get_instance();
337