Completed
Branch new-admin-design (7f58b2)
by
unknown
02:54
created
messages/validators/html/EE_Messages_Html_Invoice_Validator.class.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -16,21 +16,21 @@
 block discarded – undo
16 16
 class EE_Messages_Html_Invoice_Validator extends EE_Messages_Validator
17 17
 {
18 18
 
19
-    public function __construct($fields, $context)
20
-    {
21
-        $this->_m_name = 'html';
22
-        $this->_mt_name = 'invoice';
19
+	public function __construct($fields, $context)
20
+	{
21
+		$this->_m_name = 'html';
22
+		$this->_mt_name = 'invoice';
23 23
 
24
-        parent::__construct($fields, $context);
25
-    }
24
+		parent::__construct($fields, $context);
25
+	}
26 26
 
27
-    /**
28
-     * custom validator (restricting what was originally set by the messenger).
29
-     * Note nothing is currently done for this messenger and message type.
30
-     */
31
-    protected function _modify_validator()
32
-    {
33
-        $this->_specific_shortcode_excludes['content'] = array('[DISPLAY_HTML_URL]');
34
-        return;
35
-    }
27
+	/**
28
+	 * custom validator (restricting what was originally set by the messenger).
29
+	 * Note nothing is currently done for this messenger and message type.
30
+	 */
31
+	protected function _modify_validator()
32
+	{
33
+		$this->_specific_shortcode_excludes['content'] = array('[DISPLAY_HTML_URL]');
34
+		return;
35
+	}
36 36
 }
Please login to merge, or discard this patch.
messages/validators/html/EE_Messages_Html_Receipt_Validator.class.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -16,21 +16,21 @@
 block discarded – undo
16 16
 class EE_Messages_Html_Receipt_Validator extends EE_Messages_Validator
17 17
 {
18 18
 
19
-    public function __construct($fields, $context)
20
-    {
21
-        $this->_m_name = 'html';
22
-        $this->_mt_name = 'receipt';
19
+	public function __construct($fields, $context)
20
+	{
21
+		$this->_m_name = 'html';
22
+		$this->_mt_name = 'receipt';
23 23
 
24
-        parent::__construct($fields, $context);
25
-    }
24
+		parent::__construct($fields, $context);
25
+	}
26 26
 
27
-    /**
28
-     * custom validator (restricting what was originally set by the messenger).
29
-     * Note nothing is currently done for this messenger and message type.
30
-     */
31
-    protected function _modify_validator()
32
-    {
33
-        $this->_specific_shortcode_excludes['content'] = array('[DISPLAY_HTML_URL]');
34
-        return;
35
-    }
27
+	/**
28
+	 * custom validator (restricting what was originally set by the messenger).
29
+	 * Note nothing is currently done for this messenger and message type.
30
+	 */
31
+	protected function _modify_validator()
32
+	{
33
+		$this->_specific_shortcode_excludes['content'] = array('[DISPLAY_HTML_URL]');
34
+		return;
35
+	}
36 36
 }
Please login to merge, or discard this patch.
core/libraries/messages/messenger/EE_Email_messenger.class.php 2 patches
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
             ),
57 57
             '<code>wp_mail</code>'
58 58
         );
59
-        $this->label               = array(
59
+        $this->label = array(
60 60
             'singular' => esc_html__('email', 'event_espresso'),
61 61
             'plural'   => esc_html__('emails', 'event_espresso'),
62 62
         );
@@ -438,7 +438,7 @@  discard block
 block discarded – undo
438 438
             $this->_body(),
439 439
             $this->_headers()
440 440
         );
