This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * Email Notification Util |
||
4 | * |
||
5 | * This class contains helper functions for email notification. |
||
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 | |||
20 | class Give_Email_Notification_Util { |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
21 | /** |
||
22 | * Instance. |
||
23 | * |
||
24 | * @since 2.0 |
||
25 | * @access static |
||
26 | * @var |
||
27 | */ |
||
28 | static private $instance; |
||
29 | |||
30 | /** |
||
31 | * Singleton pattern. |
||
32 | * |
||
33 | * @since 2.0 |
||
34 | * @access private |
||
35 | * Give_Email_Notification_Util constructor. |
||
36 | */ |
||
37 | private function __construct() { |
||
38 | } |
||
39 | |||
40 | |||
41 | /** |
||
42 | * Get instance. |
||
43 | * |
||
44 | * @since 2.0 |
||
45 | * @access static |
||
46 | * @return static |
||
47 | */ |
||
48 | static function get_instance() { |
||
0 ignored issues
–
show
|
|||
49 | if ( null === static::$instance ) { |
||
50 | self::$instance = new static(); |
||
51 | } |
||
52 | |||
53 | return self::$instance; |
||
54 | } |
||
55 | |||
56 | |||
57 | /** |
||
58 | * Check if notification has preview field or not. |
||
59 | * |
||
60 | * @since 2.0 |
||
61 | * @access public |
||
62 | * |
||
63 | * @param Give_Email_Notification $email |
||
64 | * |
||
65 | * @return bool |
||
66 | */ |
||
67 | public static function has_preview( Give_Email_Notification $email ) { |
||
68 | return $email->config['has_preview']; |
||
69 | } |
||
70 | |||
71 | /** |
||
72 | * Check if notification has recipient field or not. |
||
73 | * |
||
74 | * @since 2.0 |
||
75 | * @access public |
||
76 | * |
||
77 | * @param Give_Email_Notification $email |
||
78 | * |
||
79 | * @return bool |
||
80 | */ |
||
81 | public static function has_recipient_field( Give_Email_Notification $email ) { |
||
82 | return $email->config['has_recipient_field']; |
||
83 | } |
||
84 | |||
85 | /** |
||
86 | * Check if admin can edit notification status or not. |
||
87 | * |
||
88 | * @since 2.0 |
||
89 | * @access public |
||
90 | * |
||
91 | * @param Give_Email_Notification $email |
||
92 | * |
||
93 | * @return bool |
||
94 | */ |
||
95 | public static function is_notification_status_editable( Give_Email_Notification $email ) { |
||
96 | $user_can_edit = $email->config['notification_status_editable']; |
||
97 | |||
98 | return (bool) $user_can_edit; |
||
99 | } |
||
100 | |||
101 | /** |
||
102 | * Check if admin can edit notification status or not. |
||
103 | * |
||
104 | * @since 2.0 |
||
105 | * @access public |
||
106 | * |
||
107 | * @param Give_Email_Notification $email |
||
108 | * |
||
109 | * @return bool |
||
110 | */ |
||
111 | public static function is_content_type_editable( Give_Email_Notification $email ) { |
||
112 | return $email->config['content_type_editable']; |
||
113 | } |
||
114 | |||
115 | /** |
||
116 | * Check email preview header active or not. |
||
117 | * |
||
118 | * @since 2.0 |
||
119 | * @access public |
||
120 | * |
||
121 | * @param Give_Email_Notification $email |
||
122 | * |
||
123 | * @return bool |
||
124 | */ |
||
125 | public static function is_email_preview_has_header( Give_Email_Notification $email ) { |
||
126 | return $email->config['has_preview_header']; |
||
127 | } |
||
128 | |||
129 | /** |
||
130 | * Check email preview header active or not. |
||
131 | * |
||
132 | * @since 2.0 |
||
133 | * @access public |
||
134 | * |
||
135 | * @param Give_Email_Notification $email |
||
136 | * |
||
137 | * @return bool |
||
138 | */ |
||
139 | public static function is_email_preview( Give_Email_Notification $email ) { |
||
140 | return $email->config['has_preview']; |
||
141 | } |
||
142 | |||
143 | /** |
||
144 | * Check if email notification setting appear on emails setting page or not. |
||
145 | * |
||
146 | * @since 2.0 |
||
147 | * @access public |
||
148 | * |
||
149 | * @param Give_Email_Notification $email |
||
150 | * |
||
151 | * @return bool |
||
152 | */ |
||
153 | public static function is_show_on_emails_setting_page( Give_Email_Notification $email ){ |
||
154 | return $email->config['show_on_emails_setting_page']; |
||
155 | } |
||
156 | |||
157 | /** |
||
158 | * Check if we can use form email options. |
||
159 | * |
||
160 | * @since 2.0 |
||
161 | * @access public |
||
162 | * |
||
163 | * @param Give_Email_Notification $email |
||
164 | * @param int $form_id |
||
165 | * |
||
166 | * @return bool |
||
167 | */ |
||
168 | public static function can_use_form_email_options( Give_Email_Notification $email, $form_id = null ){ |
||
0 ignored issues
–
show
|
|||
169 | return give_is_setting_enabled( give_get_meta( $form_id, '_give_email_options', true ) ); |
||
170 | } |
||
171 | |||
172 | /** |
||
173 | * Check email active or not. |
||
174 | * |
||
175 | * @since 2.0 |
||
176 | * @access public |
||
177 | * |
||
178 | * @param Give_Email_Notification $email |
||
179 | * @param int $form_id |
||
180 | * |
||
181 | * @return string |
||
182 | */ |
||
183 | public static function is_email_notification_active( Give_Email_Notification $email, $form_id = null ) { |
||
184 | $notification_status = $email->get_notification_status( $form_id ); |
||
185 | |||
0 ignored issues
–
show
|
|||
186 | |||
187 | $notification_status = empty( $form_id ) |
||
188 | ? give_is_setting_enabled( $notification_status ) |
||
189 | : give_is_setting_enabled( give_get_option( "{$email->config['id']}_notification", $email->config['notification_status'] ) ) && give_is_setting_enabled( $notification_status, array( 'enabled', 'global' ) ); |
||
0 ignored issues
–
show
array('enabled', 'global') is of type array<integer,string,{"0":"string","1":"string"}> , but the function expects a string|null .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
190 | // To check if email notification is active or not on a per-form basis, email notification must be globally active—otherwise it will be considered disabled. |
||
191 | |||
192 | /** |
||
193 | * Filter to modify is email active notification |
||
194 | * |
||
195 | * @since 2.1.3 |
||
196 | * |
||
197 | * @param bool $notification_status True if notification is enable and false when disable |
||
198 | * @param Give_Email_Notification $email Class instances Give_Email_Notification. |
||
199 | * @param int $form_id Donation Form ID. |
||
200 | * |
||
201 | * @param bool $notification_status True if notification is enable and false when disable |
||
202 | */ |
||
203 | return apply_filters( "give_{$email->config['id']}_is_email_notification_active", $notification_status, $email, $form_id ); |
||
204 | } |
||
205 | |||
206 | /** |
||
207 | * Check if admin preview email or not |
||
208 | * |
||
209 | * @since 2.0 |
||
210 | * @access public |
||
211 | * @return bool $is_preview |
||
212 | */ |
||
213 | View Code Duplication | public static function can_preview_email() { |
|
0 ignored issues
–
show
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. ![]() |
|||
214 | $is_preview = false; |
||
215 | |||
216 | if ( |
||
217 | current_user_can( 'manage_give_settings' ) |
||
218 | && ! empty( $_GET['give_action'] ) |
||
219 | && 'preview_email' === $_GET['give_action'] |
||
220 | ) { |
||
221 | $is_preview = true; |
||
222 | } |
||
223 | |||
224 | return $is_preview; |
||
225 | } |
||
226 | |||
227 | /** |
||
228 | * Check if admin preview email or not |
||
229 | * |
||
230 | * @since 2.0 |
||
231 | * @access public |
||
232 | * @return bool $is_preview |
||
233 | */ |
||
234 | View Code Duplication | public static function can_send_preview_email() { |
|
0 ignored issues
–
show
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. ![]() |
|||
235 | $is_preview = false; |
||
236 | |||
237 | if ( |
||
238 | current_user_can( 'manage_give_settings' ) |
||
239 | && ! empty( $_GET['give_action'] ) |
||
240 | && 'send_preview_email' === $_GET['give_action'] |
||
241 | ) { |
||
242 | $is_preview = true; |
||
243 | } |
||
244 | |||
245 | return $is_preview; |
||
246 | } |
||
247 | |||
248 | |||
249 | /** |
||
250 | * Get formatted text for email content type. |
||
251 | * |
||
252 | * @since 2.0 |
||
253 | * @access public |
||
254 | * |
||
255 | * @param string $content_type |
||
256 | * |
||
257 | * @return string |
||
258 | */ |
||
259 | public static function get_formatted_email_type( $content_type ) { |
||
260 | $email_contents = array( |
||
261 | 'text/html' => __( 'HTML', 'give' ), |
||
262 | 'text/plain' => __( 'Plain', 'give' ), |
||
263 | ); |
||
264 | |||
265 | return $email_contents[ $content_type ]; |
||
266 | } |
||
267 | |||
268 | |||
269 | /** |
||
270 | * Get email notification option value. |
||
271 | * |
||
272 | * @since 2.0 |
||
273 | * @access public |
||
274 | * |
||
275 | * @param Give_Email_Notification $email |
||
276 | * @param string $option_name |
||
277 | * @param int $form_id |
||
278 | * @param mixed $default |
||
279 | * |
||
280 | * @return mixed |
||
281 | */ |
||
282 | public static function get_value( Give_Email_Notification $email, $option_name, $form_id = null, $default = false ) { |
||
283 | // If form id set then option name can be contain _give_ prefix which is only used for meta key, |
||
284 | // So make sure you are using correct option name. |
||
285 | $global_option_name = ( 0 === strpos( $option_name, '_give_' ) |
||
286 | ? str_replace( '_give_', '', $option_name ) |
||
287 | : $option_name ); |
||
288 | $option_value = give_get_option( $global_option_name, $default ); |
||
289 | |||
290 | if ( |
||
291 | ! empty( $form_id ) |
||
292 | && give_is_setting_enabled( |
||
293 | give_get_meta( |
||
294 | $form_id, |
||
295 | Give_Email_Setting_Field::get_prefix( $email, $form_id ) . 'notification', |
||
296 | true, |
||
297 | 'global' |
||
0 ignored issues
–
show
'global' is of type string , but the function expects a boolean .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
298 | ) |
||
299 | ) |
||
300 | ) { |
||
301 | $option_value = get_post_meta( $form_id, $option_name, true ); |
||
302 | |||
303 | // Get only email field value from recipients setting. |
||
304 | if( Give_Email_Setting_Field::get_prefix( $email, $form_id ) . 'recipient' === $option_name ) { |
||
0 ignored issues
–
show
|
|||
305 | $option_value = wp_list_pluck( $option_value, 'email' ); |
||
306 | } |
||
307 | } |
||
308 | |||
309 | $option_value = empty( $option_value ) ? $default : $option_value; |
||
310 | |||
311 | /** |
||
312 | * Filter the setting value |
||
313 | * |
||
314 | * @since 2.0 |
||
315 | */ |
||
316 | return apply_filters( 'give_email_setting_value', $option_value, $option_name, $email, $form_id, $default ); |
||
317 | } |
||
318 | |||
319 | |||
320 | /** |
||
321 | * Get email logo. |
||
322 | * |
||
323 | * @since 2.1.5 |
||
324 | * |
||
325 | * @access public |
||
326 | * |
||
327 | * @param integer $form_id FOrm ID. |
||
328 | * |
||
329 | * @return string |
||
330 | */ |
||
331 | public static function get_email_logo( $form_id ) { |
||
332 | |||
333 | // Email logo tag. |
||
334 | $header_img = $form_id && give_is_setting_enabled( give_get_meta( $form_id, '_give_email_options', true ) ) |
||
335 | ? give_get_meta( $form_id, '_give_email_logo', true ) |
||
336 | : give_get_option( 'email_logo', '' ); |
||
337 | |||
338 | return $header_img; |
||
339 | } |
||
340 | } |
||
341 |