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-offline-donation-instruction-email.php

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

303 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Offline Donation Instruction 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_Offline_Donation_Instruction_Email' ) ) :
20
21 /**
22 * Give_Offline_Donation_Instruction_Email
23 *
24 * @abstract
25 * @since 2.0
26 */
27 class Give_Offline_Donation_Instruction_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' => 'offline-donation-instruction',
44 'label' => __( 'Offline Donation Instructions', 'give' ),
45 'description' => __( 'Sent to the donor when they submit an offline donation.', 'give' ),
46 'notification_status' => give_is_gateway_active( 'offline' ) ? 'enabled' : 'disabled',
47 'form_metabox_setting' => true,
48 'notification_status_editable' => false,
49 'preview_email_tag_values' => array(
50 'payment_method' => esc_html__( 'Offline', 'give' ),
51 ),
52 'default_email_subject' => esc_attr__( '{donation} - Offline Donation Instructions', 'give' ),
53 'default_email_message' => give_get_default_offline_donation_email_content(),
54 'default_email_header' => __( 'Offline Donation Instructions', '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 email message
72 *
73 * @since 2.0
74 *
75 * @param int $form_id
76 *
77 * @return string
78 */
79 public function get_email_message( $form_id = null ) {
80 $message = Give_Email_Notification_Util::get_value(
81 $this,
82 Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_message',
83 $form_id,
84 $this->config['default_email_message']
85 );
86
87 /**
88 * Filter the email message.
89 *
90 * @since 2.0
91 */
92 $message = apply_filters(
93 "give_{$this->config['id']}_get_email_message",
94 $message,
95 $this,
96 $form_id
97 );
98
99 return $message;
100 }
101
102 /**
103 * Get email message
104 *
105 * @since 2.0
106 *
107 * @param int $form_id
108 *
109 * @return string
110 */
111 public function get_email_subject( $form_id = null ) {
112 $subject = wp_strip_all_tags(
113 Give_Email_Notification_Util::get_value(
114 $this,
115 Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_subject',
116 $form_id,
117 $this->config['default_email_subject']
118 )
119 );
120
121 /**
122 * Filter the email subject.
123 *
124 * @since 2.0
125 */
126 $subject = apply_filters(
127 "give_{$this->config['id']}_get_email_subject",
128 $subject,
129 $this,
130 $form_id
131 );
132
133 return $subject;
134 }
135
136 /**
137 * Get attachments.
138 *
139 * @since 2.0
140 *
141 * @param int $form_id
142 * @return array
143 */
144 public function get_email_attachments( $form_id = null ) {
145 /**
146 * Filter the attachments.
147 * Note: This filter will deprecate soon.
148 *
149 * @since 1.0
150 */
151 $attachment = apply_filters(
152 'give_offline_donation_attachments',
153 array(),
154 $this->payment->ID,
155 $this->payment->payment_meta
156 );
157
158 /**
159 * Filter the email attachment.
160 *
161 * @since 2.0
162 */
163 $attachment = apply_filters(
164 "give_{$this->config['id']}_get_email_attachment",
165 $attachment,
166 $this,
167 $form_id
168 );
169
170 return $attachment;
171 }
172
173
174 /**
175 * Set email data.
176 *
177 * @since 2.0
178 */
179 public function setup_email_data() {
180 // Set recipient email.
181 $this->recipient_email = $this->payment->email;
182
183 /**
184 * Filters the from name.
185 *
186 * @since 1.7
187 */
188 $from_name = apply_filters(
189 'give_donation_from_name',
190 Give()->emails->get_from_name(),
191 $this->payment->ID,
192 $this->payment->payment_meta
193 );
194
195 /**
196 * Filters the from email.
197 *
198 * @since 1.7
199 */
200 $from_email = apply_filters(
201 'give_donation_from_address',
202 Give()->emails->get_from_address(),
203 $this->payment->ID,
204 $this->payment->payment_meta
205 );
206
207 Give()->emails->__set( 'from_name', $from_name );
208 Give()->emails->__set( 'from_email', $from_email );
209 Give()->emails->__set( 'headers', apply_filters( 'give_receipt_headers', Give()->emails->get_headers(), $this->payment->ID, $this->payment->payment_meta ) );
210 }
211
212 /**
213 * Setup email notification.
214 *
215 * @since 4.18.0 Check the gateway from meta before loading the legacy payment object.
216 * @since 2.0
217 * @access public
218 *
219 * @param int $payment_id
220 */
221 public function setup_email_notification( $payment_id ) {
222 // Exit if not donation was not with offline donation. Checked from meta first so every
223 // non-offline donation does not pay for building a Give_Payment on insert.
224 if ( 'offline' !== give_get_payment_gateway( $payment_id ) ) {
225 return;
226 }
227
228 $this->payment = new Give_Payment( $payment_id );
229
230 if ( ! $this->payment->ID ) {
231 wp_die(
232 esc_html__( 'Cheatin&#8217; uh?', 'give' ),
233 esc_html__( 'Error', 'give' ),
234 array(
235 'response' => 400,
236 )
237 );
238 }
239
240 // Set email data.
241 $this->setup_email_data();
242
243 // Send email.
244 $this->send_email_notification(
245 array(
246 'payment_id' => $this->payment->ID,
247 )
248 );
249 }
250
251 /**
252 * Set notification status
253 *
254 * @since 2.0
255 * @access public
256 *
257 * @param $update_options
258 * @param $option_name
259 */
260 public function set_notification_status( $update_options, $option_name ) {
261 // Get updated settings.
262 $update_options = give_get_settings();
263
264 $notification_status = isset( $update_options['gateways']['offline'] ) ? 'enabled' : 'disabled';
265
266 if (
267 empty( $update_options[ "{$this->config['id']}_notification" ] )
268 || $notification_status !== $update_options[ "{$this->config['id']}_notification" ]
269 ) {
270 $update_options[ "{$this->config['id']}_notification" ] = $notification_status;
271 update_option( $option_name, $update_options, false );
272 }
273 }
274
275
276 /**
277 * Register email settings to form metabox.
278 *
279 * @since 2.0
280 * @access public
281 *
282 * @param array $settings
283 * @param int $form_id
284 *
285 * @return array
286 */
287 public function add_metabox_setting_field( $settings, $form_id ) {
288 if ( in_array( 'offline', array_keys( give_get_enabled_payment_gateways( $form_id ) ) ) ) {
289 $settings[] = array(
290 'id' => $this->config['id'],
291 'title' => $this->config['label'],
292 'fields' => $this->get_setting_fields( $form_id ),
293 );
294 }
295
296 return $settings;
297 }
298 }
299
300 endif; // End class_exists check
301
302 return Give_Offline_Donation_Instruction_Email::get_instance();
303