Completed
Branch fix-dummy-related-question-qst... (e5efcf)
by
unknown
07:49 queued 03:45
created
core/admin/EE_Admin_Page_Menu_Group.core.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -39,6 +39,6 @@
 block discarded – undo
39 39
 
40 40
     private function _group_link()
41 41
     {
42
-        return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
42
+        return '<span class="ee_menu_group"  onclick="return false;">'.$this->menu_label.'</span>';
43 43
     }
44 44
 }
Please login to merge, or discard this patch.
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -13,31 +13,31 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Admin_Page_Menu_Group extends EE_Admin_Page_Menu_Map
15 15
 {
16
-    /**
17
-     * @throws EE_Error
18
-     */
19
-    public function __construct($menu_args = [])
20
-    {
21
-        $required = ['menu_label', 'menu_slug', 'menu_order', 'parent_slug'];
22
-        parent::__construct($menu_args, $required);
23
-    }
16
+	/**
17
+	 * @throws EE_Error
18
+	 */
19
+	public function __construct($menu_args = [])
20
+	{
21
+		$required = ['menu_label', 'menu_slug', 'menu_order', 'parent_slug'];
22
+		parent::__construct($menu_args, $required);
23
+	}
24 24
 
25 25
 
26
-    protected function _add_menu_page()
27
-    {
28
-        return add_submenu_page(
29
-            $this->parent_slug,
30
-            $this->menu_label,
31
-            $this->_group_link(),
32
-            $this->capability,
33
-            $this->menu_slug,
34
-            '__return_false'
35
-        );
36
-    }
26
+	protected function _add_menu_page()
27
+	{
28
+		return add_submenu_page(
29
+			$this->parent_slug,
30
+			$this->menu_label,
31
+			$this->_group_link(),
32
+			$this->capability,
33
+			$this->menu_slug,
34
+			'__return_false'
35
+		);
36
+	}
37 37
 
38 38
 
39
-    private function _group_link()
40
-    {
41
-        return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
42
-    }
39
+	private function _group_link()
40
+	{
41
+		return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
42
+	}
43 43
 }
Please login to merge, or discard this patch.
core/admin/EE_Admin_Page_Main_Menu.core.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@
 block discarded – undo
70 70
             $this->icon_url,
71 71
             $this->position
72 72
         );