441
-        if (! $success) {
441
+        if ( ! $success) {
442 442
             EE_Error::add_error(
443 443
                 sprintf(
444 444
                     esc_html__(
@@ -482,8 +482,8 @@  discard block
 block discarded – undo
482 482
         $this->_ensure_has_from_email_address();
483 483
         $from    = $this->_from;
484 484
         $headers = array(
485
-            'From:' . $from,
486
-            'Reply-To:' . $from,
485
+            'From:'.$from,
486
+            'Reply-To:'.$from,
487 487
             'Content-Type:text/html; charset=utf-8',
488 488
         );
489 489
 
@@ -492,8 +492,8 @@  discard block
 block discarded – undo
492 492
          * cover back compat where there may be users who have saved cc values in their db for the newsletter message
493 493
          * type which they are no longer able to change.
494 494
          */
495
-        if (! empty($this->_cc) && ! $this->_incoming_message_type instanceof EE_Newsletter_message_type) {
496
-            $headers[] = 'cc: ' . $this->_cc;
495
+        if ( ! empty($this->_cc) && ! $this->_incoming_message_type instanceof EE_Newsletter_message_type) {
496
+            $headers[] = 'cc: '.$this->_cc;
497 497
         }
498 498
 
499 499
         // but wait!  Header's for the from is NOT reliable because some plugins don't respect From: as set in the
@@ -600,7 +600,7 @@  discard block
 block discarded – undo
600 600
             'from'      => $this->_from,
601 601
             'main_body' => wpautop($this->_content),
602 602
         );
603
-        $body                 = $this->_get_main_template($preview);
603
+        $body = $this->_get_main_template($preview);
604 604
 
605 605
         /**
606 606
          * This filter allows one to bypass the CSSToInlineStyles tool and leave the body untouched.
@@ -610,10 +610,10 @@  discard block
 block discarded – undo
610 610
          */
611 611
         if (apply_filters('FHEE__EE_Email_messenger__apply_CSSInliner ', true, $preview)) {
612 612
             // require CssToInlineStyles library and its dependencies via composer autoloader
613
-            require_once EE_THIRD_PARTY . 'cssinliner/vendor/autoload.php';
613
+            require_once EE_THIRD_PARTY.'cssinliner/vendor/autoload.php';
614 614
 
615 615
             // now if this isn't a preview, let's setup the body so it has inline styles
616
-            if (! $preview || ($preview && defined('DOING_AJAX'))) {
616
+            if ( ! $preview || ($preview && defined('DOING_AJAX'))) {
617 617
                 $style = file_get_contents(
618 618
                     $this->get_variation(
619 619
                         $this->_tmp_pack,
Please login to merge, or discard this patch.
Indentation   +644 added lines, -644 removed lines patch added patch discarded remove patch
@@ -6,648 +6,648 @@
 block discarded – undo
6 6
 class EE_Email_messenger extends EE_messenger
7 7
 {
8 8
 
9
-    /**
10
-     * To field for email
11
-     * @var string
12
-     */
13
-    protected $_to = '';
14
-
15
-
16
-    /**
17
-     * CC field for email.
18
-     * @var string
19
-     */
20
-    protected $_cc = '';
21
-
22
-    /**
23
-     * From field for email
24
-     * @var string
25
-     */
26
-    protected $_from = '';
27
-
28
-
29
-    /**
30
-     * Subject field for email
31
-     * @var string
32
-     */
33
-    protected $_subject = '';
34
-
35
-
36
-    /**
37
-     * Content field for email
38
-     * @var string
39
-     */
40
-    protected $_content = '';
41
-
42
-
43
-    /**
44
-     * constructor
45
-     *
46
-     * @access public
47
-     */
48
-    public function __construct()
49
-    {
50
-        // set name and description properties
51
-        $this->name                = 'email';
52
-        $this->description         = sprintf(
53
-            esc_html__(
54
-                'This messenger delivers messages via email using the built-in %s function included with WordPress',
55
-                'event_espresso'
56
-            ),
57
-            '<code>wp_mail</code>'
58
-        );
59
-        $this->label               = array(
60
-            'singular' => esc_html__('email', 'event_espresso'),
61
-            'plural'   => esc_html__('emails', 'event_espresso'),
62
-        );
63
-        $this->activate_on_install = true;
64
-
65
-        // we're using defaults so let's call parent constructor that will take care of setting up all the other
66
-        // properties
67
-        parent::__construct();
68
-    }
69
-
70
-
71
-    /**
72
-     * see abstract declaration in parent class for details.
73
-     */
74
-    protected function _set_admin_pages()
75
-    {
76
-        $this->admin_registered_pages = array(
77
-            'events_edit' => true,
78
-        );
79
-    }
80
-
81
-
82
-    /**
83
-     * see abstract declaration in parent class for details
84
-     */
85
-    protected function _set_valid_shortcodes()
86
-    {
87
-        // remember by leaving the other fields not set, those fields will inherit the valid shortcodes from the
88
-        // message type.
89
-        $this->_valid_shortcodes = array(
90
-            'to'   => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
91
-            'cc' => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
92
-            'from' => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
93
-        );
94
-    }
95
-
96
-
97
-    /**
98
-     * see abstract declaration in parent class for details
99
-     *
100
-     * @access protected
101
-     * @return void
102
-     */
103
-    protected function _set_validator_config()
104
-    {
105
-        $valid_shortcodes = $this->get_valid_shortcodes();
106
-
107
-        $this->_validator_config = array(
108
-            'to'            => array(
109
-                'shortcodes' => $valid_shortcodes['to'],
110
-                'type'       => 'email',
111
-            ),
112
-            'cc' => array(
113
-                'shortcodes' => $valid_shortcodes['to'],
114
-                'type' => 'email',
115
-            ),
116
-            'from'          => array(
117
-                'shortcodes' => $valid_shortcodes['from'],
118
-                'type'       => 'email',
119
-            ),
120
-            'subject'       => array(
121
-                'shortcodes' => array(
122
-                    'organization',
123
-                    'primary_registration_details',
124
-                    'event_author',
125
-                    'primary_registration_details',
126
-                    'recipient_details',
127
-                ),
128
-            ),
129
-            'content'       => array(
130
-                'shortcodes' => array(
131
-                    'event_list',
132
-                    'attendee_list',
133
-                    'ticket_list',
134
-                    'organization',
135
-                    'primary_registration_details',
136
-                    'primary_registration_list',
137
-                    'event_author',
138
-                    'recipient_details',
139
-                    'recipient_list',
140
-                    'transaction',
141
-                    'messenger',
142
-                ),
143
-            ),
144
-            'attendee_list' => array(
145
-                'shortcodes' => array('attendee', 'event_list', 'ticket_list'),
146
-                'required'   => array('[ATTENDEE_LIST]'),
147
-            ),
148
-            'event_list'    => array(
149
-                'shortcodes' => array(
150
-                    'event',
151
-                    'attendee_list',
152
-                    'ticket_list',
153
-                    'venue',
154
-                    'datetime_list',
155
-                    'attendee',
156
-                    'primary_registration_details',
157
-                    'primary_registration_list',
158
-                    'event_author',
159
-                    'recipient_details',
160
-                    'recipient_list',
161
-                ),
162
-                'required'   => array('[EVENT_LIST]'),
163
-            ),
164
-            'ticket_list'   => array(
165
-                'shortcodes' => array(
166
-                    'event_list',
167
-                    'attendee_list',
168
-                    'ticket',
169
-                    'datetime_list',
170
-                    'primary_registration_details',
171
-                    'recipient_details',
172
-                ),
173
-                'required'   => array('[TICKET_LIST]'),
174
-            ),
175
-            'datetime_list' => array(
176
-                'shortcodes' => array('datetime'),
177
-                'required'   => array('[DATETIME_LIST]'),
178
-            ),
179
-        );
180
-    }
181
-
182
-
183
-    /**
184
-     * @see   parent EE_messenger class for docs
185
-     * @since 4.5.0
186
-     */
187
-    public function do_secondary_messenger_hooks($sending_messenger_name)
188
-    {
189
-        if ($sending_messenger_name === 'html') {
190
-            add_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10, 8);
191
-        }
192
-    }
193
-
194
-
195
-    public function add_email_css(
196
-        $variation_path,
197
-        $messenger,
198
-        $message_type,
199
-        $type,
200
-        $variation,
201
-        $file_extension,
202
-        $url,
203
-        EE_Messages_Template_Pack $template_pack
204
-    ) {
205
-        // prevent recursion on this callback.
206
-        remove_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10);
207
-        $variation = $this->get_variation($template_pack, $message_type, $url, 'main', $variation, false);
208
-
209
-        add_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10, 8);
210
-        return $variation;
211
-    }
212
-
213
-
214
-    /**
215
-     * See parent for details
216
-     *
217
-     * @access protected
218
-     * @return void
219
-     */
220
-    protected function _set_test_settings_fields()
221
-    {
222
-        $this->_test_settings_fields = array(
223
-            'to'      => array(
224
-                'input'      => 'text',
225
-                'label'      => esc_html__('Send a test email to', 'event_espresso'),
226
-                'type'       => 'email',
227
-                'required'   => false,
228
-                'validation' => true,
229
-                'css_class'  => 'large-text',
230
-                'format'     => '%s',
231
-                'default'    => get_bloginfo('admin_email'),
232
-            ),
233
-            'subject' => array(
234
-                'input'      => 'hidden',
235
-                'label'      => '',
236
-                'type'       => 'string',
237
-                'required'   => false,
238
-                'validation' => false,
239
-                'format'     => '%s',
240
-                'value'      => sprintf(esc_html__('Test email sent from %s', 'event_espresso'), get_bloginfo('name')),
241
-                'default'    => '',
242
-                'css_class'  => '',
243
-            ),
244
-        );
245
-    }
246
-
247
-
248
-    /**
249
-     * _set_template_fields
250
-     * This sets up the fields that a messenger requires for the message to go out.
251
-     *
252
-     * @access  protected
253
-     * @return void
254
-     */
255
-    protected function _set_template_fields()
256
-    {
257
-        // any extra template fields that are NOT used by the messenger but will get used by a messenger field for
258
-        // shortcode replacement get added to the 'extra' key in an associated array indexed by the messenger field
259
-        // they relate to.  This is important for the Messages_admin to know what fields to display to the user.
260
-        //  Also, notice that the "values" are equal to the field type that messages admin will use to know what
261
-        // kind of field to display. The values ALSO have one index labeled "shortcode".  the values in that array
262
-        // indicate which ACTUAL SHORTCODE (i.e. [SHORTCODE]) is required in order for this extra field to be
263
-        // displayed.  If the required shortcode isn't part of the shortcodes array then the field is not needed and
264
-        // will not be displayed/parsed.
265
-        $this->_template_fields = array(
266
-            'to'      => array(
267
-                'input'      => 'text',
268
-                'label'      => esc_html_x(
269
-                    'To',
270
-                    'Label for the "To" field for email addresses',
271
-                    'event_espresso'
272
-                ),
273
-                'type'       => 'string',
274
-                'required'   => true,
275
-                'validation' => true,
276
-                'css_class'  => 'large-text',
277
-                'format'     => '%s',
278
-            ),
279
-            'cc'      => array(
280
-                'input'      => 'text',
281
-                'label'      => esc_html_x(
282
-                    'CC',
283
-                    'Label for the "Carbon Copy" field used for additional email addresses',
284
-                    'event_espresso'
285
-                ),
286
-                'type'       => 'string',
287
-                'required'   => false,
288
-                'validation' => true,
289
-                'css_class'  => 'large-text',
290
-                'format'     => '%s',
291
-            ),
292
-            'from'    => array(
293
-                'input'      => 'text',
294
-                'label'      => esc_html_x(
295
-                    'From',
296
-                    'Label for the "From" field for email addresses.',
297
-                    'event_espresso'
298
-                ),
299
-                'type'       => 'string',
300
-                'required'   => true,
301
-                'validation' => true,
302
-                'css_class'  => 'large-text',
303
-                'format'     => '%s',
304
-            ),
305
-            'subject' => array(
306
-                'input'      => 'text',
307
-                'label'      => esc_html_x(
308
-                    'Subject',
309
-                    'Label for the "Subject" field (short description of contents) for emails.',
310
-                    'event_espresso'
311
-                ),
312
-                'type'       => 'string',
313
-                'required'   => true,
314
-                'validation' => true,
315
-                'css_class'  => 'large-text',
316
-                'format'     => '%s',
317
-            ),
318
-            'content' => '',
319
-            // left empty b/c it is in the "extra array" but messenger still needs needs to know this is a field.
320
-            'extra'   => array(
321
-                'content' => array(
322
-                    'main'          => array(
323
-                        'input'      => 'wp_editor',
324
-                        'label'      => esc_html__('Main Content', 'event_espresso'),
325
-                        'type'       => 'string',
326
-                        'required'   => true,
327
-                        'validation' => true,
328
-                        'format'     => '%s',
329
-                        'rows'       => '15',
330
-                    ),
331
-                    'event_list'    => array(
332
-                        'input'               => 'wp_editor',
333
-                        'label'               => '[EVENT_LIST]',
334
-                        'type'                => 'string',
335
-                        'required'            => true,
336
-                        'validation'          => true,
337
-                        'format'              => '%s',
338
-                        'rows'                => '15',
339
-                        'shortcodes_required' => array('[EVENT_LIST]'),
340
-                    ),
341
-                    'attendee_list' => array(
342
-                        'input'               => 'textarea',
343
-                        'label'               => '[ATTENDEE_LIST]',
344
-                        'type'                => 'string',
345
-                        'required'            => true,
346
-                        'validation'          => true,
347
-                        'format'              => '%s',
348
-                        'css_class'           => 'large-text',
349
-                        'rows'                => '5',
350
-                        'shortcodes_required' => array('[ATTENDEE_LIST]'),
351
-                    ),
352
-                    'ticket_list'   => array(
353
-                        'input'               => 'textarea',
354
-                        'label'               => '[TICKET_LIST]',
355
-                        'type'                => 'string',
356
-                        'required'            => true,
357
-                        'validation'          => true,
358
-                        'format'              => '%s',
359
-                        'css_class'           => 'large-text',
360
-                        'rows'                => '10',
361
-                        'shortcodes_required' => array('[TICKET_LIST]'),
362
-                    ),
363
-                    'datetime_list' => array(
364
-                        'input'               => 'textarea',
365
-                        'label'               => '[DATETIME_LIST]',
366
-                        'type'                => 'string',
367
-                        'required'            => true,
368
-                        'validation'          => true,
369
-                        'format'              => '%s',
370
-                        'css_class'           => 'large-text',
371
-                        'rows'                => '10',
372
-                        'shortcodes_required' => array('[DATETIME_LIST]'),
373
-                    ),
374
-                ),
375
-            ),
376
-        );
377
-    }
378
-
379
-
380
-    /**
381
-     * See definition of this class in parent
382
-     */
383
-    protected function _set_default_message_types()
384
-    {
385
-        $this->_default_message_types = array(
386
-            'payment',
387
-            'payment_refund',
388
-            'registration',
389
-            'not_approved_registration',
390
-            'pending_approval',
391
-        );
392
-    }
393
-
394
-
395
-    /**
396
-     * @see   definition of this class in parent
397
-     * @since 4.5.0
398
-     */
399
-    protected function _set_valid_message_types()
400
-    {
401
-        $this->_valid_message_types = array(
402
-            'payment',
403
-            'registration',
404
-            'not_approved_registration',
405
-            'declined_registration',
406
-            'cancelled_registration',
407
-            'pending_approval',
408
-            'registration_summary',
409
-            'payment_reminder',
410
-            'payment_declined',
411
-            'payment_refund',
412
-        );
413
-    }
414
-
415
-
416
-    /**
417
-     * setting up admin_settings_fields for messenger.
418
-     */
419
-    protected function _set_admin_settings_fields()
420
-    {
421
-    }
422
-
423
-    /**
424
-     * We just deliver the messages don't kill us!!
425
-     *
426
-     * @return bool|WP_Error true if message delivered, false if it didn't deliver OR bubble up any error object if
427
-     *              present.
428
-     * @throws EE_Error
429
-     * @throws \TijsVerkoyen\CssToInlineStyles\Exception
430
-     */
431
-    protected function _send_message()
432
-    {
433
-        $success = wp_mail(
434
-            $this->_to,
435
-            // some old values for subject may be expecting HTML entities to be decoded in the subject
436
-            // and subjects aren't interpreted as HTML, so there should be no HTML in them
437
-            wp_strip_all_tags(wp_specialchars_decode($this->_subject, ENT_QUOTES)),
438
-            $this->_body(),
439
-            $this->_headers()
440
-        );
441
-        if (! $success) {
442
-            EE_Error::add_error(
443
-                sprintf(
444
-                    esc_html__(
445
-                        'The email did not send successfully.%3$sThe WordPress wp_mail function is used for sending mails but does not give any useful information when an email fails to send.%3$sIt is possible the "to" address (%1$s) or "from" address (%2$s) is invalid.%3$s',
446
-                        'event_espresso'
447
-                    ),
448
-                    $this->_to,
449
-                    $this->_from,
450
-                    '<br />'
451
-                ),
452
-                __FILE__,
453
-                __FUNCTION__,
454
-                __LINE__
455
-            );
456
-        }
457
-        return $success;
458
-    }
459
-
460
-
461
-    /**
462
-     * see parent for definition
463
-     *
464
-     * @return string html body of the message content and the related css.
465
-     * @throws EE_Error
466
-     * @throws \TijsVerkoyen\CssToInlineStyles\Exception
467
-     */
468
-    protected function _preview()
469
-    {
470
-        return $this->_body(true);
471
-    }
472
-
473
-
474
-    /**
475
-     * Setup headers for email
476
-     *
477
-     * @access protected
478
-     * @return string formatted header for email
479
-     */
480
-    protected function _headers()
481
-    {
482
-        $this->_ensure_has_from_email_address();
483
-        $from    = $this->_from;
484
-        $headers = array(
485
-            'From:' . $from,
486
-            'Reply-To:' . $from,
487
-            'Content-Type:text/html; charset=utf-8',
488
-        );
489
-
490
-        /**
491
-         * Second condition added as a result of https://events.codebasehq.com/projects/event-espresso/tickets/11416 to
492
-         * cover back compat where there may be users who have saved cc values in their db for the newsletter message
493
-         * type which they are no longer able to change.
494
-         */
495
-        if (! empty($this->_cc) && ! $this->_incoming_message_type instanceof EE_Newsletter_message_type) {
496
-            $headers[] = 'cc: ' . $this->_cc;
497
-        }
498
-
499
-        // but wait!  Header's for the from is NOT reliable because some plugins don't respect From: as set in the
500
-        // header.
501
-        add_filter('wp_mail_from', array($this, 'set_from_address'), 100);
502
-        add_filter('wp_mail_from_name', array($this, 'set_from_name'), 100);
503
-        return apply_filters('FHEE__EE_Email_messenger___headers', $headers, $this->_incoming_message_type, $this);
504
-    }
505
-
506
-
507
-    /**
508
-     * This simply ensures that the from address is not empty.  If it is, then we use whatever is set as the site email
509
-     * address for the from address to avoid problems with sending emails.
510
-     */
511
-    protected function _ensure_has_from_email_address()
512
-    {
513
-        if (empty($this->_from)) {
514
-            $this->_from = get_bloginfo('admin_email');
515
-        }
516
-    }
517
-
518
-
519
-    /**
520
-     * This simply parses whatever is set as the $_from address and determines if it is in the format {name} <{email}>
521
-     * or just {email} and returns an array with the "from_name" and "from_email" as the values. Note from_name *MAY*
522
-     * be empty
523
-     *
524
-     * @since 4.3.1
525
-     * @return array
526
-     */
527
-    private function _parse_from()
528
-    {
529
-        if (strpos($this->_from, '<') !== false) {
530
-            $from_name = substr($this->_from, 0, strpos($this->_from, '<') - 1);
531
-            $from_name = str_replace('"', '', $from_name);
532
-            $from_name = trim($from_name);
533
-
534
-            $from_email = substr($this->_from, strpos($this->_from, '<') + 1);
535
-            $from_email = str_replace('>', '', $from_email);
536
-            $from_email = trim($from_email);
537
-        } elseif (trim($this->_from) !== '') {
538
-            $from_name  = '';
539
-            $from_email = trim($this->_from);
540
-        } else {
541
-            $from_name = $from_email = '';
542
-        }
543
-        return array($from_name, $from_email);
544
-    }
545
-
546
-
547
-    /**
548
-     * Callback for the wp_mail_from filter.
549
-     *
550
-     * @since 4.3.1
551
-     * @param string $from_email What the original from_email is.
552
-     * @return string
553
-     */
554
-    public function set_from_address($from_email)
555
-    {
556
-        $parsed_from = $this->_parse_from();
557
-        // includes fallback if the parsing failed.
558
-        $from_email = is_array($parsed_from) && ! empty($parsed_from[1])
559
-            ? $parsed_from[1]
560
-            : get_bloginfo('admin_email');
561
-        return $from_email;
562
-    }
563
-
564
-
565
-    /**
566
-     * Callback fro the wp_mail_from_name filter.
567
-     *
568
-     * @since 4.3.1
569
-     * @param string $from_name The original from_name.
570
-     * @return string
571
-     */
572
-    public function set_from_name($from_name)
573
-    {
574
-        $parsed_from = $this->_parse_from();
575
-        if (is_array($parsed_from) && ! empty($parsed_from[0])) {
576
-            $from_name = $parsed_from[0];
577
-        }
578
-
579
-        // if from name is "WordPress" let's sub in the site name instead (more friendly!)
580
-        // but realize the default name is HTML entity-encoded
581
-        $from_name = $from_name == 'WordPress' ? wp_specialchars_decode(get_bloginfo(), ENT_QUOTES) : $from_name;
582
-
583
-        return $from_name;
584
-    }
585
-
586
-
587
-    /**
588
-     * setup body for email
589
-     *
590
-     * @param bool $preview will determine whether this is preview template or not.
591
-     * @return string formatted body for email.
592
-     * @throws EE_Error
593
-     * @throws \TijsVerkoyen\CssToInlineStyles\Exception
594
-     */
595
-    protected function _body($preview = false)
596
-    {
597
-        // setup template args!
598
-        $this->_template_args = array(
599
-            'subject'   => $this->_subject,
600
-            'from'      => $this->_from,
601
-            'main_body' => wpautop($this->_content),
602
-        );
603
-        $body                 = $this->_get_main_template($preview);
604
-
605
-        /**
606
-         * This filter allows one to bypass the CSSToInlineStyles tool and leave the body untouched.
607
-         *
608
-         * @type    bool $preview Indicates whether a preview is being generated or not.
609
-         * @return  bool    true  indicates to use the inliner, false bypasses it.
610
-         */
611
-        if (apply_filters('FHEE__EE_Email_messenger__apply_CSSInliner ', true, $preview)) {
612
-            // require CssToInlineStyles library and its dependencies via composer autoloader
613
-            require_once EE_THIRD_PARTY . 'cssinliner/vendor/autoload.php';
614
-
615
-            // now if this isn't a preview, let's setup the body so it has inline styles
616
-            if (! $preview || ($preview && defined('DOING_AJAX'))) {
617
-                $style = file_get_contents(
618
-                    $this->get_variation(
619
-                        $this->_tmp_pack,
620
-                        $this->_incoming_message_type->name,
621
-                        false,
622
-                        'main',
623
-                        $this->_variation
624
-                    ),
625
-                    true
626
-                );
627
-                $CSS   = new TijsVerkoyen\CssToInlineStyles\CssToInlineStyles($body, $style);
628
-                // for some reason the library has a bracket and new line at the beginning.  This takes care of that.
629
-                $body  = ltrim($CSS->convert(true), ">\n");
630
-                // see https://events.codebasehq.com/projects/event-espresso/tickets/8609
631
-                $body  = ltrim($body, "<?");
632
-            }
633
-        }
634
-        return $body;
635
-    }
636
-
637
-
638
-    /**
639
-     * This just returns any existing test settings that might be saved in the database
640
-     *
641
-     * @access public
642
-     * @return array
643
-     */
644
-    public function get_existing_test_settings()
645
-    {
646
-        $settings = parent::get_existing_test_settings();
647
-        // override subject if present because we always want it to be fresh.
648
-        if (is_array($settings) && ! empty($settings['subject'])) {
649
-            $settings['subject'] = sprintf(esc_html__('Test email sent from %s', 'event_espresso'), get_bloginfo('name'));
650
-        }
651
-        return $settings;
652
-    }
9
+	/**
10
+	 * To field for email
11
+	 * @var string
12
+	 */
13
+	protected $_to = '';
14
+
15
+
16
+	/**
17
+	 * CC field for email.
18
+	 * @var string
19
+	 */
20
+	protected $_cc = '';
21
+
22
+	/**
23
+	 * From field for email
24
+	 * @var string
25
+	 */
26
+	protected $_from = '';
27
+
28
+
29
+	/**
30
+	 * Subject field for email
31
+	 * @var string
32
+	 */
33
+	protected $_subject = '';
34
+
35
+
36
+	/**
37
+	 * Content field for email
38
+	 * @var string
39
+	 */
40
+	protected $_content = '';
41
+
42
+
43
+	/**
44
+	 * constructor
45
+	 *
46
+	 * @access public
47
+	 */
48
+	public function __construct()
49
+	{
50
+		// set name and description properties
51
+		$this->name                = 'email';
52
+		$this->description         = sprintf(
53
+			esc_html__(
54
+				'This messenger delivers messages via email using the built-in %s function included with WordPress',
55
+				'event_espresso'
56
+			),
57
+			'<code>wp_mail</code>'
58
+		);
59
+		$this->label               = array(
60
+			'singular' => esc_html__('email', 'event_espresso'),
61
+			'plural'   => esc_html__('emails', 'event_espresso'),
62
+		);
63
+		$this->activate_on_install = true;
64
+
65
+		// we're using defaults so let's call parent constructor that will take care of setting up all the other
66
+		// properties
67
+		parent::__construct();
68
+	}
69
+
70
+
71
+	/**
72
+	 * see abstract declaration in parent class for details.
73
+	 */
74
+	protected function _set_admin_pages()
75
+	{
76
+		$this->admin_registered_pages = array(
77
+			'events_edit' => true,
78
+		);
79
+	}
80
+
81
+
82
+	/**
83
+	 * see abstract declaration in parent class for details
84
+	 */
85
+	protected function _set_valid_shortcodes()
86
+	{
87
+		// remember by leaving the other fields not set, those fields will inherit the valid shortcodes from the
88
+		// message type.
89
+		$this->_valid_shortcodes = array(
90
+			'to'   => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
91
+			'cc' => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
92
+			'from' => array('email', 'event_author', 'primary_registration_details', 'recipient_details'),
93
+		);
94
+	}
95
+
96
+
97
+	/**
98
+	 * see abstract declaration in parent class for details
99
+	 *
100
+	 * @access protected
101
+	 * @return void
102
+	 */
103
+	protected function _set_validator_config()
104
+	{
105
+		$valid_shortcodes = $this->get_valid_shortcodes();
106
+
107
+		$this->_validator_config = array(
108
+			'to'            => array(
109
+				'shortcodes' => $valid_shortcodes['to'],
110
+				'type'       => 'email',
111
+			),
112
+			'cc' => array(
113
+				'shortcodes' => $valid_shortcodes['to'],
114
+				'type' => 'email',
115
+			),
116
+			'from'          => array(
117
+				'shortcodes' => $valid_shortcodes['from'],
118
+				'type'       => 'email',
119
+			),
120
+			'subject'       => array(
121
+				'shortcodes' => array(
122
+					'organization',
123
+					'primary_registration_details',
124
+					'event_author',
125
+					'primary_registration_details',
126
+					'recipient_details',
127
+				),
128
+			),
129
+			'content'       => array(
130
+				'shortcodes' => array(
131
+					'event_list',
132
+					'attendee_list',
133
+					'ticket_list',
134
+					'organization',
135
+					'primary_registration_details',
136
+					'primary_registration_list',
137
+					'event_author',
138
+					'recipient_details',
139
+					'recipient_list',
140
+					'transaction',
141
+					'messenger',
142
+				),
143
+			),
144
+			'attendee_list' => array(
145
+				'shortcodes' => array('attendee', 'event_list', 'ticket_list'),
146
+				'required'   => array('[ATTENDEE_LIST]'),
147
+			),
148
+			'event_list'    => array(
149
+				'shortcodes' => array(
150
+					'event',
151
+					'attendee_list',
152
+					'ticket_list',
153
+					'venue',
154
+					'datetime_list',
155
+					'attendee',
156
+					'primary_registration_details',
157
+					'primary_registration_list',
158
+					'event_author',
159
+					'recipient_details',
160
+					'recipient_list',
161
+				),
162
+				'required'   => array('[EVENT_LIST]'),
163
+			),
164
+			'ticket_list'   => array(
165
+				'shortcodes' => array(
166
+					'event_list',
167
+					'attendee_list',
168
+					'ticket',
169
+					'datetime_list',
170
+					'primary_registration_details',
171
+					'recipient_details',
172
+				),
173
+				'required'   => array('[TICKET_LIST]'),
174
+			),
175
+			'datetime_list' => array(
176
+				'shortcodes' => array('datetime'),
177
+				'required'   => array('[DATETIME_LIST]'),
178
+			),
179
+		);
180
+	}
181
+
182
+
183
+	/**
184
+	 * @see   parent EE_messenger class for docs
185
+	 * @since 4.5.0
186
+	 */
187
+	public function do_secondary_messenger_hooks($sending_messenger_name)
188
+	{
189
+		if ($sending_messenger_name === 'html') {
190
+			add_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10, 8);
191
+		}
192
+	}
193
+
194
+
195
+	public function add_email_css(
196
+		$variation_path,
197
+		$messenger,
198
+		$message_type,
199
+		$type,
200
+		$variation,
201
+		$file_extension,
202
+		$url,
203
+		EE_Messages_Template_Pack $template_pack
204
+	) {
205
+		// prevent recursion on this callback.
206
+		remove_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10);
207
+		$variation = $this->get_variation($template_pack, $message_type, $url, 'main', $variation, false);
208
+
209
+		add_filter('FHEE__EE_Messages_Template_Pack__get_variation', array($this, 'add_email_css'), 10, 8);
210
+		return $variation;
211
+	}
212
+
213
+
214
+	/**
215
+	 * See parent for details
216
+	 *
217
+	 * @access protected
218
+	 * @return void
219
+	 */
220
+	protected function _set_test_settings_fields()
221
+	{
222
+		$this->_test_settings_fields = array(
223
+			'to'      => array(
224
+				'input'      => 'text',
225
+				'label'      => esc_html__('Send a test email to', 'event_espresso'),
226
+				'type'       => 'email',
227
+				'required'   => false,
228
+				'validation' => true,
229
+				'css_class'  => 'large-text',
230
+				'format'     => '%s',
231
+				'default'    => get_bloginfo('admin_email'),
232
+			),
233
+			'subject' => array(
234
+				'input'      => 'hidden',
235
+				'label'      => '',
236
+				'type'       => 'string',
237
+				'required'   => false,
238
+				'validation' => false,
239
+				'format'     => '%s',
240
+				'value'      => sprintf(esc_html__('Test email sent from %s', 'event_espresso'), get_bloginfo('name')),
241
+				'default'    => '',
242
+				'css_class'  => '',
243
+			),
244
+		);
245
+	}
246
+
247
+
248
+	/**
249
+	 * _set_template_fields
250
+	 * This sets up the fields that a messenger requires for the message to go out.
251
+	 *
252
+	 * @access  protected
253
+	 * @return void
254
+	 */
255
+	protected function _set_template_fields()
256
+	{
257
+		// any extra template fields that are NOT used by the messenger but will get used by a messenger field for
258
+		// shortcode replacement get added to the 'extra' key in an associated array indexed by the messenger field
259
+		// they relate to.  This is important for the Messages_admin to know what fields to display to the user.
260
+		//  Also, notice that the "values" are equal to the field type that messages admin will use to know what
261
+		// kind of field to display. The values ALSO have one index labeled "shortcode".  the values in that array
262
+		// indicate which ACTUAL SHORTCODE (i.e. [SHORTCODE]) is required in order for this extra field to be
263
+		// displayed.  If the required shortcode isn't part of the shortcodes array then the field is not needed and
264
+		// will not be displayed/parsed.
265
+		$this->_template_fields = array(
266
+			'to'      => array(
267
+				'input'      => 'text',
268
+				'label'      => esc_html_x(
269
+					'To',
270
+					'Label for the "To" field for email addresses',
271
+					'event_espresso'
272
+				),
273
+				'type'       => 'string',
274
+				'required'   => true,
275
+				'validation' => true,
276
+				'css_class'  => 'large-text',
277
+				'format'     => '%s',
278
+			),
279
+			'cc'      => array(
280
+				'input'      => 'text',
281
+				'label'      => esc_html_x(
282
+					'CC',
283
+					'Label for the "Carbon Copy" field used for additional email addresses',
284
+					'event_espresso'
285
+				),
286
+				'type'       => 'string',
287
+				'required'   => false,
288
+				'validation' => true,
289
+				'css_class'  => 'large-text',
290
+				'format'     => '%s',
291
+			),
292
+			'from'    => array(
293
+				'input'      => 'text',
294
+				'label'      => esc_html_x(
295
+					'From',
296
+					'Label for the "From" field for email addresses.',
297
+					'event_espresso'
298
+				),
299
+				'type'       => 'string',
300
+				'required'   => true,
301
+				'validation' => true,
302
+				'css_class'  => 'large-text',
303
+				'format'     => '%s',
304
+			),
305
+			'subject' => array(
306
+				'input'      => 'text',
307
+				'label'      => esc_html_x(
308
+					'Subject',
309
+					'Label for the "Subject" field (short description of contents) for emails.',
310
+					'event_espresso'
311
+				),
312
+				'type'       => 'string',
313
+				'required'   => true,
314
+				'validation' => true,
315
+				'css_class'  => 'large-text',
316
+				'format'     => '%s',
317
+			),
318
+			'content' => '',
319
+			// left empty b/c it is in the "extra array" but messenger still needs needs to know this is a field.
320
+			'extra'   => array(
321
+				'content' => array(
322
+					'main'          => array(
323
+						'input'      => 'wp_editor',
324
+						'label'      => esc_html__('Main Content', 'event_espresso'),
325
+						'type'       => 'string',
326
+						'required'   => true,
327
+						'validation' => true,
328
+						'format'     => '%s',
329
+						'rows'       => '15',
330
+					),
331
+					'event_list'    => array(
332
+						'input'               => 'wp_editor',
333
+						'label'               => '[EVENT_LIST]',
334
+						'type'                => 'string',
335
+						'required'            => true,
336
+						'validation'          => true,
337
+						'format'              => '%s',
338
+						'rows'                => '15',
339
+						'shortcodes_required' => array('[EVENT_LIST]'),
340
+					),
341
+					'attendee_list' => array(
342
+						'input'               => 'textarea',
343
+						'label'               => '[ATTENDEE_LIST]',
344
+						'type'                => 'string',
345
+						'required'            => true,
346
+						'validation'          => true,
347
+						'format'              => '%s',
348
+						'css_class'           => 'large-text',
349
+						'rows'                => '5',
350
+						'shortcodes_required' => array('[ATTENDEE_LIST]'),
351
+					),
352
+					'ticket_list'   => array(
353
+						'input'               => 'textarea',
354
+						'label'               => '[TICKET_LIST]',
355
+						'type'                => 'string',
356
+						'required'            => true,
357
+						'validation'          => true,
358
+						'format'              => '%s',
359
+						'css_class'           => 'large-text',
360
+						'rows'                => '10',
361
+						'shortcodes_required' => array('[TICKET_LIST]'),
362
+					),
363
+					'datetime_list' => array(
364
+						'input'               => 'textarea',
365
+						'label'               => '[DATETIME_LIST]',
366
+						'type'                => 'string',
367
+						'required'            => true,
368
+						'validation'          => true,
369
+						'format'              => '%s',
370
+						'css_class'           => 'large-text',
371
+						'rows'                => '10',
372
+						'shortcodes_required' => array('[DATETIME_LIST]'),
373
+					),
374
+				),
375
+			),
376
+		);
377
+	}
378
+
379
+
380
+	/**
381
+	 * See definition of this class in parent
382
+	 */
383
+	protected function _set_default_message_types()
384
+	{
385
+		$this->_default_message_types = array(
386
+			'payment',
387
+			'payment_refund',
388
+			'registration',
389
+			'not_approved_registration',
390
+			'pending_approval',
391
+		);
392
+	}
393
+
394
+
395
+	/**
396
+	 * @see   definition of this class in parent
397
+	 * @since 4.5.0
398
+	 */
399
+	protected function _set_valid_message_types()
400
+	{
401
+		$this->_valid_message_types = array(
402
+			'payment',
403
+			'registration',
404
+			'not_approved_registration',
405
+			'declined_registration',
406
+			'cancelled_registration',
407
+			'pending_approval',
408
+			'registration_summary',
409
+			'payment_reminder',
410
+			'payment_declined',
411
+			'payment_refund',
412
+		);
413
+	}
414
+
415
+
416
+	/**
417
+	 * setting up admin_settings_fields for messenger.
418
+	 */
419
+	protected function _set_admin_settings_fields()
420
+	{
421
+	}
422
+
423
+	/**
424
+	 * We just deliver the messages don't kill us!!
425
+	 *
426
+	 * @return bool|WP_Error true if message delivered, false if it didn't deliver OR bubble up any error object if
427
+	 *              present.
428
+	 * @throws EE_Error
429
+	 * @throws \TijsVerkoyen\CssToInlineStyles\Exception
430
+	 */
431
+	protected function _send_message()
432
+	{
433
+		$success = wp_mail(
434
+			$this->_to,
435
+			// some old values for subject may be expecting HTML entities to be decoded in the subject
436
+			// and subjects aren't interpreted as HTML, so there should be no HTML in them
437
+			wp_strip_all_tags(wp_specialchars_decode($this->_subject, ENT_QUOTES)),
438
+			$this->_body(),
439
+			$this->_headers()
440
+		);
441
+		if (! $success) {
442
+			EE_Error::add_error(
443
+				sprintf(
444
+					esc_html__(
445
+						'The email did not send successfully.%3$sThe WordPress wp_mail function is used for sending mails but does not give any useful information when an email fails to send.%3$sIt is possible the "to" address (%1$s) or "from" address (%2$s) is invalid.%3$s',
446
+						'event_espresso'
447
+					),
448
+					$this->_to,
449
+					$this->_from,
450
+					'<br />'
451
+				),
452
+				__FILE__,
453
+				__FUNCTION__,
454
+				__LINE__
455
+			);
456
+		}
457
+		return $success;
458
+	}
459
+
460
+
461
+	/**
462
+	 * see parent for definition
463
+	 *
464
+	 * @return string html body of the message content and the related css.
465
+	 * @throws EE_Error
466
+	 * @throws \TijsVerkoyen\CssToInlineStyles\Exception
467
+	 */
468
+	protected function _preview()
469
+	{
470
+		return $this->_body(true);
471
+	}
472
+
473
+
474
+	/**
475
+	 * Setup headers for email
476
+	 *
477
+	 * @access protected
478
+	 * @return string formatted header for email
479
+	 */
480
+	protected function _headers()
481
+	{
482
+		$this->_ensure_has_from_email_address();
483
+		$from    = $this->_from;
484
+		$headers = array(
485
+			'From:' . $from,
486
+			'Reply-To:' . $from,
487
+			'Content-Type:text/html; charset=utf-8',
488
+		);
489
+
490
+		/**
491
+		 * Second condition added as a result of https://events.codebasehq.com/projects/event-espresso/tickets/11416 to
492
+		 * cover back compat where there may be users who have saved cc values in their db for the newsletter message
493
+		 * type which they are no longer able to change.
494
+		 */
495
+		if (! empty($this->_cc) && ! $this->_incoming_message_type instanceof EE_Newsletter_message_type) {
496
+			$headers[] = 'cc: ' . $this->_cc;
497
+		}
498
+
499
+		// but wait!  Header's for the from is NOT reliable because some plugins don't respect From: as set in the
500
+		// header.
501
+		add_filter('wp_mail_from', array($this, 'set_from_address'), 100);
502
+		add_filter('wp_mail_from_name', array($this, 'set_from_name'), 100);
503
+		return apply_filters('FHEE__EE_Email_messenger___headers', $headers, $this->_incoming_message_type, $this);
504
+	}
505
+
506
+
507
+	/**
508
+	 * This simply ensures that the from address is not empty.  If it is, then we use whatever is set as the site email
509
+	 * address for the from address to avoid problems with sending emails.
510
+	 */
511
+	protected function _ensure_has_from_email_address()
512
+	{
513
+		if (empty($this->_from)) {
514
+			$this->_from = get_bloginfo('admin_email');
515
+		}
516
+	}
517
+
518
+
519
+	/**
520
+	 * This simply parses whatever is set as the $_from address and determines if it is in the format {name} <{email}>
521
+	 * or just {email} and returns an array with the "from_name" and "from_email" as the values. Note from_name *MAY*
522
+	 * be empty
523
+	 *
524
+	 * @since 4.3.1
525
+	 * @return array
526
+	 */
527
+	private function _parse_from()
528
+	{
529
+		if (strpos($this->_from, '<') !== false) {
530
+			$from_name = substr($this->_from, 0, strpos($this->_from, '<') - 1);
531
+			$from_name = str_replace('"', '', $from_name);
532
+			$from_name = trim($from_name);
533
+
534
+			$from_email = substr($this->_from, strpos($this->_from, '<') + 1);
535
+			$from_email = str_replace('>', '', $from_email);
536
+			$from_email = trim($from_email);
537
+		} elseif (trim($this->_from) !== '') {
538
+			$from_name  = '';
539
+			$from_email = trim($this->_from);
540
+		} else {
541
+			$from_name = $from_email = '';
542
+		}
543
+		return array($from_name, $from_email);
544
+	}
545
+
546
+
547
+	/**
548
+	 * Callback for the wp_mail_from filter.
549
+	 *
550
+	 * @since 4.3.1
551
+	 * @param string $from_email What the original from_email is.
552
+	 * @return string
553
+	 */
554
+	public function set_from_address($from_email)
555
+	{
556
+		$parsed_from = $this->_parse_from();
557
+		// includes fallback if the parsing failed.
558
+		$from_email = is_array($parsed_from) && ! empty($parsed_from[1])
559
+			? $parsed_from[1]
560
+			: get_bloginfo('admin_email');
561
+		return $from_email;
562
+	}
563
+
564
+
565
+	/**
566
+	 * Callback fro the wp_mail_from_name filter.
567
+	 *
568
+	 * @since 4.3.1
569
+	 * @param string $from_name The original from_name.
570
+	 * @return string
571
+	 */
572
+	public function set_from_name($from_name)
573
+	{
574
+		$parsed_from = $this->_parse_from();
575
+		if (is_array($parsed_from) && ! empty($parsed_from[0])) {
576
+			$from_name = $parsed_from[0];
577
+		}
578
+
579
+		// if from name is "WordPress" let's sub in the site name instead (more friendly!)
580
+		// but realize the default name is HTML entity-encoded
581
+		$from_name = $from_name == 'WordPress' ? wp_specialchars_decode(get_bloginfo(), ENT_QUOTES) : $from_name;
582
+
583
+		return $from_name;
584
+	}
585
+
586
+
587
+	/**
588
+	 * setup body for email
589
+	 *
590
+	 * @param bool $preview will determine whether this is preview template or not.
591
+	 * @return string formatted body for email.
592
+	 * @throws EE_Error
593
+	 * @throws \TijsVerkoyen\CssToInlineStyles\Exception
594
+	 */
595
+	protected function _body($preview = false)
596
+	{
597
+		// setup template args!
598
+		$this->_template_args = array(
599
+			'subject'   => $this->_subject,
600
+			'from'      => $this->_from,
601
+			'main_body' => wpautop($this->_content),
602
+		);
603
+		$body                 = $this->_get_main_template($preview);
604
+
605
+		/**
606
+		 * This filter allows one to bypass the CSSToInlineStyles tool and leave the body untouched.
607
+		 *
608
+		 * @type    bool $preview Indicates whether a preview is being generated or not.
609
+		 * @return  bool    true  indicates to use the inliner, false bypasses it.
610
+		 */
611
+		if (apply_filters('FHEE__EE_Email_messenger__apply_CSSInliner ', true, $preview)) {
612
+			// require CssToInlineStyles library and its dependencies via composer autoloader
613
+			require_once EE_THIRD_PARTY . 'cssinliner/vendor/autoload.php';
614
+
615
+			// now if this isn't a preview, let's setup the body so it has inline styles
616
+			if (! $preview || ($preview && defined('DOING_AJAX'))) {
617
+				$style = file_get_contents(
618
+					$this->get_variation(
619
+						$this->_tmp_pack,
620
+						$this->_incoming_message_type->name,
621
+						false,
622
+						'main',
623
+						$this->_variation
624
+					),
625
+					true
626
+				);
627
+				$CSS   = new TijsVerkoyen\CssToInlineStyles\CssToInlineStyles($body, $style);
628
+				// for some reason the library has a bracket and new line at the beginning.  This takes care of that.
629
+				$body  = ltrim($CSS->convert(true), ">\n");
630
+				// see https://events.codebasehq.com/projects/event-espresso/tickets/8609
631
+				$body  = ltrim($body, "<?");
632
+			}
633
+		}
634
+		return $body;
635
+	}
636
+
637
+
638
+	/**
639
+	 * This just returns any existing test settings that might be saved in the database
640
+	 *
641
+	 * @access public
642
+	 * @return array
643
+	 */
644
+	public function get_existing_test_settings()
645
+	{
646
+		$settings = parent::get_existing_test_settings();
647
+		// override subject if present because we always want it to be fresh.
648
+		if (is_array($settings) && ! empty($settings['subject'])) {
649
+			$settings['subject'] = sprintf(esc_html__('Test email sent from %s', 'event_espresso'), get_bloginfo('name'));
650
+		}
651
+		return $settings;
652
+	}
653 653
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_Messages_Data_Handler_Collection.lib.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@
 block discarded – undo
46 46
      */
47 47
     public function get_key($classname, $data)
48 48
     {
49
-        return md5($classname . serialize($data));
49
+        return md5($classname.serialize($data));
50 50
     }
51 51
 
52 52
 
Please login to merge, or discard this patch.
Indentation   +65 added lines, -65 removed lines patch added patch discarded remove patch
@@ -11,69 +11,69 @@
 block discarded – undo
11 11
 {
12 12
 
13 13
 
14
-    public function __construct()
15
-    {
16
-        $this->interface = 'EE_Messages_incoming_data';
17
-    }
18
-
19
-
20
-    /**
21
-     * This adds the EE_Messages_incoming_data data handler object to the collection.
22
-     *
23
-     * @param EE_Messages_incoming_data  $data_handler
24
-     * @param mixed                      $data           Usually an array of data used in combination with the $data_handler
25
-     *                                                   classname to create an alternative index for retrieving data_handlers.
26
-     * @return bool
27
-     */
28
-    public function add($data_handler, $data = null)
29
-    {
30
-        $data = $data === null ? array() : (array) $data;
31
-        $info['key'] = $this->get_key(get_class($data_handler), $data);
32
-        return parent::add($data_handler, $info);
33
-    }
34
-
35
-
36
-
37
-
38
-
39
-    /**
40
-     * This returns a key for retrieving data for the given references used to generate the key.
41
-     * Data handlers are cached to the repository along with a md5() generated key using known references.
42
-     * @param string    $classname      The classname of the datahandler being checked for.
43
-     * @param mixed     $data           The data that was used to instantiate the data_handler.
44
-     *
45
-     * @return  string      md5 hash using provided info.
46
-     */
47
-    public function get_key($classname, $data)
48
-    {
49
-        return md5($classname . serialize($data));
50
-    }
51
-
52
-
53
-
54
-
55
-
56
-
57
-    /**
58
-     * This returns a saved EE_Messages_incoming_data object if there is one in the repository indexed by a key matching
59
-     * the given string.
60
-     *
61
-     * @param string  $key  @see EE_Messages_Data_Handler_Collection::get_key() to setup a key formatted for searching.
62
-     *
63
-     * @return null|EE_Messages_incoming_data
64
-     */
65
-    public function get_by_key($key)
66
-    {
67
-        $this->rewind();
68
-        while ($this->valid()) {
69
-            $data = $this->getInfo();
70
-            if (isset($data['key']) && $data['key'] === $key) {
71
-                $handler = $this->current();
72
-                $this->rewind();
73
-                return $handler;
74
-            }
75
-            $this->next();
76
-        }
77
-        return null;
78
-    }
14
+	public function __construct()
15
+	{
16
+		$this->interface = 'EE_Messages_incoming_data';
17
+	}
18
+
19
+
20
+	/**
21
+	 * This adds the EE_Messages_incoming_data data handler object to the collection.
22
+	 *
23
+	 * @param EE_Messages_incoming_data  $data_handler
24
+	 * @param mixed                      $data           Usually an array of data used in combination with the $data_handler
25
+	 *                                                   classname to create an alternative index for retrieving data_handlers.
26
+	 * @return bool
27
+	 */
28
+	public function add($data_handler, $data = null)
29
+	{
30
+		$data = $data === null ? array() : (array) $data;
31
+		$info['key'] = $this->get_key(get_class($data_handler), $data);
32
+		return parent::add($data_handler, $info);
33
+	}
34
+
35
+
36
+
37
+
38
+
39
+	/**
40
+	 * This returns a key for retrieving data for the given references used to generate the key.
41
+	 * Data handlers are cached to the repository along with a md5() generated key using known references.
42
+	 * @param string    $classname      The classname of the datahandler being checked for.
43
+	 * @param mixed     $data           The data that was used to instantiate the data_handler.
44
+	 *
45
+	 * @return  string      md5 hash using provided info.
46
+	 */
47
+	public function get_key($classname, $data)
48
+	{
49
+		return md5($classname . serialize($data));
50
+	}
51
+
52
+
53
+
54
+
55
+
56
+
57
+	/**
58
+	 * This returns a saved EE_Messages_incoming_data object if there is one in the repository indexed by a key matching
59
+	 * the given string.
60
+	 *
61
+	 * @param string  $key  @see EE_Messages_Data_Handler_Collection::get_key() to setup a key formatted for searching.
62
+	 *
63
+	 * @return null|EE_Messages_incoming_data
64
+	 */
65
+	public function get_by_key($key)
66
+	{
67
+		$this->rewind();
68
+		while ($this->valid()) {
69
+			$data = $this->getInfo();
70
+			if (isset($data['key']) && $data['key'] === $key) {
71
+				$handler = $this->current();
72
+				$this->rewind();
73
+				return $handler;
74
+			}
75
+			$this->next();
76
+		}
77
+		return null;
78
+	}
79 79
 }
Please login to merge, or discard this patch.
core/libraries/messages/message_type/EE_Invoice_message_type.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
 
53 53
     protected function _set_admin_pages()
54 54
     {
55
-        $this->admin_registered_pages = array( 'events_edit' => true );
55
+        $this->admin_registered_pages = array('events_edit' => true);
56 56
     }
57 57
 
58 58
 
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
     protected function _set_with_messengers()
68 68
     {
69 69
         $this->_with_messengers = array(
70
-            'html' => array( 'pdf' )
70
+            'html' => array('pdf')
71 71
             );
72 72
     }
73 73
 
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
         // receipt message type data handler is 'Gateways' and it expects a transaction object.
79 79
         $transaction = $registration->transaction();
80 80
         if ($transaction instanceof EE_Transaction) {
81
-            return array( $transaction );
81
+            return array($transaction);
82 82
         }
83 83
         return array();
84 84
     }
Please login to merge, or discard this patch.
Indentation   +88 added lines, -88 removed lines patch added patch discarded remove patch
@@ -13,123 +13,123 @@
 block discarded – undo
13 13
 class EE_Invoice_message_type extends EE_message_type
14 14
 {
15 15
 
16
-    public function __construct()
17
-    {
18
-        $this->name = 'invoice';
19
-        $this->description = esc_html__('The invoice message type is triggered via a url on the thank you page and via at url generated by the [INVOICE_URL] or [INVOICE_LINK] shortcode.', 'event_espresso');
20
-        $this->label = array(
21
-            'singular' => esc_html__('invoice', 'event_espresso'),
22
-            'plural' => esc_html__('invoices', 'event_espresso')
23
-        );
24
-        $this->_master_templates = array();
25
-        parent::__construct();
26
-    }
16
+	public function __construct()
17
+	{
18
+		$this->name = 'invoice';
19
+		$this->description = esc_html__('The invoice message type is triggered via a url on the thank you page and via at url generated by the [INVOICE_URL] or [INVOICE_LINK] shortcode.', 'event_espresso');
20
+		$this->label = array(
21
+			'singular' => esc_html__('invoice', 'event_espresso'),
22
+			'plural' => esc_html__('invoices', 'event_espresso')
23
+		);
24
+		$this->_master_templates = array();
25
+		parent::__construct();
26
+	}
27 27
 
28 28
 
29 29
 
30
-    /**
31
-     * @see parent::get_priority() for documentation.
32
-     * @return int
33
-     */
34
-    public function get_priority()
35
-    {
36
-        return EEM_Message::priority_high;
37
-    }
30
+	/**
31
+	 * @see parent::get_priority() for documentation.
32
+	 * @return int
33
+	 */
34
+	public function get_priority()
35
+	{
36
+		return EEM_Message::priority_high;
37
+	}
38 38
 
39 39
 
40
-    /**
41
-     * This method returns whether this message type should always generate a new copy
42
-     * when requested, or if links can be to the already generated copy.
43
-     * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
44
-     * Invoices always generate.
45
-     * @return bool     false means can link to generated EE_Message.  true must regenerate.
46
-     */
47
-    public function always_generate()
48
-    {
49
-        return true;
50
-    }
40
+	/**
41
+	 * This method returns whether this message type should always generate a new copy
42
+	 * when requested, or if links can be to the already generated copy.
43
+	 * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
44
+	 * Invoices always generate.
45
+	 * @return bool     false means can link to generated EE_Message.  true must regenerate.
46
+	 */
47
+	public function always_generate()
48
+	{
49
+		return true;
50
+	}
51 51
 
52 52
 
53
-    protected function _set_admin_pages()
54
-    {
55
-        $this->admin_registered_pages = array( 'events_edit' => true );
56
-    }
53
+	protected function _set_admin_pages()
54
+	{
55
+		$this->admin_registered_pages = array( 'events_edit' => true );
56
+	}
57 57
 
58 58
 
59 59
 
60
-    protected function _set_data_handler()
61
-    {
62
-        $this->_data_handler = 'Gateways';
63
-    }
60
+	protected function _set_data_handler()
61
+	{
62
+		$this->_data_handler = 'Gateways';
63
+	}
64 64
 
65 65
 
66 66
 
67
-    protected function _set_with_messengers()
68
-    {
69
-        $this->_with_messengers = array(
70
-            'html' => array( 'pdf' )
71
-            );
72
-    }
67
+	protected function _set_with_messengers()
68
+	{
69
+		$this->_with_messengers = array(
70
+			'html' => array( 'pdf' )
71
+			);
72
+	}
73 73
 
74 74
 
75 75
 
76
-    protected function _get_data_for_context($context, EE_Registration $registration, $id)
77
-    {
78
-        // receipt message type data handler is 'Gateways' and it expects a transaction object.
79
-        $transaction = $registration->transaction();
80
-        if ($transaction instanceof EE_Transaction) {
81
-            return array( $transaction );
82
-        }
83
-        return array();
84
-    }
76
+	protected function _get_data_for_context($context, EE_Registration $registration, $id)
77
+	{
78
+		// receipt message type data handler is 'Gateways' and it expects a transaction object.
79
+		$transaction = $registration->transaction();
80
+		if ($transaction instanceof EE_Transaction) {
81
+			return array( $transaction );
82
+		}
83
+		return array();
84
+	}
85 85
 
86 86
 
87 87
 
88
-    protected function _set_admin_settings_fields()
89
-    {
90
-        $this->_admin_settings_fields = array();
91
-    }
88
+	protected function _set_admin_settings_fields()
89
+	{
90
+		$this->_admin_settings_fields = array();
91
+	}
92 92
 
93 93
 
94 94
 
95
-    protected function _set_contexts()
96
-    {
97
-        $this->_context_label = array(
98
-            'label' => esc_html__('recipient', 'event_espresso'),
99
-            'plural' => esc_html__('recipients', 'event_espresso'),
100
-            'description' => esc_html__('Recipient\'s are who will view the invoice.', 'event_espresso')
101
-        );
95
+	protected function _set_contexts()
96
+	{
97
+		$this->_context_label = array(
98
+			'label' => esc_html__('recipient', 'event_espresso'),
99
+			'plural' => esc_html__('recipients', 'event_espresso'),
100
+			'description' => esc_html__('Recipient\'s are who will view the invoice.', 'event_espresso')
101
+		);
102 102
 
103
-        $this->_contexts = array(
104
-            'purchaser' => array(
105
-                'label' => esc_html__('Purchaser', 'event_espresso'),
106
-                'description' => esc_html__('This template goes to the person who conducted the transaction.', 'event_espresso')
107
-            )
108
-        );
109
-    }
103
+		$this->_contexts = array(
104
+			'purchaser' => array(
105
+				'label' => esc_html__('Purchaser', 'event_espresso'),
106
+				'description' => esc_html__('This template goes to the person who conducted the transaction.', 'event_espresso')
107
+			)
108
+		);
109
+	}
110 110
 
111 111
 
112 112
 
113 113
 
114
-    /**
115
-    * used to set the valid shortcodes for the receipt message type
116
-    *
117
-    * @since   4.5.0
118
-    *
119
-    * @return  void
120
-    */
121
-    protected function _set_valid_shortcodes()
122
-    {
123
-        $this->_valid_shortcodes['purchaser'] = array(
124
-            'attendee_list', 'attendee', 'datetime_list', 'datetime', 'event_list', 'event', 'event_meta', 'messenger', 'organization', 'primary_registration_list', 'primary_registration_details', 'ticket_list', 'ticket', 'transaction', 'venue', 'line_item_list', 'payment_list', 'line_item', 'payment'
125
-        );
126
-    }
114
+	/**
115
+	 * used to set the valid shortcodes for the receipt message type
116
+	 *
117
+	 * @since   4.5.0
118
+	 *
119
+	 * @return  void
120
+	 */
121
+	protected function _set_valid_shortcodes()
122
+	{
123
+		$this->_valid_shortcodes['purchaser'] = array(
124
+			'attendee_list', 'attendee', 'datetime_list', 'datetime', 'event_list', 'event', 'event_meta', 'messenger', 'organization', 'primary_registration_list', 'primary_registration_details', 'ticket_list', 'ticket', 'transaction', 'venue', 'line_item_list', 'payment_list', 'line_item', 'payment'
125
+		);
126
+	}
127 127
 
128 128
 
129 129
 
130 130
 
131
-    protected function _purchaser_addressees()
132
-    {
133
-        return parent::_primary_attendee_addressees();
134
-    }
131
+	protected function _purchaser_addressees()
132
+	{
133
+		return parent::_primary_attendee_addressees();
134
+	}
135 135
 }
Please login to merge, or discard this patch.
core/libraries/messages/message_type/EE_Receipt_message_type.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
 
54 54
     protected function _set_admin_pages()
55 55
     {
56
-        $this->admin_registered_pages = array( 'events_edit' => true );
56
+        $this->admin_registered_pages = array('events_edit' => true);
57 57
     }
58 58
 
59 59
 
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
     protected function _set_with_messengers()
69 69
     {
70 70
         $this->_with_messengers = array(
71
-            'html' => array( 'pdf' )
71
+            'html' => array('pdf')
72 72
         );
73 73
     }
74 74
 
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
         // receipt message type data handler is 'Gateways' and it expects a transaction object.
80 80
         $transaction = $registration->transaction();
81 81
         if ($transaction instanceof EE_Transaction) {
82
-            return array( $transaction );
82
+            return array($transaction);
83 83
         }
84 84
         return array();
85 85
     }
Please login to merge, or discard this patch.
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -13,142 +13,142 @@
 block discarded – undo
13 13
 class EE_Receipt_message_type extends EE_message_type
14 14
 {
15 15
 
16
-    public function __construct()
17
-    {
18
-        $this->name = 'receipt';
19
-        $this->description = esc_html__('The receipt message type is triggered via a url on the thank you page and via at url generated by the [RECEIPT_URL] shortcode.', 'event_espresso');
20
-        $this->label = array(
21
-            'singular' => esc_html__('receipt', 'event_espresso'),
22
-            'plural' => esc_html__('receipts', 'event_espresso')
23
-        );
24
-        $this->_master_templates = array();
25
-        parent::__construct();
26
-    }
16
+	public function __construct()
17
+	{
18
+		$this->name = 'receipt';
19
+		$this->description = esc_html__('The receipt message type is triggered via a url on the thank you page and via at url generated by the [RECEIPT_URL] shortcode.', 'event_espresso');
20
+		$this->label = array(
21
+			'singular' => esc_html__('receipt', 'event_espresso'),
22
+			'plural' => esc_html__('receipts', 'event_espresso')
23
+		);
24
+		$this->_master_templates = array();
25
+		parent::__construct();
26
+	}
27 27
 
28 28
 
29 29
 
30
-    /**
31
-     * @see parent::get_priority() for documentation.
32
-     * @return int
33
-     */
34
-    public function get_priority()
35
-    {
36
-        return EEM_Message::priority_high;
37
-    }
38
-
39
-
40
-
41
-    /**
42
-     * This method returns whether this message type should always generate a new copy
43
-     * when requested, or if links can be to the already generated copy.
44
-     * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
45
-     * Receipts always generate
46
-     * @return bool     false means can link to generated EE_Message.  true must regenerate.
47
-     */
48
-    public function always_generate()
49
-    {
50
-        return true;
51
-    }
52
-
53
-
54
-    protected function _set_admin_pages()
55
-    {
56
-        $this->admin_registered_pages = array( 'events_edit' => true );
57
-    }
58
-
59
-
60
-
61
-    protected function _set_data_handler()
62
-    {
63
-        $this->_data_handler = 'Gateways';
64
-    }
65
-
66
-
67
-
68
-    protected function _set_with_messengers()
69
-    {
70
-        $this->_with_messengers = array(
71
-            'html' => array( 'pdf' )
72
-        );
73
-    }
74
-
75
-
76
-
77
-    protected function _get_data_for_context($context, EE_Registration $registration, $id)
78
-    {
79
-        // receipt message type data handler is 'Gateways' and it expects a transaction object.
80
-        $transaction = $registration->transaction();
81
-        if ($transaction instanceof EE_Transaction) {
82
-            return array( $transaction );
83
-        }
84
-        return array();
85
-    }
86
-
87
-
88
-
89
-    protected function _set_admin_settings_fields()
90
-    {
91
-        $this->_admin_settings_fields = array();
92
-    }
93
-
94
-
95
-
96
-    protected function _set_contexts()
97
-    {
98
-        $this->_context_label = array(
99
-            'label' => esc_html__('recipient', 'event_espresso'),
100
-            'plural' => esc_html__('recipients', 'event_espresso'),
101
-            'description' => esc_html__('Recipient\'s are who will view the receipt.', 'event_espresso')
102
-        );
103
-
104
-        $this->_contexts = array(
105
-            'purchaser' => array(
106
-                'label' => esc_html__('Purchaser', 'event_espresso'),
107
-                'description' => esc_html__('This template goes to the person who conducted the transaction.', 'event_espresso')
108
-            )
109
-        );
110
-    }
111
-
112
-
113
-
114
-
115
-    /**
116
-    * used to set the valid shortcodes for the receipt message type
117
-    *
118
-    * @since   4.5.0
119
-    *
120
-    * @return  void
121
-    */
122
-    protected function _set_valid_shortcodes()
123
-    {
124
-        $this->_valid_shortcodes['purchaser'] = array(
125
-            'attendee_list',
126
-            'attendee',
127
-            'datetime_list',
128
-            'datetime',
129
-            'event_list',
130
-            'event',
131
-            'event_meta',
132
-            'messenger',
133
-            'organization',
134
-            'primary_registration_list',
135
-            'primary_registration_details',
136
-            'ticket_list',
137
-            'ticket',
138
-            'transaction',
139
-            'venue',
140
-            'line_item_list',
141
-            'payment_list',
142
-            'line_item',
143
-            'payment'
144
-        );
145
-    }
146
-
30
+	/**
31
+	 * @see parent::get_priority() for documentation.
32
+	 * @return int
33
+	 */
34
+	public function get_priority()
35
+	{
36
+		return EEM_Message::priority_high;
37
+	}
38
+
39
+
40
+
41
+	/**
42
+	 * This method returns whether this message type should always generate a new copy
43
+	 * when requested, or if links can be to the already generated copy.
44
+	 * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
45
+	 * Receipts always generate
46
+	 * @return bool     false means can link to generated EE_Message.  true must regenerate.
47
+	 */
48
+	public function always_generate()
49
+	{
50
+		return true;
51
+	}
52
+
53
+
54
+	protected function _set_admin_pages()
55
+	{
56
+		$this->admin_registered_pages = array( 'events_edit' => true );
57
+	}
58
+
59
+
60
+
61
+	protected function _set_data_handler()
62
+	{
63
+		$this->_data_handler = 'Gateways';
64
+	}
65
+
66
+
67
+
68
+	protected function _set_with_messengers()
69
+	{
70
+		$this->_with_messengers = array(
71
+			'html' => array( 'pdf' )
72
+		);
73
+	}
74
+
75
+
76
+
77
+	protected function _get_data_for_context($context, EE_Registration $registration, $id)
78
+	{
79
+		// receipt message type data handler is 'Gateways' and it expects a transaction object.
80
+		$transaction = $registration->transaction();
81
+		if ($transaction instanceof EE_Transaction) {
82
+			return array( $transaction );
83
+		}
84
+		return array();
85
+	}
86
+
87
+
88
+
89
+	protected function _set_admin_settings_fields()
90
+	{
91
+		$this->_admin_settings_fields = array();
92
+	}
93
+
94
+
95
+
96
+	protected function _set_contexts()
97
+	{
98
+		$this->_context_label = array(
99
+			'label' => esc_html__('recipient', 'event_espresso'),
100
+			'plural' => esc_html__('recipients', 'event_espresso'),
101
+			'description' => esc_html__('Recipient\'s are who will view the receipt.', 'event_espresso')
102
+		);
103
+
104
+		$this->_contexts = array(
105
+			'purchaser' => array(
106
+				'label' => esc_html__('Purchaser', 'event_espresso'),
107
+				'description' => esc_html__('This template goes to the person who conducted the transaction.', 'event_espresso')
108
+			)
109
+		);
110
+	}
111
+
112
+
113
+
114
+
115
+	/**
116
+	 * used to set the valid shortcodes for the receipt message type
117
+	 *
118
+	 * @since   4.5.0
119
+	 *
120
+	 * @return  void
121
+	 */
122
+	protected function _set_valid_shortcodes()
123
+	{
124
+		$this->_valid_shortcodes['purchaser'] = array(
125
+			'attendee_list',
126
+			'attendee',
127
+			'datetime_list',
128
+			'datetime',
129
+			'event_list',
130
+			'event',
131
+			'event_meta',
132
+			'messenger',
133
+			'organization',
134
+			'primary_registration_list',
135
+			'primary_registration_details',
136
+			'ticket_list',
137
+			'ticket',
138
+			'transaction',
139
+			'venue',
140
+			'line_item_list',
141
+			'payment_list',
142
+			'line_item',
143
+			'payment'
144
+		);
145
+	}
146
+
147 147
 
148 148
 
149 149
 
150
-    protected function _purchaser_addressees()
151
-    {
152
-        return parent::_primary_attendee_addressees();
153
-    }
150
+	protected function _purchaser_addressees()
151
+	{
152
+		return parent::_primary_attendee_addressees();
153
+	}
154 154
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_Message_To_Generate_From_Queue.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@
 block discarded – undo
62 62
      */
63 63
     protected function _get_subject($custom_subject = '')
64 64
     {
65
-        if (! empty($custom_subject)) {
65
+        if ( ! empty($custom_subject)) {
66 66
             return $custom_subject;
67 67
         }
68 68
         $this->queue->get_message_repository()->rewind();
Please login to merge, or discard this patch.
Indentation   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -13,90 +13,90 @@
 block discarded – undo
13 13
 {
14 14
 
15 15
 
16
-    /**
17
-     * Will hold an EE_Messages_Queue object
18
-     * @type EE_Messages_Queue
19
-     */
20
-    public $queue = array();
16
+	/**
17
+	 * Will hold an EE_Messages_Queue object
18
+	 * @type EE_Messages_Queue
19
+	 */
20
+	public $queue = array();
21 21
 
22
-    /**
23
-     * @param string            $messenger_name  The messenger being used to send the message
24
-     * @param string            $message_type_name  The message type being used to grab variations etc.
25
-     * @param EE_Messages_Queue $queue
26
-     * @param string            $custom_subject  Used if a custom subject is desired for the generated aggregate EE_Message object
27
-     */
28
-    public function __construct($messenger_name, $message_type_name, EE_Messages_Queue $queue, $custom_subject = '')
29
-    {
30
-        $this->queue = $queue;
31
-        parent::__construct($messenger_name, $message_type_name, array(), '', false, EEM_Message::status_idle);
32
-        if ($this->valid()) {
33
-            $this->_message->set_content($this->_get_content());
34
-            $this->_message->set_subject($this->_get_subject($custom_subject));
35
-            $this->_message->set_GRP_ID($this->getGroupIdFromMessageRepo());
36
-        }
37
-    }
22
+	/**
23
+	 * @param string            $messenger_name  The messenger being used to send the message
24
+	 * @param string            $message_type_name  The message type being used to grab variations etc.
25
+	 * @param EE_Messages_Queue $queue
26
+	 * @param string            $custom_subject  Used if a custom subject is desired for the generated aggregate EE_Message object
27
+	 */
28
+	public function __construct($messenger_name, $message_type_name, EE_Messages_Queue $queue, $custom_subject = '')
29
+	{
30
+		$this->queue = $queue;
31
+		parent::__construct($messenger_name, $message_type_name, array(), '', false, EEM_Message::status_idle);
32
+		if ($this->valid()) {
33
+			$this->_message->set_content($this->_get_content());
34
+			$this->_message->set_subject($this->_get_subject($custom_subject));
35
+			$this->_message->set_GRP_ID($this->getGroupIdFromMessageRepo());
36
+		}
37
+	}
38 38
 
39 39
 
40 40
 
41
-    /**
42
-     * Uses the EE_Messages_Queue currently set on this object to generate the content
43
-     * for the single EE_Message aggregate object returned by get_EE_Message
44
-     * @return string;
45
-     */
46
-    protected function _get_content()
47
-    {
48
-        $content = '';
49
-        $this->queue->get_message_repository()->rewind();
50
-        while ($this->queue->get_message_repository()->valid()) {
51
-            $content .= $this->queue->get_message_repository()->current()->content();
52
-            $this->queue->get_message_repository()->next();
53
-        }
54
-        return $content;
55
-    }
41
+	/**
42
+	 * Uses the EE_Messages_Queue currently set on this object to generate the content
43
+	 * for the single EE_Message aggregate object returned by get_EE_Message
44
+	 * @return string;
45
+	 */
46
+	protected function _get_content()
47
+	{
48
+		$content = '';
49
+		$this->queue->get_message_repository()->rewind();
50
+		while ($this->queue->get_message_repository()->valid()) {
51
+			$content .= $this->queue->get_message_repository()->current()->content();
52
+			$this->queue->get_message_repository()->next();
53
+		}
54
+		return $content;
55
+	}
56 56
 
57 57
 
58
-    /**
59
-     * Return a subject string to use for `MSG_Subject` in the aggregate EE_Message object.
60
-     * @param string $custom_subject
61
-     *
62
-     * @return string
63
-     */
64
-    protected function _get_subject($custom_subject = '')
65
-    {
66
-        if (! empty($custom_subject)) {
67
-            return $custom_subject;
68
-        }
69
-        $this->queue->get_message_repository()->rewind();
70
-        $count_of_items = $this->queue->get_message_repository()->count();
58
+	/**
59
+	 * Return a subject string to use for `MSG_Subject` in the aggregate EE_Message object.
60
+	 * @param string $custom_subject
61
+	 *
62
+	 * @return string
63
+	 */
64
+	protected function _get_subject($custom_subject = '')
65
+	{
66
+		if (! empty($custom_subject)) {
67
+			return $custom_subject;
68
+		}
69
+		$this->queue->get_message_repository()->rewind();
70
+		$count_of_items = $this->queue->get_message_repository()->count();
71 71
 
72
-        // if $count of items in queue == 1, then let's just return the subject for that item.
73
-        if ($count_of_items === 1) {
74
-            return $this->queue->get_message_repository()->current()->subject();
75
-        }
76
-        // phpcs:disable WordPress.WP.I18n.MissingSingularPlaceholder
77
-        return sprintf(
78
-            _n(
79
-                'Showing Aggregate output for 1 result',
80
-                'Showing Aggregate output for %d items',
81
-                $count_of_items,
82
-                'event_espresso'
83
-            ),
84
-            $count_of_items
85
-        );
86
-        // phpcs:enable
87
-    }
72
+		// if $count of items in queue == 1, then let's just return the subject for that item.
73
+		if ($count_of_items === 1) {
74
+			return $this->queue->get_message_repository()->current()->subject();
75
+		}
76
+		// phpcs:disable WordPress.WP.I18n.MissingSingularPlaceholder
77
+		return sprintf(
78
+			_n(
79
+				'Showing Aggregate output for 1 result',
80
+				'Showing Aggregate output for %d items',
81
+				$count_of_items,
82
+				'event_espresso'
83
+			),
84
+			$count_of_items
85
+		);
86
+		// phpcs:enable
87
+	}
88 88
 
89 89
 
90
-    /**
91
-     * Uses the EE_Messages_Queue currently set on this object to set the GRP_ID
92
-     * for the single EE_Message aggregate object returned by get_EE_Message
93
-     * @return int;
94
-     */
95
-    protected function getGroupIdFromMessageRepo()
96
-    {
97
-        $this->queue->get_message_repository()->rewind();
98
-        if ($this->queue->get_message_repository()->valid()) {
99
-            return $this->queue->get_message_repository()->current()->GRP_ID();
100
-        }
101
-    }
90
+	/**
91
+	 * Uses the EE_Messages_Queue currently set on this object to set the GRP_ID
92
+	 * for the single EE_Message aggregate object returned by get_EE_Message
93
+	 * @return int;
94
+	 */
95
+	protected function getGroupIdFromMessageRepo()
96
+	{
97
+		$this->queue->get_message_repository()->rewind();
98
+		if ($this->queue->get_message_repository()->valid()) {
99
+			return $this->queue->get_message_repository()->current()->GRP_ID();
100
+		}
101
+	}
102 102
 }
Please login to merge, or discard this patch.
core/libraries/shortcodes/EE_Line_Item_Shortcodes.lib.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
     protected function _parser($shortcode)
43 43
     {
44 44
         // ensure that the incoming object IS a line item.  If it isn't then bail early.
45
-        if (! $this->_data instanceof EE_Line_Item) {
45
+        if ( ! $this->_data instanceof EE_Line_Item) {
46 46
             return '';
47 47
         }
48 48
 
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
                 break;
63 63
 
64 64
             case '[LINE_ITEM_AMOUNT]':
65
-                return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code();
65
+                return $line_item->is_percent() ? $line_item->percent().'%' : $line_item->unit_price_no_code();
66 66
                 break;
67 67
 
68 68
             case '[LINE_ITEM_TOTAL]':
Please login to merge, or discard this patch.
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -18,65 +18,65 @@
 block discarded – undo
18 18
 {
19 19
 
20 20
 
21
-    protected function _init_props()
22
-    {
23
-        $this->label = esc_html__('Line Item Shortcodes', 'event_espresso');
24
-        $this->description = esc_html__('All shortcodes specific to line items', 'event_espresso');
25
-        $this->_shortcodes = array(
26
-            '[LINE_ITEM_NAME]' => esc_html__('Outputs the line item name.', 'event_espresso'),
27
-            '[LINE_ITEM_DESCRIPTION]' => esc_html__('Outputs a the description for the line item.', 'event_espresso'),
28
-            '[LINE_ITEM_QUANTITY]' => esc_html__('Outputs the quantity for this line item.', 'event_espresso'),
29
-            '[LINE_ITEM_AMOUNT]' => esc_html__(
30
-                'This will either output the unit price for a line item if its not a percent, or the percent of the line item (if it is percent).',
31
-                'event_espresso'
32
-            ),
33
-            '[LINE_ITEM_TOTAL]' => esc_html__('This outputs the line item total.', 'event_espresso'),
34
-            '[LINE_ITEM_TAXABLE_*]' => esc_html__(
35
-                'This attribute type shortcode allows users to indicate what to output if a line item is taxable or not.  One can use the key "symbol=" with the shortcode to indicate what they\'d like to represent a taxable line item.  So doing something like <code>[LINE_ITEM_TAXABLE_* symbol="*"]</code> means that when the line item is parsed, if it\'s taxable the "*" symbol will be returned.  The default symbol if no attribute is included is the "*" symbol.',
36
-                'event_espresso'
37
-            ),
38
-        );
39
-    }
21
+	protected function _init_props()
22
+	{
23
+		$this->label = esc_html__('Line Item Shortcodes', 'event_espresso');
24
+		$this->description = esc_html__('All shortcodes specific to line items', 'event_espresso');
25
+		$this->_shortcodes = array(
26
+			'[LINE_ITEM_NAME]' => esc_html__('Outputs the line item name.', 'event_espresso'),
27
+			'[LINE_ITEM_DESCRIPTION]' => esc_html__('Outputs a the description for the line item.', 'event_espresso'),
28
+			'[LINE_ITEM_QUANTITY]' => esc_html__('Outputs the quantity for this line item.', 'event_espresso'),
29
+			'[LINE_ITEM_AMOUNT]' => esc_html__(
30
+				'This will either output the unit price for a line item if its not a percent, or the percent of the line item (if it is percent).',
31
+				'event_espresso'
32
+			),
33
+			'[LINE_ITEM_TOTAL]' => esc_html__('This outputs the line item total.', 'event_espresso'),
34
+			'[LINE_ITEM_TAXABLE_*]' => esc_html__(
35
+				'This attribute type shortcode allows users to indicate what to output if a line item is taxable or not.  One can use the key "symbol=" with the shortcode to indicate what they\'d like to represent a taxable line item.  So doing something like <code>[LINE_ITEM_TAXABLE_* symbol="*"]</code> means that when the line item is parsed, if it\'s taxable the "*" symbol will be returned.  The default symbol if no attribute is included is the "*" symbol.',
36
+				'event_espresso'
37
+			),
38
+		);
39
+	}
40 40
 
41 41
 
42
-    protected function _parser($shortcode)
43
-    {
44
-        // ensure that the incoming object IS a line item.  If it isn't then bail early.
45
-        if (! $this->_data instanceof EE_Line_Item) {
46
-            return '';
47
-        }
42
+	protected function _parser($shortcode)
43
+	{
44
+		// ensure that the incoming object IS a line item.  If it isn't then bail early.
45
+		if (! $this->_data instanceof EE_Line_Item) {
46
+			return '';
47
+		}
48 48
 
49
-        $line_item = $this->_data;
49
+		$line_item = $this->_data;
50 50
 
51
-        switch ($shortcode) {
52
-            case '[LINE_ITEM_NAME]':
53
-                return $line_item->name();
54
-                break;
51
+		switch ($shortcode) {
52
+			case '[LINE_ITEM_NAME]':
53
+				return $line_item->name();
54
+				break;
55 55
 
56
-            case '[LINE_ITEM_DESCRIPTION]':
57
-                return $line_item->desc();
58
-                break;
56
+			case '[LINE_ITEM_DESCRIPTION]':
57
+				return $line_item->desc();
58
+				break;
59 59
 
60
-            case '[LINE_ITEM_QUANTITY]':
61
-                return $line_item->quantity();
62
-                break;
60
+			case '[LINE_ITEM_QUANTITY]':
61
+				return $line_item->quantity();
62
+				break;
63 63
 
64
-            case '[LINE_ITEM_AMOUNT]':
65
-                return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code();
66
-                break;
64
+			case '[LINE_ITEM_AMOUNT]':
65
+				return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code();
66
+				break;
67 67
 
68
-            case '[LINE_ITEM_TOTAL]':
69
-                return $line_item->total_no_code();
70
-                break;
71
-        }
68
+			case '[LINE_ITEM_TOTAL]':
69
+				return $line_item->total_no_code();
70
+				break;
71
+		}
72 72
 
73
-        if (strpos($shortcode, '[LINE_ITEM_TAXABLE_*') !== false) {
74
-            $attrs = $this->_get_shortcode_attrs($shortcode);
75
-            if ($line_item->is_taxable()) {
76
-                return ! empty($attrs['symbol']) ? $attrs['symbol'] : '*';
77
-            }
78
-        }
73
+		if (strpos($shortcode, '[LINE_ITEM_TAXABLE_*') !== false) {
74
+			$attrs = $this->_get_shortcode_attrs($shortcode);
75
+			if ($line_item->is_taxable()) {
76
+				return ! empty($attrs['symbol']) ? $attrs['symbol'] : '*';
77
+			}
78
+		}
79 79
 
80
-        return '';
81
-    }
80
+		return '';
81
+	}
82 82
 }
Please login to merge, or discard this patch.
core/libraries/shortcodes/EE_Datetime_Shortcodes.lib.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
     protected function _parser($shortcode)
55 55
     {
56 56
 
57
-        if (! $this->_data instanceof EE_Datetime) {
57
+        if ( ! $this->_data instanceof EE_Datetime) {
58 58
             return ''; // get out cause we can only parse with the datetime object.
59 59
         }
60 60
 
@@ -92,7 +92,7 @@  discard block
 block discarded – undo
92 92
 
93 93
             $URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url());
94 94
 
95
-            return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>';
95
+            return '<a class="ee-ical" href="'.$URL.'">'.$link_text.'</a>';
96 96
         }
97 97
 
98 98
         return '';
Please login to merge, or discard this patch.
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -18,83 +18,83 @@
 block discarded – undo
18 18
 class EE_Datetime_Shortcodes extends EE_Shortcodes
19 19
 {
20 20
 
21
-    /**
22
-     * _init_props
23
-     *
24
-     * @access protected
25
-     * @return void
26
-     */
27
-    protected function _init_props()
28
-    {
29
-        $this->label = esc_html__('Datetime Shortcodes', 'event_espresso');
30
-        $this->description = esc_html__('All shortcodes specific to datetime related data', 'event_espresso');
31
-        $this->_shortcodes = array(
32
-            '[DATETIME_START]' => esc_html__('The start date and time.', 'event_espresso'),
33
-            '[DATETIME_END]' => esc_html__('The end date and time.', 'event_espresso'),
34
-            '[DATETIME_TIMEZONE]' => esc_html__('The timezone for the date and time', 'event_espresso'),
35
-            '[DATE_START]' => esc_html__('The datetime start date.', 'event_espresso'),
36
-            '[DATE_END]' => esc_html__('The datetime end date.', 'event_espresso'),
37
-            '[TIME_START]' => esc_html__('The datetime start time.', 'event_espresso'),
38
-            '[TIME_END]' => esc_html__('The datetime end time.', 'event_espresso'),
39
-            '[ICAL_LINK_*]' => esc_html__(
40
-                'The datetime iCal link. The optional "link_text" attribute can be used to set custom text within the link (Default is "Add to iCal Calendar").',
41
-                'event_espresso'
42
-            ),
43
-        );
44
-    }
21
+	/**
22
+	 * _init_props
23
+	 *
24
+	 * @access protected
25
+	 * @return void
26
+	 */
27
+	protected function _init_props()
28
+	{
29
+		$this->label = esc_html__('Datetime Shortcodes', 'event_espresso');
30
+		$this->description = esc_html__('All shortcodes specific to datetime related data', 'event_espresso');
31
+		$this->_shortcodes = array(
32
+			'[DATETIME_START]' => esc_html__('The start date and time.', 'event_espresso'),
33
+			'[DATETIME_END]' => esc_html__('The end date and time.', 'event_espresso'),
34
+			'[DATETIME_TIMEZONE]' => esc_html__('The timezone for the date and time', 'event_espresso'),
35
+			'[DATE_START]' => esc_html__('The datetime start date.', 'event_espresso'),
36
+			'[DATE_END]' => esc_html__('The datetime end date.', 'event_espresso'),
37
+			'[TIME_START]' => esc_html__('The datetime start time.', 'event_espresso'),
38
+			'[TIME_END]' => esc_html__('The datetime end time.', 'event_espresso'),
39
+			'[ICAL_LINK_*]' => esc_html__(
40
+				'The datetime iCal link. The optional "link_text" attribute can be used to set custom text within the link (Default is "Add to iCal Calendar").',
41
+				'event_espresso'
42
+			),
43
+		);
44
+	}
45 45
 
46 46
 
47
-    /**
48
-     * _parser
49
-     *
50
-     * @access protected
51
-     * @param string $shortcode
52
-     * @return string
53
-     */
54
-    protected function _parser($shortcode)
55
-    {
47
+	/**
48
+	 * _parser
49
+	 *
50
+	 * @access protected
51
+	 * @param string $shortcode
52
+	 * @return string
53
+	 */
54
+	protected function _parser($shortcode)
55
+	{
56 56
 
57
-        if (! $this->_data instanceof EE_Datetime) {
58
-            return ''; // get out cause we can only parse with the datetime object.
59
-        }
57
+		if (! $this->_data instanceof EE_Datetime) {
58
+			return ''; // get out cause we can only parse with the datetime object.
59
+		}
60 60
 
61
-        switch ($shortcode) {
62
-            case '[DATETIME_START]':
63
-                return $this->_data->get_i18n_datetime('DTT_EVT_start');
64
-                break;
61
+		switch ($shortcode) {
62
+			case '[DATETIME_START]':
63
+				return $this->_data->get_i18n_datetime('DTT_EVT_start');
64
+				break;
65 65
 
66
-            case '[DATETIME_END]':
67
-                return $this->_data->get_i18n_datetime('DTT_EVT_end');
68
-                break;
66
+			case '[DATETIME_END]':
67
+				return $this->_data->get_i18n_datetime('DTT_EVT_end');
68
+				break;
69 69
 
70
-            case '[DATETIME_TIMEZONE]':
71
-                return $this->_data->get_timezone();
72
-                break;
73
-            case '[DATE_START]':
74
-                return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('date_format'));
75
-                break;
76
-            case '[DATE_END]':
77
-                return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('date_format'));
78
-                break;
79
-            case '[TIME_START]':
80
-                return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('time_format'));
81
-                break;
82
-            case '[TIME_END]':
83
-                return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('time_format'));
84
-                break;
85
-        }
70
+			case '[DATETIME_TIMEZONE]':
71
+				return $this->_data->get_timezone();
72
+				break;
73
+			case '[DATE_START]':
74
+				return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('date_format'));
75
+				break;
76
+			case '[DATE_END]':
77
+				return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('date_format'));
78
+				break;
79
+			case '[TIME_START]':
80
+				return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('time_format'));
81
+				break;
82
+			case '[TIME_END]':
83
+				return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('time_format'));
84
+				break;
85
+		}
86 86
 
87
-        if (strpos($shortcode, '[ICAL_LINK_*') !== false) {
88
-            $attrs = $this->_get_shortcode_attrs($shortcode);
87
+		if (strpos($shortcode, '[ICAL_LINK_*') !== false) {
88
+			$attrs = $this->_get_shortcode_attrs($shortcode);
89 89
 
90
-            $link_text = empty($attrs['link_text']) ? esc_html__('Add to iCal Calendar', 'event_espresso')
91
-                : $attrs['link_text'];
90
+			$link_text = empty($attrs['link_text']) ? esc_html__('Add to iCal Calendar', 'event_espresso')
91
+				: $attrs['link_text'];
92 92
 
93
-            $URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url());
93
+			$URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url());
94 94
 
95
-            return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>';
96
-        }
95
+			return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>';
96
+		}
97 97
 
98
-        return '';
99
-    }
98
+		return '';
99
+	}
100 100
 }
Please login to merge, or discard this patch.