Completed
Push — release/2.0 ( 9c875b...4d845f )
by Ravinder
19:03
created

Give_New_Donation_Email   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 226
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 0
loc 226
rs 10
c 0
b 0
f 0
wmc 6
lcom 1
cbo 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 18 1
B get_email_subject() 0 27 1
B get_email_message() 0 35 1
B get_email_attachments() 0 30 1
B setup_email_data() 0 44 1
A setup_email_notification() 0 11 1
1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 28 and the first side effect is on line 17.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
/**
3
 * New Donation Email
4
 *
5
 * Donation Notification will be sent to recipient(s) when new donation received except offline donation.
6
 *
7
 *
8
 * @package     Give
9
 * @subpackage  Classes/Emails
10
 * @copyright   Copyright (c) 2016, WordImpress
11
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
12
 * @since       2.0
13
 */
14
15
// Exit if access directly.
16
if ( ! defined( 'ABSPATH' ) ) {
17
	exit;
18
}
19
20
if ( ! class_exists( 'Give_New_Donation_Email' ) ) :
21
22
	/**
23
	 * Give_New_Donation_Email
24
	 *
25
	 * @abstract
26
	 * @since       2.0
27
	 */
28
	class Give_New_Donation_Email extends Give_Email_Notification {
29
		/* @var Give_Payment $payment */
30
		public $payment;
31
32
		/**
33
		 * Create a class instance.
34
		 *
35
		 * @access  public
36
		 * @since   2.0
37
		 */
38
		public function init() {
39
			// Initialize empty payment.
40
			$this->payment = new Give_Payment( 0 );
41
42
			$this->load( array(
43
				'id'                    => 'new-donation',
44
				'label'                 => __( 'New Donation', 'give' ),
45
				'description'           => __( 'Donation Notification will be sent to recipient(s) when new donation received except offline donation.', 'give' ),
46
				'has_recipient_field'   => true,
47
				'notification_status'   => 'enabled',
48
				'form_metabox_setting'  => true,
49
				'default_email_subject' => esc_attr__( 'New Donation - #{payment_id}', 'give' ),
50
				'default_email_message' => give_get_default_donation_notification_email(),
51
52
			) );
53
54
			add_action( "give_{$this->config['id']}_email_notification", array( $this, 'setup_email_notification' ) );
55
		}
56
57
58
		/**
59
		 * Get email subject.
60
		 *
61
		 * @since  2.0
62
		 * @access public
63
		 *
64
		 * @param int $form_id
65
		 *
66
		 * @return string
67
		 */
68
		public function get_email_subject( $form_id = null ) {
69
			$subject = wp_strip_all_tags(
70
				Give_Email_Notification_Util::get_value(
71
					$this,
72
					Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_subject',
73
					$form_id,
74
					$this->config['default_email_subject']
75
				)
76
			);
77
78
			/**
79
			 * Filters the donation notification subject.
80
			 * Note: This filter will deprecate soon.
81
			 *
82
			 * @since 1.0
83
			 */
84
			$subject = apply_filters( 'give_admin_donation_notification_subject', $subject, $this->payment->ID );
85
86
			/**
87
			 * Filters the donation notification subject.
88
			 *
89
			 * @since 2.0
90
			 */
91
			$subject = apply_filters( "give_{$this->config['id']}_get_email_subject", $subject, $this, $form_id );
92
93
			return $subject;
94
		}
95
96
97
		/**
98
		 * Get email attachment.
99
		 *
100
		 * @since  2.0
101
		 * @access public
102
		 *
103
		 * @param int $form_id
104
		 *
105
		 * @return string
106
		 */
107
		public function get_email_message( $form_id = null ) {
108
			$message = Give_Email_Notification_Util::get_value(
109
				$this,
110
				Give_Email_Setting_Field::get_prefix( $this, $form_id ) . 'email_message',
111
				$form_id,
112
				$this->config['default_email_message']
113
			);
114
115
			/**
116
			 * Filter the email message
117
			 * Note: This filter will deprecate soon.
118
			 *
119
			 * @since 1.0
120
			 */
121
			$message = apply_filters(
122
				'give_donation_notification',
123
				$message,
124
				$this->payment->ID,
125
				$this->payment->payment_meta
126
			);
127
128
			/**
129
			 * Filter the email message
130
			 *
131
			 * @since 2.0
132
			 */
133
			$message = apply_filters(
134
				"give_{$this->config['id']}_get_default_email_message",
135
				$message,
136
				$this,
137
				$form_id
138
			);
139
140
			return $message;
141
		}
142
143
144
		/**
145
		 * Get email attachment.
146
		 *
147
		 * @since  2.0
148
		 * @access public
149
		 *
150
		 * @param int $form_id
151
		 * @return array
152
		 */
153
		public function get_email_attachments( $form_id = null ) {
154
			/**
155
			 * Filters the donation notification email attachments.
156
			 * By default, there is no attachment but plugins can hook in to provide one more multiple.
157
			 * Note: This filter will deprecate soon.
158
			 *
159
			 * @since 1.0
160
			 */
161
			$attachments = apply_filters(
162
				'give_admin_donation_notification_attachments',
163
				array(),
164
				$this->payment->ID,
165
				$this->payment->payment_meta
166
			);
167
168
			/**
169
			 * Filters the donation notification email attachments.
170
			 * By default, there is no attachment but plugins can hook in to provide one more multiple.
171
			 *
172
			 * @since 2.0
173
			 */
174
			$attachments = apply_filters(
175
				"give_{$this->config['id']}_get_email_attachments",
176
				$attachments,
177
				$this,
178
				$form_id
179
			);
180
181
			return $attachments;
182
		}
183
184
		/**
185
		 * Set email data
186
		 *
187
		 * @since 2.0
188
		 */
189
		public function setup_email_data() {
190
			/**
191
			 * Filters the from name.
192
			 * Note: This filter will deprecate soon.
193
			 *
194
			 * @since 1.0
195
			 */
196
			$from_name = apply_filters(
197
				'give_donation_from_name',
198
				Give()->emails->get_from_name(),
199
				$this->payment->ID,
200
				$this->payment->payment_meta
201
			);
202
203
			/**
204
			 * Filters the from email.
205
			 * Note: This filter will deprecate soon.
206
			 *
207
			 * @since 1.0
208
			 */
209
			$from_email = apply_filters(
210
				'give_donation_from_address',
211
				Give()->emails->get_from_address(),
212
				$this->payment->ID,
213
				$this->payment->payment_meta
214
			);
215
216
			Give()->emails->__set( 'from_name', $from_name );
217
			Give()->emails->__set( 'from_email', $from_email );
218
			Give()->emails->__set( 'heading', esc_html__( 'New Donation!', 'give' ) );
219
			/**
220
			 * Filters the donation notification email headers.
221
			 *
222
			 * @since 1.0
223
			 */
224
			$headers = apply_filters(
225
				'give_admin_donation_notification_headers',
226
				Give()->emails->get_headers(),
227
				$this->payment->ID,
228
				$this->payment->payment_meta
229
			);
230
231
			Give()->emails->__set( 'headers', $headers );
232
		}
233
234
		/**
235
		 * Setup email notification.
236
		 *
237
		 * @since  2.0
238
		 * @access public
239
		 *
240
		 * @param int $payment_id
241
		 */
242
		public function setup_email_notification( $payment_id ) {
243
			$this->payment = new Give_Payment( $payment_id );
244
245
			// Set email data.
246
			$this->setup_email_data();
247
248
			// Send email.
249
			$this->send_email_notification( array(
250
				'payment_id' => $payment_id,
251
			) );
252
		}
253
	}
254
255
endif; // End class_exists check
256
257
return Give_New_Donation_Email::get_instance();
258