Test Failed
Pull Request — master (#2668)
by Devin
06:41
created

Give_New_Donation_Email   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 226
Duplicated Lines 40.71 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 92
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() 27 27 1
B get_email_message() 35 35 1
B get_email_attachments() 30 30 1
B setup_email_data() 0 44 1
A setup_email_notification() 0 11 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
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'           => __( 'Sent to designated recipient(s) when a new donation is received or a pending donation is marked as complete.', '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 View Code Duplication
		public function get_email_subject( $form_id = null ) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
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 View Code Duplication
		public function get_email_message( $form_id = null ) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
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 View Code Duplication
		public function get_email_attachments( $form_id = null ) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
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