73
-        if (! empty($this->subtitle)) {
73
+        if ( ! empty($this->subtitle)) {
74 74
             add_submenu_page(
75 75
                 $this->parent_slug,
76 76
                 $this->subtitle,
Please login to merge, or discard this patch.
Indentation   +63 added lines, -63 removed lines patch added patch discarded remove patch
@@ -9,76 +9,76 @@
 block discarded – undo
9 9
  */
10 10
 class EE_Admin_Page_Main_Menu extends EE_Admin_Page_Menu_Map
11 11
 {
12
-    /**
13
-     * If included int incoming params, then this class will also register a Sub Menue Admin page with a different
14
-     * subtitle than the main menu item.
15
-     *
16
-     * @since 4.4.0
17
-     *
18
-     * @var string
19
-     */
20
-    public $subtitle;
12
+	/**
13
+	 * If included int incoming params, then this class will also register a Sub Menue Admin page with a different
14
+	 * subtitle than the main menu item.
15
+	 *
16
+	 * @since 4.4.0
17
+	 *
18
+	 * @var string
19
+	 */
20
+	public $subtitle;
21 21
 
22
-    /**
23
-     * The page to a icon used for this menu.
24
-     *
25
-     * @since  4.4.0
26
-     * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
27
-     *        for what can be set for this property.
28
-     * @var string
29
-     */
30
-    public $icon_url;
22
+	/**
23
+	 * The page to a icon used for this menu.
24
+	 *
25
+	 * @since  4.4.0
26
+	 * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
27
+	 *        for what can be set for this property.
28
+	 * @var string
29
+	 */
30
+	public $icon_url;
31 31
 
32 32
 
33
-    /**
34
-     * What position in the main menu order for the WP admin menu this menu item
35
-     * should show.
36
-     *
37
-     * @since  4.4.0
38
-     * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
39
-     *        for what can be set for this property.
40
-     * @var integer
41
-     */
42
-    public $position;
33
+	/**
34
+	 * What position in the main menu order for the WP admin menu this menu item
35
+	 * should show.
36
+	 *
37
+	 * @since  4.4.0
38
+	 * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
39
+	 *        for what can be set for this property.
40
+	 * @var integer
41
+	 */
42
+	public $position;
43 43
 
44 44
 
45
-    /**
46
-     * @throws EE_Error
47
-     */
48
-    public function __construct($menu_args)
49
-    {
50
-        $required = ['menu_label', 'parent_slug', 'menu_slug', 'menu_group', 'menu_order', 'admin_init_page'];
45
+	/**
46
+	 * @throws EE_Error
47
+	 */
48
+	public function __construct($menu_args)
49
+	{
50
+		$required = ['menu_label', 'parent_slug', 'menu_slug', 'menu_group', 'menu_order', 'admin_init_page'];
51 51
 
52
-        parent::__construct($menu_args, $required);
52
+		parent::__construct($menu_args, $required);
53 53
 
54
-        $this->position = ! empty($this->position) ? (int) $this->position : $this->position;
55
-    }
54
+		$this->position = ! empty($this->position) ? (int) $this->position : $this->position;
55
+	}
56 56
 
57 57
 
58
-    /**
59
-     * Uses the proper WP utility for registering a menu page for the main WP pages.
60
-     */
61
-    protected function _add_menu_page()
62
-    {
63
-        $main = add_menu_page(
64
-            $this->title,
65
-            $this->menu_label,
66
-            $this->capability,
67
-            $this->parent_slug,
68
-            $this->menu_callback,
69
-            $this->icon_url,
70
-            $this->position
71
-        );
72
-        if (! empty($this->subtitle)) {
73
-            add_submenu_page(
74
-                $this->parent_slug,
75
-                $this->subtitle,
76
-                $this->subtitle,
77
-                $this->capability,
78
-                $this->menu_slug,
79
-                $this->menu_callback
80
-            );
81
-        }
82
-        return $main;
83
-    }
58
+	/**
59
+	 * Uses the proper WP utility for registering a menu page for the main WP pages.
60
+	 */
61
+	protected function _add_menu_page()
62
+	{
63
+		$main = add_menu_page(
64
+			$this->title,
65
+			$this->menu_label,
66
+			$this->capability,
67
+			$this->parent_slug,
68
+			$this->menu_callback,
69
+			$this->icon_url,
70
+			$this->position
71
+		);
72
+		if (! empty($this->subtitle)) {
73
+			add_submenu_page(
74
+				$this->parent_slug,
75
+				$this->subtitle,
76
+				$this->subtitle,
77
+				$this->capability,
78
+				$this->menu_slug,
79
+				$this->menu_callback
80
+			);
81
+		}
82
+		return $main;
83
+	}
84 84
 }
Please login to merge, or discard this patch.
core/domain/services/admin/privacy/policy/privacy_policy.template.php 2 patches
Indentation   +80 added lines, -80 removed lines patch added patch discarded remove patch
@@ -7,10 +7,10 @@  discard block
 block discarded – undo
7 7
 ?>
8 8
 <h2><?php esc_html_e('Event Registration Data', 'event_espresso'); ?></h2>
9 9
 <p><?php
10
-    esc_html_e(
11
-        'We collect information about you during event registration. This information may include but is not limited to:',
12
-        'event_espresso'
13
-    ); ?></p>
10
+	esc_html_e(
11
+		'We collect information about you during event registration. This information may include but is not limited to:',
12
+		'event_espresso'
13
+	); ?></p>
14 14
 <ul>
15 15
     <li><?php esc_html_e('Your names', 'event_espresso'); ?></li>
16 16
     <li><?php esc_html_e('Billing address', 'event_espresso'); ?></li>
@@ -18,16 +18,16 @@  discard block
 block discarded – undo
18 18
     <li><?php esc_html_e('Email address', 'event_espresso'); ?></li>
19 19
     <li><?php esc_html_e('Phone number', 'event_espresso'); ?></li>
20 20
     <li><?php
21
-        esc_html_e(
22
-            'Location and traffic data (including partial IP address and browser type)',
23
-            'event_espresso'
24
-        ); ?>
21
+		esc_html_e(
22
+			'Location and traffic data (including partial IP address and browser type)',
23
+			'event_espresso'
24
+		); ?>
25 25
     </li>
26 26
     <li><?php
27
-        esc_html_e(
28
-            'Any other details that might be requested from you for the purpose of processing your registration or ticket purchase',
29
-            'event_espresso'
30
-        ); ?>
27
+		esc_html_e(
28
+			'Any other details that might be requested from you for the purpose of processing your registration or ticket purchase',
29
+			'event_espresso'
30
+		); ?>
31 31
     </li>
32 32
 </ul>
33 33
 
@@ -36,101 +36,101 @@  discard block
 block discarded – undo
36 36
     <li><?php esc_html_e('Send you important account/purchase/service information.', 'event_espresso'); ?></li>
37 37
     <li><?php esc_html_e('Respond to your queries, refund requests, or complaints.', 'event_espresso'); ?></li>
38 38
     <li><?php
39
-        esc_html_e(
40
-            'Process payments and prevent fraudulent transactions. We do this on the basis of our legitimate business interests.',
41
-            'event_espresso'
42
-        ); ?></li>
39
+		esc_html_e(
40
+			'Process payments and prevent fraudulent transactions. We do this on the basis of our legitimate business interests.',
41
+			'event_espresso'
42
+		); ?></li>
43 43
     <li><?php
44
-        esc_html_e(
45
-            'Set up and administer your account, provide technical and customer support, and to verify your identity.',
46
-            'event_espresso'
47
-        ); ?></li>
44
+		esc_html_e(
45
+			'Set up and administer your account, provide technical and customer support, and to verify your identity.',
46
+			'event_espresso'
47
+		); ?></li>
48 48
 </ul>
49 49
 
50 50
 <?php if (! empty($active_onsite_payment_methods) || ! empty($active_offsite_payment_methods)) { ?>
51 51
     <h2><?php esc_html_e('Billing Information', 'event_espresso'); ?> </h2>
52 52
     <?php
53
-    // if onsite or offsite payment methods are active
54
-    if (! empty($active_onsite_payment_methods)) { ?>
53
+	// if onsite or offsite payment methods are active
54
+	if (! empty($active_onsite_payment_methods)) { ?>
55 55
         <p><?php
56
-            esc_html_e(
57
-                'In order to process payments, we collect billing information on-site. Sensitive billing information is not stored on our server, but may be handled while in-transit to the payment processing server.',
58
-                'event_espresso'
59
-            ); ?></p>
56
+			esc_html_e(
57
+				'In order to process payments, we collect billing information on-site. Sensitive billing information is not stored on our server, but may be handled while in-transit to the payment processing server.',
58
+				'event_espresso'
59
+			); ?></p>
60 60
         <p><?php
61
-            printf(
62
-                esc_html_x(
63
-                    'Please see the privacy policy of %1$s.',
64
-                    'Please see the privacy policy of PayPal Pro',
65
-                    'event_espresso'
66
-                ),
67
-                implode(
68
-                    ', ',
69
-                    array_merge(
70
-                        $active_onsite_payment_methods,
71
-                        $active_offsite_payment_methods
72
-                    )
73
-                )
74
-            ); ?></p>
61
+			printf(
62
+				esc_html_x(
63
+					'Please see the privacy policy of %1$s.',
64
+					'Please see the privacy policy of PayPal Pro',
65
+					'event_espresso'
66
+				),
67
+				implode(
68
+					', ',
69
+					array_merge(
70
+						$active_onsite_payment_methods,
71
+						$active_offsite_payment_methods
72
+					)
73
+				)
74
+			); ?></p>
75 75
         <p><?php
76
-            esc_html_e(
77
-                'Masked billing information may be stored on our servers (eg only the last 4 digits of credit card numbers are stored: **** **** **** 1234).',
78
-                'event_espresso'
79
-            ); ?></p>
76
+			esc_html_e(
77
+				'Masked billing information may be stored on our servers (eg only the last 4 digits of credit card numbers are stored: **** **** **** 1234).',
78
+				'event_espresso'
79
+			); ?></p>
80 80
     <?php } elseif (! empty($active_offsite_payment_methods)) { // IF OFFSITE PAYMENT METHOD ACTIVE ?>
81 81
         <p><?php
82
-            printf(
83
-                esc_html_x(
84
-                    'Billing information is sent directly to the payment processor, and is not handled by our servers. Please see the privacy policy of %1$s.',
85
-                    'Billing information is sent directly to the payment processor, and is not handled by our servers. Please see the privacy policy of PayPal Pro.',
86
-                    'event_espresso'
87
-                ),
88
-                implode(', ', $active_offsite_payment_methods)
89
-            ); ?></p>
82
+			printf(
83
+				esc_html_x(
84
+					'Billing information is sent directly to the payment processor, and is not handled by our servers. Please see the privacy policy of %1$s.',
85
+					'Billing information is sent directly to the payment processor, and is not handled by our servers. Please see the privacy policy of PayPal Pro.',
86
+					'event_espresso'
87
+				),
88
+				implode(', ', $active_offsite_payment_methods)
89
+			); ?></p>
90 90
     <?php } ?>
91 91
     <h2><?php esc_html_e('Payment Logging', 'event_espresso'); ?></h2>
92 92
     <p><?php
93
-        esc_html_e(
94
-            'Site administrators may keep a log of communications with the payment processors in order to verify payments are being processed correctly. These logs are automatically deleted after a week.',
95
-            'event_espresso'
96
-        ); ?></p>
93
+		esc_html_e(
94
+			'Site administrators may keep a log of communications with the payment processors in order to verify payments are being processed correctly. These logs are automatically deleted after a week.',
95
+			'event_espresso'
96
+		); ?></p>
97 97
 <?php } ?>
98 98
 
99 99
 <h2><?php esc_html_e('Event Registration Cookies', 'event_espresso'); ?></h2>
100 100
 <p><?php
101
-    printf(
102
-        esc_html_x(
103
-            'When you begin registering for an event and select a ticket quantity, a cookie will be used to track your registration. This cookie lasts %1$s.',
104
-            'When you begin registering for an event and select a ticket quantity, a cookie will be used to track your registration. This cookie lasts 2 hours.',
105
-            'event_espresso'
106
-        ),
107
-        $session_lifespan
108
-    ); ?></p>
101
+	printf(
102
+		esc_html_x(
103
+			'When you begin registering for an event and select a ticket quantity, a cookie will be used to track your registration. This cookie lasts %1$s.',
104
+			'When you begin registering for an event and select a ticket quantity, a cookie will be used to track your registration. This cookie lasts 2 hours.',
105
+			'event_espresso'
106
+		),
107
+		$session_lifespan
108
+	); ?></p>
109 109
 
110 110
 <h2><?php esc_html_e('Email History Data', 'event_espresso'); ?></h2>
111 111
 <p><?php
112
-    esc_html_e(
113
-        'We keep a record of the emails sent to you. This is to ensure communication is successfully sent and its information is accurate.',
114
-        'event_espresso'
115
-    ); ?></p>
112
+	esc_html_e(
113
+		'We keep a record of the emails sent to you. This is to ensure communication is successfully sent and its information is accurate.',
114
+		'event_espresso'
115
+	); ?></p>
116 116
 
117 117
 <h2><?php esc_html_e('Event Check-In Record', 'event_espresso'); ?></h2>
118 118
 <p><?php
119
-    esc_html_e(
120
-        'When you attend an event, an event manager may record the time you check in or out of the event.',
121
-        'event_espresso'
122
-    ); ?></p>
119
+	esc_html_e(
120
+		'When you attend an event, an event manager may record the time you check in or out of the event.',
121
+		'event_espresso'
122
+	); ?></p>
123 123
 
124 124
 <h2><?php esc_html_e('Event Registration Data Retention', 'event_espresso'); ?></h2>
125 125
 <p><?php
126
-    esc_html_e(
127
-        'Personal data is stored at least until the date of the event, and may be kept indefinitely in case of future registrations.',
128
-        'event_espresso'
129
-    ); ?></p>
126
+	esc_html_e(
127
+		'Personal data is stored at least until the date of the event, and may be kept indefinitely in case of future registrations.',
128
+		'event_espresso'
129
+	); ?></p>
130 130
 
131 131
 <h2><?php esc_html_e('Event Registration Data Erasure and Export', 'event_espresso'); ?></h2>
132 132
 <p><?php
133
-    esc_html_e(
134
-        'You have the right to request your personal data be sent to you electronically, and the right to request your registration data be erased after the event. To do so, please contact the event manager or site administrator.',
135
-        'event_espresso'
136
-    ); ?></p>
133
+	esc_html_e(
134
+		'You have the right to request your personal data be sent to you electronically, and the right to request your registration data be erased after the event. To do so, please contact the event manager or site administrator.',
135
+		'event_espresso'
136
+	); ?></p>
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -47,11 +47,11 @@  discard block
 block discarded – undo
47 47
         ); ?></li>
48 48
 </ul>
49 49
 
50
-<?php if (! empty($active_onsite_payment_methods) || ! empty($active_offsite_payment_methods)) { ?>
50
+<?php if ( ! empty($active_onsite_payment_methods) || ! empty($active_offsite_payment_methods)) { ?>
51 51
     <h2><?php esc_html_e('Billing Information', 'event_espresso'); ?> </h2>
52 52
     <?php
53 53
     // if onsite or offsite payment methods are active
54
-    if (! empty($active_onsite_payment_methods)) { ?>
54
+    if ( ! empty($active_onsite_payment_methods)) { ?>
55 55
         <p><?php
56 56
             esc_html_e(
57 57
                 'In order to process payments, we collect billing information on-site. Sensitive billing information is not stored on our server, but may be handled while in-transit to the payment processing server.',
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
                 'Masked billing information may be stored on our servers (eg only the last 4 digits of credit card numbers are stored: **** **** **** 1234).',
78 78
                 'event_espresso'
79 79
             ); ?></p>
80
-    <?php } elseif (! empty($active_offsite_payment_methods)) { // IF OFFSITE PAYMENT METHOD ACTIVE ?>
80
+    <?php } elseif ( ! empty($active_offsite_payment_methods)) { // IF OFFSITE PAYMENT METHOD ACTIVE ?>
81 81
         <p><?php
82 82
             printf(
83 83
                 esc_html_x(
Please login to merge, or discard this patch.
public/Espresso_Arabica_2014/loop-espresso_events.php 2 patches
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -11,48 +11,48 @@
 block discarded – undo
11 11
  * @version     4+
12 12
  */
13 13
 if (have_posts()) :
14
-    if (apply_filters('FHEE__archive_espresso_events_template__show_header', true)) : ?>
14
+	if (apply_filters('FHEE__archive_espresso_events_template__show_header', true)) : ?>
15 15
         <header class="page-header">
16 16
             <h1 class="page-title">
17 17
                 <?php
18
-                if (is_day()) :
19
-                    printf(esc_html__('Today\'s Events: %s', 'event_espresso'), get_the_date());
20
-                elseif (is_month()) :
21
-                    printf(
22
-                        esc_html__('Events This Month: %s', 'event_espresso'),
23
-                        get_the_date(_x('F Y', 'monthly archives date format', 'event_espresso'))
24
-                    );
25
-                elseif (is_year()) :
26
-                    printf(
27
-                        esc_html__('Events This Year: %s', 'event_espresso'),
28
-                        get_the_date(_x('Y', 'yearly archives date format', 'event_espresso'))
29
-                    );
30
-                else :
31
-                    echo apply_filters(
32
-                        'FHEE__archive_espresso_events_template__upcoming_events_h1',
33
-                        esc_html__('Upcoming Events', 'event_espresso')
34
-                    );
35
-                endif;
36
-                ?>
18
+				if (is_day()) :
19
+					printf(esc_html__('Today\'s Events: %s', 'event_espresso'), get_the_date());
20
+				elseif (is_month()) :
21
+					printf(
22
+						esc_html__('Events This Month: %s', 'event_espresso'),
23
+						get_the_date(_x('F Y', 'monthly archives date format', 'event_espresso'))
24
+					);
25
+				elseif (is_year()) :
26
+					printf(
27
+						esc_html__('Events This Year: %s', 'event_espresso'),
28
+						get_the_date(_x('Y', 'yearly archives date format', 'event_espresso'))
29
+					);
30
+				else :
31
+					echo apply_filters(
32
+						'FHEE__archive_espresso_events_template__upcoming_events_h1',
33
+						esc_html__('Upcoming Events', 'event_espresso')
34
+					);
35
+				endif;
36
+				?>
37 37
             </h1>
38 38
 
39 39
         </header><!-- .page-header -->
40 40
 
41 41
         <?php
42
-    endif;
43
-    // allow other stuff
44
-    do_action('AHEE__archive_espresso_events_template__before_loop');
45
-    // Start the Loop.
46
-    while (have_posts()) : the_post();
47
-        // Include the post TYPE-specific template for the content.
48
-        espresso_get_template_part('content', 'espresso_events-shortcode');
49
-    endwhile;
50
-    // Previous/next page navigation.
51
-    espresso_pagination();
52
-    // allow moar other stuff
53
-    do_action('AHEE__archive_espresso_events_template__after_loop');
42
+	endif;
43
+	// allow other stuff
44
+	do_action('AHEE__archive_espresso_events_template__before_loop');
45
+	// Start the Loop.
46
+	while (have_posts()) : the_post();
47
+		// Include the post TYPE-specific template for the content.
48
+		espresso_get_template_part('content', 'espresso_events-shortcode');
49
+	endwhile;
50
+	// Previous/next page navigation.
51
+	espresso_pagination();
52
+	// allow moar other stuff
53
+	do_action('AHEE__archive_espresso_events_template__after_loop');
54 54
 else :
55
-    // If no content, include the "No posts found" template.
56
-    espresso_get_template_part('content', 'none');
55
+	// If no content, include the "No posts found" template.
56
+	espresso_get_template_part('content', 'none');
57 57
 endif;
58 58
 
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -27,11 +27,13 @@  discard block
 block discarded – undo
27 27
                         esc_html__('Events This Year: %s', 'event_espresso'),
28 28
                         get_the_date(_x('Y', 'yearly archives date format', 'event_espresso'))
29 29
                     );
30
-                else :
30
+                else {
31
+                	:
31 32
                     echo apply_filters(
32 33
                         'FHEE__archive_espresso_events_template__upcoming_events_h1',
33 34
                         esc_html__('Upcoming Events', 'event_espresso')
34 35
                     );
36
+                }
35 37
                 endif;
36 38
                 ?>
37 39
             </h1>
@@ -51,8 +53,10 @@  discard block
 block discarded – undo
51 53
     espresso_pagination();
52 54
     // allow moar other stuff
53 55
     do_action('AHEE__archive_espresso_events_template__after_loop');
54
-else :
56
+else {
57
+	:
55 58
     // If no content, include the "No posts found" template.
56 59
     espresso_get_template_part('content', 'none');
60
+}
57 61
 endif;
58 62
 
Please login to merge, or discard this patch.
public/Espresso_Arabica_2014/functions.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -9,9 +9,9 @@  discard block
 block discarded – undo
9 9
  * @ link			http://www.eventespresso.com
10 10
  * @ version		4+
11 11
  */
12
-define( 'EE_THEME_FUNCTIONS_LOADED', TRUE );
12
+define('EE_THEME_FUNCTIONS_LOADED', TRUE);
13 13
 
14
-if ( ! function_exists( 'espresso_pagination' ) ) {
14
+if ( ! function_exists('espresso_pagination')) {
15 15
 	/**
16 16
 	 *    espresso_pagination
17 17
 	 *
@@ -23,21 +23,21 @@  discard block
 block discarded – undo
23 23
 		$big = 999999999; // need an unlikely integer
24 24
 		$pagination = paginate_links(
25 25
 			array(
26
-				'base'         => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
26
+				'base'         => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
27 27
 				'format'       => '?paged=%#%',
28
-				'current'      => max( 1, get_query_var( 'paged' ) ),
28
+				'current'      => max(1, get_query_var('paged')),
29 29
 				'total'        => $wp_query->max_num_pages,
30 30
 				'show_all'     => true,
31 31
 				'end_size'     => 10,
32 32
 				'mid_size'     => 6,
33 33
 				'prev_next'    => true,
34
-				'prev_text'    => esc_html__( '&lsaquo; PREV', 'event_espresso' ),
35
-				'next_text'    => esc_html__( 'NEXT &rsaquo;', 'event_espresso' ),
34
+				'prev_text'    => esc_html__('&lsaquo; PREV', 'event_espresso'),
35
+				'next_text'    => esc_html__('NEXT &rsaquo;', 'event_espresso'),
36 36
 				'type'         => 'plain',
37 37
 				'add_args'     => false,
38 38
 				'add_fragment' => ''
39 39
 			)
40 40
 		);
41
-		echo ! empty( $pagination ) ? '<div class="ee-pagination-dv ee-clear-float">' . $pagination . '</div>' : '';
41
+		echo ! empty($pagination) ? '<div class="ee-pagination-dv ee-clear-float">'.$pagination.'</div>' : '';
42 42
 	}
43 43
 }
44 44
\ No newline at end of file
Please login to merge, or discard this patch.
core/libraries/messages/data_class/EE_Messages_REG_incoming_data.class.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -31,14 +31,14 @@  discard block
 block discarded – undo
31 31
     {
32 32
         $filtered_reg_status = null;
33 33
 
34
-        if (! is_array($data) && $data instanceof EE_Registration) {
34
+        if ( ! is_array($data) && $data instanceof EE_Registration) {
35 35
             $this->reg_obj = $data;
36 36
         } else {
37 37
             $this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
38 38
             $filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
39 39
         }
40 40
 
41
-        if (! $this->reg_obj instanceof EE_Registration) {
41
+        if ( ! $this->reg_obj instanceof EE_Registration) {
42 42
             throw new EE_Error(
43 43
                 sprintf(
44 44
                     esc_html__('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
@@ -66,16 +66,16 @@  discard block
 block discarded – undo
66 66
     public static function convert_data_for_persistent_storage($data)
67 67
     {
68 68
         $prepped_data = array();
69
-        if (! is_array($data) && $data instanceof EE_Registration) {
69
+        if ( ! is_array($data) && $data instanceof EE_Registration) {
70 70
             $prepped_data['Registration'] = $data->ID();
71 71
             return $prepped_data;
72
-        } elseif (! is_array($data)) {
72
+        } elseif ( ! is_array($data)) {
73 73
             return array();
74 74
         } else {
75 75
             if ($data[0] instanceof EE_Registration) {
76 76
                 $prepped_data['Registration'] = $data[0];
77 77
             }
78
-            if (! empty($data[1])) {
78
+            if ( ! empty($data[1])) {
79 79
                 $prepped_data['filter'] = $data[1];
80 80
             }
81 81
         }
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
         $this->txn = $this->reg_obj->transaction();
122 122
         // possible session stuff?
123 123
         $session = $this->txn->session_data();
124
-        $session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
124
+        $session_data = $session instanceof EE_Session ? $session->get_session_data() : array();
125 125
 
126 126
         // other data from the session (if possible)
127 127
         $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
Please login to merge, or discard this patch.
Indentation   +133 added lines, -133 removed lines patch added patch discarded remove patch
@@ -15,137 +15,137 @@
 block discarded – undo
15 15
  */
16 16
 class EE_Messages_REG_incoming_data extends EE_Messages_incoming_data
17 17
 {
18
-    /**
19
-     * For the constructor of this special preview class.
20
-     *
21
-     * The data is expected to be an array that came from the request data
22
-     * and should have at least one property from the list looked for.
23
-     *
24
-     * @param EE_Registration|array $data
25
-     * @throws \EE_Error
26
-     */
27
-    public function __construct($data)
28
-    {
29
-        $filtered_reg_status = null;
30
-
31
-        if (! is_array($data) && $data instanceof EE_Registration) {
32
-            $this->reg_obj = $data;
33
-        } else {
34
-            $this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
35
-            $filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
36
-        }
37
-
38
-        if (! $this->reg_obj instanceof EE_Registration) {
39
-            throw new EE_Error(
40
-                sprintf(
41
-                    esc_html__('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
42
-                    'EE_Messages_REG_incoming_data',
43
-                    'EE_Registration'
44
-                )
45
-            );
46
-        }
47
-
48
-        $data = array(
49
-            'reg_obj' => $this->reg_obj,
50
-            'filtered_reg_status' => $filtered_reg_status
51
-            );
52
-
53
-        parent::__construct($data);
54
-    }
55
-
56
-    /**
57
-     * Returns database safe representation of the data later used to when instantiating this object.
58
-     *
59
-     * @param mixed $data The incoming data to be prepped.
60
-     *
61
-     * @return array   The prepped data for db
62
-     */
63
-    public static function convert_data_for_persistent_storage($data)
64
-    {
65
-        $prepped_data = array();
66
-        if (! is_array($data) && $data instanceof EE_Registration) {
67
-            $prepped_data['Registration'] = $data->ID();
68
-            return $prepped_data;
69
-        } elseif (! is_array($data)) {
70
-            return array();
71
-        } else {
72
-            if ($data[0] instanceof EE_Registration) {
73
-                $prepped_data['Registration'] = $data[0];
74
-            }
75
-            if (! empty($data[1])) {
76
-                $prepped_data['filter'] = $data[1];
77
-            }
78
-        }
79
-
80
-        return $prepped_data;
81
-    }
82
-
83
-    /**
84
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
85
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
86
-     *
87
-     * @param $data
88
-     *
89
-     * @return mixed
90
-     */
91
-    public static function convert_data_from_persistent_storage($data)
92
-    {
93
-        $registration = null;
94
-        // $data['Registration'] could be either an ID (back compat) or a registration object (prepped using old system).
95
-        if (isset($data['Registration'])) {
96
-            $registration = $data['Registration'] instanceof EE_Registration
97
-                ? $data['Registration']
98
-                : EEM_Registration::instance()->get_one_by_ID($data['Registration']);
99
-        }
100
-        $prepped_data = array(
101
-            0 => $registration,
102
-            1 => isset($data['filter']) ? $data['filter'] : null
103
-        );
104
-        return $prepped_data;
105
-    }
106
-
107
-
108
-    /**
109
-     * This will just setup the _events property in the expected format.
110
-     * @return void
111
-     */
112
-    protected function _setup_data()
113
-    {
114
-
115
-        // now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
116
-        $this->filtered_reg_status = $this->_data['filtered_reg_status'];
117
-        // get txn
118
-        $this->txn = $this->reg_obj->transaction();
119
-        // possible session stuff?
120
-        $session = $this->txn->session_data();
121
-        $session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
122
-
123
-        // other data from the session (if possible)
124
-        $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
125
-        $this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
126
-        $this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
127
-        $this->init_access = $this->last_access = '';
128
-
129
-        $this->payment = $this->txn->get_first_related('Payment');
130
-        // if there is no payments associated with the transaction
131
-        // then we just create a default payment object for potential parsing.
132
-        $this->payment = empty($this->payment)
133
-            ? EE_Payment::new_instance(
134
-                array(
135
-                    'STS_ID'               => EEM_Payment::status_id_pending,
136
-                    'PAY_timestamp'        => time(),
137
-                    'PMD_ID'               => $this->txn->payment_method_ID(),
138
-                    'PAY_gateway_response' => $this->txn->gateway_response_on_transaction(),
139
-                )
140
-            )
141
-            : $this->payment;
142
-
143
-
144
-        // get reg_objs for txn
145
-        $this->reg_objs = $this->txn->registrations();
146
-
147
-        // now we can set things up like we do for other handlers
148
-
149
-        $this->_assemble_data();
150
-    }
18
+	/**
19
+	 * For the constructor of this special preview class.
20
+	 *
21
+	 * The data is expected to be an array that came from the request data
22
+	 * and should have at least one property from the list looked for.
23
+	 *
24
+	 * @param EE_Registration|array $data
25
+	 * @throws \EE_Error
26
+	 */
27
+	public function __construct($data)
28
+	{
29
+		$filtered_reg_status = null;
30
+
31
+		if (! is_array($data) && $data instanceof EE_Registration) {
32
+			$this->reg_obj = $data;
33
+		} else {
34
+			$this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
35
+			$filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
36
+		}
37
+
38
+		if (! $this->reg_obj instanceof EE_Registration) {
39
+			throw new EE_Error(
40
+				sprintf(
41
+					esc_html__('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
42
+					'EE_Messages_REG_incoming_data',
43
+					'EE_Registration'
44
+				)
45
+			);
46
+		}
47
+
48
+		$data = array(
49
+			'reg_obj' => $this->reg_obj,
50
+			'filtered_reg_status' => $filtered_reg_status
51
+			);
52
+
53
+		parent::__construct($data);
54
+	}
55
+
56
+	/**
57
+	 * Returns database safe representation of the data later used to when instantiating this object.
58
+	 *
59
+	 * @param mixed $data The incoming data to be prepped.
60
+	 *
61
+	 * @return array   The prepped data for db
62
+	 */
63
+	public static function convert_data_for_persistent_storage($data)
64
+	{
65
+		$prepped_data = array();
66
+		if (! is_array($data) && $data instanceof EE_Registration) {
67
+			$prepped_data['Registration'] = $data->ID();
68
+			return $prepped_data;
69
+		} elseif (! is_array($data)) {
70
+			return array();
71
+		} else {
72
+			if ($data[0] instanceof EE_Registration) {
73
+				$prepped_data['Registration'] = $data[0];
74
+			}
75
+			if (! empty($data[1])) {
76
+				$prepped_data['filter'] = $data[1];
77
+			}
78
+		}
79
+
80
+		return $prepped_data;
81
+	}
82
+
83
+	/**
84
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
85
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
86
+	 *
87
+	 * @param $data
88
+	 *
89
+	 * @return mixed
90
+	 */
91
+	public static function convert_data_from_persistent_storage($data)
92
+	{
93
+		$registration = null;
94
+		// $data['Registration'] could be either an ID (back compat) or a registration object (prepped using old system).
95
+		if (isset($data['Registration'])) {
96
+			$registration = $data['Registration'] instanceof EE_Registration
97
+				? $data['Registration']
98
+				: EEM_Registration::instance()->get_one_by_ID($data['Registration']);
99
+		}
100
+		$prepped_data = array(
101
+			0 => $registration,
102
+			1 => isset($data['filter']) ? $data['filter'] : null
103
+		);
104
+		return $prepped_data;
105
+	}
106
+
107
+
108
+	/**
109
+	 * This will just setup the _events property in the expected format.
110
+	 * @return void
111
+	 */
112
+	protected function _setup_data()
113
+	{
114
+
115
+		// now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
116
+		$this->filtered_reg_status = $this->_data['filtered_reg_status'];
117
+		// get txn
118
+		$this->txn = $this->reg_obj->transaction();
119
+		// possible session stuff?
120
+		$session = $this->txn->session_data();
121
+		$session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
122
+
123
+		// other data from the session (if possible)
124
+		$this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
125
+		$this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
126
+		$this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
127
+		$this->init_access = $this->last_access = '';
128
+
129
+		$this->payment = $this->txn->get_first_related('Payment');
130
+		// if there is no payments associated with the transaction
131
+		// then we just create a default payment object for potential parsing.
132
+		$this->payment = empty($this->payment)
133
+			? EE_Payment::new_instance(
134
+				array(
135
+					'STS_ID'               => EEM_Payment::status_id_pending,
136
+					'PAY_timestamp'        => time(),
137
+					'PMD_ID'               => $this->txn->payment_method_ID(),
138
+					'PAY_gateway_response' => $this->txn->gateway_response_on_transaction(),
139
+				)
140
+			)
141
+			: $this->payment;
142
+
143
+
144
+		// get reg_objs for txn
145
+		$this->reg_objs = $this->txn->registrations();
146
+
147
+		// now we can set things up like we do for other handlers
148
+
149
+		$this->_assemble_data();
150
+	}
151 151
 }
Please login to merge, or discard this patch.
libraries/messages/data_class/EE_Messages_Gateways_incoming_data.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
     {
33 33
 
34 34
         // test for valid params
35
-        if (! ( $data[0] instanceof EE_Transaction )) {
35
+        if ( ! ($data[0] instanceof EE_Transaction)) {
36 36
             throw new EE_Error(esc_html__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
37 37
         }
38 38
 
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
             $pmt_obj = $this->_get_empty_payment_obj($data[0]);
41 41
         }
42 42
 
43
-        if (! empty($data[2])) {
43
+        if ( ! empty($data[2])) {
44 44
             $filtered_reg_status = $data[2];
45 45
         }
46 46
 
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
             $prepped_data['Payment'] = $data[1]->ID();
76 76
         }
77 77
 
78
-        if (! empty($data[2])) {
78
+        if ( ! empty($data[2])) {
79 79
             $prepped_data['filter'] = $data[2];
80 80
         }
81 81
 
Please login to merge, or discard this patch.
Indentation   +136 added lines, -136 removed lines patch added patch discarded remove patch
@@ -13,141 +13,141 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Messages_Gateways_incoming_data extends EE_Messages_incoming_data
15 15
 {
16
-    /**
17
-     * This holds the incoming payment object
18
-     * @var EE_Payment
19
-     */
20
-    public $payment;
21
-
22
-
23
-
24
-    /**
25
-     * incoming data is expected to be a EE_Transaction object and (possibly) EE_Payment object in an array.
26
-     *
27
-     * @param array $data
28
-     * @throws EE_Error
29
-     */
30
-    public function __construct($data)
31
-    {
32
-
33
-        // test for valid params
34
-        if (! ( $data[0] instanceof EE_Transaction )) {
35
-            throw new EE_Error(esc_html__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
36
-        }
37
-
38
-        if (empty($data[1]) || ! $data[1] instanceof  EE_Payment) {
39
-            $pmt_obj = $this->_get_empty_payment_obj($data[0]);
40
-        }
41
-
42
-        if (! empty($data[2])) {
43
-            $filtered_reg_status = $data[2];
44
-        }
16
+	/**
17
+	 * This holds the incoming payment object
18
+	 * @var EE_Payment
19
+	 */
20
+	public $payment;
21
+
22
+
23
+
24
+	/**
25
+	 * incoming data is expected to be a EE_Transaction object and (possibly) EE_Payment object in an array.
26
+	 *
27
+	 * @param array $data
28
+	 * @throws EE_Error
29
+	 */
30
+	public function __construct($data)
31
+	{
32
+
33
+		// test for valid params
34
+		if (! ( $data[0] instanceof EE_Transaction )) {
35
+			throw new EE_Error(esc_html__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
36
+		}
37
+
38
+		if (empty($data[1]) || ! $data[1] instanceof  EE_Payment) {
39
+			$pmt_obj = $this->_get_empty_payment_obj($data[0]);
40
+		}
41
+
42
+		if (! empty($data[2])) {
43
+			$filtered_reg_status = $data[2];
44
+		}
45 45
 
46
-        $data = array(
47
-            'txn_obj' => $data[0],
48
-            'pmt_obj' => isset($pmt_obj) ? $pmt_obj : $data[1],
49
-            'filtered_reg_status' => isset($filtered_reg_status) ? $filtered_reg_status : null
50
-            );
51
-        parent::__construct($data);
52
-    }
53
-
54
-
55
-
56
-
57
-
58
-    /**
59
-     * Returns database safe representation of the data later used to when instantiating this object.
60
-     *
61
-     * @param array $data The incoming data to be prepped.
62
-     *
63
-     * @return array   The prepped data for db
64
-     */
65
-    public static function convert_data_for_persistent_storage($data)
66
-    {
67
-        $prepped_data = array();
68
-
69
-        if ($data[0] instanceof EE_Transaction) {
70
-            $prepped_data['Transaction'] = $data[0]->ID();
71
-        }
72
-
73
-        if (isset($data[1]) && $data[1] instanceof EE_Payment) {
74
-            $prepped_data['Payment'] = $data[1]->ID();
75
-        }
76
-
77
-        if (! empty($data[2])) {
78
-            $prepped_data['filter'] = $data[2];
79
-        }
80
-
81
-        return $prepped_data;
82
-    }
83
-
84
-
85
-
86
-
87
-
88
-
89
-    /**
90
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
91
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
92
-     *
93
-     * @param array  $data
94
-     *
95
-     * @return array
96
-     */
97
-    public static function convert_data_from_persistent_storage($data)
98
-    {
99
-        $prepped_data = array(
100
-            0 => isset($data['Transaction']) ? EEM_Transaction::instance()->get_one_by_ID($data['Transaction']) : null,
101
-            1 => isset($data['Payment']) ? EEM_Payment::instance()->get_one_by_ID($data['Payment']) : null,
102
-            2 => isset($data['filter']) ? $data['filter'] : null
103
-        );
104
-        return $prepped_data;
105
-    }
106
-
107
-
108
-    /**
109
-     * This sets up an empty EE_Payment object for the purpose of shortcode parsing.  Note that this doesn't actually get saved to the db.
110
-     * @param \EE_Transaction $txn
111
-     * @return \EE_Payment
112
-     */
113
-    private function _get_empty_payment_obj(EE_Transaction $txn)
114
-    {
115
-        $PMT = EE_Payment::new_instance(array(
116
-            'STS_ID' => EEM_Payment::status_id_pending,
117
-            'PAY_timestamp' => time(),
118
-            'PMD_ID' => $txn->payment_method_ID(),
119
-            'PAY_gateway_response' => $txn->gateway_response_on_transaction(),
120
-            ));
121
-        return $PMT;
122
-    }
123
-
124
-
125
-
126
-    /**
127
-     * _setup_data
128
-     *
129
-     * @throws EE_Error
130
-     */
131
-    protected function _setup_data()
132
-    {
133
-
134
-        $this->reg_info = array();
135
-
136
-        $this->txn = $this->_data['txn_obj'];
137
-        $this->payment = $this->_data['pmt_obj'];
138
-        $this->filtered_reg_status = $this->_data['filtered_reg_status'];
139
-        $this->incoming_data = $this->_data;
140
-
141
-        $session_data = $this->txn->session_data();
142
-
143
-
144
-        // other data from the session (if possible)
145
-        $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
146
-        $this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
147
-        $this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
148
-        $this->init_access = $this->last_access = '';
149
-        // get all non-trashed registrations
150
-        $this->reg_objs = $this->txn->registrations(array(array('REG_deleted' => false)));
151
-        $this->_assemble_data();
152
-    }
46
+		$data = array(
47
+			'txn_obj' => $data[0],
48
+			'pmt_obj' => isset($pmt_obj) ? $pmt_obj : $data[1],
49
+			'filtered_reg_status' => isset($filtered_reg_status) ? $filtered_reg_status : null
50
+			);
51
+		parent::__construct($data);
52
+	}
53
+
54
+
55
+
56
+
57
+
58
+	/**
59
+	 * Returns database safe representation of the data later used to when instantiating this object.
60
+	 *
61
+	 * @param array $data The incoming data to be prepped.
62
+	 *
63
+	 * @return array   The prepped data for db
64
+	 */
65
+	public static function convert_data_for_persistent_storage($data)
66
+	{
67
+		$prepped_data = array();
68
+
69
+		if ($data[0] instanceof EE_Transaction) {
70
+			$prepped_data['Transaction'] = $data[0]->ID();
71
+		}
72
+
73
+		if (isset($data[1]) && $data[1] instanceof EE_Payment) {
74
+			$prepped_data['Payment'] = $data[1]->ID();
75
+		}
76
+
77
+		if (! empty($data[2])) {
78
+			$prepped_data['filter'] = $data[2];
79
+		}
80
+
81
+		return $prepped_data;
82
+	}
83
+
84
+
85
+
86
+
87
+
88
+
89
+	/**
90
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
91
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
92
+	 *
93
+	 * @param array  $data
94
+	 *
95
+	 * @return array
96
+	 */
97
+	public static function convert_data_from_persistent_storage($data)
98
+	{
99
+		$prepped_data = array(
100
+			0 => isset($data['Transaction']) ? EEM_Transaction::instance()->get_one_by_ID($data['Transaction']) : null,
101
+			1 => isset($data['Payment']) ? EEM_Payment::instance()->get_one_by_ID($data['Payment']) : null,
102
+			2 => isset($data['filter']) ? $data['filter'] : null
103
+		);
104
+		return $prepped_data;
105
+	}
106
+
107
+
108
+	/**
109
+	 * This sets up an empty EE_Payment object for the purpose of shortcode parsing.  Note that this doesn't actually get saved to the db.
110
+	 * @param \EE_Transaction $txn
111
+	 * @return \EE_Payment
112
+	 */
113
+	private function _get_empty_payment_obj(EE_Transaction $txn)
114
+	{
115
+		$PMT = EE_Payment::new_instance(array(
116
+			'STS_ID' => EEM_Payment::status_id_pending,
117
+			'PAY_timestamp' => time(),
118
+			'PMD_ID' => $txn->payment_method_ID(),
119
+			'PAY_gateway_response' => $txn->gateway_response_on_transaction(),
120
+			));
121
+		return $PMT;
122
+	}
123
+
124
+
125
+
126
+	/**
127
+	 * _setup_data
128
+	 *
129
+	 * @throws EE_Error
130
+	 */
131
+	protected function _setup_data()
132
+	{
133
+
134
+		$this->reg_info = array();
135
+
136
+		$this->txn = $this->_data['txn_obj'];
137
+		$this->payment = $this->_data['pmt_obj'];
138
+		$this->filtered_reg_status = $this->_data['filtered_reg_status'];
139
+		$this->incoming_data = $this->_data;
140
+
141
+		$session_data = $this->txn->session_data();
142
+
143
+
144
+		// other data from the session (if possible)
145
+		$this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
146
+		$this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
147
+		$this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
148
+		$this->init_access = $this->last_access = '';
149
+		// get all non-trashed registrations
150
+		$this->reg_objs = $this->txn->registrations(array(array('REG_deleted' => false)));
151
+		$this->_assemble_data();
152
+	}
153 153
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_Message_To_Generate_From_Request.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
             [],
53 53
             $request->getRequestParam('context')
54 54
         );
55
-        if (! $this->valid()) {
55
+        if ( ! $this->valid()) {
56 56
             return;
57 57
         }
58 58
         $this->token              = $request->getRequestParam('token');
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
         /** @type EE_Registration $registration */
109 109
         $registration = EEM_Registration::instance()->get_one([['REG_url_link' => $this->token]]);
110 110
         // if no registration then bail early.
111
-        if (! $registration instanceof EE_Registration) {
111
+        if ( ! $registration instanceof EE_Registration) {
112 112
             throw new EE_Error(esc_html__('Unable to complete the request because the token is invalid.', 'event_espresso'));
113 113
         }
114 114
 
Please login to merge, or discard this patch.
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -18,113 +18,113 @@
 block discarded – undo
18 18
  */
19 19
 class EE_Message_To_Generate_From_Request extends EE_Message_To_Generate implements EEI_Has_Sending_Messenger
20 20
 {
21
-    /**
22
-     * This messenger is used to send the generated message.
23
-     *
24
-     * @type EE_messenger
25
-     */
26
-    protected $_sending_messenger = '';
21
+	/**
22
+	 * This messenger is used to send the generated message.
23
+	 *
24
+	 * @type EE_messenger
25
+	 */
26
+	protected $_sending_messenger = '';
27 27
 
28 28
 
29
-    /**
30
-     * Holds the token from the request.
31
-     *
32
-     * @type string
33
-     */
34
-    public $token = '';
29
+	/**
30
+	 * Holds the token from the request.
31
+	 *
32
+	 * @type string
33
+	 */
34
+	public $token = '';
35 35
 
36 36
 
37
-    /**
38
-     * Constructor
39
-     * This instantiates the object using arguments from the given request and calling the parent constructor.
40
-     *
41
-     * @param EE_Message_Resource_Manager $message_resource_manager
42
-     * @param RequestInterface            $request
43
-     * @throws EE_Error
44
-     */
45
-    public function __construct(EE_Message_Resource_Manager $message_resource_manager, RequestInterface $request)
46
-    {
47
-        parent::__construct(
48
-            $request->getRequestParam('gen_msgr'),
49
-            $request->getRequestParam('message_type'),
50
-            [],
51
-            $request->getRequestParam('context')
52
-        );
53
-        if (! $this->valid()) {
54
-            return;
55
-        }
56
-        $this->token              = $request->getRequestParam('token');
57
-        $this->_sending_messenger = $message_resource_manager->get_active_messenger(
58
-            $request->getRequestParam('snd_msgr')
59
-        );
60
-        $this->_validate_request();
61
-        $this->_data = $this->_get_data_from_request($request->getRequestParam('id'));
62
-    }
37
+	/**
38
+	 * Constructor
39
+	 * This instantiates the object using arguments from the given request and calling the parent constructor.
40
+	 *
41
+	 * @param EE_Message_Resource_Manager $message_resource_manager
42
+	 * @param RequestInterface            $request
43
+	 * @throws EE_Error
44
+	 */
45
+	public function __construct(EE_Message_Resource_Manager $message_resource_manager, RequestInterface $request)
46
+	{
47
+		parent::__construct(
48
+			$request->getRequestParam('gen_msgr'),
49
+			$request->getRequestParam('message_type'),
50
+			[],
51
+			$request->getRequestParam('context')
52
+		);
53
+		if (! $this->valid()) {
54
+			return;
55
+		}
56
+		$this->token              = $request->getRequestParam('token');
57
+		$this->_sending_messenger = $message_resource_manager->get_active_messenger(
58
+			$request->getRequestParam('snd_msgr')
59
+		);
60
+		$this->_validate_request();
61
+		$this->_data = $this->_get_data_from_request($request->getRequestParam('id'));
62
+	}
63 63
 
64 64
 
65
-    /**
66
-     * @return EE_messenger
67
-     */
68
-    public function sending_messenger()
69
-    {
70
-        return $this->_sending_messenger;
71
-    }
65
+	/**
66
+	 * @return EE_messenger
67
+	 */
68
+	public function sending_messenger()
69
+	{
70
+		return $this->_sending_messenger;
71
+	}
72 72
 
73 73
 
74
-    /**
75
-     * This validates set properties from the incoming request.
76
-     *
77
-     * @throws EE_Error
78
-     */
79
-    protected function _validate_request()
80
-    {
81
-        if (
82
-            ! $this->_sending_messenger instanceof EE_messenger
83
-            || ! $this->_messenger instanceof EE_messenger
84
-            || ! $this->_message_type instanceof EE_message_type
85
-            || empty($this->_context)
86
-            || empty($this->token)
87
-        ) {
88
-            throw new EE_Error(esc_html__(
89
-                'The request for the "msg_url_trigger" route has a malformed url.',
90
-                'event_espresso'
91
-            ));
92
-        }
93
-    }
74
+	/**
75
+	 * This validates set properties from the incoming request.
76
+	 *
77
+	 * @throws EE_Error
78
+	 */
79
+	protected function _validate_request()
80
+	{
81
+		if (
82
+			! $this->_sending_messenger instanceof EE_messenger
83
+			|| ! $this->_messenger instanceof EE_messenger
84
+			|| ! $this->_message_type instanceof EE_message_type
85
+			|| empty($this->_context)
86
+			|| empty($this->token)
87
+		) {
88
+			throw new EE_Error(esc_html__(
89
+				'The request for the "msg_url_trigger" route has a malformed url.',
90
+				'event_espresso'
91
+			));
92
+		}
93
+	}
94 94
 
95 95
 
96
-    /**
97
-     * This returns the data property according to what is expected from the request.
98
-     *
99
-     * @param $id
100
-     * @return mixed (whatever the data is returned from the message type).
101
-     * @throws EE_Error
102
-     */
103
-    protected function _get_data_from_request($id)
104
-    {
105
-        // get the EE_Registration from the token
106
-        /** @type EE_Registration $registration */
107
-        $registration = EEM_Registration::instance()->get_one([['REG_url_link' => $this->token]]);
108
-        // if no registration then bail early.
109
-        if (! $registration instanceof EE_Registration) {
110
-            throw new EE_Error(esc_html__('Unable to complete the request because the token is invalid.', 'event_espresso'));
111
-        }
96
+	/**
97
+	 * This returns the data property according to what is expected from the request.
98
+	 *
99
+	 * @param $id
100
+	 * @return mixed (whatever the data is returned from the message type).
101
+	 * @throws EE_Error
102
+	 */
103
+	protected function _get_data_from_request($id)
104
+	{
105
+		// get the EE_Registration from the token
106
+		/** @type EE_Registration $registration */
107
+		$registration = EEM_Registration::instance()->get_one([['REG_url_link' => $this->token]]);
108
+		// if no registration then bail early.
109
+		if (! $registration instanceof EE_Registration) {
110
+			throw new EE_Error(esc_html__('Unable to complete the request because the token is invalid.', 'event_espresso'));
111
+		}
112 112
 
113
-        return $this->_get_data_to_use($registration, $id);
114
-    }
113
+		return $this->_get_data_to_use($registration, $id);
114
+	}
115 115
 
116 116
 
117
-    /**
118
-     * This uses the set message type to retrieve the data in the correct format as it came from the url.
119
-     *
120
-     * @param EE_Registration $registration
121
-     * @param int             $data_id This is sometimes used for secondary data a message type requires.
122
-     * @return mixed   Data prepared as needed for generating this message.
123
-     * @throws EE_Error
124
-     */
125
-    protected function _get_data_to_use($registration, $data_id)
126
-    {
127
-        // use incoming data from url to setup data for the message type requirements
128
-        return $this->_message_type->get_data_for_context($this->_context, $registration, $data_id);
129
-    }
117
+	/**
118
+	 * This uses the set message type to retrieve the data in the correct format as it came from the url.
119
+	 *
120
+	 * @param EE_Registration $registration
121
+	 * @param int             $data_id This is sometimes used for secondary data a message type requires.
122
+	 * @return mixed   Data prepared as needed for generating this message.
123
+	 * @throws EE_Error
124
+	 */
125
+	protected function _get_data_to_use($registration, $data_id)
126
+	{
127
+		// use incoming data from url to setup data for the message type requirements
128
+		return $this->_message_type->get_data_for_context($this->_context, $registration, $data_id);
129
+	}
130 130
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_message_type.lib.php 2 patches
Spacing   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -408,7 +408,7 @@  discard block
 block discarded – undo
408 408
     {
409 409
         // validate context
410 410
         // valid context?
411
-        if (! isset($this->_contexts[ $context ])) {
411
+        if ( ! isset($this->_contexts[$context])) {
412 412
             throw new EE_Error(
413 413
                 sprintf(
414 414
                     esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
@@ -464,7 +464,7 @@  discard block
 block discarded – undo
464 464
     public function get_data_for_context($context, EE_Registration $registration, $id = 0)
465 465
     {
466 466
         // valid context?
467
-        if (! isset($this->_contexts[ $context ])) {
467
+        if ( ! isset($this->_contexts[$context])) {
468 468
             throw new EE_Error(
469 469
                 sprintf(
470 470
                     esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
@@ -479,7 +479,7 @@  discard block
 block discarded – undo
479 479
             $this->_get_data_for_context($context, $registration, $id),
480 480
             $this
481 481
         );
482
-        $data = apply_filters('FHEE__' . get_class($this) . '__get_data_for_context__data', $data, $this);
482
+        $data = apply_filters('FHEE__'.get_class($this).'__get_data_for_context__data', $data, $this);
483 483
         // if empty then something went wrong!
484 484
         if (empty($data)) {
485 485
             throw new EE_Error(
@@ -539,7 +539,7 @@  discard block
 block discarded – undo
539 539
     public function with_messengers()
540 540
     {
541 541
         return apply_filters(
542
-            'FHEE__EE_message_type__get_with_messengers__with_messengers__' . get_class($this),
542
+            'FHEE__EE_message_type__get_with_messengers__with_messengers__'.get_class($this),
543 543
             $this->_with_messengers
544 544
         );
545 545
     }
@@ -600,7 +600,7 @@  discard block
 block discarded – undo
600 600
     {
601 601
         // first class specific filter then filter that by the global filter.
602 602
         $master_templates = apply_filters(
603
-            'FHEE__' . get_class($this) . '__get_master_templates',
603
+            'FHEE__'.get_class($this).'__get_master_templates',
604 604
             $this->_master_templates
605 605
         );
606 606
         return apply_filters('FHEE__EE_message_type__get_master_templates', $master_templates, $this);
@@ -624,11 +624,11 @@  discard block
 block discarded – undo
624 624
         $addressees        = array();
625 625
         $original_contexts = $this->_contexts;
626 626
         // if incoming context then limit to that context
627
-        if (! empty($context)) {
628
-            $cntxt = ! empty($this->_contexts[ $context ]) ? $this->_contexts[ $context ] : '';
629
-            if (! empty($cntxt)) {
630
-                $this->_contexts           = array();
631
-                $this->_contexts[ $context ] = $cntxt;
627
+        if ( ! empty($context)) {
628
+            $cntxt = ! empty($this->_contexts[$context]) ? $this->_contexts[$context] : '';
629
+            if ( ! empty($cntxt)) {
630
+                $this->_contexts = array();
631
+                $this->_contexts[$context] = $cntxt;
632 632
             }
633 633
         }
634 634
         $this->_set_default_addressee_data();
@@ -653,13 +653,13 @@  discard block
 block discarded – undo
653 653
     {
654 654
         // at a minimum, we NEED EE_Attendee objects.
655 655
         if (empty($this->_data->attendees)) {
656
-            return false;  // there's no data to process!
656
+            return false; // there's no data to process!
657 657
         }
658 658
         // process addressees for each context.  Child classes will have to have methods for
659 659
         // each context defined to handle the processing of the data object within them
660 660
         foreach ($this->_contexts as $context => $details) {
661
-            $xpctd_method = '_' . $context . '_addressees';
662
-            if (! method_exists($this, $xpctd_method)) {
661
+            $xpctd_method = '_'.$context.'_addressees';
662
+            if ( ! method_exists($this, $xpctd_method)) {
663 663
                 throw new EE_Error(
664 664
                     sprintf(
665 665
                         esc_html__(
@@ -671,7 +671,7 @@  discard block
 block discarded – undo
671 671
                     )
672 672
                 );
673 673
             }
674
-            $this->_addressees[ $context ] = call_user_func(array($this, $xpctd_method));
674
+            $this->_addressees[$context] = call_user_func(array($this, $xpctd_method));
675 675
         }
676 676
         return true; // data was processed successfully.
677 677
     }
@@ -707,7 +707,7 @@  discard block
 block discarded – undo
707 707
             'total_ticket_count'       => $this->_data->total_ticket_count,
708 708
         );
709 709
         if (is_array($this->_data->primary_attendee_data)) {
710
-            $this->_default_addressee_data                    = array_merge(
710
+            $this->_default_addressee_data = array_merge(
711 711
                 $this->_default_addressee_data,
712 712
                 $this->_data->primary_attendee_data
713 713
             );
@@ -750,25 +750,25 @@  discard block
 block discarded – undo
750 750
             'email',
751 751
             'messenger',
752 752
         );
753
-        $contexts       = $this->get_contexts();
753
+        $contexts = $this->get_contexts();
754 754
         foreach ($contexts as $context => $details) {
755
-            $this->_valid_shortcodes[ $context ] = $all_shortcodes;
755
+            $this->_valid_shortcodes[$context] = $all_shortcodes;
756 756
             // make sure non admin context does not include the event_author shortcodes
757 757
             if ($context != 'admin') {
758
-                if (($key = array_search('event_author', $this->_valid_shortcodes[ $context ])) !== false) {
759
-                    unset($this->_valid_shortcodes[ $context ][ $key ]);
758
+                if (($key = array_search('event_author', $this->_valid_shortcodes[$context])) !== false) {
759
+                    unset($this->_valid_shortcodes[$context][$key]);
760 760
                 }
761 761
             }
762 762
         }
763 763
         // make sure admin context does not include the recipient_details shortcodes
764 764
         // IF we have admin context hooked in message types might not have that context.
765
-        if (! empty($this->_valid_shortcodes['admin'])) {
765
+        if ( ! empty($this->_valid_shortcodes['admin'])) {
766 766
             if (($key = array_search('recipient_details', $this->_valid_shortcodes['admin'])) !== false) {
767
-                unset($this->_valid_shortcodes['admin'][ $key ]);
767
+                unset($this->_valid_shortcodes['admin'][$key]);
768 768
             }
769 769
             // make sure admin context does not include the recipient_details shortcodes
770 770
             if (($key = array_search('recipient_list', $this->_valid_shortcodes['admin'])) !== false) {
771
-                unset($this->_valid_shortcodes['admin'][ $key ]);
771
+                unset($this->_valid_shortcodes['admin'][$key]);
772 772
             }
773 773
         }
774 774
     }
@@ -783,7 +783,7 @@  discard block
 block discarded – undo
783 783
     public function reset_valid_shortcodes_config($new_config)
784 784
     {
785 785
         foreach ($new_config as $context => $shortcodes) {
786
-            $this->_valid_shortcodes[ $context ] = $shortcodes;
786
+            $this->_valid_shortcodes[$context] = $shortcodes;
787 787
         }
788 788
     }
789 789
 
@@ -807,11 +807,11 @@  discard block
 block discarded – undo
807 807
         foreach ($this->_data->events as $line_ref => $event) {
808 808
             $admin_id = $this->_get_event_admin_id($event['ID']);
809 809
             // make sure we are just including the events that belong to this admin!
810
-            $admin_events[ $admin_id ][ $line_ref ] = $event;
810
+            $admin_events[$admin_id][$line_ref] = $event;
811 811
         }
812 812
         // k now we can loop through the event_admins and setup the addressee data.
813 813
         foreach ($admin_events as $admin_id => $event_details) {
814
-            $aee          = array(
814
+            $aee = array(
815 815
                 'user_id'        => $admin_id,
816 816
                 'events'         => $event_details,
817 817
                 'attendees'      => $this->_data->attendees,
@@ -869,7 +869,7 @@  discard block
 block discarded – undo
869 869
             }
870 870
             // is $this->_regs_for_sending present?
871 871
             // If so, let's make sure we ONLY generate addressee for registrations in that array.
872
-            if (! empty($this->_regs_for_sending) && is_array($this->_regs_for_sending)) {
872
+            if ( ! empty($this->_regs_for_sending) && is_array($this->_regs_for_sending)) {
873 873
                 $regs_allowed = array_intersect_key(array_flip($this->_regs_for_sending), $details['reg_objs']);
874 874
                 if (empty($regs_allowed)) {
875 875
                     continue;
@@ -888,10 +888,10 @@  discard block
 block discarded – undo
888 888
             }
889 889
             $already_processed[] = $att_id;
890 890
             foreach ($details as $item => $value) {
891
-                $aee[ $item ] = $value;
891
+                $aee[$item] = $value;
892 892
                 if ($item === 'line_ref') {
893 893
                     foreach ($value as $event_id) {
894
-                        $aee['events'][ $event_id ] = $this->_data->events[ $event_id ];
894
+                        $aee['events'][$event_id] = $this->_data->events[$event_id];
895 895
                     }
896 896
                 }
897 897
                 if ($item === 'attendee_email') {
@@ -903,7 +903,7 @@  discard block
 block discarded – undo
903 903
             }
904 904
             // note the FIRST reg object in this array is the one
905 905
             // we'll use for this attendee as the primary registration for this attendee.
906
-            $aee['reg_obj']        = reset($this->_data->attendees[ $att_id ]['reg_objs']);
906
+            $aee['reg_obj']        = reset($this->_data->attendees[$att_id]['reg_objs']);
907 907
             $aee['attendees']      = $this->_data->attendees;
908 908
             $aee['recipient_id']   = $att_id;
909 909
             $aee['recipient_type'] = 'Attendee';
Please login to merge, or discard this patch.
Indentation   +905 added lines, -905 removed lines patch added patch discarded remove patch
@@ -15,915 +15,915 @@
 block discarded – undo
15 15
  */
16 16
 abstract class EE_message_type extends EE_Messages_Base
17 17
 {
18
-    /**
19
-     * message type child classes will set what contexts are associated with the message type via this array.
20
-     * format:
21
-     * array(
22
-     * 'context' => array(
23
-     *        'label' => esc_html__('Context Label', 'event_espresso'),
24
-     *        'description' => esc_html__('Context description (for help popups)', 'event_espresso')
25
-     *    ));
26
-     *
27
-     * @var array
28
-     */
29
-    protected $_contexts = array();
30
-
31
-
32
-    /**
33
-     * This property is used to define what the display label will be for contexts (eg. "Recipients", "Themes" etc.)
34
-     * Format:
35
-     * array( 'label' => 'something', 'plural' => 'somethings', 'description' => 'something' );
36
-     *
37
-     * @var array
38
-     */
39
-    protected $_context_label;
40
-
41
-
42
-    /** MESSAGE ASSEMBLING PROPERTIES **/
43
-    /**
44
-     * This parameter simply holds all the message objects for retrieval by the controller and sending to the messenger.
45
-     *
46
-     * @var array of message objects.
47
-     */
48
-    public $messages = array();
49
-
50
-    /**
51
-     * The following holds the templates that will be used to assemble the message object for the messenger.
52
-     *
53
-     * @var array
54
-     */
55
-    protected $_templates;
56
-
57
-
58
-    /**
59
-     * If a specific template is being parsed, this will hold the message template group GRP_ID for that template.
60
-     *
61
-     * @var int.
62
-     */
63
-    protected $_GRP_ID;
64
-
65
-
66
-    /** OTHER INFO PROPERTIES **/
67
-    /**
68
-     * This will hold the count of the message objects in the messages array. This could be used for determining if
69
-     * batching/queueing is needed.
70
-     *
71
-     * @var int
72
-     */
73
-    public $count = 0;
74
-
75
-
76
-    /**
77
-     * This is set via the `do_messenger_hooks` method and contains the messenger being used to send the message of
78
-     * this message type at time of sending.
79
-     *
80
-     * @var EE_messenger
81
-     */
82
-    protected $_active_messenger;
83
-
84
-
85
-    /**
86
-     * This will hold the shortcode_replace instance for handling replacement of shortcodes in the various templates
87
-     *
88
-     * @var object
89
-     */
90
-    protected $_shortcode_replace;
91
-
92
-
93
-    /**
94
-     * The purpose for this property is to simply allow message types to indicate if the message generated is intended
95
-     * for only single context.  Child message types should redefine this variable (if necessary) in the
96
-     * _set_data_Handler() method.
97
-     *
98
-     * @var boolean
99
-     */
100
-    protected $_single_message = false;
101
-
102
-
103
-    /**
104
-     * This will hold an array of specific reg_ids that are receiving messages.
105
-     *
106
-     * @since 4.7.x
107
-     * @var array
108
-     */
109
-    protected $_regs_for_sending = array();
110
-
111
-
112
-    /**
113
-     * This holds the data passed to this class from the controller and also the final processed data.
114
-     *
115
-     * @var object
116
-     */
117
-    protected $_data;
118
-
119
-
120
-    /**
121
-     * this is just a flag indicating whether we're in preview mode or not.
122
-     *
123
-     * @var bool
124
-     */
125
-    protected $_preview = false;
126
-
127
-
128
-    /**
129
-     * This just holds defaults for addressee data that children merge with their data array setup
130
-     *
131
-     * @var array
132
-     */
133
-    protected $_default_addressee_data;
134
-
135
-
136
-    /**
137
-     * Child classes declare through this property what handler they want to use for the incoming data and this string
138
-     * is used to instantiate the EE_Messages_incoming_data child class for that handler.
139
-     *
140
-     * @var string
141
-     */
142
-    protected $_data_handler;
143
-
144
-
145
-    /**
146
-     * This holds any specific fields for holding any settings related to a message type (if any needed)
147
-     *
148
-     * @var array
149
-     */
150
-    protected $_admin_settings_fields = array();
151
-
152
-    /**
153
-     * this property will hold any existing setting that may have been set in the admin.
154
-     *
155
-     * @var array
156
-     */
157
-    protected $_existing_admin_settings = array();
158
-
159
-
160
-    /**
161
-     * This is used to designate the generating and alternative sending messengers for a message type.  It is set via
162
-     * set_with_messengers() on construct. Note, generating messenger also acts as a sending messenger for this message
163
-     * type.  However ONLY the generating messengers are used for creating templates for this message type. Should be
164
-     * in this format:
165
-     * {
166
-     *
167
-     * @type string $generating_messenger the name of the generating messenger.  Generating
168
-     *                                          messengers are used for generating templates,
169
-     *                                          doing validation and defining valid shortcodes.
170
-     *      {
171
-     * @type string $sending_messenger    values are the name(s) for the sending
172
-     *                                              messengers.  sending messengers are
173
-     *                                              just valid delivery vehicles that will utilize
174
-     *                                              the templates (and generated EE_message
175
-     *                                              objects from the generating messengers).
176
-     *      }
177
-     * }
178
-     * @since                             4.5.0
179
-     * @var array
180
-     */
181
-    protected $_with_messengers = array();
182
-
183
-
184
-    /**
185
-     * This holds the addressees in an array indexed by context for later retrieval when assembling the message objects.
186
-     *
187
-     * @access protected
188
-     * @var array
189
-     */
190
-    protected $_addressees = array();
191
-
192
-
193
-    /**
194
-     * This allows each message type to set what alternate messenger&message type combination can be used for fallback
195
-     * default templates if there are no specific ones defined for this messenger and message type.  Should be in the
196
-     * format:
197
-     * array(
198
-     *      'messenger' => 'message_type',
199
-     *      'another_messenger' => another_message_type
200
-     * );
201
-     * This is set in the message type constructor.
202
-     *
203
-     * @var array
204
-     */
205
-    protected $_master_templates = array();
206
-
207
-
208
-    /**
209
-     * This holds whatever the set template pack is for a message template group when generating messages.
210
-     *
211
-     * @since 4.5.0
212
-     * @var EE_Messages_Template_Pack
213
-     */
214
-    protected $_template_pack;
215
-
216
-
217
-    /**
218
-     * This holds whatever the set variation is for a message template group when generating messages.
219
-     *
220
-     * @since 4.5.0
221
-     * @var string
222
-     */
223
-    protected $_variation;
224
-
225
-
226
-    /**
227
-     * EE_message_type constructor.
228
-     */
229
-    public function __construct()
230
-    {
231
-        $this->_messages_item_type = 'message_type';
232
-        $this->_set_contexts();
233
-        $this->_set_with_messengers();
234
-        parent::__construct();
235
-    }
236
-
237
-
238
-    /**
239
-     * This sets the data handler for the message type.  It must be used to define the _data_handler property.  It is
240
-     * called when messages are setup.
241
-     *
242
-     * @abstract
243
-     * @access protected
244
-     * @return void
245
-     */
246
-    abstract protected function _set_data_handler();
247
-
248
-
249
-    /**
250
-     * This method should return a EE_Base_Class object (or array of EE_Base_Class objects) for the given context and
251
-     * ID (which should be the primary key id for the base class).  Client code doesn't have to know what a message
252
-     * type's data handler is.
253
-     *
254
-     * @since 4.5.0
255
-     * @param string          $context      This should be a string matching a valid context for the message type.
256
-     * @param EE_Registration $registration Need a registration to ensure that the data is valid (prevents people
257
-     *                                      guessing a url).
258
-     * @param int             $id           Optional. Integer corresponding to the value for the primary key of a
259
-     *                                      EE_Base_Class_Object
260
-     * @return mixed ( EE_Base_Class||EE_Base_Class[] )
261
-     */
262
-    abstract protected function _get_data_for_context($context, EE_Registration $registration, $id);
263
-
264
-
265
-    /**
266
-     * _set_contexts
267
-     * This sets up the contexts associated with the message_type
268
-     *
269
-     * @abstract
270
-     * @access  protected
271
-     * @return  void
272
-     */
273
-    abstract protected function _set_contexts();
274
-
275
-
276
-    /**
277
-     * This is used to get the "id" value fo the msg_trigger_url generated by get_url_trigger().
278
-     * In most cases, child classes don't need anything, (hence the default of 0), however if there is a specific
279
-     * EE_Base_Class that is required in generating a message for a message type recipient then the message
280
-     * type should override this method and use the given params to generate the correct ID.
281
-     *
282
-     * @param string          $context      The message type context.
283
-     * @param EE_Registration $registration Registration object
284
-     * @deprecated 4.9.0
285
-     * @return int
286
-     */
287
-    protected function _get_id_for_msg_url($context, EE_Registration $registration)
288
-    {
289
-        return 0;
290
-    }
291
-
292
-
293
-    /**
294
-     * This sets up any action/filter hooks this message type puts in place for a specific messenger.  Note that by
295
-     * default this does nothing.  Child classes will need to override if they want to add specific hooks for a
296
-     * messenger.
297
-     *
298
-     * @since 1.0.0
299
-     * @return void
300
-     */
301
-    protected function _do_messenger_hooks()
302
-    {
303
-        return;
304
-    }
305
-
306
-
307
-    /**
308
-     * This is a public wrapper for the protected _do_messenger_hooks() method.
309
-     * For backward compat reasons, this was done rather than making the protected method public.
310
-     *
311
-     * @param   EE_messenger $messenger This is used to set the $_active_messenger property, so message types are able
312
-     *                                  to know what messenger is being used to send the message at the time of
313
-     *                                  sending.
314
-     * @since 4.9.0
315
-     */
316
-    public function do_messenger_hooks($messenger = null)
317
-    {
318
-        $this->_active_messenger = $messenger;
319
-        $this->_do_messenger_hooks();
320
-    }
321
-
322
-
323
-    /**
324
-     * This method returns whether this message type should always generate a new copy
325
-     * when requested, or if links can be to the already generated copy.
326
-     * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
327
-     * Child classes should override this if different from the default of false.
328
-     *
329
-     * @return bool     false means can link to generated EE_Message.  true must regenerate.
330
-     */
331
-    public function always_generate()
332
-    {
333
-        return false;
334
-    }
335
-
336
-
337
-    /**
338
-     * Returns the priority for the message type.
339
-     * Priorities are defined as constants on EEM_Message.  Currently there are three priorities:
340
-     * - EEM_Message::priority_high
341
-     * - EEM_Message::priority_medium
342
-     * - EEM_Message::priority_low
343
-     * Priority is used to determine the weight the message type is given when queuing for generation and/or sending.
344
-     *
345
-     * @see    EEM_Message for more phpdocs on priority.
346
-     *         The default priority for all message_types is EEM_Message::priority_low.  Message Types wanting to give
347
-     *         a higher priority must override this method. Also note, messengers are able to override priorities
348
-     *         queuing instructions if their "send_now" flag is set to true. An example of this is the HTML messenger
349
-     *         which displays things in the browser.
350
-     * @since  4.9.0
351
-     * @return int
352
-     */
353
-    public function get_priority()
354
-    {
355
-        return EEM_Message::priority_low;
356
-    }
357
-
358
-
359
-    /**
360
-     * This runs the _set_data_handler() method for message types and then returns what got set.
361
-     *
362
-     * @param mixed $data This sets the data property for the message type with the incoming data used for generating.
363
-     * @return string (the reference for the data handler) (will be an empty string if could not be determined).
364
-     */
365
-    public function get_data_handler($data)
366
-    {
367
-        $this->_data = $data;
368
-        $this->_set_data_handler();
369
-        return apply_filters('FHEE__EE_message_type__get_data_handler', $this->_data_handler, $this);
370
-    }
371
-
372
-
373
-    /**
374
-     * This is called externally to reset the value of the $_data property for the message type.
375
-     * Please note the value of the _data is highly volatile.  It was added as an interim measure ensuring
376
-     * EE_Message_To_Generate objects have any changes to the _data property when `_set_data_handler` method is called
377
-     * (and for back compat reasons). This particular method is used in
378
-     * EE_Messages_Generator::_reset_current_properties to ensure that the internal _data on the message type is
379
-     * cleaned before subsequent EE_Message generation in the same request.
380
-     *
381
-     * @todo      This needs refactored along with the whole _set_data_handler() method in EE_message_types. Need to
382
-     *            ensure that there is no manipulation of the _data property during run time so there's a clear
383
-     *            expectation of what it is.  Likely we need to ensure that _data is not persisted IN the message type
384
-     *            at all.
385
-     * @internal  Plugin authors, do not implement this method, it is subject to change.
386
-     * @since     4.9
387
-     */
388
-    public function reset_data()
389
-    {
390
-        $this->_data = null;
391
-    }
392
-
393
-
394
-    /**
395
-     * This does some validation of incoming params gets the url trigger from the defined method in the specific child
396
-     * class and then filters the results.
397
-     *
398
-     * @param string          $context           The message type context
399
-     * @param string          $sending_messenger The sending messenger
400
-     * @param EE_Registration $registration      Registration object
401
-     * @throws EE_Error
402
-     * @deprecated  4.9.0  Likely 4.9.10 or 4.10.0 will remove this method completely
403
-     * @return string          generated url
404
-     */
405
-    public function get_url_trigger($context, $sending_messenger, EE_Registration $registration)
406
-    {
407
-        // validate context
408
-        // valid context?
409
-        if (! isset($this->_contexts[ $context ])) {
410
-            throw new EE_Error(
411
-                sprintf(
412
-                    esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
413
-                    $context,
414
-                    get_class($this)
415
-                )
416
-            );
417
-        }
418
-        // valid sending_messenger?
419
-        $not_valid_msgr = false;
420
-        foreach ($this->_with_messengers as $generating => $sendings) {
421
-            if (empty($sendings) || array_search($sending_messenger, $sendings) === false) {
422
-                $not_valid_msgr = true;
423
-            }
424
-        }
425
-        if ($not_valid_msgr) {
426
-            throw new EE_Error(
427
-                sprintf(
428
-                    esc_html__(
429
-                        'The given sending messenger string (%s) does not match a valid sending messenger with the %s.  If this is incorrect, make sure that the message type has defined this messenger as a sending messenger in its $_with_messengers array.',
430
-                        'event_espresso'
431
-                    ),
432
-                    $sending_messenger,
433
-                    get_class($this)
434
-                )
435
-            );
436
-        }
437
-        return EEH_MSG_Template::generate_url_trigger(
438
-            $sending_messenger,
439
-            $this->_active_messenger->name,
440
-            $context,
441
-            $this->name,
442
-            $registration,
443
-            $this->_GRP_ID,
444
-            $this->_get_id_for_msg_url($context, $registration)
445
-        );
446
-    }
447
-
448
-
449
-    /**
450
-     * Wrapper for _get_data_for_context() that handles some validation before calling the main class and also allows
451
-     * for filtering. This is (currently) called by the EED_Messages module.
452
-     *
453
-     * @since 4.5.0
454
-     * @throws EE_Error
455
-     * @param string          $context      This should be a string matching a valid context for the message type.
456
-     * @param EE_Registration $registration Need a registration to ensure that the data is valid (prevents people
457
-     *                                      guessing a url).
458
-     * @param int             $id           Optional. Integer corresponding to the value for the primary key of a
459
-     *                                      EE_Base_Class_Object
460
-     * @return mixed (EE_Base_Class||EE_Base_Class[])
461
-     */
462
-    public function get_data_for_context($context, EE_Registration $registration, $id = 0)
463
-    {
464
-        // valid context?
465
-        if (! isset($this->_contexts[ $context ])) {
466
-            throw new EE_Error(
467
-                sprintf(
468
-                    esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
469
-                    $context,
470
-                    get_class($this)
471
-                )
472
-            );
473
-        }
474
-        // get data and apply global and class specific filters on it.
475
-        $data = apply_filters(
476
-            'FHEE__EE_message_type__get_data_for_context__data',
477
-            $this->_get_data_for_context($context, $registration, $id),
478
-            $this
479
-        );
480
-        $data = apply_filters('FHEE__' . get_class($this) . '__get_data_for_context__data', $data, $this);
481
-        // if empty then something went wrong!
482
-        if (empty($data)) {
483
-            throw new EE_Error(
484
-                sprintf(
485
-                    esc_html__(
486
-                        'There is no data retrieved, it is possible that the id given (%d) does not match any value in the database for the corresponding EE_Base_Class used by the data handler for the %s message type.',
487
-                        'event_espresso'
488
-                    ),
489
-                    $id,
490
-                    $this->name
491
-                )
492
-            );
493
-        }
494
-        return $data;
495
-    }
496
-
497
-
498
-    /**
499
-     * This returns the contents of the _data property.
500
-     * Please note the value of the _data is highly volatile.  It was added as an interim measure ensuring
501
-     * EE_Message_To_Generate objects have any changes to the _data property when `_set_data_handler` method is called.
502
-     *
503
-     * @todo      This needs refactored along with the whole _set_data_handler() method in EE_message_types. Need to
504
-     *            ensure that there is no manipulation of the _data property during run time so there's a clear
505
-     *            expectation of what it is.
506
-     * @internal  Plugin authors, do not implement this method, it is subject to change.
507
-     * @return mixed
508
-     */
509
-    public function get_data()
510
-    {
511
-        return $this->_data;
512
-    }
513
-
514
-
515
-    /**
516
-     * used to set the $_with_messengers property. (this is a default, child classes SHOULD override)
517
-     *
518
-     * @see   property definition for description of setup.
519
-     * @since 4.5.0
520
-     * @abstract
521
-     * @return void
522
-     */
523
-    protected function _set_with_messengers()
524
-    {
525
-        $this->_with_messengers = array(
526
-            'email' => array('html'),
527
-        );
528
-    }
529
-
530
-
531
-    /**
532
-     * Return the value of the _with_messengers property
533
-     *
534
-     * @since 4.5.0
535
-     * @return array
536
-     */
537
-    public function with_messengers()
538
-    {
539
-        return apply_filters(
540
-            'FHEE__EE_message_type__get_with_messengers__with_messengers__' . get_class($this),
541
-            $this->_with_messengers
542
-        );
543
-    }
544
-
545
-
546
-    /**
547
-     * this public method accepts a page slug (for an EE_admin page) and will return the response from the child class
548
-     * callback function if that page is registered via the `_admin_registered_page` property set by the child class.
549
-     * *
550
-     *
551
-     * @param string $page       the slug of the EE admin page
552
-     * @param array  $messengers an array of active messenger objects
553
-     * @param string $action     the page action (to allow for more specific handling - i.e. edit vs. add pages)
554
-     * @param array  $extra      This is just an extra argument that can be used to pass additional data for setting up
555
-     *                           page content.
556
-     * @access public
557
-     * @return string
558
-     */
559
-    public function get_message_type_admin_page_content(
560
-        $page,
561
-        $action = null,
562
-        $extra = array(),
563
-        $messengers = array()
564
-    ) {
565
-        // we can also further refine the context by action (if present).
566
-        return $this->_get_admin_page_content($page, $action, $extra, $messengers);
567
-    }
568
-
569
-
570
-    /**
571
-     * @return array
572
-     */
573
-    public function get_contexts()
574
-    {
575
-        return $this->_contexts;
576
-    }
577
-
578
-
579
-    /**
580
-     * This just returns the context label for a given context (as set in $_context_label property)
581
-     *
582
-     * @access public
583
-     * @return array
584
-     */
585
-    public function get_context_label()
586
-    {
587
-        return $this->_context_label;
588
-    }
589
-
590
-
591
-    /**
592
-     * This just returns the (filtered) _master_templates property.
593
-     *
594
-     * @see property definition for documentation.
595
-     * @return array
596
-     */
597
-    public function get_master_templates()
598
-    {
599
-        // first class specific filter then filter that by the global filter.
600
-        $master_templates = apply_filters(
601
-            'FHEE__' . get_class($this) . '__get_master_templates',
602
-            $this->_master_templates
603
-        );
604
-        return apply_filters('FHEE__EE_message_type__get_master_templates', $master_templates, $this);
605
-    }
606
-
607
-
608
-    /**
609
-     * Accepts an incoming data handler which contains data for processing, and returns an array of
610
-     * EE_Messages_Addressee objects.
611
-     *
612
-     * @param EE_Messages_incoming_data $data
613
-     * @param string                    $context Limit addressees to specific context.
614
-     * @return array An array indexed by context where each context is an array of EE_Messages_Addressee objects for
615
-     *                                           that context
616
-     * @throws EE_Error
617
-     */
618
-    public function get_addressees(EE_Messages_incoming_data $data, $context = '')
619
-    {
620
-        // override _data
621
-        $this->_data       = $data;
622
-        $addressees        = array();
623
-        $original_contexts = $this->_contexts;
624
-        // if incoming context then limit to that context
625
-        if (! empty($context)) {
626
-            $cntxt = ! empty($this->_contexts[ $context ]) ? $this->_contexts[ $context ] : '';
627
-            if (! empty($cntxt)) {
628
-                $this->_contexts           = array();
629
-                $this->_contexts[ $context ] = $cntxt;
630
-            }
631
-        }
632
-        $this->_set_default_addressee_data();
633
-        if ($this->_process_data()) {
634
-            $addressees = $this->_addressees;
635
-        }
636
-
637
-        // reset contexts and addressees
638
-        $this->_contexts   = $original_contexts;
639
-        $this->_addressees = array();
640
-        return $addressees;
641
-    }
642
-
643
-
644
-    /**
645
-     * processes the data object so we get
646
-     *
647
-     * @throws EE_Error
648
-     * @return bool  true means data was processed successfully, false means not.
649
-     */
650
-    protected function _process_data()
651
-    {
652
-        // at a minimum, we NEED EE_Attendee objects.
653
-        if (empty($this->_data->attendees)) {
654
-            return false;  // there's no data to process!
655
-        }
656
-        // process addressees for each context.  Child classes will have to have methods for
657
-        // each context defined to handle the processing of the data object within them
658
-        foreach ($this->_contexts as $context => $details) {
659
-            $xpctd_method = '_' . $context . '_addressees';
660
-            if (! method_exists($this, $xpctd_method)) {
661
-                throw new EE_Error(
662
-                    sprintf(
663
-                        esc_html__(
664
-                            'The data for %1$s message type cannot be prepared because there is no set method for doing so.  The expected method name is "%2$s" please doublecheck the %1$s message type class and make sure that method is present',
665
-                            'event_espresso'
666
-                        ),
667
-                        $this->label['singular'],
668
-                        $xpctd_method
669
-                    )
670
-                );
671
-            }
672
-            $this->_addressees[ $context ] = call_user_func(array($this, $xpctd_method));
673
-        }
674
-        return true; // data was processed successfully.
675
-    }
676
-
677
-
678
-    /**
679
-     * sets the default_addressee_data property,
680
-     *
681
-     * @access private
682
-     * @return void
683
-     */
684
-    private function _set_default_addressee_data()
685
-    {
686
-        $this->_default_addressee_data = array(
687
-            'billing'                  => $this->_data->billing,
688
-            'taxes'                    => $this->_data->taxes,
689
-            'tax_line_items'           => $this->_data->tax_line_items,
690
-            'additional_line_items'    => $this->_data->additional_line_items,
691
-            'grand_total_line_item'    => $this->_data->grand_total_line_item,
692
-            'txn'                      => $this->_data->txn,
693
-            'payments'                 => $this->_data->payments,
694
-            'payment'                  => isset($this->_data->payment) && $this->_data->payment instanceof EE_Payment
695
-                ? $this->_data->payment
696
-                : null,
697
-            'reg_objs'                 => $this->_data->reg_objs,
698
-            'registrations'            => $this->_data->registrations,
699
-            'datetimes'                => $this->_data->datetimes,
700
-            'tickets'                  => $this->_data->tickets,
701
-            'line_items_with_children' => $this->_data->line_items_with_children,
702
-            'questions'                => $this->_data->questions,
703
-            'answers'                  => $this->_data->answers,
704
-            'txn_status'               => $this->_data->txn_status,
705
-            'total_ticket_count'       => $this->_data->total_ticket_count,
706
-        );
707
-        if (is_array($this->_data->primary_attendee_data)) {
708
-            $this->_default_addressee_data                    = array_merge(
709
-                $this->_default_addressee_data,
710
-                $this->_data->primary_attendee_data
711
-            );
712
-            $this->_default_addressee_data['primary_att_obj'] = $this->_data->primary_attendee_data['att_obj'];
713
-            $this->_default_addressee_data['primary_reg_obj'] = $this->_data->primary_attendee_data['reg_obj'];
714
-        }
715
-    }
716
-
717
-
718
-
719
-    /********************
18
+	/**
19
+	 * message type child classes will set what contexts are associated with the message type via this array.
20
+	 * format:
21
+	 * array(
22
+	 * 'context' => array(
23
+	 *        'label' => esc_html__('Context Label', 'event_espresso'),
24
+	 *        'description' => esc_html__('Context description (for help popups)', 'event_espresso')
25
+	 *    ));
26
+	 *
27
+	 * @var array
28
+	 */
29
+	protected $_contexts = array();
30
+
31
+
32
+	/**
33
+	 * This property is used to define what the display label will be for contexts (eg. "Recipients", "Themes" etc.)
34
+	 * Format:
35
+	 * array( 'label' => 'something', 'plural' => 'somethings', 'description' => 'something' );
36
+	 *
37
+	 * @var array
38
+	 */
39
+	protected $_context_label;
40
+
41
+
42
+	/** MESSAGE ASSEMBLING PROPERTIES **/
43
+	/**
44
+	 * This parameter simply holds all the message objects for retrieval by the controller and sending to the messenger.
45
+	 *
46
+	 * @var array of message objects.
47
+	 */
48
+	public $messages = array();
49
+
50
+	/**
51
+	 * The following holds the templates that will be used to assemble the message object for the messenger.
52
+	 *
53
+	 * @var array
54
+	 */
55
+	protected $_templates;
56
+
57
+
58
+	/**
59
+	 * If a specific template is being parsed, this will hold the message template group GRP_ID for that template.
60
+	 *
61
+	 * @var int.
62
+	 */
63
+	protected $_GRP_ID;
64
+
65
+
66
+	/** OTHER INFO PROPERTIES **/
67
+	/**
68
+	 * This will hold the count of the message objects in the messages array. This could be used for determining if
69
+	 * batching/queueing is needed.
70
+	 *
71
+	 * @var int
72
+	 */
73
+	public $count = 0;
74
+
75
+
76
+	/**
77
+	 * This is set via the `do_messenger_hooks` method and contains the messenger being used to send the message of
78
+	 * this message type at time of sending.
79
+	 *
80
+	 * @var EE_messenger
81
+	 */
82
+	protected $_active_messenger;
83
+
84
+
85
+	/**
86
+	 * This will hold the shortcode_replace instance for handling replacement of shortcodes in the various templates
87
+	 *
88
+	 * @var object
89
+	 */
90
+	protected $_shortcode_replace;
91
+
92
+
93
+	/**
94
+	 * The purpose for this property is to simply allow message types to indicate if the message generated is intended
95
+	 * for only single context.  Child message types should redefine this variable (if necessary) in the
96
+	 * _set_data_Handler() method.
97
+	 *
98
+	 * @var boolean
99
+	 */
100
+	protected $_single_message = false;
101
+
102
+
103
+	/**
104
+	 * This will hold an array of specific reg_ids that are receiving messages.
105
+	 *
106
+	 * @since 4.7.x
107
+	 * @var array
108
+	 */
109
+	protected $_regs_for_sending = array();
110
+
111
+
112
+	/**
113
+	 * This holds the data passed to this class from the controller and also the final processed data.
114
+	 *
115
+	 * @var object
116
+	 */
117
+	protected $_data;
118
+
119
+
120
+	/**
121
+	 * this is just a flag indicating whether we're in preview mode or not.
122
+	 *
123
+	 * @var bool
124
+	 */
125
+	protected $_preview = false;
126
+
127
+
128
+	/**
129
+	 * This just holds defaults for addressee data that children merge with their data array setup
130
+	 *
131
+	 * @var array
132
+	 */
133
+	protected $_default_addressee_data;
134
+
135
+
136
+	/**
137
+	 * Child classes declare through this property what handler they want to use for the incoming data and this string
138
+	 * is used to instantiate the EE_Messages_incoming_data child class for that handler.
139
+	 *
140
+	 * @var string
141
+	 */
142
+	protected $_data_handler;
143
+
144
+
145
+	/**
146
+	 * This holds any specific fields for holding any settings related to a message type (if any needed)
147
+	 *
148
+	 * @var array
149
+	 */
150
+	protected $_admin_settings_fields = array();
151
+
152
+	/**
153
+	 * this property will hold any existing setting that may have been set in the admin.
154
+	 *
155
+	 * @var array
156
+	 */
157
+	protected $_existing_admin_settings = array();
158
+
159
+
160
+	/**
161
+	 * This is used to designate the generating and alternative sending messengers for a message type.  It is set via
162
+	 * set_with_messengers() on construct. Note, generating messenger also acts as a sending messenger for this message
163
+	 * type.  However ONLY the generating messengers are used for creating templates for this message type. Should be
164
+	 * in this format:
165
+	 * {
166
+	 *
167
+	 * @type string $generating_messenger the name of the generating messenger.  Generating
168
+	 *                                          messengers are used for generating templates,
169
+	 *                                          doing validation and defining valid shortcodes.
170
+	 *      {
171
+	 * @type string $sending_messenger    values are the name(s) for the sending
172
+	 *                                              messengers.  sending messengers are
173
+	 *                                              just valid delivery vehicles that will utilize
174
+	 *                                              the templates (and generated EE_message
175
+	 *                                              objects from the generating messengers).
176
+	 *      }
177
+	 * }
178
+	 * @since                             4.5.0
179
+	 * @var array
180
+	 */
181
+	protected $_with_messengers = array();
182
+
183
+
184
+	/**
185
+	 * This holds the addressees in an array indexed by context for later retrieval when assembling the message objects.
186
+	 *
187
+	 * @access protected
188
+	 * @var array
189
+	 */
190
+	protected $_addressees = array();
191
+
192
+
193
+	/**
194
+	 * This allows each message type to set what alternate messenger&message type combination can be used for fallback
195
+	 * default templates if there are no specific ones defined for this messenger and message type.  Should be in the
196
+	 * format:
197
+	 * array(
198
+	 *      'messenger' => 'message_type',
199
+	 *      'another_messenger' => another_message_type
200
+	 * );
201
+	 * This is set in the message type constructor.
202
+	 *
203
+	 * @var array
204
+	 */
205
+	protected $_master_templates = array();
206
+
207
+
208
+	/**
209
+	 * This holds whatever the set template pack is for a message template group when generating messages.
210
+	 *
211
+	 * @since 4.5.0
212
+	 * @var EE_Messages_Template_Pack
213
+	 */
214
+	protected $_template_pack;
215
+
216
+
217
+	/**
218
+	 * This holds whatever the set variation is for a message template group when generating messages.
219
+	 *
220
+	 * @since 4.5.0
221
+	 * @var string
222
+	 */
223
+	protected $_variation;
224
+
225
+
226
+	/**
227
+	 * EE_message_type constructor.
228
+	 */
229
+	public function __construct()
230
+	{
231
+		$this->_messages_item_type = 'message_type';
232
+		$this->_set_contexts();
233
+		$this->_set_with_messengers();
234
+		parent::__construct();
235
+	}
236
+
237
+
238
+	/**
239
+	 * This sets the data handler for the message type.  It must be used to define the _data_handler property.  It is
240
+	 * called when messages are setup.
241
+	 *
242
+	 * @abstract
243
+	 * @access protected
244
+	 * @return void
245
+	 */
246
+	abstract protected function _set_data_handler();
247
+
248
+
249
+	/**
250
+	 * This method should return a EE_Base_Class object (or array of EE_Base_Class objects) for the given context and
251
+	 * ID (which should be the primary key id for the base class).  Client code doesn't have to know what a message
252
+	 * type's data handler is.
253
+	 *
254
+	 * @since 4.5.0
255
+	 * @param string          $context      This should be a string matching a valid context for the message type.
256
+	 * @param EE_Registration $registration Need a registration to ensure that the data is valid (prevents people
257
+	 *                                      guessing a url).
258
+	 * @param int             $id           Optional. Integer corresponding to the value for the primary key of a
259
+	 *                                      EE_Base_Class_Object
260
+	 * @return mixed ( EE_Base_Class||EE_Base_Class[] )
261
+	 */
262
+	abstract protected function _get_data_for_context($context, EE_Registration $registration, $id);
263
+
264
+
265
+	/**
266
+	 * _set_contexts
267
+	 * This sets up the contexts associated with the message_type
268
+	 *
269
+	 * @abstract
270
+	 * @access  protected
271
+	 * @return  void
272
+	 */
273
+	abstract protected function _set_contexts();
274
+
275
+
276
+	/**
277
+	 * This is used to get the "id" value fo the msg_trigger_url generated by get_url_trigger().
278
+	 * In most cases, child classes don't need anything, (hence the default of 0), however if there is a specific
279
+	 * EE_Base_Class that is required in generating a message for a message type recipient then the message
280
+	 * type should override this method and use the given params to generate the correct ID.
281
+	 *
282
+	 * @param string          $context      The message type context.
283
+	 * @param EE_Registration $registration Registration object
284
+	 * @deprecated 4.9.0
285
+	 * @return int
286
+	 */
287
+	protected function _get_id_for_msg_url($context, EE_Registration $registration)
288
+	{
289
+		return 0;
290
+	}
291
+
292
+
293
+	/**
294
+	 * This sets up any action/filter hooks this message type puts in place for a specific messenger.  Note that by
295
+	 * default this does nothing.  Child classes will need to override if they want to add specific hooks for a
296
+	 * messenger.
297
+	 *
298
+	 * @since 1.0.0
299
+	 * @return void
300
+	 */
301
+	protected function _do_messenger_hooks()
302
+	{
303
+		return;
304
+	}
305
+
306
+
307
+	/**
308
+	 * This is a public wrapper for the protected _do_messenger_hooks() method.
309
+	 * For backward compat reasons, this was done rather than making the protected method public.
310
+	 *
311
+	 * @param   EE_messenger $messenger This is used to set the $_active_messenger property, so message types are able
312
+	 *                                  to know what messenger is being used to send the message at the time of
313
+	 *                                  sending.
314
+	 * @since 4.9.0
315
+	 */
316
+	public function do_messenger_hooks($messenger = null)
317
+	{
318
+		$this->_active_messenger = $messenger;
319
+		$this->_do_messenger_hooks();
320
+	}
321
+
322
+
323
+	/**
324
+	 * This method returns whether this message type should always generate a new copy
325
+	 * when requested, or if links can be to the already generated copy.
326
+	 * Note: this does NOT affect viewing/resending already generated messages in the EE_Message list table.
327
+	 * Child classes should override this if different from the default of false.
328
+	 *
329
+	 * @return bool     false means can link to generated EE_Message.  true must regenerate.
330
+	 */
331
+	public function always_generate()
332
+	{
333
+		return false;
334
+	}
335
+
336
+
337
+	/**
338
+	 * Returns the priority for the message type.
339
+	 * Priorities are defined as constants on EEM_Message.  Currently there are three priorities:
340
+	 * - EEM_Message::priority_high
341
+	 * - EEM_Message::priority_medium
342
+	 * - EEM_Message::priority_low
343
+	 * Priority is used to determine the weight the message type is given when queuing for generation and/or sending.
344
+	 *
345
+	 * @see    EEM_Message for more phpdocs on priority.
346
+	 *         The default priority for all message_types is EEM_Message::priority_low.  Message Types wanting to give
347
+	 *         a higher priority must override this method. Also note, messengers are able to override priorities
348
+	 *         queuing instructions if their "send_now" flag is set to true. An example of this is the HTML messenger
349
+	 *         which displays things in the browser.
350
+	 * @since  4.9.0
351
+	 * @return int
352
+	 */
353
+	public function get_priority()
354
+	{
355
+		return EEM_Message::priority_low;
356
+	}
357
+
358
+
359
+	/**
360
+	 * This runs the _set_data_handler() method for message types and then returns what got set.
361
+	 *
362
+	 * @param mixed $data This sets the data property for the message type with the incoming data used for generating.
363
+	 * @return string (the reference for the data handler) (will be an empty string if could not be determined).
364
+	 */
365
+	public function get_data_handler($data)
366
+	{
367
+		$this->_data = $data;
368
+		$this->_set_data_handler();
369
+		return apply_filters('FHEE__EE_message_type__get_data_handler', $this->_data_handler, $this);
370
+	}
371
+
372
+
373
+	/**
374
+	 * This is called externally to reset the value of the $_data property for the message type.
375
+	 * Please note the value of the _data is highly volatile.  It was added as an interim measure ensuring
376
+	 * EE_Message_To_Generate objects have any changes to the _data property when `_set_data_handler` method is called
377
+	 * (and for back compat reasons). This particular method is used in
378
+	 * EE_Messages_Generator::_reset_current_properties to ensure that the internal _data on the message type is
379
+	 * cleaned before subsequent EE_Message generation in the same request.
380
+	 *
381
+	 * @todo      This needs refactored along with the whole _set_data_handler() method in EE_message_types. Need to
382
+	 *            ensure that there is no manipulation of the _data property during run time so there's a clear
383
+	 *            expectation of what it is.  Likely we need to ensure that _data is not persisted IN the message type
384
+	 *            at all.
385
+	 * @internal  Plugin authors, do not implement this method, it is subject to change.
386
+	 * @since     4.9
387
+	 */
388
+	public function reset_data()
389
+	{
390
+		$this->_data = null;
391
+	}
392
+
393
+
394
+	/**
395
+	 * This does some validation of incoming params gets the url trigger from the defined method in the specific child
396
+	 * class and then filters the results.
397
+	 *
398
+	 * @param string          $context           The message type context
399
+	 * @param string          $sending_messenger The sending messenger
400
+	 * @param EE_Registration $registration      Registration object
401
+	 * @throws EE_Error
402
+	 * @deprecated  4.9.0  Likely 4.9.10 or 4.10.0 will remove this method completely
403
+	 * @return string          generated url
404
+	 */
405
+	public function get_url_trigger($context, $sending_messenger, EE_Registration $registration)
406
+	{
407
+		// validate context
408
+		// valid context?
409
+		if (! isset($this->_contexts[ $context ])) {
410
+			throw new EE_Error(
411
+				sprintf(
412
+					esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
413
+					$context,
414
+					get_class($this)
415
+				)
416
+			);
417
+		}
418
+		// valid sending_messenger?
419
+		$not_valid_msgr = false;
420
+		foreach ($this->_with_messengers as $generating => $sendings) {
421
+			if (empty($sendings) || array_search($sending_messenger, $sendings) === false) {
422
+				$not_valid_msgr = true;
423
+			}
424
+		}
425
+		if ($not_valid_msgr) {
426
+			throw new EE_Error(
427
+				sprintf(
428
+					esc_html__(
429
+						'The given sending messenger string (%s) does not match a valid sending messenger with the %s.  If this is incorrect, make sure that the message type has defined this messenger as a sending messenger in its $_with_messengers array.',
430
+						'event_espresso'
431
+					),
432
+					$sending_messenger,
433
+					get_class($this)
434
+				)
435
+			);
436
+		}
437
+		return EEH_MSG_Template::generate_url_trigger(
438
+			$sending_messenger,
439
+			$this->_active_messenger->name,
440
+			$context,
441
+			$this->name,
442
+			$registration,
443
+			$this->_GRP_ID,
444
+			$this->_get_id_for_msg_url($context, $registration)
445
+		);
446
+	}
447
+
448
+
449
+	/**
450
+	 * Wrapper for _get_data_for_context() that handles some validation before calling the main class and also allows
451
+	 * for filtering. This is (currently) called by the EED_Messages module.
452
+	 *
453
+	 * @since 4.5.0
454
+	 * @throws EE_Error
455
+	 * @param string          $context      This should be a string matching a valid context for the message type.
456
+	 * @param EE_Registration $registration Need a registration to ensure that the data is valid (prevents people
457
+	 *                                      guessing a url).
458
+	 * @param int             $id           Optional. Integer corresponding to the value for the primary key of a
459
+	 *                                      EE_Base_Class_Object
460
+	 * @return mixed (EE_Base_Class||EE_Base_Class[])
461
+	 */
462
+	public function get_data_for_context($context, EE_Registration $registration, $id = 0)
463
+	{
464
+		// valid context?
465
+		if (! isset($this->_contexts[ $context ])) {
466
+			throw new EE_Error(
467
+				sprintf(
468
+					esc_html__('The context %s is not a valid context for %s.', 'event_espresso'),
469
+					$context,
470
+					get_class($this)
471
+				)
472
+			);
473
+		}
474
+		// get data and apply global and class specific filters on it.
475
+		$data = apply_filters(
476
+			'FHEE__EE_message_type__get_data_for_context__data',
477
+			$this->_get_data_for_context($context, $registration, $id),
478
+			$this
479
+		);
480
+		$data = apply_filters('FHEE__' . get_class($this) . '__get_data_for_context__data', $data, $this);
481
+		// if empty then something went wrong!
482
+		if (empty($data)) {
483
+			throw new EE_Error(
484
+				sprintf(
485
+					esc_html__(
486
+						'There is no data retrieved, it is possible that the id given (%d) does not match any value in the database for the corresponding EE_Base_Class used by the data handler for the %s message type.',
487
+						'event_espresso'
488
+					),
489
+					$id,
490
+					$this->name
491
+				)
492
+			);
493
+		}
494
+		return $data;
495
+	}
496
+
497
+
498
+	/**
499
+	 * This returns the contents of the _data property.
500
+	 * Please note the value of the _data is highly volatile.  It was added as an interim measure ensuring
501
+	 * EE_Message_To_Generate objects have any changes to the _data property when `_set_data_handler` method is called.
502
+	 *
503
+	 * @todo      This needs refactored along with the whole _set_data_handler() method in EE_message_types. Need to
504
+	 *            ensure that there is no manipulation of the _data property during run time so there's a clear
505
+	 *            expectation of what it is.
506
+	 * @internal  Plugin authors, do not implement this method, it is subject to change.
507
+	 * @return mixed
508
+	 */
509
+	public function get_data()
510
+	{
511
+		return $this->_data;
512
+	}
513
+
514
+
515
+	/**
516
+	 * used to set the $_with_messengers property. (this is a default, child classes SHOULD override)
517
+	 *
518
+	 * @see   property definition for description of setup.
519
+	 * @since 4.5.0
520
+	 * @abstract
521
+	 * @return void
522
+	 */
523
+	protected function _set_with_messengers()
524
+	{
525
+		$this->_with_messengers = array(
526
+			'email' => array('html'),
527
+		);
528
+	}
529
+
530
+
531
+	/**
532
+	 * Return the value of the _with_messengers property
533
+	 *
534
+	 * @since 4.5.0
535
+	 * @return array
536
+	 */
537
+	public function with_messengers()
538
+	{
539
+		return apply_filters(
540
+			'FHEE__EE_message_type__get_with_messengers__with_messengers__' . get_class($this),
541
+			$this->_with_messengers
542
+		);
543
+	}
544
+
545
+
546
+	/**
547
+	 * this public method accepts a page slug (for an EE_admin page) and will return the response from the child class
548
+	 * callback function if that page is registered via the `_admin_registered_page` property set by the child class.
549
+	 * *
550
+	 *
551
+	 * @param string $page       the slug of the EE admin page
552
+	 * @param array  $messengers an array of active messenger objects
553
+	 * @param string $action     the page action (to allow for more specific handling - i.e. edit vs. add pages)
554
+	 * @param array  $extra      This is just an extra argument that can be used to pass additional data for setting up
555
+	 *                           page content.
556
+	 * @access public
557
+	 * @return string
558
+	 */
559
+	public function get_message_type_admin_page_content(
560
+		$page,
561
+		$action = null,
562
+		$extra = array(),
563
+		$messengers = array()
564
+	) {
565
+		// we can also further refine the context by action (if present).
566
+		return $this->_get_admin_page_content($page, $action, $extra, $messengers);
567
+	}
568
+
569
+
570
+	/**
571
+	 * @return array
572
+	 */
573
+	public function get_contexts()
574
+	{
575
+		return $this->_contexts;
576
+	}
577
+
578
+
579
+	/**
580
+	 * This just returns the context label for a given context (as set in $_context_label property)
581
+	 *
582
+	 * @access public
583
+	 * @return array
584
+	 */
585
+	public function get_context_label()
586
+	{
587
+		return $this->_context_label;
588
+	}
589
+
590
+
591
+	/**
592
+	 * This just returns the (filtered) _master_templates property.
593
+	 *
594
+	 * @see property definition for documentation.
595
+	 * @return array
596
+	 */
597
+	public function get_master_templates()
598
+	{
599
+		// first class specific filter then filter that by the global filter.
600
+		$master_templates = apply_filters(
601
+			'FHEE__' . get_class($this) . '__get_master_templates',
602
+			$this->_master_templates
603
+		);
604
+		return apply_filters('FHEE__EE_message_type__get_master_templates', $master_templates, $this);
605
+	}
606
+
607
+
608
+	/**
609
+	 * Accepts an incoming data handler which contains data for processing, and returns an array of
610
+	 * EE_Messages_Addressee objects.
611
+	 *
612
+	 * @param EE_Messages_incoming_data $data
613
+	 * @param string                    $context Limit addressees to specific context.
614
+	 * @return array An array indexed by context where each context is an array of EE_Messages_Addressee objects for
615
+	 *                                           that context
616
+	 * @throws EE_Error
617
+	 */
618
+	public function get_addressees(EE_Messages_incoming_data $data, $context = '')
619
+	{
620
+		// override _data
621
+		$this->_data       = $data;
622
+		$addressees        = array();
623
+		$original_contexts = $this->_contexts;
624
+		// if incoming context then limit to that context
625
+		if (! empty($context)) {
626
+			$cntxt = ! empty($this->_contexts[ $context ]) ? $this->_contexts[ $context ] : '';
627
+			if (! empty($cntxt)) {
628
+				$this->_contexts           = array();
629
+				$this->_contexts[ $context ] = $cntxt;
630
+			}
631
+		}
632
+		$this->_set_default_addressee_data();
633
+		if ($this->_process_data()) {
634
+			$addressees = $this->_addressees;
635
+		}
636
+
637
+		// reset contexts and addressees
638
+		$this->_contexts   = $original_contexts;
639
+		$this->_addressees = array();
640
+		return $addressees;
641
+	}
642
+
643
+
644
+	/**
645
+	 * processes the data object so we get
646
+	 *
647
+	 * @throws EE_Error
648
+	 * @return bool  true means data was processed successfully, false means not.
649
+	 */
650
+	protected function _process_data()
651
+	{
652
+		// at a minimum, we NEED EE_Attendee objects.
653
+		if (empty($this->_data->attendees)) {
654
+			return false;  // there's no data to process!
655
+		}
656
+		// process addressees for each context.  Child classes will have to have methods for
657
+		// each context defined to handle the processing of the data object within them
658
+		foreach ($this->_contexts as $context => $details) {
659
+			$xpctd_method = '_' . $context . '_addressees';
660
+			if (! method_exists($this, $xpctd_method)) {
661
+				throw new EE_Error(
662
+					sprintf(
663
+						esc_html__(
664
+							'The data for %1$s message type cannot be prepared because there is no set method for doing so.  The expected method name is "%2$s" please doublecheck the %1$s message type class and make sure that method is present',
665
+							'event_espresso'
666
+						),
667
+						$this->label['singular'],
668
+						$xpctd_method
669
+					)
670
+				);
671
+			}
672
+			$this->_addressees[ $context ] = call_user_func(array($this, $xpctd_method));
673
+		}
674
+		return true; // data was processed successfully.
675
+	}
676
+
677
+
678
+	/**
679
+	 * sets the default_addressee_data property,
680
+	 *
681
+	 * @access private
682
+	 * @return void
683
+	 */
684
+	private function _set_default_addressee_data()
685
+	{
686
+		$this->_default_addressee_data = array(
687
+			'billing'                  => $this->_data->billing,
688
+			'taxes'                    => $this->_data->taxes,
689
+			'tax_line_items'           => $this->_data->tax_line_items,
690
+			'additional_line_items'    => $this->_data->additional_line_items,
691
+			'grand_total_line_item'    => $this->_data->grand_total_line_item,
692
+			'txn'                      => $this->_data->txn,
693
+			'payments'                 => $this->_data->payments,
694
+			'payment'                  => isset($this->_data->payment) && $this->_data->payment instanceof EE_Payment
695
+				? $this->_data->payment
696
+				: null,
697
+			'reg_objs'                 => $this->_data->reg_objs,
698
+			'registrations'            => $this->_data->registrations,
699
+			'datetimes'                => $this->_data->datetimes,
700
+			'tickets'                  => $this->_data->tickets,
701
+			'line_items_with_children' => $this->_data->line_items_with_children,
702
+			'questions'                => $this->_data->questions,
703
+			'answers'                  => $this->_data->answers,
704
+			'txn_status'               => $this->_data->txn_status,
705
+			'total_ticket_count'       => $this->_data->total_ticket_count,
706
+		);
707
+		if (is_array($this->_data->primary_attendee_data)) {
708
+			$this->_default_addressee_data                    = array_merge(
709
+				$this->_default_addressee_data,
710
+				$this->_data->primary_attendee_data
711
+			);
712
+			$this->_default_addressee_data['primary_att_obj'] = $this->_data->primary_attendee_data['att_obj'];
713
+			$this->_default_addressee_data['primary_reg_obj'] = $this->_data->primary_attendee_data['reg_obj'];
714
+		}
715
+	}
716
+
717
+
718
+
719
+	/********************
720 720
      * setup default shared addressee object/contexts
721 721
      * These can be utilized simply by defining the context in the child message type.
722 722
      * They can also be overridden if a specific message type needs to do something different for that context.
723 723
      ****************/
724
-    /**
725
-     * see abstract declaration in parent class for details, children message types can
726
-     * override these valid shortcodes if desired (we include all for all contexts by default).
727
-     */
728
-    protected function _set_valid_shortcodes()
729
-    {
730
-        $all_shortcodes = array(
731
-            'attendee_list',
732
-            'attendee',
733
-            'datetime_list',
734
-            'datetime',
735
-            'event_list',
736
-            'event_meta',
737
-            'event',
738
-            'organization',
739
-            'recipient_details',
740
-            'recipient_list',
741
-            'ticket_list',
742
-            'ticket',
743
-            'transaction',
744
-            'venue',
745
-            'primary_registration_details',
746
-            'primary_registration_list',
747
-            'event_author',
748
-            'email',
749
-            'messenger',
750
-        );
751
-        $contexts       = $this->get_contexts();
752
-        foreach ($contexts as $context => $details) {
753
-            $this->_valid_shortcodes[ $context ] = $all_shortcodes;
754
-            // make sure non admin context does not include the event_author shortcodes
755
-            if ($context != 'admin') {
756
-                if (($key = array_search('event_author', $this->_valid_shortcodes[ $context ])) !== false) {
757
-                    unset($this->_valid_shortcodes[ $context ][ $key ]);
758
-                }
759
-            }
760
-        }
761
-        // make sure admin context does not include the recipient_details shortcodes
762
-        // IF we have admin context hooked in message types might not have that context.
763
-        if (! empty($this->_valid_shortcodes['admin'])) {
764
-            if (($key = array_search('recipient_details', $this->_valid_shortcodes['admin'])) !== false) {
765
-                unset($this->_valid_shortcodes['admin'][ $key ]);
766
-            }
767
-            // make sure admin context does not include the recipient_details shortcodes
768
-            if (($key = array_search('recipient_list', $this->_valid_shortcodes['admin'])) !== false) {
769
-                unset($this->_valid_shortcodes['admin'][ $key ]);
770
-            }
771
-        }
772
-    }
773
-
774
-
775
-    /**
776
-     * Used by Validators to modify the valid shortcodes.
777
-     *
778
-     * @param  array $new_config array of valid shortcodes (by context)
779
-     * @return void               sets valid_shortcodes property
780
-     */
781
-    public function reset_valid_shortcodes_config($new_config)
782
-    {
783
-        foreach ($new_config as $context => $shortcodes) {
784
-            $this->_valid_shortcodes[ $context ] = $shortcodes;
785
-        }
786
-    }
787
-
788
-
789
-    /**
790
-     * returns an array of addressee objects for event_admins
791
-     *
792
-     * @access protected
793
-     * @return array array of EE_Messages_Addressee objects
794
-     * @throws EE_Error
795
-     * @throws InvalidArgumentException
796
-     * @throws InvalidDataTypeException
797
-     * @throws InvalidInterfaceException
798
-     */
799
-    protected function _admin_addressees()
800
-    {
801
-        $admin_events = array();
802
-        $addressees   = array();
803
-        // first we need to get the event admin user id for all the events
804
-        // and setup an addressee object for each unique admin user.
805
-        foreach ($this->_data->events as $line_ref => $event) {
806
-            $admin_id = $this->_get_event_admin_id($event['ID']);
807
-            // make sure we are just including the events that belong to this admin!
808
-            $admin_events[ $admin_id ][ $line_ref ] = $event;
809
-        }
810
-        // k now we can loop through the event_admins and setup the addressee data.
811
-        foreach ($admin_events as $admin_id => $event_details) {
812
-            $aee          = array(
813
-                'user_id'        => $admin_id,
814
-                'events'         => $event_details,
815
-                'attendees'      => $this->_data->attendees,
816
-                'recipient_id'   => $admin_id,
817
-                'recipient_type' => 'WP_User',
818
-            );
819
-            $aee          = array_merge($this->_default_addressee_data, $aee);
820
-            $addressees[] = new EE_Messages_Addressee($aee);
821
-        }
822
-        return $addressees;
823
-    }
824
-
825
-
826
-    /**
827
-     * Takes care of setting up the addressee object(s) for the primary attendee.
828
-     *
829
-     * @access protected
830
-     * @return array of EE_Addressee objects
831
-     * @throws EE_Error
832
-     */
833
-    protected function _primary_attendee_addressees()
834
-    {
835
-        $aee                   = $this->_default_addressee_data;
836
-        $aee['events']         = $this->_data->events;
837
-        $aee['attendees']      = $this->_data->attendees;
838
-        $aee['recipient_id']   = $aee['primary_att_obj'] instanceof EE_Attendee ? $aee['primary_att_obj']->ID() : 0;
839
-        $aee['recipient_type'] = 'Attendee';
840
-        // great now we can instantiate the $addressee object and return (as an array);
841
-        $add[] = new EE_Messages_Addressee($aee);
842
-        return $add;
843
-    }
844
-
845
-
846
-    /**
847
-     * Takes care of setting up the addressee object(s) for the registered attendees
848
-     *
849
-     * @access protected
850
-     * @return array of EE_Addressee objects
851
-     */
852
-    protected function _attendee_addressees()
853
-    {
854
-        $add = array();
855
-        // we just have to loop through the attendees.  We'll also set the attached events for each attendee.
856
-        // use to verify unique attendee emails... we don't want to sent multiple copies to the same attendee do we?
857
-        $already_processed = array();
858
-        foreach ($this->_data->attendees as $att_id => $details) {
859
-            // set the attendee array to blank on each loop;
860
-            $aee = array();
861
-            if (
862
-                isset($this->_data->reg_obj)
863
-                && ($this->_data->reg_obj->attendee_ID() != $att_id)
864
-                && $this->_single_message
865
-            ) {
866
-                continue;
867
-            }
868
-            // is $this->_regs_for_sending present?
869
-            // If so, let's make sure we ONLY generate addressee for registrations in that array.
870
-            if (! empty($this->_regs_for_sending) && is_array($this->_regs_for_sending)) {
871
-                $regs_allowed = array_intersect_key(array_flip($this->_regs_for_sending), $details['reg_objs']);
872
-                if (empty($regs_allowed)) {
873
-                    continue;
874
-                }
875
-            }
876
-            if (
877
-                apply_filters(
878
-                    'FHEE__EE_message_type___attendee_addressees__prevent_duplicate_email_sends',
879
-                    true,
880
-                    $this->_data,
881
-                    $this
882
-                )
883
-                && in_array($att_id, $already_processed, true)
884
-            ) {
885
-                continue;
886
-            }
887
-            $already_processed[] = $att_id;
888
-            foreach ($details as $item => $value) {
889
-                $aee[ $item ] = $value;
890
-                if ($item === 'line_ref') {
891
-                    foreach ($value as $event_id) {
892
-                        $aee['events'][ $event_id ] = $this->_data->events[ $event_id ];
893
-                    }
894
-                }
895
-                if ($item === 'attendee_email') {
896
-                    $aee['attendee_email'] = $value;
897
-                }
898
-                /*if ( $item == 'registration_id' ) {
724
+	/**
725
+	 * see abstract declaration in parent class for details, children message types can
726
+	 * override these valid shortcodes if desired (we include all for all contexts by default).
727
+	 */
728
+	protected function _set_valid_shortcodes()
729
+	{
730
+		$all_shortcodes = array(
731
+			'attendee_list',
732
+			'attendee',
733
+			'datetime_list',
734
+			'datetime',
735
+			'event_list',
736
+			'event_meta',
737
+			'event',
738
+			'organization',
739
+			'recipient_details',
740
+			'recipient_list',
741
+			'ticket_list',
742
+			'ticket',
743
+			'transaction',
744
+			'venue',
745
+			'primary_registration_details',
746
+			'primary_registration_list',
747
+			'event_author',
748
+			'email',
749
+			'messenger',
750
+		);
751
+		$contexts       = $this->get_contexts();
752
+		foreach ($contexts as $context => $details) {
753
+			$this->_valid_shortcodes[ $context ] = $all_shortcodes;
754
+			// make sure non admin context does not include the event_author shortcodes
755
+			if ($context != 'admin') {
756
+				if (($key = array_search('event_author', $this->_valid_shortcodes[ $context ])) !== false) {
757
+					unset($this->_valid_shortcodes[ $context ][ $key ]);
758
+				}
759
+			}
760
+		}
761
+		// make sure admin context does not include the recipient_details shortcodes
762
+		// IF we have admin context hooked in message types might not have that context.
763
+		if (! empty($this->_valid_shortcodes['admin'])) {
764
+			if (($key = array_search('recipient_details', $this->_valid_shortcodes['admin'])) !== false) {
765
+				unset($this->_valid_shortcodes['admin'][ $key ]);
766
+			}
767
+			// make sure admin context does not include the recipient_details shortcodes
768
+			if (($key = array_search('recipient_list', $this->_valid_shortcodes['admin'])) !== false) {
769
+				unset($this->_valid_shortcodes['admin'][ $key ]);
770
+			}
771
+		}
772
+	}
773
+
774
+
775
+	/**
776
+	 * Used by Validators to modify the valid shortcodes.
777
+	 *
778
+	 * @param  array $new_config array of valid shortcodes (by context)
779
+	 * @return void               sets valid_shortcodes property
780
+	 */
781
+	public function reset_valid_shortcodes_config($new_config)
782
+	{
783
+		foreach ($new_config as $context => $shortcodes) {
784
+			$this->_valid_shortcodes[ $context ] = $shortcodes;
785
+		}
786
+	}
787
+
788
+
789
+	/**
790
+	 * returns an array of addressee objects for event_admins
791
+	 *
792
+	 * @access protected
793
+	 * @return array array of EE_Messages_Addressee objects
794
+	 * @throws EE_Error
795
+	 * @throws InvalidArgumentException
796
+	 * @throws InvalidDataTypeException
797
+	 * @throws InvalidInterfaceException
798
+	 */
799
+	protected function _admin_addressees()
800
+	{
801
+		$admin_events = array();
802
+		$addressees   = array();
803
+		// first we need to get the event admin user id for all the events
804
+		// and setup an addressee object for each unique admin user.
805
+		foreach ($this->_data->events as $line_ref => $event) {
806
+			$admin_id = $this->_get_event_admin_id($event['ID']);
807
+			// make sure we are just including the events that belong to this admin!
808
+			$admin_events[ $admin_id ][ $line_ref ] = $event;
809
+		}
810
+		// k now we can loop through the event_admins and setup the addressee data.
811
+		foreach ($admin_events as $admin_id => $event_details) {
812
+			$aee          = array(
813
+				'user_id'        => $admin_id,
814
+				'events'         => $event_details,
815
+				'attendees'      => $this->_data->attendees,
816
+				'recipient_id'   => $admin_id,
817
+				'recipient_type' => 'WP_User',
818
+			);
819
+			$aee          = array_merge($this->_default_addressee_data, $aee);
820
+			$addressees[] = new EE_Messages_Addressee($aee);
821
+		}
822
+		return $addressees;
823
+	}
824
+
825
+
826
+	/**
827
+	 * Takes care of setting up the addressee object(s) for the primary attendee.
828
+	 *
829
+	 * @access protected
830
+	 * @return array of EE_Addressee objects
831
+	 * @throws EE_Error
832
+	 */
833
+	protected function _primary_attendee_addressees()
834
+	{
835
+		$aee                   = $this->_default_addressee_data;
836
+		$aee['events']         = $this->_data->events;
837
+		$aee['attendees']      = $this->_data->attendees;
838
+		$aee['recipient_id']   = $aee['primary_att_obj'] instanceof EE_Attendee ? $aee['primary_att_obj']->ID() : 0;
839
+		$aee['recipient_type'] = 'Attendee';
840
+		// great now we can instantiate the $addressee object and return (as an array);
841
+		$add[] = new EE_Messages_Addressee($aee);
842
+		return $add;
843
+	}
844
+
845
+
846
+	/**
847
+	 * Takes care of setting up the addressee object(s) for the registered attendees
848
+	 *
849
+	 * @access protected
850
+	 * @return array of EE_Addressee objects
851
+	 */
852
+	protected function _attendee_addressees()
853
+	{
854
+		$add = array();
855
+		// we just have to loop through the attendees.  We'll also set the attached events for each attendee.
856
+		// use to verify unique attendee emails... we don't want to sent multiple copies to the same attendee do we?
857
+		$already_processed = array();
858
+		foreach ($this->_data->attendees as $att_id => $details) {
859
+			// set the attendee array to blank on each loop;
860
+			$aee = array();
861
+			if (
862
+				isset($this->_data->reg_obj)
863
+				&& ($this->_data->reg_obj->attendee_ID() != $att_id)
864
+				&& $this->_single_message
865
+			) {
866
+				continue;
867
+			}
868
+			// is $this->_regs_for_sending present?
869
+			// If so, let's make sure we ONLY generate addressee for registrations in that array.
870
+			if (! empty($this->_regs_for_sending) && is_array($this->_regs_for_sending)) {
871
+				$regs_allowed = array_intersect_key(array_flip($this->_regs_for_sending), $details['reg_objs']);
872
+				if (empty($regs_allowed)) {
873
+					continue;
874
+				}
875
+			}
876
+			if (
877
+				apply_filters(
878
+					'FHEE__EE_message_type___attendee_addressees__prevent_duplicate_email_sends',
879
+					true,
880
+					$this->_data,
881
+					$this
882
+				)
883
+				&& in_array($att_id, $already_processed, true)
884
+			) {
885
+				continue;
886
+			}
887
+			$already_processed[] = $att_id;
888
+			foreach ($details as $item => $value) {
889
+				$aee[ $item ] = $value;
890
+				if ($item === 'line_ref') {
891
+					foreach ($value as $event_id) {
892
+						$aee['events'][ $event_id ] = $this->_data->events[ $event_id ];
893
+					}
894
+				}
895
+				if ($item === 'attendee_email') {
896
+					$aee['attendee_email'] = $value;
897
+				}
898
+				/*if ( $item == 'registration_id' ) {
899 899
                     $aee['attendee_registration_id'] = $value;
900 900
                 }/**/
901
-            }
902
-            // note the FIRST reg object in this array is the one
903
-            // we'll use for this attendee as the primary registration for this attendee.
904
-            $aee['reg_obj']        = reset($this->_data->attendees[ $att_id ]['reg_objs']);
905
-            $aee['attendees']      = $this->_data->attendees;
906
-            $aee['recipient_id']   = $att_id;
907
-            $aee['recipient_type'] = 'Attendee';
908
-            // merge in the primary attendee data
909
-            $aee   = array_merge($this->_default_addressee_data, $aee);
910
-            $add[] = new EE_Messages_Addressee($aee);
911
-        }
912
-        return $add;
913
-    }
914
-
915
-
916
-    /**
917
-     * @param $event_id
918
-     * @return int
919
-     * @throws EE_Error
920
-     * @throws InvalidArgumentException
921
-     * @throws InvalidDataTypeException
922
-     * @throws InvalidInterfaceException
923
-     */
924
-    protected function _get_event_admin_id($event_id)
925
-    {
926
-        $event = EEM_Event::instance()->get_one_by_ID($event_id);
927
-        return $event instanceof EE_Event ? $event->wp_user() : 0;
928
-    }
901
+			}
902
+			// note the FIRST reg object in this array is the one
903
+			// we'll use for this attendee as the primary registration for this attendee.
904
+			$aee['reg_obj']        = reset($this->_data->attendees[ $att_id ]['reg_objs']);
905
+			$aee['attendees']      = $this->_data->attendees;
906
+			$aee['recipient_id']   = $att_id;
907
+			$aee['recipient_type'] = 'Attendee';
908
+			// merge in the primary attendee data
909
+			$aee   = array_merge($this->_default_addressee_data, $aee);
910
+			$add[] = new EE_Messages_Addressee($aee);
911
+		}
912
+		return $add;
913
+	}
914
+
915
+
916
+	/**
917
+	 * @param $event_id
918
+	 * @return int
919
+	 * @throws EE_Error
920
+	 * @throws InvalidArgumentException
921
+	 * @throws InvalidDataTypeException
922
+	 * @throws InvalidInterfaceException
923
+	 */
924
+	protected function _get_event_admin_id($event_id)
925
+	{
926
+		$event = EEM_Event::instance()->get_one_by_ID($event_id);
927
+		return $event instanceof EE_Event ? $event->wp_user() : 0;
928
+	}
929 929
 }
Please login to merge, or discard this patch.