Completed
Branch FET/editor-dates-tickets-refac... (c72528)
by
unknown
46:50 queued 36:04
created
acceptance_tests/Page/MessagesAdmin.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -103,8 +103,8 @@
 block discarded – undo
103 103
     public static function editMessageTemplateClassByMessageType($message_type_slug, $context = '')
104 104
     {
105 105
         return $context
106
-            ? '.' . $message_type_slug . '-' . $context . '-edit-link'
107
-            : '.' . $message_type_slug . '-edit-link';
106
+            ? '.'.$message_type_slug.'-'.$context.'-edit-link'
107
+            : '.'.$message_type_slug.'-edit-link';
108 108
     }
109 109
 
110 110
 
Please login to merge, or discard this patch.
Indentation   +267 added lines, -267 removed lines patch added patch discarded remove patch
@@ -14,292 +14,292 @@
 block discarded – undo
14 14
 class MessagesAdmin extends CoreAdmin
15 15
 {
16 16
 
17
-    /**
18
-     * Context slug for the admin messages context.
19
-     */
20
-    const ADMIN_CONTEXT_SLUG = 'admin';
17
+	/**
18
+	 * Context slug for the admin messages context.
19
+	 */
20
+	const ADMIN_CONTEXT_SLUG = 'admin';
21 21
 
22
-    /**
23
-     * Context slug for the primary attendee messages context
24
-     */
25
-    const PRIMARY_ATTENDEE_CONTEXT_SLUG = 'primary_attendee';
22
+	/**
23
+	 * Context slug for the primary attendee messages context
24
+	 */
25
+	const PRIMARY_ATTENDEE_CONTEXT_SLUG = 'primary_attendee';
26 26
 
27 27
 
28
-    /**
29
-     * Context slug for the attendee messages context
30
-     */
31
-    const ATTENDEE_CONTEXT_SLUG = 'attendee';
28
+	/**
29
+	 * Context slug for the attendee messages context
30
+	 */
31
+	const ATTENDEE_CONTEXT_SLUG = 'attendee';
32 32
 
33 33
 
34
-    /**
35
-     * Status reference for the EEM_Message::status_sent status.
36
-     */
37
-    const MESSAGE_STATUS_SENT = 'MSN';
34
+	/**
35
+	 * Status reference for the EEM_Message::status_sent status.
36
+	 */
37
+	const MESSAGE_STATUS_SENT = 'MSN';
38 38
 
39 39
 
40
-    /**
41
-     * Message type slug for the Payment Failed message type
42
-     */
43
-    const PAYMENT_FAILED_MESSAGE_TYPE_SLUG = 'payment_failed';
40
+	/**
41
+	 * Message type slug for the Payment Failed message type
42
+	 */
43
+	const PAYMENT_FAILED_MESSAGE_TYPE_SLUG = 'payment_failed';
44 44
 
45 45
 
46
-    /**
47
-     * Message type slug for the Registration Pending Payment message type
48
-     */
49
-    const MESSAGE_TYPE_PENDING_PAYMENT = 'pending_approval';
46
+	/**
47
+	 * Message type slug for the Registration Pending Payment message type
48
+	 */
49
+	const MESSAGE_TYPE_PENDING_PAYMENT = 'pending_approval';
50 50
 
51 51
 
52
-    /**
53
-     * Selector for the Global Messages "Send on same request" field in the Messages Settings tab.
54
-     */
55
-    const GLOBAL_MESSAGES_SETTINGS_ON_REQUEST_SELECTION_SELECTOR =
56
-        '#global_messages_settings-do-messages-on-same-request';
52
+	/**
53
+	 * Selector for the Global Messages "Send on same request" field in the Messages Settings tab.
54
+	 */
55
+	const GLOBAL_MESSAGES_SETTINGS_ON_REQUEST_SELECTION_SELECTOR =
56
+		'#global_messages_settings-do-messages-on-same-request';
57 57
 
58 58
 
59
-    /**
60
-     * Selector for the Global Messages Settings submit button in the Messages Settings tab.
61
-     */
62
-    const GLOBAL_MESSAGES_SETTINGS_SUBMIT_SELECTOR = '#global_messages_settings-update-settings-submit';
59
+	/**
60
+	 * Selector for the Global Messages Settings submit button in the Messages Settings tab.
61
+	 */
62
+	const GLOBAL_MESSAGES_SETTINGS_SUBMIT_SELECTOR = '#global_messages_settings-update-settings-submit';
63 63
 
64 64
 
65
-    /**
66
-     * This is the container where active message types for a messenger are found/dragged to.
67
-     */
68
-    const MESSAGES_SETTINGS_ACTIVE_MESSAGE_TYPES_CONTAINER_SELECTOR = '#active-message-types';
65
+	/**
66
+	 * This is the container where active message types for a messenger are found/dragged to.
67
+	 */
68
+	const MESSAGES_SETTINGS_ACTIVE_MESSAGE_TYPES_CONTAINER_SELECTOR = '#active-message-types';
69 69
 
70 70
 
71
-    /**
72
-     * Locator for the context switcher selector on the Message Template Editor page.
73
-     */
74
-    const MESSAGES_CONTEXT_SWITCHER_SELECTOR = "//form[@id='ee-msg-context-switcher-frm']/select";
71
+	/**
72
+	 * Locator for the context switcher selector on the Message Template Editor page.
73
+	 */
74
+	const MESSAGES_CONTEXT_SWITCHER_SELECTOR = "//form[@id='ee-msg-context-switcher-frm']/select";
75 75
 
76 76
 
77
-    /**
78
-     * Locator for the context switcher submit button in the Message Template Editor page.
79
-     */
80
-    const MESSAGES_CONTEXT_SWITCHER_BUTTON_SELECTOR = "#submit-msg-context-switcher-sbmt";
77
+	/**
78
+	 * Locator for the context switcher submit button in the Message Template Editor page.
79
+	 */
80
+	const MESSAGES_CONTEXT_SWITCHER_BUTTON_SELECTOR = "#submit-msg-context-switcher-sbmt";
81 81
 
82 82
 
83
-    /**
84
-     * Locator for the dialog container used for housing viewed messages in the message activity list table.
85
-     */
86
-    const MESSAGES_LIST_TABLE_VIEW_MESSAGE_DIALOG_CONTAINER_SELECTOR = '.ee-admin-dialog-container-inner-content';
87
-
88
-
89
-    /**
90
-     * Returns the selector for the on/off toggle for context on the message template editor.
91
-     */
92
-    const MESSAGES_CONTEXT_ACTIVE_STATE_TOGGLE =
93
-        "//div[@class='activate_context_on_off_toggle_container']/div[@class='switch']/label";
94
-
95
-
96
-    const SELECTOR_LINK_FINALIZE_PAYMENT_PENDING_PAYMENT_MESSAGE = "//td/p[@class='callout']/a";
97
-
98
-
99
-
100
-    /**
101
-     * @param string $additional_params Any additional request parameters for the generated url should be included as
102
-     *                                  a string.
103
-     * @return string
104
-     */
105
-    public static function messageActivityListTableUrl($additional_params = '')
106
-    {
107
-        return self::adminUrl('espresso_messages', 'default', $additional_params);
108
-    }
109
-
110
-
111
-    /**
112
-     * @param string $additional_params Any additional request parameters for the generated url should be included as
113
-     *                                  a string.
114
-     * @return string
115
-     */
116
-    public static function defaultMessageTemplateListTableUrl($additional_params = '')
117
-    {
118
-        return self::adminUrl('espresso_messages', 'global_mtps', $additional_params);
119
-    }
120
-
121
-
122
-    /**
123
-     * @param string $additional_params Any additional request parameters for the generated url should be included as
124
-     *                                  a string.
125
-     * @return string
126
-     */
127
-    public static function customMessageTemplateListTableUrl($additional_params = '')
128
-    {
129
-        return self::adminUrl('espresso_messages', 'custom_mtps', $additional_params);
130
-    }
131
-
132
-
133
-    /**
134
-     * @return string
135
-     */
136
-    public static function messageSettingsUrl()
137
-    {
138
-        return self::adminUrl('espresso_messages', 'settings');
139
-    }
140
-
141
-
142
-
143
-    public static function draggableSettingsBoxSelectorForMessageTypeAndMessenger(
144
-        $message_type_slug,
145
-        $messenger_slug = 'email'
146
-    ) {
147
-        return "#$message_type_slug-messagetype-$messenger_slug";
148
-    }
149
-
150
-
151
-    /**
152
-     * @param string $message_type_slug
153
-     * @param string $context
154
-     * @return string
155
-     */
156
-    public static function editMessageTemplateClassByMessageType($message_type_slug, $context = '')
157
-    {
158
-        return $context
159
-            ? '.' . $message_type_slug . '-' . $context . '-edit-link'
160
-            : '.' . $message_type_slug . '-edit-link';
161
-    }
162
-
163
-
164
-    /**
165
-     * Selector for (a) specific table cell(s) in the Messages Activity list table for the given parameters.
166
-     *
167
-     * @param        $field
168
-     * @param        $message_type_label
169
-     * @param string $message_status
170
-     * @param string $messenger
171
-     * @param string $context
172
-     * @param string $table_cell_content_for_field
173
-     * @param int    $number_in_set   It's possible that the given parameters could match multiple items in the view.
174
-     *                                This allows you to indicate which item from the set to match.  If this is set to 0
175
-     *                                then all matches for the locator will be returned.
176
-     * @return string
177
-     * @throws \InvalidArgumentException
178
-     */
179
-    public static function messagesActivityListTableCellSelectorFor(
180
-        $field,
181
-        $message_type_label,
182
-        $message_status = self::MESSAGE_STATUS_SENT,
183
-        $messenger = 'Email',
184
-        $context = 'Event Admin',
185
-        $table_cell_content_for_field = '',
186
-        $number_in_set = 1
187
-    ) {
188
-        $selector = "//tbody[@id='the-list']";
189
-        $selector .= "//tr[contains(@class, 'msg-status-$message_status')]"
190
-                     . "//td[contains(@class, 'message_type') and text()='$message_type_label']";
191
-        if ($messenger) {
192
-            $selector .= "/ancestor::tr/td[contains(@class, 'messenger') and text()='$messenger']";
193
-        }
194
-        $selector .= "/ancestor::tr/td[contains(@class, 'column-context') and text()='$context']";
195
-        $selector .= $table_cell_content_for_field
196
-            ? "/ancestor::tr/td[contains(@class, 'column-$field') and text()='$table_cell_content_for_field']"
197
-            : "/ancestor::tr/td[contains(@class, 'column-$field')]";
198
-        return $number_in_set > 0 ? Locator::elementAt($selector, $number_in_set) : $selector;
199
-    }
200
-
201
-
202
-    /**
203
-     * Selector for the Create Custom button found in the message template list table.
204
-     * @param string $message_type_label
205
-     * @param string $messenger_label
206
-     * @return string
207
-     */
208
-    public static function createCustomButtonForMessageTypeAndMessenger($message_type_label, $messenger_label)
209
-    {
210
-        $selector = "//tr/td[contains(@class, 'message_type') and text()='$message_type_label']"
211
-                    . "//ancestor::tr/td[contains(@class, 'messenger') and contains(., '$messenger_label')]"
212
-                    . "//ancestor::tr/td/a[@class='button button-small']";
213
-        return $selector;
214
-    }
215
-
216
-
217
-    /**
218
-     * Note, this could potentially match multiple buttons in the view so the selector is intentionally restricted to
219
-     * the FIRST match (which will be the latest message sent if the table is default sorted).
220
-     *
221
-     * @param string $message_type_label    The visible message type label for the row you want to match
222
-     * @param string $message_status        The status of the message for the row you want to match.
223
-     * @param string $messenger             The visible messenger label for the row you want to match.
224
-     * @param string $context               The visible context label for the row you want to match.
225
-     * @param int    $number_in_set         It's possible that the given parameters could match multiple items in the
226
-     *                                      view. This allows you to indicate which item from the set to match.
227
-     * @return string
228
-     * @throws \InvalidArgumentException
229
-     */
230
-    public static function messagesActivityListTableViewButtonSelectorFor(
231
-        $message_type_label,
232
-        $message_status = self::MESSAGE_STATUS_SENT,
233
-        $messenger = 'Email',
234
-        $context = 'Event Admin',
235
-        $number_in_set = 1
236
-    ) {
237
-        $selector = self::messagesActivityListTableCellSelectorFor(
238
-            'action',
239
-            $message_type_label,
240
-            $message_status,
241
-            $messenger,
242
-            $context,
243
-            '',
244
-            $number_in_set
245
-        );
246
-        $selector .= "/a/span[contains(@class, 'ee-message-action-link-view')"
247
-                     . " and not(contains(@class, 'ee-message-action-link-view_transaction'))]";
248
-        return $selector;
249
-    }
250
-
251
-
252
-    /**
253
-     * Locator for the delete action link for a message item in the message activity list table.
254
-     * Note: The link is not visible by default, so the column would need hovered over for the link to appear.
255
-     *
256
-     * @param        $message_type_label
257
-     * @param string $message_status
258
-     * @param string $messenger
259
-     * @param string $context
260
-     * @param int    $number_in_set
261
-     * @return string
262
-     * @throws \InvalidArgumentException
263
-     */
264
-    public static function messagesActivityListTableDeleteActionSelectorFor(
265
-        $message_type_label,
266
-        $message_status = self::MESSAGE_STATUS_SENT,
267
-        $messenger = 'Email',
268
-        $context = 'Event Admin',
269
-        $number_in_set = 1
270
-    ) {
271
-        $selector = self::messagesActivityListTableCellSelectorFor(
272
-            'to',
273
-            $message_type_label,
274
-            $message_status,
275
-            $messenger,
276
-            $context,
277
-            '',
278
-            $number_in_set
279
-        );
280
-        $selector .= "/div/span[@class='delete']/a";
281
-        return $selector;
282
-    }
283
-
284
-
285
-
286
-    /**
287
-     * Returns the input selector for a given field in the message template editor.
288
-     * Assumes one is already viewing the Message Template Editor.
289
-     * @param string     $field
290
-     * @return string
291
-     */
292
-    public static function messageInputFieldSelectorFor($field)
293
-    {
294
-        return "//div[@id='post-body']//input[@id='$field-content']";
295
-    }
296
-
297
-
298
-    /**
299
-     * Wrapper for self::messageInputFieldSelectorFor('to') that takes care of getting the input for the To field.
300
-     */
301
-    public static function messageTemplateToFieldSelector()
302
-    {
303
-        return self::messageInputFieldSelectorFor('to');
304
-    }
83
+	/**
84
+	 * Locator for the dialog container used for housing viewed messages in the message activity list table.
85
+	 */
86
+	const MESSAGES_LIST_TABLE_VIEW_MESSAGE_DIALOG_CONTAINER_SELECTOR = '.ee-admin-dialog-container-inner-content';
87
+
88
+
89
+	/**
90
+	 * Returns the selector for the on/off toggle for context on the message template editor.
91
+	 */
92
+	const MESSAGES_CONTEXT_ACTIVE_STATE_TOGGLE =
93
+		"//div[@class='activate_context_on_off_toggle_container']/div[@class='switch']/label";
94
+
95
+
96
+	const SELECTOR_LINK_FINALIZE_PAYMENT_PENDING_PAYMENT_MESSAGE = "//td/p[@class='callout']/a";
97
+
98
+
99
+
100
+	/**
101
+	 * @param string $additional_params Any additional request parameters for the generated url should be included as
102
+	 *                                  a string.
103
+	 * @return string
104
+	 */
105
+	public static function messageActivityListTableUrl($additional_params = '')
106
+	{
107
+		return self::adminUrl('espresso_messages', 'default', $additional_params);
108
+	}
109
+
110
+
111
+	/**
112
+	 * @param string $additional_params Any additional request parameters for the generated url should be included as
113
+	 *                                  a string.
114
+	 * @return string
115
+	 */
116
+	public static function defaultMessageTemplateListTableUrl($additional_params = '')
117
+	{
118
+		return self::adminUrl('espresso_messages', 'global_mtps', $additional_params);
119
+	}
120
+
121
+
122
+	/**
123
+	 * @param string $additional_params Any additional request parameters for the generated url should be included as
124
+	 *                                  a string.
125
+	 * @return string
126
+	 */
127
+	public static function customMessageTemplateListTableUrl($additional_params = '')
128
+	{
129
+		return self::adminUrl('espresso_messages', 'custom_mtps', $additional_params);
130
+	}
131
+
132
+
133
+	/**
134
+	 * @return string
135
+	 */
136
+	public static function messageSettingsUrl()
137
+	{
138
+		return self::adminUrl('espresso_messages', 'settings');
139
+	}
140
+
141
+
142
+
143
+	public static function draggableSettingsBoxSelectorForMessageTypeAndMessenger(
144
+		$message_type_slug,
145
+		$messenger_slug = 'email'
146
+	) {
147
+		return "#$message_type_slug-messagetype-$messenger_slug";
148
+	}
149
+
150
+
151
+	/**
152
+	 * @param string $message_type_slug
153
+	 * @param string $context
154
+	 * @return string
155
+	 */
156
+	public static function editMessageTemplateClassByMessageType($message_type_slug, $context = '')
157
+	{
158
+		return $context
159
+			? '.' . $message_type_slug . '-' . $context . '-edit-link'
160
+			: '.' . $message_type_slug . '-edit-link';
161
+	}
162
+
163
+
164
+	/**
165
+	 * Selector for (a) specific table cell(s) in the Messages Activity list table for the given parameters.
166
+	 *
167
+	 * @param        $field
168
+	 * @param        $message_type_label
169
+	 * @param string $message_status
170
+	 * @param string $messenger
171
+	 * @param string $context
172
+	 * @param string $table_cell_content_for_field
173
+	 * @param int    $number_in_set   It's possible that the given parameters could match multiple items in the view.
174
+	 *                                This allows you to indicate which item from the set to match.  If this is set to 0
175
+	 *                                then all matches for the locator will be returned.
176
+	 * @return string
177
+	 * @throws \InvalidArgumentException
178
+	 */
179
+	public static function messagesActivityListTableCellSelectorFor(
180
+		$field,
181
+		$message_type_label,
182
+		$message_status = self::MESSAGE_STATUS_SENT,
183
+		$messenger = 'Email',
184
+		$context = 'Event Admin',
185
+		$table_cell_content_for_field = '',
186
+		$number_in_set = 1
187
+	) {
188
+		$selector = "//tbody[@id='the-list']";
189
+		$selector .= "//tr[contains(@class, 'msg-status-$message_status')]"
190
+					 . "//td[contains(@class, 'message_type') and text()='$message_type_label']";
191
+		if ($messenger) {
192
+			$selector .= "/ancestor::tr/td[contains(@class, 'messenger') and text()='$messenger']";
193
+		}
194
+		$selector .= "/ancestor::tr/td[contains(@class, 'column-context') and text()='$context']";
195
+		$selector .= $table_cell_content_for_field
196
+			? "/ancestor::tr/td[contains(@class, 'column-$field') and text()='$table_cell_content_for_field']"
197
+			: "/ancestor::tr/td[contains(@class, 'column-$field')]";
198
+		return $number_in_set > 0 ? Locator::elementAt($selector, $number_in_set) : $selector;
199
+	}
200
+
201
+
202
+	/**
203
+	 * Selector for the Create Custom button found in the message template list table.
204
+	 * @param string $message_type_label
205
+	 * @param string $messenger_label
206
+	 * @return string
207
+	 */
208
+	public static function createCustomButtonForMessageTypeAndMessenger($message_type_label, $messenger_label)
209
+	{
210
+		$selector = "//tr/td[contains(@class, 'message_type') and text()='$message_type_label']"
211
+					. "//ancestor::tr/td[contains(@class, 'messenger') and contains(., '$messenger_label')]"
212
+					. "//ancestor::tr/td/a[@class='button button-small']";
213
+		return $selector;
214
+	}
215
+
216
+
217
+	/**
218
+	 * Note, this could potentially match multiple buttons in the view so the selector is intentionally restricted to
219
+	 * the FIRST match (which will be the latest message sent if the table is default sorted).
220
+	 *
221
+	 * @param string $message_type_label    The visible message type label for the row you want to match
222
+	 * @param string $message_status        The status of the message for the row you want to match.
223
+	 * @param string $messenger             The visible messenger label for the row you want to match.
224
+	 * @param string $context               The visible context label for the row you want to match.
225
+	 * @param int    $number_in_set         It's possible that the given parameters could match multiple items in the
226
+	 *                                      view. This allows you to indicate which item from the set to match.
227
+	 * @return string
228
+	 * @throws \InvalidArgumentException
229
+	 */
230
+	public static function messagesActivityListTableViewButtonSelectorFor(
231
+		$message_type_label,
232
+		$message_status = self::MESSAGE_STATUS_SENT,
233
+		$messenger = 'Email',
234
+		$context = 'Event Admin',
235
+		$number_in_set = 1
236
+	) {
237
+		$selector = self::messagesActivityListTableCellSelectorFor(
238
+			'action',
239
+			$message_type_label,
240
+			$message_status,
241
+			$messenger,
242
+			$context,
243
+			'',
244
+			$number_in_set
245
+		);
246
+		$selector .= "/a/span[contains(@class, 'ee-message-action-link-view')"
247
+					 . " and not(contains(@class, 'ee-message-action-link-view_transaction'))]";
248
+		return $selector;
249
+	}
250
+
251
+
252
+	/**
253
+	 * Locator for the delete action link for a message item in the message activity list table.
254
+	 * Note: The link is not visible by default, so the column would need hovered over for the link to appear.
255
+	 *
256
+	 * @param        $message_type_label
257
+	 * @param string $message_status
258
+	 * @param string $messenger
259
+	 * @param string $context
260
+	 * @param int    $number_in_set
261
+	 * @return string
262
+	 * @throws \InvalidArgumentException
263
+	 */
264
+	public static function messagesActivityListTableDeleteActionSelectorFor(
265
+		$message_type_label,
266
+		$message_status = self::MESSAGE_STATUS_SENT,
267
+		$messenger = 'Email',
268
+		$context = 'Event Admin',
269
+		$number_in_set = 1
270
+	) {
271
+		$selector = self::messagesActivityListTableCellSelectorFor(
272
+			'to',
273
+			$message_type_label,
274
+			$message_status,
275
+			$messenger,
276
+			$context,
277
+			'',
278
+			$number_in_set
279
+		);
280
+		$selector .= "/div/span[@class='delete']/a";
281
+		return $selector;
282
+	}
283
+
284
+
285
+
286
+	/**
287
+	 * Returns the input selector for a given field in the message template editor.
288
+	 * Assumes one is already viewing the Message Template Editor.
289
+	 * @param string     $field
290
+	 * @return string
291
+	 */
292
+	public static function messageInputFieldSelectorFor($field)
293
+	{
294
+		return "//div[@id='post-body']//input[@id='$field-content']";
295
+	}
296
+
297
+
298
+	/**
299
+	 * Wrapper for self::messageInputFieldSelectorFor('to') that takes care of getting the input for the To field.
300
+	 */
301
+	public static function messageTemplateToFieldSelector()
302
+	{
303
+		return self::messageInputFieldSelectorFor('to');
304
+	}
305 305
 }
306 306
\ No newline at end of file
Please login to merge, or discard this patch.
core/db_models/EEM_Registration.model.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -467,7 +467,7 @@
 block discarded – undo
467 467
      * @param    int $ATT_ID
468 468
      * @param    int $att_nmbr in case the ATT_ID is the same for multiple registrations (same details used) then the
469 469
      *                         attendee number is required
470
-     * @return        mixed        array on success, FALSE on fail
470
+     * @return        null|EE_Base_Class        array on success, FALSE on fail
471 471
      * @throws EE_Error
472 472
      */
473 473
     public function get_registration_for_transaction_attendee($TXN_ID = 0, $ATT_ID = 0, $att_nmbr = 0)
Please login to merge, or discard this patch.
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -1,5 +1,4 @@
 block discarded – undo
1 1
 <?php
2
-use EventEspresso\core\exceptions\InvalidIdentifierException;
3 2
 use EventEspresso\core\exceptions\InvalidStatusException;
4 3
 use EventEspresso\core\services\database\TableAnalysis;
5 4
 
Please login to merge, or discard this patch.
Spacing   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -369,14 +369,14 @@  discard block
 block discarded – undo
369 369
         // and the table hasn't actually been created, this could have an error
370 370
         /** @type WPDB $wpdb */
371 371
         global $wpdb;
372
-        if ($this->_get_table_analysis()->tableExists($wpdb->prefix . 'esp_status')) {
372
+        if ($this->_get_table_analysis()->tableExists($wpdb->prefix.'esp_status')) {
373 373
             $results = $wpdb->get_results(
374 374
                 "SELECT STS_ID, STS_code FROM {$wpdb->prefix}esp_status WHERE STS_type = 'registration'"
375 375
             );
376 376
             self::$_reg_status = array();
377 377
             foreach ($results as $status) {
378
-                if (!in_array($status->STS_ID, $exclude, true)) {
379
-                    self::$_reg_status[ $status->STS_ID ] = $status->STS_code;
378
+                if ( ! in_array($status->STS_ID, $exclude, true)) {
379
+                    self::$_reg_status[$status->STS_ID] = $status->STS_code;
380 380
                 }
381 381
             }
382 382
         }
@@ -433,7 +433,7 @@  discard block
 block discarded – undo
433 433
      */
434 434
     public function get_all_registrations_for_attendee($ATT_ID = 0)
435 435
     {
436
-        if (!$ATT_ID) {
436
+        if ( ! $ATT_ID) {
437 437
             return null;
438 438
         }
439 439
         return $this->get_all(array(array('ATT_ID' => $ATT_ID)));
@@ -450,7 +450,7 @@  discard block
 block discarded – undo
450 450
      */
451 451
     public function get_registration_for_reg_url_link($REG_url_link)
452 452
     {
453
-        if (!$REG_url_link) {
453
+        if ( ! $REG_url_link) {
454 454
             return null;
455 455
         }
456 456
         return $this->get_one(array(array('REG_url_link' => $REG_url_link)));
@@ -501,7 +501,7 @@  discard block
 block discarded – undo
501 501
             'REG_date' => array('>=', $sql_date),
502 502
             'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
503 503
         );
504
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_day_report')) {
504
+        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_day_report')) {
505 505
             $where['Event.EVT_wp_user'] = get_current_user_id();
506 506
         }
507 507
         $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'REG_date');
@@ -513,7 +513,7 @@  discard block
 block discarded – undo
513 513
             ),
514 514
             OBJECT,
515 515
             array(
516
-                'regDate' => array('DATE(' . $query_interval . ')', '%s'),
516
+                'regDate' => array('DATE('.$query_interval.')', '%s'),
517 517
                 'total' => array('count(REG_ID)', '%d'),
518 518
             )
519 519
         );
@@ -533,7 +533,7 @@  discard block
 block discarded – undo
533 533
     public function get_registrations_per_day_and_per_status_report($period = '-1 month')
534 534
     {
535 535
         global $wpdb;
536
-        $registration_table = $wpdb->prefix . 'esp_registration';
536
+        $registration_table = $wpdb->prefix.'esp_registration';
537 537
         $event_table = $wpdb->posts;
538 538
         $sql_date = date('Y-m-d H:i:s', strtotime($period));
539 539
         // prepare the query interval for displaying offset
@@ -542,9 +542,9 @@  discard block
 block discarded – undo
542 542
         $inner_date_query = "SELECT DISTINCT REG_date from {$registration_table} ";
543 543
         $inner_where = ' WHERE';
544 544
         // exclude events not authored by user if permissions in effect
545
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
545
+        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
546 546
             $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
547
-            $inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
547
+            $inner_where .= ' post_author = '.get_current_user_id().' AND';
548 548
         }
549 549
         $inner_where .= " REG_date >= '{$sql_date}'";
550 550
         $inner_date_query .= $inner_where;
@@ -567,7 +567,7 @@  discard block
 block discarded – undo
567 567
         // setup the joins
568 568
         $join .= implode(' LEFT JOIN ', $join_parts);
569 569
         // now let's put it all together
570
-        $query = $select . $join . ' GROUP BY Registration_REG_date';
570
+        $query = $select.$join.' GROUP BY Registration_REG_date';
571 571
         // and execute it
572 572
         return $wpdb->get_results($query, ARRAY_A);
573 573
     }
@@ -593,7 +593,7 @@  discard block
 block discarded – undo
593 593
             'REG_date' => array('>=', $date_sql),
594 594
             'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
595 595
         );
596
-        if (!EE_Registry::instance()->CAP->current_user_can(
596
+        if ( ! EE_Registry::instance()->CAP->current_user_can(
597 597
             'ee_read_others_registrations',
598 598
             'reg_per_event_report'
599 599
         )
@@ -629,16 +629,16 @@  discard block
 block discarded – undo
629 629
     public function get_registrations_per_event_and_per_status_report($period = '-1 month')
630 630
     {
631 631
         global $wpdb;
632
-        $registration_table = $wpdb->prefix . 'esp_registration';
632
+        $registration_table = $wpdb->prefix.'esp_registration';
633 633
         $event_table = $wpdb->posts;
634 634
         $sql_date = date('Y-m-d H:i:s', strtotime($period));
635 635
         // inner date query
636 636
         $inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table ";
637 637
         $inner_where = ' WHERE';
638 638
         // exclude events not authored by user if permissions in effect
639
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
639
+        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
640 640
             $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
641
-            $inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
641
+            $inner_where .= ' post_author = '.get_current_user_id().' AND';
642 642
         }
643 643
         $inner_where .= " REG_date >= '{$sql_date}'";
644 644
         $inner_date_query .= $inner_where;
@@ -661,7 +661,7 @@  discard block
 block discarded – undo
661 661
         // setup remaining joins
662 662
         $join .= implode(' LEFT JOIN ', $join_parts);
663 663
         // now put it all together
664
-        $query = $select . $join . ' GROUP BY Registration_Event';
664
+        $query = $select.$join.' GROUP BY Registration_Event';
665 665
         // and execute
666 666
         return $wpdb->get_results($query, ARRAY_A);
667 667
     }
@@ -676,7 +676,7 @@  discard block
 block discarded – undo
676 676
      */
677 677
     public function get_primary_registration_for_transaction_ID($TXN_ID = 0)
678 678
     {
679
-        if (!$TXN_ID) {
679
+        if ( ! $TXN_ID) {
680 680
             return null;
681 681
         }
682 682
         return $this->get_one(array(
@@ -745,11 +745,11 @@  discard block
 block discarded – undo
745 745
         $query = $wpdb->prepare(
746 746
             'SELECT '
747 747
             . 'COUNT( DISTINCT checkins.REG_ID ) '
748
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
748
+            . 'FROM '.EEM_Checkin::instance()->table().' AS checkins INNER JOIN'
749 749
             . '( SELECT '
750 750
             . 'max( CHK_timestamp ) AS latest_checkin, '
751 751
             . 'REG_ID AS REG_ID '
752
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' '
752
+            . 'FROM '.EEM_Checkin::instance()->table().' '
753 753
             . 'WHERE DTT_ID=%d '
754 754
             . 'GROUP BY REG_ID'
755 755
             . ') AS most_recent_checkin_per_reg '
@@ -779,12 +779,12 @@  discard block
 block discarded – undo
779 779
         $query = $wpdb->prepare(
780 780
             'SELECT '
781 781
             . 'COUNT( DISTINCT checkins.REG_ID ) '
782
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
782
+            . 'FROM '.EEM_Checkin::instance()->table().' AS checkins INNER JOIN'
783 783
             . '( SELECT '
784 784
             . 'max( CHK_timestamp ) AS latest_checkin, '
785 785
             . 'REG_ID AS REG_ID '
786
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS c '
787
-            . 'INNER JOIN ' . EEM_Datetime::instance()->table() . ' AS d '
786
+            . 'FROM '.EEM_Checkin::instance()->table().' AS c '
787
+            . 'INNER JOIN '.EEM_Datetime::instance()->table().' AS d '
788 788
             . 'ON c.DTT_ID=d.DTT_ID '
789 789
             . 'WHERE d.EVT_ID=%d '
790 790
             . 'GROUP BY REG_ID'
@@ -813,7 +813,7 @@  discard block
 block discarded – undo
813 813
     {
814 814
         // first do a native wp_query to get the latest REG_ID's matching these attendees.
815 815
         global $wpdb;
816
-        $registration_table = $wpdb->prefix . 'esp_registration';
816
+        $registration_table = $wpdb->prefix.'esp_registration';
817 817
         $attendee_table = $wpdb->posts;
818 818
         $attendee_ids = is_array($attendee_ids)
819 819
             ? array_map('absint', $attendee_ids)
@@ -868,7 +868,7 @@  discard block
 block discarded – undo
868 868
     public function event_reg_count_for_statuses($EVT_ID, $statuses = array())
869 869
     {
870 870
         $EVT_ID = absint($EVT_ID);
871
-        if (! $EVT_ID) {
871
+        if ( ! $EVT_ID) {
872 872
             throw new InvalidArgumentException(
873 873
                 esc_html__('An invalid Event ID was supplied.', 'event_espresso')
874 874
             );
@@ -877,7 +877,7 @@  discard block
 block discarded – undo
877 877
         $statuses = ! empty($statuses) ? $statuses : array(EEM_Registration::status_id_approved);
878 878
         $valid_reg_statuses = EEM_Registration::reg_statuses();
879 879
         foreach ($statuses as $status) {
880
-            if (! in_array($status, $valid_reg_statuses, true)) {
880
+            if ( ! in_array($status, $valid_reg_statuses, true)) {
881 881
                 throw new InvalidStatusException($status, esc_html__('Registration', 'event_espresso'));
882 882
             }
883 883
         }
Please login to merge, or discard this patch.
Indentation   +866 added lines, -866 removed lines patch added patch discarded remove patch
@@ -13,815 +13,815 @@  discard block
 block discarded – undo
13 13
 class EEM_Registration extends EEM_Soft_Delete_Base
14 14
 {
15 15
 
16
-    /**
17
-     * @var EEM_Registration $_instance
18
-     */
19
-    protected static $_instance;
20
-
21
-    /**
22
-     * Keys are the status IDs for registrations (eg, RAP, RCN, etc), and the values
23
-     * are status codes (eg, approved, cancelled, etc)
24
-     *
25
-     * @var array
26
-     */
27
-    private static $_reg_status;
28
-
29
-    /**
30
-     * The value of REG_count for a primary registrant
31
-     */
32
-    const PRIMARY_REGISTRANT_COUNT = 1;
33
-
34
-    /**
35
-     * Status ID (STS_ID on esp_status table) to indicate an INCOMPLETE registration.
36
-     * Initial status for registrations when they are first created
37
-     * Payments are NOT allowed.
38
-     * Automatically toggled to whatever the default Event registration status is upon completion of the attendee
39
-     * information reg step NO space reserved. Registration is NOT active
40
-     */
41
-    const status_id_incomplete = 'RIC';
42
-
43
-    /**
44
-     * Status ID (STS_ID on esp_status table) to indicate an UNAPPROVED registration.
45
-     * Payments are NOT allowed.
46
-     * Event Admin must manually toggle STS_ID for it to change
47
-     * No space reserved.
48
-     * Registration is active
49
-     */
50
-    const status_id_not_approved = 'RNA';
51
-
52
-    /**
53
-     * Status ID (STS_ID on esp_status table) to indicate registration is PENDING_PAYMENT .
54
-     * Payments are allowed.
55
-     * STS_ID will automatically be toggled to RAP if payment is made in full by the attendee
56
-     * No space reserved.
57
-     * Registration is active
58
-     */
59
-    const status_id_pending_payment = 'RPP';
60
-
61
-    /**
62
-     * Status ID (STS_ID on esp_status table) to indicate registration is on the WAIT_LIST .
63
-     * Payments are allowed.
64
-     * STS_ID will automatically be toggled to RAP if payment is made in full by the attendee
65
-     * No space reserved.
66
-     * Registration is active
67
-     */
68
-    const status_id_wait_list = 'RWL';
69
-
70
-    /**
71
-     * Status ID (STS_ID on esp_status table) to indicate an APPROVED registration.
72
-     * the TXN may or may not be completed ( paid in full )
73
-     * Payments are allowed.
74
-     * A space IS reserved.
75
-     * Registration is active
76
-     */
77
-    const status_id_approved = 'RAP';
78
-
79
-    /**
80
-     * Status ID (STS_ID on esp_status table) to indicate a registration was CANCELLED by the attendee.
81
-     * Payments are NOT allowed.
82
-     * NO space reserved.
83
-     * Registration is NOT active
84
-     */
85
-    const status_id_cancelled = 'RCN';
86
-
87
-    /**
88
-     * Status ID (STS_ID on esp_status table) to indicate a registration was DECLINED by the Event Admin
89
-     * Payments are NOT allowed.
90
-     * No space reserved.
91
-     * Registration is NOT active
92
-     */
93
-    const status_id_declined = 'RDC';
94
-
95
-    /**
96
-     * @var TableAnalysis $table_analysis
97
-     */
98
-    protected $_table_analysis;
99
-
100
-
101
-    /**
102
-     *    private constructor to prevent direct creation
103
-     *
104
-     * @Constructor
105
-     * @access protected
106
-     * @param string $timezone string representing the timezone we want to set for returned Date Time Strings (and any
107
-     *                         incoming timezone data that gets saved). Note this just sends the timezone info to the
108
-     *                         date time model field objects.  Default is NULL (and will be assumed using the set
109
-     *                         timezone in the 'timezone_string' wp option)
110
-     * @throws EE_Error
111
-     */
112
-    protected function __construct($timezone = null)
113
-    {
114
-        $this->_table_analysis = EE_Registry::instance()->create('TableAnalysis', array(), true);
115
-        $this->singular_item = esc_html__('Registration', 'event_espresso');
116
-        $this->plural_item = esc_html__('Registrations', 'event_espresso');
117
-        $this->_tables = array(
118
-            'Registration' => new EE_Primary_Table('esp_registration', 'REG_ID'),
119
-        );
120
-        $this->_fields = array(
121
-            'Registration' => array(
122
-                'REG_ID' => new EE_Primary_Key_Int_Field(
123
-                    'REG_ID',
124
-                    esc_html__('Registration ID', 'event_espresso')
125
-                ),
126
-                'EVT_ID' => new EE_Foreign_Key_Int_Field(
127
-                    'EVT_ID',
128
-                    esc_html__('Event ID', 'event_espresso'),
129
-                    false,
130
-                    0,
131
-                    'Event'
132
-                ),
133
-                'ATT_ID' => new EE_Foreign_Key_Int_Field(
134
-                    'ATT_ID',
135
-                    esc_html__('Attendee ID', 'event_espresso'),
136
-                    false,
137
-                    0,
138
-                    'Attendee'
139
-                ),
140
-                'TXN_ID' => new EE_Foreign_Key_Int_Field(
141
-                    'TXN_ID',
142
-                    esc_html__('Transaction ID', 'event_espresso'),
143
-                    false,
144
-                    0,
145
-                    'Transaction'
146
-                ),
147
-                'TKT_ID' => new EE_Foreign_Key_Int_Field(
148
-                    'TKT_ID',
149
-                    esc_html__('Ticket ID', 'event_espresso'),
150
-                    false,
151
-                    0,
152
-                    'Ticket'
153
-                ),
154
-                'STS_ID' => new EE_Foreign_Key_String_Field(
155
-                    'STS_ID',
156
-                    esc_html__('Status ID', 'event_espresso'),
157
-                    false,
158
-                    EEM_Registration::status_id_incomplete,
159
-                    'Status'
160
-                ),
161
-                'REG_date' => new EE_Datetime_Field(
162
-                    'REG_date',
163
-                    esc_html__('Time registration occurred', 'event_espresso'),
164
-                    false,
165
-                    EE_Datetime_Field::now,
166
-                    $timezone
167
-                ),
168
-                'REG_final_price' => new EE_Money_Field(
169
-                    'REG_final_price',
170
-                    esc_html__('Registration\'s share of the transaction total', 'event_espresso'),
171
-                    false,
172
-                    0
173
-                ),
174
-                'REG_paid' => new EE_Money_Field(
175
-                    'REG_paid',
176
-                    esc_html__('Amount paid to date towards registration', 'event_espresso'),
177
-                    false,
178
-                    0
179
-                ),
180
-                'REG_session' => new EE_Plain_Text_Field(
181
-                    'REG_session',
182
-                    esc_html__('Session ID of registration', 'event_espresso'),
183
-                    false,
184
-                    ''
185
-                ),
186
-                'REG_code' => new EE_Plain_Text_Field(
187
-                    'REG_code',
188
-                    esc_html__('Unique Code for this registration', 'event_espresso'),
189
-                    false,
190
-                    ''
191
-                ),
192
-                'REG_url_link' => new EE_Plain_Text_Field(
193
-                    'REG_url_link',
194
-                    esc_html__('String to be used in URL for identifying registration', 'event_espresso'),
195
-                    false,
196
-                    ''
197
-                ),
198
-                'REG_count' => new EE_Integer_Field(
199
-                    'REG_count',
200
-                    esc_html__('Count of this registration in the group registration ', 'event_espresso'),
201
-                    true,
202
-                    1
203
-                ),
204
-                'REG_group_size' => new EE_Integer_Field(
205
-                    'REG_group_size',
206
-                    esc_html__('Number of registrations on this group', 'event_espresso'),
207
-                    false,
208
-                    1
209
-                ),
210
-                'REG_att_is_going' => new EE_Boolean_Field(
211
-                    'REG_att_is_going',
212
-                    esc_html__('Flag indicating the registrant plans on attending', 'event_espresso'),
213
-                    false,
214
-                    false
215
-                ),
216
-                'REG_deleted' => new EE_Trashed_Flag_Field(
217
-                    'REG_deleted',
218
-                    esc_html__('Flag indicating if registration has been archived or not.', 'event_espresso'),
219
-                    false,
220
-                    false
221
-                ),
222
-            ),
223
-        );
224
-        $this->_model_relations = array(
225
-            'Event' => new EE_Belongs_To_Relation(),
226
-            'Attendee' => new EE_Belongs_To_Relation(),
227
-            'Transaction' => new EE_Belongs_To_Relation(),
228
-            'Ticket' => new EE_Belongs_To_Relation(),
229
-            'Status' => new EE_Belongs_To_Relation(),
230
-            'Answer' => new EE_Has_Many_Relation(),
231
-            'Checkin' => new EE_Has_Many_Relation(),
232
-            'Registration_Payment' => new EE_Has_Many_Relation(),
233
-            'Payment' => new EE_HABTM_Relation('Registration_Payment'),
234
-            'Message' => new EE_Has_Many_Any_Relation(false)
235
-            // allow deletes even if there are messages in the queue related
236
-        );
237
-        $this->_model_chain_to_wp_user = 'Event';
238
-        parent::__construct($timezone);
239
-    }
240
-
241
-
242
-    /**
243
-     * a list of ALL valid registration statuses currently in use within the system
244
-     * generated by combining the filterable active and inactive reg status arrays
245
-     *
246
-     * @return array
247
-     */
248
-    public static function reg_statuses()
249
-    {
250
-        return array_unique(
251
-            array_merge(
252
-                EEM_Registration::active_reg_statuses(),
253
-                EEM_Registration::inactive_reg_statuses()
254
-            )
255
-        );
256
-    }
257
-
258
-
259
-    /**
260
-     * reg_statuses_that_allow_payment
261
-     * a filterable list of registration statuses that allow a registrant to make a payment
262
-     *
263
-     * @access public
264
-     * @return array
265
-     */
266
-    public static function reg_statuses_that_allow_payment()
267
-    {
268
-        return apply_filters(
269
-            'FHEE__EEM_Registration__reg_statuses_that_allow_payment',
270
-            array(
271
-                EEM_Registration::status_id_approved,
272
-                EEM_Registration::status_id_pending_payment,
273
-            )
274
-        );
275
-    }
276
-
277
-
278
-    /**
279
-     * active_reg_statuses
280
-     * a filterable list of registration statuses that are considered active
281
-     *
282
-     * @access public
283
-     * @return array
284
-     */
285
-    public static function active_reg_statuses()
286
-    {
287
-        return apply_filters(
288
-            'FHEE__EEM_Registration__active_reg_statuses',
289
-            array(
290
-                EEM_Registration::status_id_approved,
291
-                EEM_Registration::status_id_pending_payment,
292
-                EEM_Registration::status_id_wait_list,
293
-                EEM_Registration::status_id_not_approved,
294
-            )
295
-        );
296
-    }
297
-
298
-
299
-    /**
300
-     * inactive_reg_statuses
301
-     * a filterable list of registration statuses that are not considered active
302
-     *
303
-     * @access public
304
-     * @return array
305
-     */
306
-    public static function inactive_reg_statuses()
307
-    {
308
-        return apply_filters(
309
-            'FHEE__EEM_Registration__inactive_reg_statuses',
310
-            array(
311
-                EEM_Registration::status_id_incomplete,
312
-                EEM_Registration::status_id_cancelled,
313
-                EEM_Registration::status_id_declined,
314
-            )
315
-        );
316
-    }
317
-
318
-
319
-    /**
320
-     *    closed_reg_statuses
321
-     *    a filterable list of registration statuses that are considered "closed"
322
-     * meaning they should not be considered in any calculations involving monies owing
323
-     *
324
-     * @access public
325
-     * @return array
326
-     */
327
-    public static function closed_reg_statuses()
328
-    {
329
-        return apply_filters(
330
-            'FHEE__EEM_Registration__closed_reg_statuses',
331
-            array(
332
-                EEM_Registration::status_id_cancelled,
333
-                EEM_Registration::status_id_declined,
334
-                EEM_Registration::status_id_wait_list,
335
-            )
336
-        );
337
-    }
338
-
339
-
340
-    /**
341
-     *        get list of registration statuses
342
-     *
343
-     * @access public
344
-     * @param array $exclude The status ids to exclude from the returned results
345
-     * @param bool $translated If true will return the values as singular localized strings
346
-     * @return array
347
-     * @throws EE_Error
348
-     */
349
-    public static function reg_status_array($exclude = array(), $translated = false)
350
-    {
351
-        EEM_Registration::instance()->_get_registration_status_array($exclude);
352
-        return $translated
353
-            ? EEM_Status::instance()->localized_status(self::$_reg_status, false, 'sentence')
354
-            : self::$_reg_status;
355
-    }
356
-
357
-
358
-    /**
359
-     *    get list of registration statuses
360
-     *
361
-     * @access private
362
-     * @param array $exclude
363
-     * @return void
364
-     * @throws EE_Error
365
-     */
366
-    private function _get_registration_status_array($exclude = array())
367
-    {
368
-        // in the very rare circumstance that we are deleting a model's table's data
369
-        // and the table hasn't actually been created, this could have an error
370
-        /** @type WPDB $wpdb */
371
-        global $wpdb;
372
-        if ($this->_get_table_analysis()->tableExists($wpdb->prefix . 'esp_status')) {
373
-            $results = $wpdb->get_results(
374
-                "SELECT STS_ID, STS_code FROM {$wpdb->prefix}esp_status WHERE STS_type = 'registration'"
375
-            );
376
-            self::$_reg_status = array();
377
-            foreach ($results as $status) {
378
-                if (!in_array($status->STS_ID, $exclude, true)) {
379
-                    self::$_reg_status[ $status->STS_ID ] = $status->STS_code;
380
-                }
381
-            }
382
-        }
383
-    }
384
-
385
-
386
-    /**
387
-     * Gets the injected table analyzer, or throws an exception
388
-     *
389
-     * @return TableAnalysis
390
-     * @throws EE_Error
391
-     */
392
-    protected function _get_table_analysis()
393
-    {
394
-        if ($this->_table_analysis instanceof TableAnalysis) {
395
-            return $this->_table_analysis;
396
-        }
397
-        throw new EE_Error(
398
-            sprintf(
399
-                esc_html__('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
400
-                get_class($this)
401
-            )
402
-        );
403
-    }
404
-
405
-
406
-    /**
407
-     * This returns a wpdb->results array of all registration date month and years matching the incoming query params
408
-     * and grouped by month and year.
409
-     *
410
-     * @param  array $where_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md#0-where-conditions
411
-     * @return array
412
-     * @throws EE_Error
413
-     */
414
-    public function get_reg_months_and_years($where_params)
415
-    {
416
-        $query_params[0] = $where_params;
417
-        $query_params['group_by'] = array('reg_year', 'reg_month');
418
-        $query_params['order_by'] = array('REG_date' => 'DESC');
419
-        $columns_to_select = array(
420
-            'reg_year' => array('YEAR(REG_date)', '%s'),
421
-            'reg_month' => array('MONTHNAME(REG_date)', '%s'),
422
-        );
423
-        return $this->_get_all_wpdb_results($query_params, OBJECT, $columns_to_select);
424
-    }
425
-
426
-
427
-    /**
428
-     * retrieve ALL registrations for a particular Attendee from db
429
-     *
430
-     * @param int $ATT_ID
431
-     * @return EE_Base_Class[]|EE_Registration[]|null
432
-     * @throws EE_Error
433
-     */
434
-    public function get_all_registrations_for_attendee($ATT_ID = 0)
435
-    {
436
-        if (!$ATT_ID) {
437
-            return null;
438
-        }
439
-        return $this->get_all(array(array('ATT_ID' => $ATT_ID)));
440
-    }
441
-
442
-
443
-    /**
444
-     * Gets a registration given their REG_url_link. Yes, this should usually
445
-     * be passed via a GET parameter.
446
-     *
447
-     * @param string $REG_url_link
448
-     * @return EE_Base_Class|EE_Registration|null
449
-     * @throws EE_Error
450
-     */
451
-    public function get_registration_for_reg_url_link($REG_url_link)
452
-    {
453
-        if (!$REG_url_link) {
454
-            return null;
455
-        }
456
-        return $this->get_one(array(array('REG_url_link' => $REG_url_link)));
457
-    }
458
-
459
-
460
-    /**
461
-     *        retrieve registration for a specific transaction attendee from db
462
-     *
463
-     * @access        public
464
-     * @param    int $TXN_ID
465
-     * @param    int $ATT_ID
466
-     * @param    int $att_nmbr in case the ATT_ID is the same for multiple registrations (same details used) then the
467
-     *                         attendee number is required
468
-     * @return        mixed        array on success, FALSE on fail
469
-     * @throws EE_Error
470
-     */
471
-    public function get_registration_for_transaction_attendee($TXN_ID = 0, $ATT_ID = 0, $att_nmbr = 0)
472
-    {
473
-        return $this->get_one(array(
474
-            array(
475
-                'TXN_ID' => $TXN_ID,
476
-                'ATT_ID' => $ATT_ID,
477
-            ),
478
-            'limit' => array(min($att_nmbr - 1, 0), 1),
479
-        ));
480
-    }
481
-
482
-
483
-    /**
484
-     *        get the number of registrations per day  for the Registration Admin page Reports Tab.
485
-     *        (doesn't utilize models because it's a fairly specialized query)
486
-     *
487
-     * @access        public
488
-     * @param $period string which can be passed to php's strtotime function (eg "-1 month")
489
-     * @return stdClass[] with properties regDate and total
490
-     * @throws EE_Error
491
-     */
492
-    public function get_registrations_per_day_report($period = '-1 month')
493
-    {
494
-        $sql_date = $this->convert_datetime_for_query(
495
-            'REG_date',
496
-            date('Y-m-d H:i:s', strtotime($period)),
497
-            'Y-m-d H:i:s',
498
-            'UTC'
499
-        );
500
-        $where = array(
501
-            'REG_date' => array('>=', $sql_date),
502
-            'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
503
-        );
504
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_day_report')) {
505
-            $where['Event.EVT_wp_user'] = get_current_user_id();
506
-        }
507
-        $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'REG_date');
508
-        $results = $this->_get_all_wpdb_results(
509
-            array(
510
-                $where,
511
-                'group_by' => 'regDate',
512
-                'order_by' => array('REG_date' => 'ASC'),
513
-            ),
514
-            OBJECT,
515
-            array(
516
-                'regDate' => array('DATE(' . $query_interval . ')', '%s'),
517
-                'total' => array('count(REG_ID)', '%d'),
518
-            )
519
-        );
520
-        return $results;
521
-    }
522
-
523
-
524
-    /**
525
-     * Get the number of registrations per day including the count of registrations for each Registration Status.
526
-     * Note: EEM_Registration::status_id_incomplete registrations are excluded from the results.
527
-     *
528
-     * @param string $period
529
-     * @return stdClass[] with properties Registration_REG_date and a column for each registration status as the STS_ID
530
-     * @throws EE_Error
531
-     *                    (i.e. RAP)
532
-     */
533
-    public function get_registrations_per_day_and_per_status_report($period = '-1 month')
534
-    {
535
-        global $wpdb;
536
-        $registration_table = $wpdb->prefix . 'esp_registration';
537
-        $event_table = $wpdb->posts;
538
-        $sql_date = date('Y-m-d H:i:s', strtotime($period));
539
-        // prepare the query interval for displaying offset
540
-        $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'dates.REG_date');
541
-        // inner date query
542
-        $inner_date_query = "SELECT DISTINCT REG_date from {$registration_table} ";
543
-        $inner_where = ' WHERE';
544
-        // exclude events not authored by user if permissions in effect
545
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
546
-            $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
547
-            $inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
548
-        }
549
-        $inner_where .= " REG_date >= '{$sql_date}'";
550
-        $inner_date_query .= $inner_where;
551
-        // start main query
552
-        $select = "SELECT DATE({$query_interval}) as Registration_REG_date, ";
553
-        $join = '';
554
-        $join_parts = array();
555
-        $select_parts = array();
556
-        // loop through registration stati to do parts for each status.
557
-        foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
558
-            if ($STS_ID === EEM_Registration::status_id_incomplete) {
559
-                continue;
560
-            }
561
-            $select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}";
562
-            $join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.REG_date = dates.REG_date AND {$STS_code}.STS_ID = '{$STS_ID}'";
563
-        }
564
-        // setup the selects
565
-        $select .= implode(', ', $select_parts);
566
-        $select .= " FROM ($inner_date_query) AS dates LEFT JOIN ";
567
-        // setup the joins
568
-        $join .= implode(' LEFT JOIN ', $join_parts);
569
-        // now let's put it all together
570
-        $query = $select . $join . ' GROUP BY Registration_REG_date';
571
-        // and execute it
572
-        return $wpdb->get_results($query, ARRAY_A);
573
-    }
574
-
575
-
576
-    /**
577
-     *        get the number of registrations per event  for the Registration Admin page Reports Tab
578
-     *
579
-     * @access        public
580
-     * @param $period string which can be passed to php's strtotime function (eg "-1 month")
581
-     * @return stdClass[] each with properties event_name, reg_limit, and total
582
-     * @throws EE_Error
583
-     */
584
-    public function get_registrations_per_event_report($period = '-1 month')
585
-    {
586
-        $date_sql = $this->convert_datetime_for_query(
587
-            'REG_date',
588
-            date('Y-m-d H:i:s', strtotime($period)),
589
-            'Y-m-d H:i:s',
590
-            'UTC'
591
-        );
592
-        $where = array(
593
-            'REG_date' => array('>=', $date_sql),
594
-            'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
595
-        );
596
-        if (!EE_Registry::instance()->CAP->current_user_can(
597
-            'ee_read_others_registrations',
598
-            'reg_per_event_report'
599
-        )
600
-        ) {
601
-            $where['Event.EVT_wp_user'] = get_current_user_id();
602
-        }
603
-        $results = $this->_get_all_wpdb_results(
604
-            array(
605
-            $where,
606
-            'group_by' => 'Event.EVT_name',
607
-            'order_by' => 'Event.EVT_name',
608
-            'limit' => array(0, 24),
609
-            ),
610
-            OBJECT,
611
-            array(
612
-                'event_name' => array('Event_CPT.post_title', '%s'),
613
-                'total' => array('COUNT(REG_ID)', '%s'),
614
-            )
615
-        );
616
-        return $results;
617
-    }
618
-
619
-
620
-    /**
621
-     * Get the number of registrations per event grouped by registration status.
622
-     * Note: EEM_Registration::status_id_incomplete registrations are excluded from the results.
623
-     *
624
-     * @param string $period
625
-     * @return stdClass[] with properties `Registration_Event` and a column for each registration status as the STS_ID
626
-     * @throws EE_Error
627
-     *                    (i.e. RAP)
628
-     */
629
-    public function get_registrations_per_event_and_per_status_report($period = '-1 month')
630
-    {
631
-        global $wpdb;
632
-        $registration_table = $wpdb->prefix . 'esp_registration';
633
-        $event_table = $wpdb->posts;
634
-        $sql_date = date('Y-m-d H:i:s', strtotime($period));
635
-        // inner date query
636
-        $inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table ";
637
-        $inner_where = ' WHERE';
638
-        // exclude events not authored by user if permissions in effect
639
-        if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
640
-            $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
641
-            $inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
642
-        }
643
-        $inner_where .= " REG_date >= '{$sql_date}'";
644
-        $inner_date_query .= $inner_where;
645
-        // build main query
646
-        $select = 'SELECT Event.post_title as Registration_Event, ';
647
-        $join = '';
648
-        $join_parts = array();
649
-        $select_parts = array();
650
-        // loop through registration stati to do parts for each status.
651
-        foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
652
-            if ($STS_ID === EEM_Registration::status_id_incomplete) {
653
-                continue;
654
-            }
655
-            $select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}";
656
-            $join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.EVT_ID = dates.EVT_ID AND {$STS_code}.STS_ID = '{$STS_ID}' AND {$STS_code}.REG_date = dates.REG_date";
657
-        }
658
-        // setup the selects
659
-        $select .= implode(', ', $select_parts);
660
-        $select .= " FROM ($inner_date_query) AS dates LEFT JOIN $event_table as Event ON Event.ID = dates.EVT_ID LEFT JOIN ";
661
-        // setup remaining joins
662
-        $join .= implode(' LEFT JOIN ', $join_parts);
663
-        // now put it all together
664
-        $query = $select . $join . ' GROUP BY Registration_Event';
665
-        // and execute
666
-        return $wpdb->get_results($query, ARRAY_A);
667
-    }
668
-
669
-
670
-    /**
671
-     * Returns the EE_Registration of the primary attendee on the transaction id provided
672
-     *
673
-     * @param int $TXN_ID
674
-     * @return EE_Base_Class|EE_Registration|null
675
-     * @throws EE_Error
676
-     */
677
-    public function get_primary_registration_for_transaction_ID($TXN_ID = 0)
678
-    {
679
-        if (!$TXN_ID) {
680
-            return null;
681
-        }
682
-        return $this->get_one(array(
683
-            array(
684
-                'TXN_ID' => $TXN_ID,
685
-                'REG_count' => EEM_Registration::PRIMARY_REGISTRANT_COUNT,
686
-            ),
687
-        ));
688
-    }
689
-
690
-
691
-    /**
692
-     *        get_event_registration_count
693
-     *
694
-     * @access public
695
-     * @param int $EVT_ID
696
-     * @param boolean $for_incomplete_payments
697
-     * @return int
698
-     * @throws EE_Error
699
-     */
700
-    public function get_event_registration_count($EVT_ID, $for_incomplete_payments = false)
701
-    {
702
-        // we only count approved registrations towards registration limits
703
-        $query_params = array(array('EVT_ID' => $EVT_ID, 'STS_ID' => self::status_id_approved));
704
-        if ($for_incomplete_payments) {
705
-            $query_params[0]['Transaction.STS_ID'] = array('!=', EEM_Transaction::complete_status_code);
706
-        }
707
-        return $this->count($query_params);
708
-    }
709
-
710
-
711
-    /**
712
-     * Deletes all registrations with no transactions. Note that this needs to be very efficient
713
-     * and so it uses wpdb directly
714
-     *
715
-     * @global WPDB $wpdb
716
-     * @return int number deleted
717
-     * @throws EE_Error
718
-     */
719
-    public function delete_registrations_with_no_transaction()
720
-    {
721
-        /** @type WPDB $wpdb */
722
-        global $wpdb;
723
-        return $wpdb->query(
724
-            'DELETE r FROM '
725
-            . $this->table()
726
-            . ' r LEFT JOIN '
727
-            . EEM_Transaction::instance()->table()
728
-            . ' t ON r.TXN_ID = t.TXN_ID WHERE t.TXN_ID IS NULL'
729
-        );
730
-    }
731
-
732
-
733
-    /**
734
-     *  Count registrations checked into (or out of) a datetime
735
-     *
736
-     * @param int $DTT_ID datetime ID
737
-     * @param boolean $checked_in whether to count registrations checked IN or OUT
738
-     * @return int
739
-     * @throws EE_Error
740
-     */
741
-    public function count_registrations_checked_into_datetime($DTT_ID, $checked_in = true)
742
-    {
743
-        global $wpdb;
744
-        // subquery to get latest checkin
745
-        $query = $wpdb->prepare(
746
-            'SELECT '
747
-            . 'COUNT( DISTINCT checkins.REG_ID ) '
748
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
749
-            . '( SELECT '
750
-            . 'max( CHK_timestamp ) AS latest_checkin, '
751
-            . 'REG_ID AS REG_ID '
752
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' '
753
-            . 'WHERE DTT_ID=%d '
754
-            . 'GROUP BY REG_ID'
755
-            . ') AS most_recent_checkin_per_reg '
756
-            . 'ON checkins.REG_ID=most_recent_checkin_per_reg.REG_ID '
757
-            . 'AND checkins.CHK_timestamp = most_recent_checkin_per_reg.latest_checkin '
758
-            . 'WHERE '
759
-            . 'checkins.CHK_in=%d',
760
-            $DTT_ID,
761
-            $checked_in
762
-        );
763
-        return (int) $wpdb->get_var($query);
764
-    }
765
-
766
-
767
-    /**
768
-     *  Count registrations checked into (or out of) an event.
769
-     *
770
-     * @param int $EVT_ID event ID
771
-     * @param boolean $checked_in whether to count registrations checked IN or OUT
772
-     * @return int
773
-     * @throws EE_Error
774
-     */
775
-    public function count_registrations_checked_into_event($EVT_ID, $checked_in = true)
776
-    {
777
-        global $wpdb;
778
-        // subquery to get latest checkin
779
-        $query = $wpdb->prepare(
780
-            'SELECT '
781
-            . 'COUNT( DISTINCT checkins.REG_ID ) '
782
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
783
-            . '( SELECT '
784
-            . 'max( CHK_timestamp ) AS latest_checkin, '
785
-            . 'REG_ID AS REG_ID '
786
-            . 'FROM ' . EEM_Checkin::instance()->table() . ' AS c '
787
-            . 'INNER JOIN ' . EEM_Datetime::instance()->table() . ' AS d '
788
-            . 'ON c.DTT_ID=d.DTT_ID '
789
-            . 'WHERE d.EVT_ID=%d '
790
-            . 'GROUP BY REG_ID'
791
-            . ') AS most_recent_checkin_per_reg '
792
-            . 'ON checkins.REG_ID=most_recent_checkin_per_reg.REG_ID '
793
-            . 'AND checkins.CHK_timestamp = most_recent_checkin_per_reg.latest_checkin '
794
-            . 'WHERE '
795
-            . 'checkins.CHK_in=%d',
796
-            $EVT_ID,
797
-            $checked_in
798
-        );
799
-        return (int) $wpdb->get_var($query);
800
-    }
801
-
802
-
803
-    /**
804
-     * The purpose of this method is to retrieve an array of
805
-     * EE_Registration objects that represent the latest registration
806
-     * for each ATT_ID given in the function argument.
807
-     *
808
-     * @param array $attendee_ids
809
-     * @return EE_Base_Class[]|EE_Registration[]
810
-     * @throws EE_Error
811
-     */
812
-    public function get_latest_registration_for_each_of_given_contacts($attendee_ids = array())
813
-    {
814
-        // first do a native wp_query to get the latest REG_ID's matching these attendees.
815
-        global $wpdb;
816
-        $registration_table = $wpdb->prefix . 'esp_registration';
817
-        $attendee_table = $wpdb->posts;
818
-        $attendee_ids = is_array($attendee_ids)
819
-            ? array_map('absint', $attendee_ids)
820
-            : array((int) $attendee_ids);
821
-        $ATT_IDs = implode(',', $attendee_ids);
822
-        // first we do a query to get the registration ids
823
-        // (because a group by before order by causes the order by to be ignored.)
824
-        $registration_id_query = "
16
+	/**
17
+	 * @var EEM_Registration $_instance
18
+	 */
19
+	protected static $_instance;
20
+
21
+	/**
22
+	 * Keys are the status IDs for registrations (eg, RAP, RCN, etc), and the values
23
+	 * are status codes (eg, approved, cancelled, etc)
24
+	 *
25
+	 * @var array
26
+	 */
27
+	private static $_reg_status;
28
+
29
+	/**
30
+	 * The value of REG_count for a primary registrant
31
+	 */
32
+	const PRIMARY_REGISTRANT_COUNT = 1;
33
+
34
+	/**
35
+	 * Status ID (STS_ID on esp_status table) to indicate an INCOMPLETE registration.
36
+	 * Initial status for registrations when they are first created
37
+	 * Payments are NOT allowed.
38
+	 * Automatically toggled to whatever the default Event registration status is upon completion of the attendee
39
+	 * information reg step NO space reserved. Registration is NOT active
40
+	 */
41
+	const status_id_incomplete = 'RIC';
42
+
43
+	/**
44
+	 * Status ID (STS_ID on esp_status table) to indicate an UNAPPROVED registration.
45
+	 * Payments are NOT allowed.
46
+	 * Event Admin must manually toggle STS_ID for it to change
47
+	 * No space reserved.
48
+	 * Registration is active
49
+	 */
50
+	const status_id_not_approved = 'RNA';
51
+
52
+	/**
53
+	 * Status ID (STS_ID on esp_status table) to indicate registration is PENDING_PAYMENT .
54
+	 * Payments are allowed.
55
+	 * STS_ID will automatically be toggled to RAP if payment is made in full by the attendee
56
+	 * No space reserved.
57
+	 * Registration is active
58
+	 */
59
+	const status_id_pending_payment = 'RPP';
60
+
61
+	/**
62
+	 * Status ID (STS_ID on esp_status table) to indicate registration is on the WAIT_LIST .
63
+	 * Payments are allowed.
64
+	 * STS_ID will automatically be toggled to RAP if payment is made in full by the attendee
65
+	 * No space reserved.
66
+	 * Registration is active
67
+	 */
68
+	const status_id_wait_list = 'RWL';
69
+
70
+	/**
71
+	 * Status ID (STS_ID on esp_status table) to indicate an APPROVED registration.
72
+	 * the TXN may or may not be completed ( paid in full )
73
+	 * Payments are allowed.
74
+	 * A space IS reserved.
75
+	 * Registration is active
76
+	 */
77
+	const status_id_approved = 'RAP';
78
+
79
+	/**
80
+	 * Status ID (STS_ID on esp_status table) to indicate a registration was CANCELLED by the attendee.
81
+	 * Payments are NOT allowed.
82
+	 * NO space reserved.
83
+	 * Registration is NOT active
84
+	 */
85
+	const status_id_cancelled = 'RCN';
86
+
87
+	/**
88
+	 * Status ID (STS_ID on esp_status table) to indicate a registration was DECLINED by the Event Admin
89
+	 * Payments are NOT allowed.
90
+	 * No space reserved.
91
+	 * Registration is NOT active
92
+	 */
93
+	const status_id_declined = 'RDC';
94
+
95
+	/**
96
+	 * @var TableAnalysis $table_analysis
97
+	 */
98
+	protected $_table_analysis;
99
+
100
+
101
+	/**
102
+	 *    private constructor to prevent direct creation
103
+	 *
104
+	 * @Constructor
105
+	 * @access protected
106
+	 * @param string $timezone string representing the timezone we want to set for returned Date Time Strings (and any
107
+	 *                         incoming timezone data that gets saved). Note this just sends the timezone info to the
108
+	 *                         date time model field objects.  Default is NULL (and will be assumed using the set
109
+	 *                         timezone in the 'timezone_string' wp option)
110
+	 * @throws EE_Error
111
+	 */
112
+	protected function __construct($timezone = null)
113
+	{
114
+		$this->_table_analysis = EE_Registry::instance()->create('TableAnalysis', array(), true);
115
+		$this->singular_item = esc_html__('Registration', 'event_espresso');
116
+		$this->plural_item = esc_html__('Registrations', 'event_espresso');
117
+		$this->_tables = array(
118
+			'Registration' => new EE_Primary_Table('esp_registration', 'REG_ID'),
119
+		);
120
+		$this->_fields = array(
121
+			'Registration' => array(
122
+				'REG_ID' => new EE_Primary_Key_Int_Field(
123
+					'REG_ID',
124
+					esc_html__('Registration ID', 'event_espresso')
125
+				),
126
+				'EVT_ID' => new EE_Foreign_Key_Int_Field(
127
+					'EVT_ID',
128
+					esc_html__('Event ID', 'event_espresso'),
129
+					false,
130
+					0,
131
+					'Event'
132
+				),
133
+				'ATT_ID' => new EE_Foreign_Key_Int_Field(
134
+					'ATT_ID',
135
+					esc_html__('Attendee ID', 'event_espresso'),
136
+					false,
137
+					0,
138
+					'Attendee'
139
+				),
140
+				'TXN_ID' => new EE_Foreign_Key_Int_Field(
141
+					'TXN_ID',
142
+					esc_html__('Transaction ID', 'event_espresso'),
143
+					false,
144
+					0,
145
+					'Transaction'
146
+				),
147
+				'TKT_ID' => new EE_Foreign_Key_Int_Field(
148
+					'TKT_ID',
149
+					esc_html__('Ticket ID', 'event_espresso'),
150
+					false,
151
+					0,
152
+					'Ticket'
153
+				),
154
+				'STS_ID' => new EE_Foreign_Key_String_Field(
155
+					'STS_ID',
156
+					esc_html__('Status ID', 'event_espresso'),
157
+					false,
158
+					EEM_Registration::status_id_incomplete,
159
+					'Status'
160
+				),
161
+				'REG_date' => new EE_Datetime_Field(
162
+					'REG_date',
163
+					esc_html__('Time registration occurred', 'event_espresso'),
164
+					false,
165
+					EE_Datetime_Field::now,
166
+					$timezone
167
+				),
168
+				'REG_final_price' => new EE_Money_Field(
169
+					'REG_final_price',
170
+					esc_html__('Registration\'s share of the transaction total', 'event_espresso'),
171
+					false,
172
+					0
173
+				),
174
+				'REG_paid' => new EE_Money_Field(
175
+					'REG_paid',
176
+					esc_html__('Amount paid to date towards registration', 'event_espresso'),
177
+					false,
178
+					0
179
+				),
180
+				'REG_session' => new EE_Plain_Text_Field(
181
+					'REG_session',
182
+					esc_html__('Session ID of registration', 'event_espresso'),
183
+					false,
184
+					''
185
+				),
186
+				'REG_code' => new EE_Plain_Text_Field(
187
+					'REG_code',
188
+					esc_html__('Unique Code for this registration', 'event_espresso'),
189
+					false,
190
+					''
191
+				),
192
+				'REG_url_link' => new EE_Plain_Text_Field(
193
+					'REG_url_link',
194
+					esc_html__('String to be used in URL for identifying registration', 'event_espresso'),
195
+					false,
196
+					''
197
+				),
198
+				'REG_count' => new EE_Integer_Field(
199
+					'REG_count',
200
+					esc_html__('Count of this registration in the group registration ', 'event_espresso'),
201
+					true,
202
+					1
203
+				),
204
+				'REG_group_size' => new EE_Integer_Field(
205
+					'REG_group_size',
206
+					esc_html__('Number of registrations on this group', 'event_espresso'),
207
+					false,
208
+					1
209
+				),
210
+				'REG_att_is_going' => new EE_Boolean_Field(
211
+					'REG_att_is_going',
212
+					esc_html__('Flag indicating the registrant plans on attending', 'event_espresso'),
213
+					false,
214
+					false
215
+				),
216
+				'REG_deleted' => new EE_Trashed_Flag_Field(
217
+					'REG_deleted',
218
+					esc_html__('Flag indicating if registration has been archived or not.', 'event_espresso'),
219
+					false,
220
+					false
221
+				),
222
+			),
223
+		);
224
+		$this->_model_relations = array(
225
+			'Event' => new EE_Belongs_To_Relation(),
226
+			'Attendee' => new EE_Belongs_To_Relation(),
227
+			'Transaction' => new EE_Belongs_To_Relation(),
228
+			'Ticket' => new EE_Belongs_To_Relation(),
229
+			'Status' => new EE_Belongs_To_Relation(),
230
+			'Answer' => new EE_Has_Many_Relation(),
231
+			'Checkin' => new EE_Has_Many_Relation(),
232
+			'Registration_Payment' => new EE_Has_Many_Relation(),
233
+			'Payment' => new EE_HABTM_Relation('Registration_Payment'),
234
+			'Message' => new EE_Has_Many_Any_Relation(false)
235
+			// allow deletes even if there are messages in the queue related
236
+		);
237
+		$this->_model_chain_to_wp_user = 'Event';
238
+		parent::__construct($timezone);
239
+	}
240
+
241
+
242
+	/**
243
+	 * a list of ALL valid registration statuses currently in use within the system
244
+	 * generated by combining the filterable active and inactive reg status arrays
245
+	 *
246
+	 * @return array
247
+	 */
248
+	public static function reg_statuses()
249
+	{
250
+		return array_unique(
251
+			array_merge(
252
+				EEM_Registration::active_reg_statuses(),
253
+				EEM_Registration::inactive_reg_statuses()
254
+			)
255
+		);
256
+	}
257
+
258
+
259
+	/**
260
+	 * reg_statuses_that_allow_payment
261
+	 * a filterable list of registration statuses that allow a registrant to make a payment
262
+	 *
263
+	 * @access public
264
+	 * @return array
265
+	 */
266
+	public static function reg_statuses_that_allow_payment()
267
+	{
268
+		return apply_filters(
269
+			'FHEE__EEM_Registration__reg_statuses_that_allow_payment',
270
+			array(
271
+				EEM_Registration::status_id_approved,
272
+				EEM_Registration::status_id_pending_payment,
273
+			)
274
+		);
275
+	}
276
+
277
+
278
+	/**
279
+	 * active_reg_statuses
280
+	 * a filterable list of registration statuses that are considered active
281
+	 *
282
+	 * @access public
283
+	 * @return array
284
+	 */
285
+	public static function active_reg_statuses()
286
+	{
287
+		return apply_filters(
288
+			'FHEE__EEM_Registration__active_reg_statuses',
289
+			array(
290
+				EEM_Registration::status_id_approved,
291
+				EEM_Registration::status_id_pending_payment,
292
+				EEM_Registration::status_id_wait_list,
293
+				EEM_Registration::status_id_not_approved,
294
+			)
295
+		);
296
+	}
297
+
298
+
299
+	/**
300
+	 * inactive_reg_statuses
301
+	 * a filterable list of registration statuses that are not considered active
302
+	 *
303
+	 * @access public
304
+	 * @return array
305
+	 */
306
+	public static function inactive_reg_statuses()
307
+	{
308
+		return apply_filters(
309
+			'FHEE__EEM_Registration__inactive_reg_statuses',
310
+			array(
311
+				EEM_Registration::status_id_incomplete,
312
+				EEM_Registration::status_id_cancelled,
313
+				EEM_Registration::status_id_declined,
314
+			)
315
+		);
316
+	}
317
+
318
+
319
+	/**
320
+	 *    closed_reg_statuses
321
+	 *    a filterable list of registration statuses that are considered "closed"
322
+	 * meaning they should not be considered in any calculations involving monies owing
323
+	 *
324
+	 * @access public
325
+	 * @return array
326
+	 */
327
+	public static function closed_reg_statuses()
328
+	{
329
+		return apply_filters(
330
+			'FHEE__EEM_Registration__closed_reg_statuses',
331
+			array(
332
+				EEM_Registration::status_id_cancelled,
333
+				EEM_Registration::status_id_declined,
334
+				EEM_Registration::status_id_wait_list,
335
+			)
336
+		);
337
+	}
338
+
339
+
340
+	/**
341
+	 *        get list of registration statuses
342
+	 *
343
+	 * @access public
344
+	 * @param array $exclude The status ids to exclude from the returned results
345
+	 * @param bool $translated If true will return the values as singular localized strings
346
+	 * @return array
347
+	 * @throws EE_Error
348
+	 */
349
+	public static function reg_status_array($exclude = array(), $translated = false)
350
+	{
351
+		EEM_Registration::instance()->_get_registration_status_array($exclude);
352
+		return $translated
353
+			? EEM_Status::instance()->localized_status(self::$_reg_status, false, 'sentence')
354
+			: self::$_reg_status;
355
+	}
356
+
357
+
358
+	/**
359
+	 *    get list of registration statuses
360
+	 *
361
+	 * @access private
362
+	 * @param array $exclude
363
+	 * @return void
364
+	 * @throws EE_Error
365
+	 */
366
+	private function _get_registration_status_array($exclude = array())
367
+	{
368
+		// in the very rare circumstance that we are deleting a model's table's data
369
+		// and the table hasn't actually been created, this could have an error
370
+		/** @type WPDB $wpdb */
371
+		global $wpdb;
372
+		if ($this->_get_table_analysis()->tableExists($wpdb->prefix . 'esp_status')) {
373
+			$results = $wpdb->get_results(
374
+				"SELECT STS_ID, STS_code FROM {$wpdb->prefix}esp_status WHERE STS_type = 'registration'"
375
+			);
376
+			self::$_reg_status = array();
377
+			foreach ($results as $status) {
378
+				if (!in_array($status->STS_ID, $exclude, true)) {
379
+					self::$_reg_status[ $status->STS_ID ] = $status->STS_code;
380
+				}
381
+			}
382
+		}
383
+	}
384
+
385
+
386
+	/**
387
+	 * Gets the injected table analyzer, or throws an exception
388
+	 *
389
+	 * @return TableAnalysis
390
+	 * @throws EE_Error
391
+	 */
392
+	protected function _get_table_analysis()
393
+	{
394
+		if ($this->_table_analysis instanceof TableAnalysis) {
395
+			return $this->_table_analysis;
396
+		}
397
+		throw new EE_Error(
398
+			sprintf(
399
+				esc_html__('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
400
+				get_class($this)
401
+			)
402
+		);
403
+	}
404
+
405
+
406
+	/**
407
+	 * This returns a wpdb->results array of all registration date month and years matching the incoming query params
408
+	 * and grouped by month and year.
409
+	 *
410
+	 * @param  array $where_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md#0-where-conditions
411
+	 * @return array
412
+	 * @throws EE_Error
413
+	 */
414
+	public function get_reg_months_and_years($where_params)
415
+	{
416
+		$query_params[0] = $where_params;
417
+		$query_params['group_by'] = array('reg_year', 'reg_month');
418
+		$query_params['order_by'] = array('REG_date' => 'DESC');
419
+		$columns_to_select = array(
420
+			'reg_year' => array('YEAR(REG_date)', '%s'),
421
+			'reg_month' => array('MONTHNAME(REG_date)', '%s'),
422
+		);
423
+		return $this->_get_all_wpdb_results($query_params, OBJECT, $columns_to_select);
424
+	}
425
+
426
+
427
+	/**
428
+	 * retrieve ALL registrations for a particular Attendee from db
429
+	 *
430
+	 * @param int $ATT_ID
431
+	 * @return EE_Base_Class[]|EE_Registration[]|null
432
+	 * @throws EE_Error
433
+	 */
434
+	public function get_all_registrations_for_attendee($ATT_ID = 0)
435
+	{
436
+		if (!$ATT_ID) {
437
+			return null;
438
+		}
439
+		return $this->get_all(array(array('ATT_ID' => $ATT_ID)));
440
+	}
441
+
442
+
443
+	/**
444
+	 * Gets a registration given their REG_url_link. Yes, this should usually
445
+	 * be passed via a GET parameter.
446
+	 *
447
+	 * @param string $REG_url_link
448
+	 * @return EE_Base_Class|EE_Registration|null
449
+	 * @throws EE_Error
450
+	 */
451
+	public function get_registration_for_reg_url_link($REG_url_link)
452
+	{
453
+		if (!$REG_url_link) {
454
+			return null;
455
+		}
456
+		return $this->get_one(array(array('REG_url_link' => $REG_url_link)));
457
+	}
458
+
459
+
460
+	/**
461
+	 *        retrieve registration for a specific transaction attendee from db
462
+	 *
463
+	 * @access        public
464
+	 * @param    int $TXN_ID
465
+	 * @param    int $ATT_ID
466
+	 * @param    int $att_nmbr in case the ATT_ID is the same for multiple registrations (same details used) then the
467
+	 *                         attendee number is required
468
+	 * @return        mixed        array on success, FALSE on fail
469
+	 * @throws EE_Error
470
+	 */
471
+	public function get_registration_for_transaction_attendee($TXN_ID = 0, $ATT_ID = 0, $att_nmbr = 0)
472
+	{
473
+		return $this->get_one(array(
474
+			array(
475
+				'TXN_ID' => $TXN_ID,
476
+				'ATT_ID' => $ATT_ID,
477
+			),
478
+			'limit' => array(min($att_nmbr - 1, 0), 1),
479
+		));
480
+	}
481
+
482
+
483
+	/**
484
+	 *        get the number of registrations per day  for the Registration Admin page Reports Tab.
485
+	 *        (doesn't utilize models because it's a fairly specialized query)
486
+	 *
487
+	 * @access        public
488
+	 * @param $period string which can be passed to php's strtotime function (eg "-1 month")
489
+	 * @return stdClass[] with properties regDate and total
490
+	 * @throws EE_Error
491
+	 */
492
+	public function get_registrations_per_day_report($period = '-1 month')
493
+	{
494
+		$sql_date = $this->convert_datetime_for_query(
495
+			'REG_date',
496
+			date('Y-m-d H:i:s', strtotime($period)),
497
+			'Y-m-d H:i:s',
498
+			'UTC'
499
+		);
500
+		$where = array(
501
+			'REG_date' => array('>=', $sql_date),
502
+			'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
503
+		);
504
+		if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_day_report')) {
505
+			$where['Event.EVT_wp_user'] = get_current_user_id();
506
+		}
507
+		$query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'REG_date');
508
+		$results = $this->_get_all_wpdb_results(
509
+			array(
510
+				$where,
511
+				'group_by' => 'regDate',
512
+				'order_by' => array('REG_date' => 'ASC'),
513
+			),
514
+			OBJECT,
515
+			array(
516
+				'regDate' => array('DATE(' . $query_interval . ')', '%s'),
517
+				'total' => array('count(REG_ID)', '%d'),
518
+			)
519
+		);
520
+		return $results;
521
+	}
522
+
523
+
524
+	/**
525
+	 * Get the number of registrations per day including the count of registrations for each Registration Status.
526
+	 * Note: EEM_Registration::status_id_incomplete registrations are excluded from the results.
527
+	 *
528
+	 * @param string $period
529
+	 * @return stdClass[] with properties Registration_REG_date and a column for each registration status as the STS_ID
530
+	 * @throws EE_Error
531
+	 *                    (i.e. RAP)
532
+	 */
533
+	public function get_registrations_per_day_and_per_status_report($period = '-1 month')
534
+	{
535
+		global $wpdb;
536
+		$registration_table = $wpdb->prefix . 'esp_registration';
537
+		$event_table = $wpdb->posts;
538
+		$sql_date = date('Y-m-d H:i:s', strtotime($period));
539
+		// prepare the query interval for displaying offset
540
+		$query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'dates.REG_date');
541
+		// inner date query
542
+		$inner_date_query = "SELECT DISTINCT REG_date from {$registration_table} ";
543
+		$inner_where = ' WHERE';
544
+		// exclude events not authored by user if permissions in effect
545
+		if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
546
+			$inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
547
+			$inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
548
+		}
549
+		$inner_where .= " REG_date >= '{$sql_date}'";
550
+		$inner_date_query .= $inner_where;
551
+		// start main query
552
+		$select = "SELECT DATE({$query_interval}) as Registration_REG_date, ";
553
+		$join = '';
554
+		$join_parts = array();
555
+		$select_parts = array();
556
+		// loop through registration stati to do parts for each status.
557
+		foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
558
+			if ($STS_ID === EEM_Registration::status_id_incomplete) {
559
+				continue;
560
+			}
561
+			$select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}";
562
+			$join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.REG_date = dates.REG_date AND {$STS_code}.STS_ID = '{$STS_ID}'";
563
+		}
564
+		// setup the selects
565
+		$select .= implode(', ', $select_parts);
566
+		$select .= " FROM ($inner_date_query) AS dates LEFT JOIN ";
567
+		// setup the joins
568
+		$join .= implode(' LEFT JOIN ', $join_parts);
569
+		// now let's put it all together
570
+		$query = $select . $join . ' GROUP BY Registration_REG_date';
571
+		// and execute it
572
+		return $wpdb->get_results($query, ARRAY_A);
573
+	}
574
+
575
+
576
+	/**
577
+	 *        get the number of registrations per event  for the Registration Admin page Reports Tab
578
+	 *
579
+	 * @access        public
580
+	 * @param $period string which can be passed to php's strtotime function (eg "-1 month")
581
+	 * @return stdClass[] each with properties event_name, reg_limit, and total
582
+	 * @throws EE_Error
583
+	 */
584
+	public function get_registrations_per_event_report($period = '-1 month')
585
+	{
586
+		$date_sql = $this->convert_datetime_for_query(
587
+			'REG_date',
588
+			date('Y-m-d H:i:s', strtotime($period)),
589
+			'Y-m-d H:i:s',
590
+			'UTC'
591
+		);
592
+		$where = array(
593
+			'REG_date' => array('>=', $date_sql),
594
+			'STS_ID' => array('!=', EEM_Registration::status_id_incomplete),
595
+		);
596
+		if (!EE_Registry::instance()->CAP->current_user_can(
597
+			'ee_read_others_registrations',
598
+			'reg_per_event_report'
599
+		)
600
+		) {
601
+			$where['Event.EVT_wp_user'] = get_current_user_id();
602
+		}
603
+		$results = $this->_get_all_wpdb_results(
604
+			array(
605
+			$where,
606
+			'group_by' => 'Event.EVT_name',
607
+			'order_by' => 'Event.EVT_name',
608
+			'limit' => array(0, 24),
609
+			),
610
+			OBJECT,
611
+			array(
612
+				'event_name' => array('Event_CPT.post_title', '%s'),
613
+				'total' => array('COUNT(REG_ID)', '%s'),
614
+			)
615
+		);
616
+		return $results;
617
+	}
618
+
619
+
620
+	/**
621
+	 * Get the number of registrations per event grouped by registration status.
622
+	 * Note: EEM_Registration::status_id_incomplete registrations are excluded from the results.
623
+	 *
624
+	 * @param string $period
625
+	 * @return stdClass[] with properties `Registration_Event` and a column for each registration status as the STS_ID
626
+	 * @throws EE_Error
627
+	 *                    (i.e. RAP)
628
+	 */
629
+	public function get_registrations_per_event_and_per_status_report($period = '-1 month')
630
+	{
631
+		global $wpdb;
632
+		$registration_table = $wpdb->prefix . 'esp_registration';
633
+		$event_table = $wpdb->posts;
634
+		$sql_date = date('Y-m-d H:i:s', strtotime($period));
635
+		// inner date query
636
+		$inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table ";
637
+		$inner_where = ' WHERE';
638
+		// exclude events not authored by user if permissions in effect
639
+		if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
640
+			$inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID";
641
+			$inner_where .= ' post_author = ' . get_current_user_id() . ' AND';
642
+		}
643
+		$inner_where .= " REG_date >= '{$sql_date}'";
644
+		$inner_date_query .= $inner_where;
645
+		// build main query
646
+		$select = 'SELECT Event.post_title as Registration_Event, ';
647
+		$join = '';
648
+		$join_parts = array();
649
+		$select_parts = array();
650
+		// loop through registration stati to do parts for each status.
651
+		foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
652
+			if ($STS_ID === EEM_Registration::status_id_incomplete) {
653
+				continue;
654
+			}
655
+			$select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}";
656
+			$join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.EVT_ID = dates.EVT_ID AND {$STS_code}.STS_ID = '{$STS_ID}' AND {$STS_code}.REG_date = dates.REG_date";
657
+		}
658
+		// setup the selects
659
+		$select .= implode(', ', $select_parts);
660
+		$select .= " FROM ($inner_date_query) AS dates LEFT JOIN $event_table as Event ON Event.ID = dates.EVT_ID LEFT JOIN ";
661
+		// setup remaining joins
662
+		$join .= implode(' LEFT JOIN ', $join_parts);
663
+		// now put it all together
664
+		$query = $select . $join . ' GROUP BY Registration_Event';
665
+		// and execute
666
+		return $wpdb->get_results($query, ARRAY_A);
667
+	}
668
+
669
+
670
+	/**
671
+	 * Returns the EE_Registration of the primary attendee on the transaction id provided
672
+	 *
673
+	 * @param int $TXN_ID
674
+	 * @return EE_Base_Class|EE_Registration|null
675
+	 * @throws EE_Error
676
+	 */
677
+	public function get_primary_registration_for_transaction_ID($TXN_ID = 0)
678
+	{
679
+		if (!$TXN_ID) {
680
+			return null;
681
+		}
682
+		return $this->get_one(array(
683
+			array(
684
+				'TXN_ID' => $TXN_ID,
685
+				'REG_count' => EEM_Registration::PRIMARY_REGISTRANT_COUNT,
686
+			),
687
+		));
688
+	}
689
+
690
+
691
+	/**
692
+	 *        get_event_registration_count
693
+	 *
694
+	 * @access public
695
+	 * @param int $EVT_ID
696
+	 * @param boolean $for_incomplete_payments
697
+	 * @return int
698
+	 * @throws EE_Error
699
+	 */
700
+	public function get_event_registration_count($EVT_ID, $for_incomplete_payments = false)
701
+	{
702
+		// we only count approved registrations towards registration limits
703
+		$query_params = array(array('EVT_ID' => $EVT_ID, 'STS_ID' => self::status_id_approved));
704
+		if ($for_incomplete_payments) {
705
+			$query_params[0]['Transaction.STS_ID'] = array('!=', EEM_Transaction::complete_status_code);
706
+		}
707
+		return $this->count($query_params);
708
+	}
709
+
710
+
711
+	/**
712
+	 * Deletes all registrations with no transactions. Note that this needs to be very efficient
713
+	 * and so it uses wpdb directly
714
+	 *
715
+	 * @global WPDB $wpdb
716
+	 * @return int number deleted
717
+	 * @throws EE_Error
718
+	 */
719
+	public function delete_registrations_with_no_transaction()
720
+	{
721
+		/** @type WPDB $wpdb */
722
+		global $wpdb;
723
+		return $wpdb->query(
724
+			'DELETE r FROM '
725
+			. $this->table()
726
+			. ' r LEFT JOIN '
727
+			. EEM_Transaction::instance()->table()
728
+			. ' t ON r.TXN_ID = t.TXN_ID WHERE t.TXN_ID IS NULL'
729
+		);
730
+	}
731
+
732
+
733
+	/**
734
+	 *  Count registrations checked into (or out of) a datetime
735
+	 *
736
+	 * @param int $DTT_ID datetime ID
737
+	 * @param boolean $checked_in whether to count registrations checked IN or OUT
738
+	 * @return int
739
+	 * @throws EE_Error
740
+	 */
741
+	public function count_registrations_checked_into_datetime($DTT_ID, $checked_in = true)
742
+	{
743
+		global $wpdb;
744
+		// subquery to get latest checkin
745
+		$query = $wpdb->prepare(
746
+			'SELECT '
747
+			. 'COUNT( DISTINCT checkins.REG_ID ) '
748
+			. 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
749
+			. '( SELECT '
750
+			. 'max( CHK_timestamp ) AS latest_checkin, '
751
+			. 'REG_ID AS REG_ID '
752
+			. 'FROM ' . EEM_Checkin::instance()->table() . ' '
753
+			. 'WHERE DTT_ID=%d '
754
+			. 'GROUP BY REG_ID'
755
+			. ') AS most_recent_checkin_per_reg '
756
+			. 'ON checkins.REG_ID=most_recent_checkin_per_reg.REG_ID '
757
+			. 'AND checkins.CHK_timestamp = most_recent_checkin_per_reg.latest_checkin '
758
+			. 'WHERE '
759
+			. 'checkins.CHK_in=%d',
760
+			$DTT_ID,
761
+			$checked_in
762
+		);
763
+		return (int) $wpdb->get_var($query);
764
+	}
765
+
766
+
767
+	/**
768
+	 *  Count registrations checked into (or out of) an event.
769
+	 *
770
+	 * @param int $EVT_ID event ID
771
+	 * @param boolean $checked_in whether to count registrations checked IN or OUT
772
+	 * @return int
773
+	 * @throws EE_Error
774
+	 */
775
+	public function count_registrations_checked_into_event($EVT_ID, $checked_in = true)
776
+	{
777
+		global $wpdb;
778
+		// subquery to get latest checkin
779
+		$query = $wpdb->prepare(
780
+			'SELECT '
781
+			. 'COUNT( DISTINCT checkins.REG_ID ) '
782
+			. 'FROM ' . EEM_Checkin::instance()->table() . ' AS checkins INNER JOIN'
783
+			. '( SELECT '
784
+			. 'max( CHK_timestamp ) AS latest_checkin, '
785
+			. 'REG_ID AS REG_ID '
786
+			. 'FROM ' . EEM_Checkin::instance()->table() . ' AS c '
787
+			. 'INNER JOIN ' . EEM_Datetime::instance()->table() . ' AS d '
788
+			. 'ON c.DTT_ID=d.DTT_ID '
789
+			. 'WHERE d.EVT_ID=%d '
790
+			. 'GROUP BY REG_ID'
791
+			. ') AS most_recent_checkin_per_reg '
792
+			. 'ON checkins.REG_ID=most_recent_checkin_per_reg.REG_ID '
793
+			. 'AND checkins.CHK_timestamp = most_recent_checkin_per_reg.latest_checkin '
794
+			. 'WHERE '
795
+			. 'checkins.CHK_in=%d',
796
+			$EVT_ID,
797
+			$checked_in
798
+		);
799
+		return (int) $wpdb->get_var($query);
800
+	}
801
+
802
+
803
+	/**
804
+	 * The purpose of this method is to retrieve an array of
805
+	 * EE_Registration objects that represent the latest registration
806
+	 * for each ATT_ID given in the function argument.
807
+	 *
808
+	 * @param array $attendee_ids
809
+	 * @return EE_Base_Class[]|EE_Registration[]
810
+	 * @throws EE_Error
811
+	 */
812
+	public function get_latest_registration_for_each_of_given_contacts($attendee_ids = array())
813
+	{
814
+		// first do a native wp_query to get the latest REG_ID's matching these attendees.
815
+		global $wpdb;
816
+		$registration_table = $wpdb->prefix . 'esp_registration';
817
+		$attendee_table = $wpdb->posts;
818
+		$attendee_ids = is_array($attendee_ids)
819
+			? array_map('absint', $attendee_ids)
820
+			: array((int) $attendee_ids);
821
+		$ATT_IDs = implode(',', $attendee_ids);
822
+		// first we do a query to get the registration ids
823
+		// (because a group by before order by causes the order by to be ignored.)
824
+		$registration_id_query = "
825 825
 			SELECT registrations.registration_ids as registration_id
826 826
 			FROM (
827 827
 				SELECT
@@ -835,61 +835,61 @@  discard block
 block discarded – undo
835 835
 			  ) AS registrations
836 836
 			  GROUP BY registrations.attendee_ids
837 837
 		";
838
-        $registration_ids = $wpdb->get_results($registration_id_query, ARRAY_A);
839
-        if (empty($registration_ids)) {
840
-            return array();
841
-        }
842
-        $ids_for_model_query = array();
843
-        // let's flatten the ids so they can be used in the model query.
844
-        foreach ($registration_ids as $registration_id) {
845
-            if (isset($registration_id['registration_id'])) {
846
-                $ids_for_model_query[] = $registration_id['registration_id'];
847
-            }
848
-        }
849
-        // construct query
850
-        $_where = array(
851
-            'REG_ID' => array('IN', $ids_for_model_query),
852
-        );
853
-        return $this->get_all(array($_where));
854
-    }
855
-
856
-
857
-
858
-    /**
859
-     * returns a count of registrations for the supplied event having the status as specified
860
-     *
861
-     * @param int $EVT_ID
862
-     * @param array $statuses
863
-     * @return int
864
-     * @throws InvalidArgumentException
865
-     * @throws InvalidStatusException
866
-     * @throws EE_Error
867
-     */
868
-    public function event_reg_count_for_statuses($EVT_ID, $statuses = array())
869
-    {
870
-        $EVT_ID = absint($EVT_ID);
871
-        if (! $EVT_ID) {
872
-            throw new InvalidArgumentException(
873
-                esc_html__('An invalid Event ID was supplied.', 'event_espresso')
874
-            );
875
-        }
876
-        $statuses = is_array($statuses) ? $statuses : array($statuses);
877
-        $statuses = ! empty($statuses) ? $statuses : array(EEM_Registration::status_id_approved);
878
-        $valid_reg_statuses = EEM_Registration::reg_statuses();
879
-        foreach ($statuses as $status) {
880
-            if (! in_array($status, $valid_reg_statuses, true)) {
881
-                throw new InvalidStatusException($status, esc_html__('Registration', 'event_espresso'));
882
-            }
883
-        }
884
-        return $this->count(
885
-            array(
886
-                array(
887
-                    'EVT_ID' => $EVT_ID,
888
-                    'STS_ID' => array('IN', $statuses),
889
-                ),
890
-            ),
891
-            'REG_ID',
892
-            true
893
-        );
894
-    }
838
+		$registration_ids = $wpdb->get_results($registration_id_query, ARRAY_A);
839
+		if (empty($registration_ids)) {
840
+			return array();
841
+		}
842
+		$ids_for_model_query = array();
843
+		// let's flatten the ids so they can be used in the model query.
844
+		foreach ($registration_ids as $registration_id) {
845
+			if (isset($registration_id['registration_id'])) {
846
+				$ids_for_model_query[] = $registration_id['registration_id'];
847
+			}
848
+		}
849
+		// construct query
850
+		$_where = array(
851
+			'REG_ID' => array('IN', $ids_for_model_query),
852
+		);
853
+		return $this->get_all(array($_where));
854
+	}
855
+
856
+
857
+
858
+	/**
859
+	 * returns a count of registrations for the supplied event having the status as specified
860
+	 *
861
+	 * @param int $EVT_ID
862
+	 * @param array $statuses
863
+	 * @return int
864
+	 * @throws InvalidArgumentException
865
+	 * @throws InvalidStatusException
866
+	 * @throws EE_Error
867
+	 */
868
+	public function event_reg_count_for_statuses($EVT_ID, $statuses = array())
869
+	{
870
+		$EVT_ID = absint($EVT_ID);
871
+		if (! $EVT_ID) {
872
+			throw new InvalidArgumentException(
873
+				esc_html__('An invalid Event ID was supplied.', 'event_espresso')
874
+			);
875
+		}
876
+		$statuses = is_array($statuses) ? $statuses : array($statuses);
877
+		$statuses = ! empty($statuses) ? $statuses : array(EEM_Registration::status_id_approved);
878
+		$valid_reg_statuses = EEM_Registration::reg_statuses();
879
+		foreach ($statuses as $status) {
880
+			if (! in_array($status, $valid_reg_statuses, true)) {
881
+				throw new InvalidStatusException($status, esc_html__('Registration', 'event_espresso'));
882
+			}
883
+		}
884
+		return $this->count(
885
+			array(
886
+				array(
887
+					'EVT_ID' => $EVT_ID,
888
+					'STS_ID' => array('IN', $statuses),
889
+				),
890
+			),
891
+			'REG_ID',
892
+			true
893
+		);
894
+	}
895 895
 }
Please login to merge, or discard this patch.
core/exceptions/InvalidStatusException.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -8,26 +8,26 @@
 block discarded – undo
8 8
 
9 9
 class InvalidStatusException extends InvalidArgumentException
10 10
 {
11
-    /**
12
-     * InvalidStatusException constructor.
13
-     * @param string $status the invalid status id that was supplied
14
-     * @param string $domain the name of the domain, model, or class that the status belongs to
15
-     * @param string $message custom message
16
-     * @param int $code
17
-     * @param Exception|null $previous
18
-     */
19
-    public function __construct($status, $domain, $message = '', $code = 0, Exception $previous = null)
20
-    {
21
-        if (empty($message)) {
22
-            $message = sprintf(
23
-                __(
24
-                    '"%1$s" is not a valid %2$s status',
25
-                    'event_espresso'
26
-                ),
27
-                $status,
28
-                $domain
29
-            );
30
-        }
31
-        parent::__construct($message, $code, $previous);
32
-    }
11
+	/**
12
+	 * InvalidStatusException constructor.
13
+	 * @param string $status the invalid status id that was supplied
14
+	 * @param string $domain the name of the domain, model, or class that the status belongs to
15
+	 * @param string $message custom message
16
+	 * @param int $code
17
+	 * @param Exception|null $previous
18
+	 */
19
+	public function __construct($status, $domain, $message = '', $code = 0, Exception $previous = null)
20
+	{
21
+		if (empty($message)) {
22
+			$message = sprintf(
23
+				__(
24
+					'"%1$s" is not a valid %2$s status',
25
+					'event_espresso'
26
+				),
27
+				$status,
28
+				$domain
29
+			);
30
+		}
31
+		parent::__construct($message, $code, $previous);
32
+	}
33 33
 }
Please login to merge, or discard this patch.
core/domain/services/admin/AdminToolBar.php 2 patches
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
     {
121 121
         wp_register_style(
122 122
             'espresso-admin-toolbar',
123
-            EE_GLOBAL_ASSETS_URL . 'css/espresso-admin-toolbar.css',
123
+            EE_GLOBAL_ASSETS_URL.'css/espresso-admin-toolbar.css',
124 124
             array('dashicons'),
125 125
             EVENT_ESPRESSO_VERSION
126 126
         );
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
                 'href'  => $this->events_admin_url,
144 144
                 'meta'  => array(
145 145
                     'title' => esc_html__('Event Espresso', 'event_espresso'),
146
-                    'class' => $this->menu_class . 'first',
146
+                    'class' => $this->menu_class.'first',
147 147
                 ),
148 148
             )
149 149
         );
@@ -491,7 +491,7 @@  discard block
 block discarded – undo
491 491
                     'meta'   => array(
492 492
                         'title'  => esc_html__('Approved', 'event_espresso'),
493 493
                         'target' => '',
494
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
494
+                        'class'  => $this->menu_class.' ee-toolbar-icon-approved',
495 495
                     ),
496 496
                 )
497 497
             );
@@ -528,7 +528,7 @@  discard block
 block discarded – undo
528 528
                     'meta'   => array(
529 529
                         'title'  => esc_html__('Pending Payment', 'event_espresso'),
530 530
                         'target' => '',
531
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
531
+                        'class'  => $this->menu_class.' ee-toolbar-icon-pending',
532 532
                     ),
533 533
                 )
534 534
             );
@@ -565,7 +565,7 @@  discard block
 block discarded – undo
565 565
                     'meta'   => array(
566 566
                         'title'  => esc_html__('Not Approved', 'event_espresso'),
567 567
                         'target' => '',
568
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
568
+                        'class'  => $this->menu_class.' ee-toolbar-icon-not-approved',
569 569
                     ),
570 570
                 )
571 571
             );
@@ -602,7 +602,7 @@  discard block
 block discarded – undo
602 602
                     'meta'   => array(
603 603
                         'title'  => esc_html__('Cancelled', 'event_espresso'),
604 604
                         'target' => '',
605
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
605
+                        'class'  => $this->menu_class.' ee-toolbar-icon-cancelled',
606 606
                     ),
607 607
                 )
608 608
             );
@@ -674,7 +674,7 @@  discard block
 block discarded – undo
674 674
                     'meta'   => array(
675 675
                         'title'  => esc_html__('Approved', 'event_espresso'),
676 676
                         'target' => '',
677
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
677
+                        'class'  => $this->menu_class.' ee-toolbar-icon-approved',
678 678
                     ),
679 679
                 )
680 680
             );
@@ -711,7 +711,7 @@  discard block
 block discarded – undo
711 711
                     'meta'   => array(
712 712
                         'title'  => esc_html__('Pending', 'event_espresso'),
713 713
                         'target' => '',
714
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
714
+                        'class'  => $this->menu_class.' ee-toolbar-icon-pending',
715 715
                     ),
716 716
                 )
717 717
             );
@@ -748,7 +748,7 @@  discard block
 block discarded – undo
748 748
                     'meta'   => array(
749 749
                         'title'  => esc_html__('Not Approved', 'event_espresso'),
750 750
                         'target' => '',
751
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
751
+                        'class'  => $this->menu_class.' ee-toolbar-icon-not-approved',
752 752
                     ),
753 753
                 )
754 754
             );
@@ -785,7 +785,7 @@  discard block
 block discarded – undo
785 785
                     'meta'   => array(
786 786
                         'title'  => esc_html__('Cancelled', 'event_espresso'),
787 787
                         'target' => '',
788
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
788
+                        'class'  => $this->menu_class.' ee-toolbar-icon-cancelled',
789 789
                     ),
790 790
                 )
791 791
             );
Please login to merge, or discard this patch.
Indentation   +737 added lines, -737 removed lines patch added patch discarded remove patch
@@ -19,741 +19,741 @@
 block discarded – undo
19 19
 class AdminToolBar
20 20
 {
21 21
 
22
-    /**
23
-     * @var WP_Admin_Bar $admin_bar
24
-     */
25
-    private $admin_bar;
26
-
27
-    /**
28
-     * @var EE_Capabilities $capabilities
29
-     */
30
-    private $capabilities;
31
-
32
-    /**
33
-     * @var string $events_admin_url
34
-     */
35
-    private $events_admin_url;
36
-
37
-    /**
38
-     * @var string $menu_class
39
-     */
40
-    private $menu_class = 'espresso_menu_item_class';
41
-
42
-    /**
43
-     * @var string $reg_admin_url
44
-     */
45
-    private $reg_admin_url;
46
-
47
-
48
-    /**
49
-     * AdminToolBar constructor.
50
-     *
51
-     * @param EE_Capabilities $capabilities
52
-     */
53
-    public function __construct(EE_Capabilities $capabilities)
54
-    {
55
-        $this->capabilities = $capabilities;
56
-        add_action('admin_bar_menu', array($this, 'espressoToolbarItems'), 100);
57
-        $this->enqueueAssets();
58
-    }
59
-
60
-
61
-    /**
62
-     *    espresso_toolbar_items
63
-     *
64
-     * @access public
65
-     * @param  WP_Admin_Bar $admin_bar
66
-     * @return void
67
-     */
68
-    public function espressoToolbarItems(WP_Admin_Bar $admin_bar)
69
-    {
70
-        // if its an AJAX request, or user is NOT an admin, or in full M-Mode
71
-        if (defined('DOING_AJAX')
72
-            || ! $this->capabilities->current_user_can('ee_read_ee', 'ee_admin_bar_menu_top_level')
73
-            || EE_Maintenance_Mode::instance()->level() === EE_Maintenance_Mode::level_2_complete_maintenance
74
-        ) {
75
-            return;
76
-        }
77
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
78
-        $this->admin_bar = $admin_bar;
79
-        // we don't use the constants EVENTS_ADMIN_URL or REG_ADMIN_URL
80
-        // because they're only defined in each of their respective constructors
81
-        // and this might be a frontend request, in which case they aren't available
82
-        $this->events_admin_url = admin_url('admin.php?page=espresso_events');
83
-        $this->reg_admin_url = admin_url('admin.php?page=espresso_registrations');
84
-        // now let's add all of the menu items
85
-        $this->addTopLevelMenu();
86
-        $this->addEventsSubMenu();
87
-        $this->addEventsAddEditHeader();
88
-        $this->addEventsAddNew();
89
-        $this->addEventsEditCurrentEvent();
90
-        $this->addEventsViewHeader();
91
-        $this->addEventsViewAll();
92
-        $this->addEventsViewToday();
93
-        $this->addEventsViewThisMonth();
94
-        $this->addRegistrationSubMenu();
95
-        $this->addRegistrationOverviewToday();
96
-        $this->addRegistrationOverviewTodayApproved();
97
-        $this->addRegistrationOverviewTodayPendingPayment();
98
-        $this->addRegistrationOverviewTodayNotApproved();
99
-        $this->addRegistrationOverviewTodayCancelled();
100
-        $this->addRegistrationOverviewThisMonth();
101
-        $this->addRegistrationOverviewThisMonthApproved();
102
-        $this->addRegistrationOverviewThisMonthPending();
103
-        $this->addRegistrationOverviewThisMonthNotApproved();
104
-        $this->addRegistrationOverviewThisMonthCancelled();
105
-        $this->addExtensionsAndServices();
106
-    }
107
-
108
-
109
-    /**
110
-     * @return void
111
-     */
112
-    private function enqueueAssets()
113
-    {
114
-        wp_register_style(
115
-            'espresso-admin-toolbar',
116
-            EE_GLOBAL_ASSETS_URL . 'css/espresso-admin-toolbar.css',
117
-            array('dashicons'),
118
-            EVENT_ESPRESSO_VERSION
119
-        );
120
-        wp_enqueue_style('espresso-admin-toolbar');
121
-    }
122
-
123
-
124
-    /**
125
-     * @return void
126
-     */
127
-    private function addTopLevelMenu()
128
-    {
129
-        $this->admin_bar->add_menu(
130
-            array(
131
-                'id'    => 'espresso-toolbar',
132
-                'title' => '<span class="ee-icon ee-icon-ee-cup-thick ee-icon-size-20"></span><span class="ab-label">'
133
-                           . esc_html_x('Event Espresso', 'admin bar menu group label', 'event_espresso')
134
-                           . '</span>',
135
-                'href'  => $this->events_admin_url,
136
-                'meta'  => array(
137
-                    'title' => esc_html__('Event Espresso', 'event_espresso'),
138
-                    'class' => $this->menu_class . 'first',
139
-                ),
140
-            )
141
-        );
142
-    }
143
-
144
-
145
-    /**
146
-     * @return void
147
-     */
148
-    private function addEventsSubMenu()
149
-    {
150
-        if ($this->capabilities->current_user_can(
151
-            'ee_read_events',
152
-            'ee_admin_bar_menu_espresso-toolbar-events'
153
-        )
154
-        ) {
155
-            $this->admin_bar->add_menu(
156
-                array(
157
-                    'id'     => 'espresso-toolbar-events',
158
-                    'parent' => 'espresso-toolbar',
159
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
160
-                                . esc_html__('Events', 'event_espresso'),
161
-                    'href'   => $this->events_admin_url,
162
-                    'meta'   => array(
163
-                        'title'  => esc_html__('Events', 'event_espresso'),
164
-                        'target' => '',
165
-                        'class'  => $this->menu_class,
166
-                    ),
167
-                )
168
-            );
169
-        }
170
-    }
171
-
172
-
173
-    /**
174
-     * @return void
175
-     */
176
-    private function addEventsAddEditHeader()
177
-    {
178
-        if ($this->capabilities->current_user_can(
179
-            'ee_read_events',
180
-            'ee_admin_bar_menu_espresso-toolbar-events-view'
181
-        )
182
-        ) {
183
-            $this->admin_bar->add_menu(
184
-                array(
185
-                    'id'     => 'espresso-toolbar-events-add-edit',
186
-                    'parent' => 'espresso-toolbar-events',
187
-                    'title'  => esc_html__('Add / Edit', 'event_espresso'),
188
-                    'href'   => '',
189
-                )
190
-            );
191
-        }
192
-    }
193
-
194
-
195
-    /**
196
-     * @return void
197
-     */
198
-    private function addEventsAddNew()
199
-    {
200
-        if ($this->capabilities->current_user_can(
201
-            'ee_edit_events',
202
-            'ee_admin_bar_menu_espresso-toolbar-events-new'
203
-        )) {
204
-            $this->admin_bar->add_menu(
205
-                array(
206
-                    'id'     => 'espresso-toolbar-events-new',
207
-                    'parent' => 'espresso-toolbar-events',
208
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
209
-                                . esc_html__('Add New', 'event_espresso'),
210
-                    'href'   => EEH_URL::add_query_args_and_nonce(
211
-                        array('action' => 'create_new'),
212
-                        $this->events_admin_url
213
-                    ),
214
-                    'meta'   => array(
215
-                        'title'  => esc_html__('Add New', 'event_espresso'),
216
-                        'target' => '',
217
-                        'class'  => $this->menu_class,
218
-                    ),
219
-                )
220
-            );
221
-        }
222
-    }
223
-
224
-
225
-    /**
226
-     * @return void
227
-     */
228
-    private function addEventsEditCurrentEvent()
229
-    {
230
-        if (is_single() && (get_post_type() === 'espresso_events')) {
231
-            // Current post
232
-            global $post;
233
-            if ($this->capabilities->current_user_can(
234
-                'ee_edit_event',
235
-                'ee_admin_bar_menu_espresso-toolbar-events-edit',
236
-                $post->ID
237
-            )) {
238
-                $this->admin_bar->add_menu(
239
-                    array(
240
-                        'id'     => 'espresso-toolbar-events-edit',
241
-                        'parent' => 'espresso-toolbar-events',
242
-                        'title'  => '<span class="ee-toolbar-icon"></span>'
243
-                                    . esc_html__('Edit Event', 'event_espresso'),
244
-                        'href'   => EEH_URL::add_query_args_and_nonce(
245
-                            array(
246
-                                'action' => 'edit',
247
-                                'post'   => $post->ID,
248
-                            ),
249
-                            $this->events_admin_url
250
-                        ),
251
-                        'meta'   => array(
252
-                            'title'  => esc_html__('Edit Event', 'event_espresso'),
253
-                            'target' => '',
254
-                            'class'  => $this->menu_class,
255
-                        ),
256
-                    )
257
-                );
258
-            }
259
-        }
260
-    }
261
-
262
-
263
-    /**
264
-     * @return void
265
-     */
266
-    private function addEventsViewHeader()
267
-    {
268
-        if ($this->capabilities->current_user_can(
269
-            'ee_read_events',
270
-            'ee_admin_bar_menu_espresso-toolbar-events-view'
271
-        )) {
272
-            $this->admin_bar->add_menu(
273
-                array(
274
-                    'id'     => 'espresso-toolbar-events-view',
275
-                    'parent' => 'espresso-toolbar-events',
276
-                    'title'  => esc_html__('View', 'event_espresso'),
277
-                    'href'   => '',
278
-                )
279
-            );
280
-        }
281
-    }
282
-
283
-
284
-    /**
285
-     * @return void
286
-     */
287
-    private function addEventsViewAll()
288
-    {
289
-        if ($this->capabilities->current_user_can(
290
-            'ee_read_events',
291
-            'ee_admin_bar_menu_espresso-toolbar-events-all'
292
-        )) {
293
-            $this->admin_bar->add_menu(
294
-                array(
295
-                    'id'     => 'espresso-toolbar-events-all',
296
-                    'parent' => 'espresso-toolbar-events',
297
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
298
-                                . esc_html__('All', 'event_espresso'),
299
-                    'href'   => $this->events_admin_url,
300
-                    'meta'   => array(
301
-                        'title'  => esc_html__('All', 'event_espresso'),
302
-                        'target' => '',
303
-                        'class'  => $this->menu_class,
304
-                    ),
305
-                )
306
-            );
307
-        }
308
-    }
309
-
310
-
311
-    /**
312
-     * @return void
313
-     */
314
-    private function addEventsViewToday()
315
-    {
316
-        if ($this->capabilities->current_user_can(
317
-            'ee_read_events',
318
-            'ee_admin_bar_menu_espresso-toolbar-events-today'
319
-        )) {
320
-            $this->admin_bar->add_menu(
321
-                array(
322
-                    'id'     => 'espresso-toolbar-events-today',
323
-                    'parent' => 'espresso-toolbar-events',
324
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
325
-                                . esc_html__('Today', 'event_espresso'),
326
-                    'href'   => EEH_URL::add_query_args_and_nonce(
327
-                        array(
328
-                            'action' => 'default',
329
-                            'status' => 'today',
330
-                        ),
331
-                        $this->events_admin_url
332
-                    ),
333
-                    'meta'   => array(
334
-                        'title'  => esc_html__('Today', 'event_espresso'),
335
-                        'target' => '',
336
-                        'class'  => $this->menu_class,
337
-                    ),
338
-                )
339
-            );
340
-        }
341
-    }
342
-
343
-
344
-    /**
345
-     * @return void
346
-     */
347
-    private function addEventsViewThisMonth()
348
-    {
349
-        if ($this->capabilities->current_user_can(
350
-            'ee_read_events',
351
-            'ee_admin_bar_menu_espresso-toolbar-events-month'
352
-        )) {
353
-            $this->admin_bar->add_menu(
354
-                array(
355
-                    'id'     => 'espresso-toolbar-events-month',
356
-                    'parent' => 'espresso-toolbar-events',
357
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
358
-                                . esc_html__('This Month', 'event_espresso'),
359
-                    'href'   => EEH_URL::add_query_args_and_nonce(
360
-                        array(
361
-                            'action' => 'default',
362
-                            'status' => 'month',
363
-                        ),
364
-                        $this->events_admin_url
365
-                    ),
366
-                    'meta'   => array(
367
-                        'title'  => esc_html__('This Month', 'event_espresso'),
368
-                        'target' => '',
369
-                        'class'  => $this->menu_class,
370
-                    ),
371
-                )
372
-            );
373
-        }
374
-    }
375
-
376
-
377
-    /**
378
-     * @return void
379
-     */
380
-    private function addRegistrationSubMenu()
381
-    {
382
-        if ($this->capabilities->current_user_can(
383
-            'ee_read_registrations',
384
-            'ee_admin_bar_menu_espresso-toolbar-registrations'
385
-        )) {
386
-            $this->admin_bar->add_menu(
387
-                array(
388
-                    'id'     => 'espresso-toolbar-registrations',
389
-                    'parent' => 'espresso-toolbar',
390
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
391
-                                . esc_html__('Registrations', 'event_espresso'),
392
-                    'href'   => $this->reg_admin_url,
393
-                    'meta'   => array(
394
-                        'title'  => esc_html__('Registrations', 'event_espresso'),
395
-                        'target' => '',
396
-                        'class'  => $this->menu_class,
397
-                    ),
398
-                )
399
-            );
400
-        }
401
-    }
402
-
403
-
404
-    /**
405
-     * @return void
406
-     */
407
-    private function addRegistrationOverviewToday()
408
-    {
409
-        if ($this->capabilities->current_user_can(
410
-            'ee_read_registrations',
411
-            'ee_admin_bar_menu_espresso-toolbar-registrations-today'
412
-        )) {
413
-            $this->admin_bar->add_menu(
414
-                array(
415
-                    'id'     => 'espresso-toolbar-registrations-today',
416
-                    'parent' => 'espresso-toolbar-registrations',
417
-                    'title'  => esc_html__('Today', 'event_espresso'),
418
-                    'href'   => '',
419
-                    'meta'   => array(
420
-                        'title'  => esc_html__('Today', 'event_espresso'),
421
-                        'target' => '',
422
-                        'class'  => $this->menu_class,
423
-                    ),
424
-                )
425
-            );
426
-        }
427
-    }
428
-
429
-
430
-    /**
431
-     * @return void
432
-     */
433
-    private function addRegistrationOverviewTodayApproved()
434
-    {
435
-        if ($this->capabilities->current_user_can(
436
-            'ee_read_registrations',
437
-            'ee_admin_bar_menu_espresso-toolbar-registrations-today-approved'
438
-        )) {
439
-            $this->admin_bar->add_menu(
440
-                array(
441
-                    'id'     => 'espresso-toolbar-registrations-today-approved',
442
-                    'parent' => 'espresso-toolbar-registrations',
443
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
444
-                                . esc_html__('Approved', 'event_espresso'),
445
-                    'href'   => EEH_URL::add_query_args_and_nonce(
446
-                        array(
447
-                            'action'      => 'default',
448
-                            'status'      => 'today',
449
-                            '_reg_status' => EEM_Registration::status_id_approved,
450
-                        ),
451
-                        $this->reg_admin_url
452
-                    ),
453
-                    'meta'   => array(
454
-                        'title'  => esc_html__('Approved', 'event_espresso'),
455
-                        'target' => '',
456
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
457
-                    ),
458
-                )
459
-            );
460
-        }
461
-    }
462
-
463
-
464
-    /**
465
-     * @return void
466
-     */
467
-    private function addRegistrationOverviewTodayPendingPayment()
468
-    {
469
-        if ($this->capabilities->current_user_can(
470
-            'ee_read_registrations',
471
-            'ee_admin_bar_menu_espresso-toolbar-registrations-today-pending'
472
-        )) {
473
-            $this->admin_bar->add_menu(
474
-                array(
475
-                    'id'     => 'espresso-toolbar-registrations-today-pending',
476
-                    'parent' => 'espresso-toolbar-registrations',
477
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
478
-                                . esc_html__('Pending', 'event_espresso'),
479
-                    'href'   => EEH_URL::add_query_args_and_nonce(
480
-                        array(
481
-                            'action'      => 'default',
482
-                            'status'      => 'today',
483
-                            '_reg_status' => EEM_Registration::status_id_pending_payment,
484
-                        ),
485
-                        $this->reg_admin_url
486
-                    ),
487
-                    'meta'   => array(
488
-                        'title'  => esc_html__('Pending Payment', 'event_espresso'),
489
-                        'target' => '',
490
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
491
-                    ),
492
-                )
493
-            );
494
-        }
495
-    }
496
-
497
-
498
-    /**
499
-     * @return void
500
-     */
501
-    private function addRegistrationOverviewTodayNotApproved()
502
-    {
503
-        if ($this->capabilities->current_user_can(
504
-            'ee_read_registrations',
505
-            'ee_admin_bar_menu_espresso-toolbar-registrations-today-not-approved'
506
-        )) {
507
-            $this->admin_bar->add_menu(
508
-                array(
509
-                    'id'     => 'espresso-toolbar-registrations-today-not-approved',
510
-                    'parent' => 'espresso-toolbar-registrations',
511
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
512
-                                . esc_html__('Not Approved', 'event_espresso'),
513
-                    'href'   => EEH_URL::add_query_args_and_nonce(
514
-                        array(
515
-                            'action'      => 'default',
516
-                            'status'      => 'today',
517
-                            '_reg_status' => EEM_Registration::status_id_not_approved,
518
-                        ),
519
-                        $this->reg_admin_url
520
-                    ),
521
-                    'meta'   => array(
522
-                        'title'  => esc_html__('Not Approved', 'event_espresso'),
523
-                        'target' => '',
524
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
525
-                    ),
526
-                )
527
-            );
528
-        }
529
-    }
530
-
531
-
532
-    /**
533
-     * @return void
534
-     */
535
-    private function addRegistrationOverviewTodayCancelled()
536
-    {
537
-        if ($this->capabilities->current_user_can(
538
-            'ee_read_registrations',
539
-            'ee_admin_bar_menu_espresso-toolbar-registrations-today-cancelled'
540
-        )) {
541
-            $this->admin_bar->add_menu(
542
-                array(
543
-                    'id'     => 'espresso-toolbar-registrations-today-cancelled',
544
-                    'parent' => 'espresso-toolbar-registrations',
545
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
546
-                                . esc_html__('Cancelled', 'event_espresso'),
547
-                    'href'   => EEH_URL::add_query_args_and_nonce(
548
-                        array(
549
-                            'action'      => 'default',
550
-                            'status'      => 'today',
551
-                            '_reg_status' => EEM_Registration::status_id_cancelled,
552
-                        ),
553
-                        $this->reg_admin_url
554
-                    ),
555
-                    'meta'   => array(
556
-                        'title'  => esc_html__('Cancelled', 'event_espresso'),
557
-                        'target' => '',
558
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
559
-                    ),
560
-                )
561
-            );
562
-        }
563
-    }
564
-
565
-
566
-    /**
567
-     * @return void
568
-     */
569
-    private function addRegistrationOverviewThisMonth()
570
-    {
571
-        if ($this->capabilities->current_user_can(
572
-            'ee_read_registrations',
573
-            'ee_admin_bar_menu_espresso-toolbar-registrations-month'
574
-        )) {
575
-            $this->admin_bar->add_menu(
576
-                array(
577
-                    'id'     => 'espresso-toolbar-registrations-month',
578
-                    'parent' => 'espresso-toolbar-registrations',
579
-                    'title'  => esc_html__('This Month', 'event_espresso'),
580
-                    'href'   => '', // EEH_URL::add_query_args_and_nonce(
581
-                    //     array(
582
-                    //         'action' => 'default',
583
-                    //         'status' => 'month'
584
-                    //     ),
585
-                    //     $this->reg_admin_url
586
-                    // ),
587
-                    'meta'   => array(
588
-                        'title'  => esc_html__('This Month', 'event_espresso'),
589
-                        'target' => '',
590
-                        'class'  => $this->menu_class,
591
-                    ),
592
-                )
593
-            );
594
-        }
595
-    }
596
-
597
-
598
-    /**
599
-     * @return void
600
-     */
601
-    private function addRegistrationOverviewThisMonthApproved()
602
-    {
603
-        if ($this->capabilities->current_user_can(
604
-            'ee_read_registrations',
605
-            'ee_admin_bar_menu_espresso-toolbar-registrations-month-approved'
606
-        )) {
607
-            $this->admin_bar->add_menu(
608
-                array(
609
-                    'id'     => 'espresso-toolbar-registrations-month-approved',
610
-                    'parent' => 'espresso-toolbar-registrations',
611
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
612
-                                . esc_html__('Approved', 'event_espresso'),
613
-                    'href'   => EEH_URL::add_query_args_and_nonce(
614
-                        array(
615
-                            'action'      => 'default',
616
-                            'status'      => 'month',
617
-                            '_reg_status' => EEM_Registration::status_id_approved,
618
-                        ),
619
-                        $this->reg_admin_url
620
-                    ),
621
-                    'meta'   => array(
622
-                        'title'  => esc_html__('Approved', 'event_espresso'),
623
-                        'target' => '',
624
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
625
-                    ),
626
-                )
627
-            );
628
-        }
629
-    }
630
-
631
-
632
-    /**
633
-     * @return void
634
-     */
635
-    private function addRegistrationOverviewThisMonthPending()
636
-    {
637
-        if ($this->capabilities->current_user_can(
638
-            'ee_read_registrations',
639
-            'ee_admin_bar_menu_espresso-toolbar-registrations-month-pending'
640
-        )) {
641
-            $this->admin_bar->add_menu(
642
-                array(
643
-                    'id'     => 'espresso-toolbar-registrations-month-pending',
644
-                    'parent' => 'espresso-toolbar-registrations',
645
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
646
-                                . esc_html__('Pending', 'event_espresso'),
647
-                    'href'   => EEH_URL::add_query_args_and_nonce(
648
-                        array(
649
-                            'action'      => 'default',
650
-                            'status'      => 'month',
651
-                            '_reg_status' => EEM_Registration::status_id_pending_payment,
652
-                        ),
653
-                        $this->reg_admin_url
654
-                    ),
655
-                    'meta'   => array(
656
-                        'title'  => esc_html__('Pending', 'event_espresso'),
657
-                        'target' => '',
658
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
659
-                    ),
660
-                )
661
-            );
662
-        }
663
-    }
664
-
665
-
666
-    /**
667
-     * @return void
668
-     */
669
-    private function addRegistrationOverviewThisMonthNotApproved()
670
-    {
671
-        if ($this->capabilities->current_user_can(
672
-            'ee_read_registrations',
673
-            'ee_admin_bar_menu_espresso-toolbar-registrations-month-not-approved'
674
-        )) {
675
-            $this->admin_bar->add_menu(
676
-                array(
677
-                    'id'     => 'espresso-toolbar-registrations-month-not-approved',
678
-                    'parent' => 'espresso-toolbar-registrations',
679
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
680
-                                . esc_html__('Not Approved', 'event_espresso'),
681
-                    'href'   => EEH_URL::add_query_args_and_nonce(
682
-                        array(
683
-                            'action'      => 'default',
684
-                            'status'      => 'month',
685
-                            '_reg_status' => EEM_Registration::status_id_not_approved,
686
-                        ),
687
-                        $this->reg_admin_url
688
-                    ),
689
-                    'meta'   => array(
690
-                        'title'  => esc_html__('Not Approved', 'event_espresso'),
691
-                        'target' => '',
692
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
693
-                    ),
694
-                )
695
-            );
696
-        }
697
-    }
698
-
699
-
700
-    /**
701
-     * @return void
702
-     */
703
-    private function addRegistrationOverviewThisMonthCancelled()
704
-    {
705
-        if ($this->capabilities->current_user_can(
706
-            'ee_read_registrations',
707
-            'ee_admin_bar_menu_espresso-toolbar-registrations-month-cancelled'
708
-        )) {
709
-            $this->admin_bar->add_menu(
710
-                array(
711
-                    'id'     => 'espresso-toolbar-registrations-month-cancelled',
712
-                    'parent' => 'espresso-toolbar-registrations',
713
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
714
-                                . esc_html__('Cancelled', 'event_espresso'),
715
-                    'href'   => EEH_URL::add_query_args_and_nonce(
716
-                        array(
717
-                            'action'      => 'default',
718
-                            'status'      => 'month',
719
-                            '_reg_status' => EEM_Registration::status_id_cancelled,
720
-                        ),
721
-                        $this->reg_admin_url
722
-                    ),
723
-                    'meta'   => array(
724
-                        'title'  => esc_html__('Cancelled', 'event_espresso'),
725
-                        'target' => '',
726
-                        'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
727
-                    ),
728
-                )
729
-            );
730
-        }
731
-    }
732
-
733
-
734
-    /**
735
-     * @return void
736
-     */
737
-    private function addExtensionsAndServices()
738
-    {
739
-        if ($this->capabilities->current_user_can(
740
-            'ee_read_ee',
741
-            'ee_admin_bar_menu_espresso-toolbar-extensions-and-services'
742
-        )) {
743
-            $this->admin_bar->add_menu(
744
-                array(
745
-                    'id'     => 'espresso-toolbar-extensions-and-services',
746
-                    'parent' => 'espresso-toolbar',
747
-                    'title'  => '<span class="ee-toolbar-icon"></span>'
748
-                                . esc_html__('Extensions & Services', 'event_espresso'),
749
-                    'href'   => admin_url('admin.php?page=espresso_packages'),
750
-                    'meta'   => array(
751
-                        'title'  => esc_html__('Extensions & Services', 'event_espresso'),
752
-                        'target' => '',
753
-                        'class'  => $this->menu_class,
754
-                    ),
755
-                )
756
-            );
757
-        }
758
-    }
22
+	/**
23
+	 * @var WP_Admin_Bar $admin_bar
24
+	 */
25
+	private $admin_bar;
26
+
27
+	/**
28
+	 * @var EE_Capabilities $capabilities
29
+	 */
30
+	private $capabilities;
31
+
32
+	/**
33
+	 * @var string $events_admin_url
34
+	 */
35
+	private $events_admin_url;
36
+
37
+	/**
38
+	 * @var string $menu_class
39
+	 */
40
+	private $menu_class = 'espresso_menu_item_class';
41
+
42
+	/**
43
+	 * @var string $reg_admin_url
44
+	 */
45
+	private $reg_admin_url;
46
+
47
+
48
+	/**
49
+	 * AdminToolBar constructor.
50
+	 *
51
+	 * @param EE_Capabilities $capabilities
52
+	 */
53
+	public function __construct(EE_Capabilities $capabilities)
54
+	{
55
+		$this->capabilities = $capabilities;
56
+		add_action('admin_bar_menu', array($this, 'espressoToolbarItems'), 100);
57
+		$this->enqueueAssets();
58
+	}
59
+
60
+
61
+	/**
62
+	 *    espresso_toolbar_items
63
+	 *
64
+	 * @access public
65
+	 * @param  WP_Admin_Bar $admin_bar
66
+	 * @return void
67
+	 */
68
+	public function espressoToolbarItems(WP_Admin_Bar $admin_bar)
69
+	{
70
+		// if its an AJAX request, or user is NOT an admin, or in full M-Mode
71
+		if (defined('DOING_AJAX')
72
+			|| ! $this->capabilities->current_user_can('ee_read_ee', 'ee_admin_bar_menu_top_level')
73
+			|| EE_Maintenance_Mode::instance()->level() === EE_Maintenance_Mode::level_2_complete_maintenance
74
+		) {
75
+			return;
76
+		}
77
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
78
+		$this->admin_bar = $admin_bar;
79
+		// we don't use the constants EVENTS_ADMIN_URL or REG_ADMIN_URL
80
+		// because they're only defined in each of their respective constructors
81
+		// and this might be a frontend request, in which case they aren't available
82
+		$this->events_admin_url = admin_url('admin.php?page=espresso_events');
83
+		$this->reg_admin_url = admin_url('admin.php?page=espresso_registrations');
84
+		// now let's add all of the menu items
85
+		$this->addTopLevelMenu();
86
+		$this->addEventsSubMenu();
87
+		$this->addEventsAddEditHeader();
88
+		$this->addEventsAddNew();
89
+		$this->addEventsEditCurrentEvent();
90
+		$this->addEventsViewHeader();
91
+		$this->addEventsViewAll();
92
+		$this->addEventsViewToday();
93
+		$this->addEventsViewThisMonth();
94
+		$this->addRegistrationSubMenu();
95
+		$this->addRegistrationOverviewToday();
96
+		$this->addRegistrationOverviewTodayApproved();
97
+		$this->addRegistrationOverviewTodayPendingPayment();
98
+		$this->addRegistrationOverviewTodayNotApproved();
99
+		$this->addRegistrationOverviewTodayCancelled();
100
+		$this->addRegistrationOverviewThisMonth();
101
+		$this->addRegistrationOverviewThisMonthApproved();
102
+		$this->addRegistrationOverviewThisMonthPending();
103
+		$this->addRegistrationOverviewThisMonthNotApproved();
104
+		$this->addRegistrationOverviewThisMonthCancelled();
105
+		$this->addExtensionsAndServices();
106
+	}
107
+
108
+
109
+	/**
110
+	 * @return void
111
+	 */
112
+	private function enqueueAssets()
113
+	{
114
+		wp_register_style(
115
+			'espresso-admin-toolbar',
116
+			EE_GLOBAL_ASSETS_URL . 'css/espresso-admin-toolbar.css',
117
+			array('dashicons'),
118
+			EVENT_ESPRESSO_VERSION
119
+		);
120
+		wp_enqueue_style('espresso-admin-toolbar');
121
+	}
122
+
123
+
124
+	/**
125
+	 * @return void
126
+	 */
127
+	private function addTopLevelMenu()
128
+	{
129
+		$this->admin_bar->add_menu(
130
+			array(
131
+				'id'    => 'espresso-toolbar',
132
+				'title' => '<span class="ee-icon ee-icon-ee-cup-thick ee-icon-size-20"></span><span class="ab-label">'
133
+						   . esc_html_x('Event Espresso', 'admin bar menu group label', 'event_espresso')
134
+						   . '</span>',
135
+				'href'  => $this->events_admin_url,
136
+				'meta'  => array(
137
+					'title' => esc_html__('Event Espresso', 'event_espresso'),
138
+					'class' => $this->menu_class . 'first',
139
+				),
140
+			)
141
+		);
142
+	}
143
+
144
+
145
+	/**
146
+	 * @return void
147
+	 */
148
+	private function addEventsSubMenu()
149
+	{
150
+		if ($this->capabilities->current_user_can(
151
+			'ee_read_events',
152
+			'ee_admin_bar_menu_espresso-toolbar-events'
153
+		)
154
+		) {
155
+			$this->admin_bar->add_menu(
156
+				array(
157
+					'id'     => 'espresso-toolbar-events',
158
+					'parent' => 'espresso-toolbar',
159
+					'title'  => '<span class="ee-toolbar-icon"></span>'
160
+								. esc_html__('Events', 'event_espresso'),
161
+					'href'   => $this->events_admin_url,
162
+					'meta'   => array(
163
+						'title'  => esc_html__('Events', 'event_espresso'),
164
+						'target' => '',
165
+						'class'  => $this->menu_class,
166
+					),
167
+				)
168
+			);
169
+		}
170
+	}
171
+
172
+
173
+	/**
174
+	 * @return void
175
+	 */
176
+	private function addEventsAddEditHeader()
177
+	{
178
+		if ($this->capabilities->current_user_can(
179
+			'ee_read_events',
180
+			'ee_admin_bar_menu_espresso-toolbar-events-view'
181
+		)
182
+		) {
183
+			$this->admin_bar->add_menu(
184
+				array(
185
+					'id'     => 'espresso-toolbar-events-add-edit',
186
+					'parent' => 'espresso-toolbar-events',
187
+					'title'  => esc_html__('Add / Edit', 'event_espresso'),
188
+					'href'   => '',
189
+				)
190
+			);
191
+		}
192
+	}
193
+
194
+
195
+	/**
196
+	 * @return void
197
+	 */
198
+	private function addEventsAddNew()
199
+	{
200
+		if ($this->capabilities->current_user_can(
201
+			'ee_edit_events',
202
+			'ee_admin_bar_menu_espresso-toolbar-events-new'
203
+		)) {
204
+			$this->admin_bar->add_menu(
205
+				array(
206
+					'id'     => 'espresso-toolbar-events-new',
207
+					'parent' => 'espresso-toolbar-events',
208
+					'title'  => '<span class="ee-toolbar-icon"></span>'
209
+								. esc_html__('Add New', 'event_espresso'),
210
+					'href'   => EEH_URL::add_query_args_and_nonce(
211
+						array('action' => 'create_new'),
212
+						$this->events_admin_url
213
+					),
214
+					'meta'   => array(
215
+						'title'  => esc_html__('Add New', 'event_espresso'),
216
+						'target' => '',
217
+						'class'  => $this->menu_class,
218
+					),
219
+				)
220
+			);
221
+		}
222
+	}
223
+
224
+
225
+	/**
226
+	 * @return void
227
+	 */
228
+	private function addEventsEditCurrentEvent()
229
+	{
230
+		if (is_single() && (get_post_type() === 'espresso_events')) {
231
+			// Current post
232
+			global $post;
233
+			if ($this->capabilities->current_user_can(
234
+				'ee_edit_event',
235
+				'ee_admin_bar_menu_espresso-toolbar-events-edit',
236
+				$post->ID
237
+			)) {
238
+				$this->admin_bar->add_menu(
239
+					array(
240
+						'id'     => 'espresso-toolbar-events-edit',
241
+						'parent' => 'espresso-toolbar-events',
242
+						'title'  => '<span class="ee-toolbar-icon"></span>'
243
+									. esc_html__('Edit Event', 'event_espresso'),
244
+						'href'   => EEH_URL::add_query_args_and_nonce(
245
+							array(
246
+								'action' => 'edit',
247
+								'post'   => $post->ID,
248
+							),
249
+							$this->events_admin_url
250
+						),
251
+						'meta'   => array(
252
+							'title'  => esc_html__('Edit Event', 'event_espresso'),
253
+							'target' => '',
254
+							'class'  => $this->menu_class,
255
+						),
256
+					)
257
+				);
258
+			}
259
+		}
260
+	}
261
+
262
+
263
+	/**
264
+	 * @return void
265
+	 */
266
+	private function addEventsViewHeader()
267
+	{
268
+		if ($this->capabilities->current_user_can(
269
+			'ee_read_events',
270
+			'ee_admin_bar_menu_espresso-toolbar-events-view'
271
+		)) {
272
+			$this->admin_bar->add_menu(
273
+				array(
274
+					'id'     => 'espresso-toolbar-events-view',
275
+					'parent' => 'espresso-toolbar-events',
276
+					'title'  => esc_html__('View', 'event_espresso'),
277
+					'href'   => '',
278
+				)
279
+			);
280
+		}
281
+	}
282
+
283
+
284
+	/**
285
+	 * @return void
286
+	 */
287
+	private function addEventsViewAll()
288
+	{
289
+		if ($this->capabilities->current_user_can(
290
+			'ee_read_events',
291
+			'ee_admin_bar_menu_espresso-toolbar-events-all'
292
+		)) {
293
+			$this->admin_bar->add_menu(
294
+				array(
295
+					'id'     => 'espresso-toolbar-events-all',
296
+					'parent' => 'espresso-toolbar-events',
297
+					'title'  => '<span class="ee-toolbar-icon"></span>'
298
+								. esc_html__('All', 'event_espresso'),
299
+					'href'   => $this->events_admin_url,
300
+					'meta'   => array(
301
+						'title'  => esc_html__('All', 'event_espresso'),
302
+						'target' => '',
303
+						'class'  => $this->menu_class,
304
+					),
305
+				)
306
+			);
307
+		}
308
+	}
309
+
310
+
311
+	/**
312
+	 * @return void
313
+	 */
314
+	private function addEventsViewToday()
315
+	{
316
+		if ($this->capabilities->current_user_can(
317
+			'ee_read_events',
318
+			'ee_admin_bar_menu_espresso-toolbar-events-today'
319
+		)) {
320
+			$this->admin_bar->add_menu(
321
+				array(
322
+					'id'     => 'espresso-toolbar-events-today',
323
+					'parent' => 'espresso-toolbar-events',
324
+					'title'  => '<span class="ee-toolbar-icon"></span>'
325
+								. esc_html__('Today', 'event_espresso'),
326
+					'href'   => EEH_URL::add_query_args_and_nonce(
327
+						array(
328
+							'action' => 'default',
329
+							'status' => 'today',
330
+						),
331
+						$this->events_admin_url
332
+					),
333
+					'meta'   => array(
334
+						'title'  => esc_html__('Today', 'event_espresso'),
335
+						'target' => '',
336
+						'class'  => $this->menu_class,
337
+					),
338
+				)
339
+			);
340
+		}
341
+	}
342
+
343
+
344
+	/**
345
+	 * @return void
346
+	 */
347
+	private function addEventsViewThisMonth()
348
+	{
349
+		if ($this->capabilities->current_user_can(
350
+			'ee_read_events',
351
+			'ee_admin_bar_menu_espresso-toolbar-events-month'
352
+		)) {
353
+			$this->admin_bar->add_menu(
354
+				array(
355
+					'id'     => 'espresso-toolbar-events-month',
356
+					'parent' => 'espresso-toolbar-events',
357
+					'title'  => '<span class="ee-toolbar-icon"></span>'
358
+								. esc_html__('This Month', 'event_espresso'),
359
+					'href'   => EEH_URL::add_query_args_and_nonce(
360
+						array(
361
+							'action' => 'default',
362
+							'status' => 'month',
363
+						),
364
+						$this->events_admin_url
365
+					),
366
+					'meta'   => array(
367
+						'title'  => esc_html__('This Month', 'event_espresso'),
368
+						'target' => '',
369
+						'class'  => $this->menu_class,
370
+					),
371
+				)
372
+			);
373
+		}
374
+	}
375
+
376
+
377
+	/**
378
+	 * @return void
379
+	 */
380
+	private function addRegistrationSubMenu()
381
+	{
382
+		if ($this->capabilities->current_user_can(
383
+			'ee_read_registrations',
384
+			'ee_admin_bar_menu_espresso-toolbar-registrations'
385
+		)) {
386
+			$this->admin_bar->add_menu(
387
+				array(
388
+					'id'     => 'espresso-toolbar-registrations',
389
+					'parent' => 'espresso-toolbar',
390
+					'title'  => '<span class="ee-toolbar-icon"></span>'
391
+								. esc_html__('Registrations', 'event_espresso'),
392
+					'href'   => $this->reg_admin_url,
393
+					'meta'   => array(
394
+						'title'  => esc_html__('Registrations', 'event_espresso'),
395
+						'target' => '',
396
+						'class'  => $this->menu_class,
397
+					),
398
+				)
399
+			);
400
+		}
401
+	}
402
+
403
+
404
+	/**
405
+	 * @return void
406
+	 */
407
+	private function addRegistrationOverviewToday()
408
+	{
409
+		if ($this->capabilities->current_user_can(
410
+			'ee_read_registrations',
411
+			'ee_admin_bar_menu_espresso-toolbar-registrations-today'
412
+		)) {
413
+			$this->admin_bar->add_menu(
414
+				array(
415
+					'id'     => 'espresso-toolbar-registrations-today',
416
+					'parent' => 'espresso-toolbar-registrations',
417
+					'title'  => esc_html__('Today', 'event_espresso'),
418
+					'href'   => '',
419
+					'meta'   => array(
420
+						'title'  => esc_html__('Today', 'event_espresso'),
421
+						'target' => '',
422
+						'class'  => $this->menu_class,
423
+					),
424
+				)
425
+			);
426
+		}
427
+	}
428
+
429
+
430
+	/**
431
+	 * @return void
432
+	 */
433
+	private function addRegistrationOverviewTodayApproved()
434
+	{
435
+		if ($this->capabilities->current_user_can(
436
+			'ee_read_registrations',
437
+			'ee_admin_bar_menu_espresso-toolbar-registrations-today-approved'
438
+		)) {
439
+			$this->admin_bar->add_menu(
440
+				array(
441
+					'id'     => 'espresso-toolbar-registrations-today-approved',
442
+					'parent' => 'espresso-toolbar-registrations',
443
+					'title'  => '<span class="ee-toolbar-icon"></span>'
444
+								. esc_html__('Approved', 'event_espresso'),
445
+					'href'   => EEH_URL::add_query_args_and_nonce(
446
+						array(
447
+							'action'      => 'default',
448
+							'status'      => 'today',
449
+							'_reg_status' => EEM_Registration::status_id_approved,
450
+						),
451
+						$this->reg_admin_url
452
+					),
453
+					'meta'   => array(
454
+						'title'  => esc_html__('Approved', 'event_espresso'),
455
+						'target' => '',
456
+						'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
457
+					),
458
+				)
459
+			);
460
+		}
461
+	}
462
+
463
+
464
+	/**
465
+	 * @return void
466
+	 */
467
+	private function addRegistrationOverviewTodayPendingPayment()
468
+	{
469
+		if ($this->capabilities->current_user_can(
470
+			'ee_read_registrations',
471
+			'ee_admin_bar_menu_espresso-toolbar-registrations-today-pending'
472
+		)) {
473
+			$this->admin_bar->add_menu(
474
+				array(
475
+					'id'     => 'espresso-toolbar-registrations-today-pending',
476
+					'parent' => 'espresso-toolbar-registrations',
477
+					'title'  => '<span class="ee-toolbar-icon"></span>'
478
+								. esc_html__('Pending', 'event_espresso'),
479
+					'href'   => EEH_URL::add_query_args_and_nonce(
480
+						array(
481
+							'action'      => 'default',
482
+							'status'      => 'today',
483
+							'_reg_status' => EEM_Registration::status_id_pending_payment,
484
+						),
485
+						$this->reg_admin_url
486
+					),
487
+					'meta'   => array(
488
+						'title'  => esc_html__('Pending Payment', 'event_espresso'),
489
+						'target' => '',
490
+						'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
491
+					),
492
+				)
493
+			);
494
+		}
495
+	}
496
+
497
+
498
+	/**
499
+	 * @return void
500
+	 */
501
+	private function addRegistrationOverviewTodayNotApproved()
502
+	{
503
+		if ($this->capabilities->current_user_can(
504
+			'ee_read_registrations',
505
+			'ee_admin_bar_menu_espresso-toolbar-registrations-today-not-approved'
506
+		)) {
507
+			$this->admin_bar->add_menu(
508
+				array(
509
+					'id'     => 'espresso-toolbar-registrations-today-not-approved',
510
+					'parent' => 'espresso-toolbar-registrations',
511
+					'title'  => '<span class="ee-toolbar-icon"></span>'
512
+								. esc_html__('Not Approved', 'event_espresso'),
513
+					'href'   => EEH_URL::add_query_args_and_nonce(
514
+						array(
515
+							'action'      => 'default',
516
+							'status'      => 'today',
517
+							'_reg_status' => EEM_Registration::status_id_not_approved,
518
+						),
519
+						$this->reg_admin_url
520
+					),
521
+					'meta'   => array(
522
+						'title'  => esc_html__('Not Approved', 'event_espresso'),
523
+						'target' => '',
524
+						'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
525
+					),
526
+				)
527
+			);
528
+		}
529
+	}
530
+
531
+
532
+	/**
533
+	 * @return void
534
+	 */
535
+	private function addRegistrationOverviewTodayCancelled()
536
+	{
537
+		if ($this->capabilities->current_user_can(
538
+			'ee_read_registrations',
539
+			'ee_admin_bar_menu_espresso-toolbar-registrations-today-cancelled'
540
+		)) {
541
+			$this->admin_bar->add_menu(
542
+				array(
543
+					'id'     => 'espresso-toolbar-registrations-today-cancelled',
544
+					'parent' => 'espresso-toolbar-registrations',
545
+					'title'  => '<span class="ee-toolbar-icon"></span>'
546
+								. esc_html__('Cancelled', 'event_espresso'),
547
+					'href'   => EEH_URL::add_query_args_and_nonce(
548
+						array(
549
+							'action'      => 'default',
550
+							'status'      => 'today',
551
+							'_reg_status' => EEM_Registration::status_id_cancelled,
552
+						),
553
+						$this->reg_admin_url
554
+					),
555
+					'meta'   => array(
556
+						'title'  => esc_html__('Cancelled', 'event_espresso'),
557
+						'target' => '',
558
+						'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
559
+					),
560
+				)
561
+			);
562
+		}
563
+	}
564
+
565
+
566
+	/**
567
+	 * @return void
568
+	 */
569
+	private function addRegistrationOverviewThisMonth()
570
+	{
571
+		if ($this->capabilities->current_user_can(
572
+			'ee_read_registrations',
573
+			'ee_admin_bar_menu_espresso-toolbar-registrations-month'
574
+		)) {
575
+			$this->admin_bar->add_menu(
576
+				array(
577
+					'id'     => 'espresso-toolbar-registrations-month',
578
+					'parent' => 'espresso-toolbar-registrations',
579
+					'title'  => esc_html__('This Month', 'event_espresso'),
580
+					'href'   => '', // EEH_URL::add_query_args_and_nonce(
581
+					//     array(
582
+					//         'action' => 'default',
583
+					//         'status' => 'month'
584
+					//     ),
585
+					//     $this->reg_admin_url
586
+					// ),
587
+					'meta'   => array(
588
+						'title'  => esc_html__('This Month', 'event_espresso'),
589
+						'target' => '',
590
+						'class'  => $this->menu_class,
591
+					),
592
+				)
593
+			);
594
+		}
595
+	}
596
+
597
+
598
+	/**
599
+	 * @return void
600
+	 */
601
+	private function addRegistrationOverviewThisMonthApproved()
602
+	{
603
+		if ($this->capabilities->current_user_can(
604
+			'ee_read_registrations',
605
+			'ee_admin_bar_menu_espresso-toolbar-registrations-month-approved'
606
+		)) {
607
+			$this->admin_bar->add_menu(
608
+				array(
609
+					'id'     => 'espresso-toolbar-registrations-month-approved',
610
+					'parent' => 'espresso-toolbar-registrations',
611
+					'title'  => '<span class="ee-toolbar-icon"></span>'
612
+								. esc_html__('Approved', 'event_espresso'),
613
+					'href'   => EEH_URL::add_query_args_and_nonce(
614
+						array(
615
+							'action'      => 'default',
616
+							'status'      => 'month',
617
+							'_reg_status' => EEM_Registration::status_id_approved,
618
+						),
619
+						$this->reg_admin_url
620
+					),
621
+					'meta'   => array(
622
+						'title'  => esc_html__('Approved', 'event_espresso'),
623
+						'target' => '',
624
+						'class'  => $this->menu_class . ' ee-toolbar-icon-approved',
625
+					),
626
+				)
627
+			);
628
+		}
629
+	}
630
+
631
+
632
+	/**
633
+	 * @return void
634
+	 */
635
+	private function addRegistrationOverviewThisMonthPending()
636
+	{
637
+		if ($this->capabilities->current_user_can(
638
+			'ee_read_registrations',
639
+			'ee_admin_bar_menu_espresso-toolbar-registrations-month-pending'
640
+		)) {
641
+			$this->admin_bar->add_menu(
642
+				array(
643
+					'id'     => 'espresso-toolbar-registrations-month-pending',
644
+					'parent' => 'espresso-toolbar-registrations',
645
+					'title'  => '<span class="ee-toolbar-icon"></span>'
646
+								. esc_html__('Pending', 'event_espresso'),
647
+					'href'   => EEH_URL::add_query_args_and_nonce(
648
+						array(
649
+							'action'      => 'default',
650
+							'status'      => 'month',
651
+							'_reg_status' => EEM_Registration::status_id_pending_payment,
652
+						),
653
+						$this->reg_admin_url
654
+					),
655
+					'meta'   => array(
656
+						'title'  => esc_html__('Pending', 'event_espresso'),
657
+						'target' => '',
658
+						'class'  => $this->menu_class . ' ee-toolbar-icon-pending',
659
+					),
660
+				)
661
+			);
662
+		}
663
+	}
664
+
665
+
666
+	/**
667
+	 * @return void
668
+	 */
669
+	private function addRegistrationOverviewThisMonthNotApproved()
670
+	{
671
+		if ($this->capabilities->current_user_can(
672
+			'ee_read_registrations',
673
+			'ee_admin_bar_menu_espresso-toolbar-registrations-month-not-approved'
674
+		)) {
675
+			$this->admin_bar->add_menu(
676
+				array(
677
+					'id'     => 'espresso-toolbar-registrations-month-not-approved',
678
+					'parent' => 'espresso-toolbar-registrations',
679
+					'title'  => '<span class="ee-toolbar-icon"></span>'
680
+								. esc_html__('Not Approved', 'event_espresso'),
681
+					'href'   => EEH_URL::add_query_args_and_nonce(
682
+						array(
683
+							'action'      => 'default',
684
+							'status'      => 'month',
685
+							'_reg_status' => EEM_Registration::status_id_not_approved,
686
+						),
687
+						$this->reg_admin_url
688
+					),
689
+					'meta'   => array(
690
+						'title'  => esc_html__('Not Approved', 'event_espresso'),
691
+						'target' => '',
692
+						'class'  => $this->menu_class . ' ee-toolbar-icon-not-approved',
693
+					),
694
+				)
695
+			);
696
+		}
697
+	}
698
+
699
+
700
+	/**
701
+	 * @return void
702
+	 */
703
+	private function addRegistrationOverviewThisMonthCancelled()
704
+	{
705
+		if ($this->capabilities->current_user_can(
706
+			'ee_read_registrations',
707
+			'ee_admin_bar_menu_espresso-toolbar-registrations-month-cancelled'
708
+		)) {
709
+			$this->admin_bar->add_menu(
710
+				array(
711
+					'id'     => 'espresso-toolbar-registrations-month-cancelled',
712
+					'parent' => 'espresso-toolbar-registrations',
713
+					'title'  => '<span class="ee-toolbar-icon"></span>'
714
+								. esc_html__('Cancelled', 'event_espresso'),
715
+					'href'   => EEH_URL::add_query_args_and_nonce(
716
+						array(
717
+							'action'      => 'default',
718
+							'status'      => 'month',
719
+							'_reg_status' => EEM_Registration::status_id_cancelled,
720
+						),
721
+						$this->reg_admin_url
722
+					),
723
+					'meta'   => array(
724
+						'title'  => esc_html__('Cancelled', 'event_espresso'),
725
+						'target' => '',
726
+						'class'  => $this->menu_class . ' ee-toolbar-icon-cancelled',
727
+					),
728
+				)
729
+			);
730
+		}
731
+	}
732
+
733
+
734
+	/**
735
+	 * @return void
736
+	 */
737
+	private function addExtensionsAndServices()
738
+	{
739
+		if ($this->capabilities->current_user_can(
740
+			'ee_read_ee',
741
+			'ee_admin_bar_menu_espresso-toolbar-extensions-and-services'
742
+		)) {
743
+			$this->admin_bar->add_menu(
744
+				array(
745
+					'id'     => 'espresso-toolbar-extensions-and-services',
746
+					'parent' => 'espresso-toolbar',
747
+					'title'  => '<span class="ee-toolbar-icon"></span>'
748
+								. esc_html__('Extensions & Services', 'event_espresso'),
749
+					'href'   => admin_url('admin.php?page=espresso_packages'),
750
+					'meta'   => array(
751
+						'title'  => esc_html__('Extensions & Services', 'event_espresso'),
752
+						'target' => '',
753
+						'class'  => $this->menu_class,
754
+					),
755
+				)
756
+			);
757
+		}
758
+	}
759 759
 }
Please login to merge, or discard this patch.
admin/extend/messages/Custom_Messages_Template_List_Table.class.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -151,7 +151,7 @@
 block discarded – undo
151 151
      * This provides a count of events using this custom template
152 152
      *
153 153
      * @param  EE_Message_Template_Group $item message_template group data
154
-     * @return string column output
154
+     * @return integer column output
155 155
      */
156 156
     public function column_events($item)
157 157
     {
Please login to merge, or discard this patch.
Indentation   +225 added lines, -225 removed lines patch added patch discarded remove patch
@@ -12,252 +12,252 @@
 block discarded – undo
12 12
 class Custom_Messages_Template_List_Table extends Messages_Template_List_Table
13 13
 {
14 14
 
15
-    /**
16
-     * Setup initial data.
17
-     */
18
-    protected function _setup_data()
19
-    {
20
-        $this->_data = $this->get_admin_page()->get_message_templates(
21
-            $this->_per_page,
22
-            $this->_view,
23
-            false,
24
-            false,
25
-            false
26
-        );
27
-        $this->_all_data_count = $this->get_admin_page()->get_message_templates(
28
-            $this->_per_page,
29
-            $this->_view,
30
-            true,
31
-            true,
32
-            false
33
-        );
34
-    }
15
+	/**
16
+	 * Setup initial data.
17
+	 */
18
+	protected function _setup_data()
19
+	{
20
+		$this->_data = $this->get_admin_page()->get_message_templates(
21
+			$this->_per_page,
22
+			$this->_view,
23
+			false,
24
+			false,
25
+			false
26
+		);
27
+		$this->_all_data_count = $this->get_admin_page()->get_message_templates(
28
+			$this->_per_page,
29
+			$this->_view,
30
+			true,
31
+			true,
32
+			false
33
+		);
34
+	}
35 35
 
36 36
 
37
-    /**
38
-     * Set initial properties
39
-     */
40
-    protected function _set_properties()
41
-    {
42
-        parent::_set_properties();
43
-        $this->_wp_list_args = array(
44
-            'singular' => esc_html__('Message Template Group', 'event_espresso'),
45
-            'plural'   => esc_html__('Message Template', 'event_espresso'),
46
-            'ajax'     => true, // for now,
47
-            'screen'   => $this->get_admin_page()->get_current_screen()->id,
48
-        );
37
+	/**
38
+	 * Set initial properties
39
+	 */
40
+	protected function _set_properties()
41
+	{
42
+		parent::_set_properties();
43
+		$this->_wp_list_args = array(
44
+			'singular' => esc_html__('Message Template Group', 'event_espresso'),
45
+			'plural'   => esc_html__('Message Template', 'event_espresso'),
46
+			'ajax'     => true, // for now,
47
+			'screen'   => $this->get_admin_page()->get_current_screen()->id,
48
+		);
49 49
 
50
-        $this->_columns = array_merge(
51
-            array(
52
-                'cb'   => '<input type="checkbox" />',
53
-                'name' => esc_html__('Template Name', 'event_espresso'),
54
-            ),
55
-            $this->_columns,
56
-            array(
57
-                'events'  => esc_html__('Events', 'event_espresso'),
58
-                'actions' => '',
59
-            )
60
-        );
61
-    }
50
+		$this->_columns = array_merge(
51
+			array(
52
+				'cb'   => '<input type="checkbox" />',
53
+				'name' => esc_html__('Template Name', 'event_espresso'),
54
+			),
55
+			$this->_columns,
56
+			array(
57
+				'events'  => esc_html__('Events', 'event_espresso'),
58
+				'actions' => '',
59
+			)
60
+		);
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * Custom message for when there are no items found.
66
-     *
67
-     * @since 4.3.0
68
-     */
69
-    public function no_items()
70
-    {
71
-        if ($this->_view !== 'trashed') {
72
-            printf(
73
-                esc_html__(
74
-                    '%sNo Custom Templates found.%s To create your first custom message template, go to the "Default Message Templates" tab and click the "Create Custom" button next to the template you want to use as a base for the new one.',
75
-                    'event_espresso'
76
-                ),
77
-                '<strong>',
78
-                '</strong>'
79
-            );
80
-        } else {
81
-            parent::no_items();
82
-        }
83
-    }
64
+	/**
65
+	 * Custom message for when there are no items found.
66
+	 *
67
+	 * @since 4.3.0
68
+	 */
69
+	public function no_items()
70
+	{
71
+		if ($this->_view !== 'trashed') {
72
+			printf(
73
+				esc_html__(
74
+					'%sNo Custom Templates found.%s To create your first custom message template, go to the "Default Message Templates" tab and click the "Create Custom" button next to the template you want to use as a base for the new one.',
75
+					'event_espresso'
76
+				),
77
+				'<strong>',
78
+				'</strong>'
79
+			);
80
+		} else {
81
+			parent::no_items();
82
+		}
83
+	}
84 84
 
85 85
 
86
-    /**
87
-     * @param EE_Message_Template_Group $item
88
-     * @return string
89
-     */
90
-    public function column_cb($item)
91
-    {
92
-        return sprintf('<input type="checkbox" name="checkbox[%s]" value="1" />', $item->GRP_ID());
93
-    }
86
+	/**
87
+	 * @param EE_Message_Template_Group $item
88
+	 * @return string
89
+	 */
90
+	public function column_cb($item)
91
+	{
92
+		return sprintf('<input type="checkbox" name="checkbox[%s]" value="1" />', $item->GRP_ID());
93
+	}
94 94
 
95 95
 
96
-    /**
97
-     * @param EE_Message_Template_Group $item
98
-     * @return string
99
-     */
100
-    public function column_name($item)
101
-    {
102
-        return '<p>' . $item->name() . '</p>';
103
-    }
96
+	/**
97
+	 * @param EE_Message_Template_Group $item
98
+	 * @return string
99
+	 */
100
+	public function column_name($item)
101
+	{
102
+		return '<p>' . $item->name() . '</p>';
103
+	}
104 104
 
105 105
 
106
-    /**
107
-     * @param EE_Message_Template_Group $item
108
-     * @return string
109
-     */
110
-    public function column_actions($item)
111
-    {
112
-        if (EE_Registry::instance()->CAP->current_user_can(
113
-            'ee_edit_messages',
114
-            'espresso_messages_add_new_message_template'
115
-        )) {
116
-            $create_args = array(
117
-                'GRP_ID'       => $item->ID(),
118
-                'messenger'    => $item->messenger(),
119
-                'message_type' => $item->message_type(),
120
-                'action'       => 'add_new_message_template',
121
-            );
122
-            $create_link = EE_Admin_Page::add_query_args_and_nonce($create_args, EE_MSG_ADMIN_URL);
123
-            return sprintf(
124
-                '<p><a href="%s" class="button button-small">%s</a></p>',
125
-                $create_link,
126
-                esc_html__('Create Custom', 'event_espresso')
127
-            );
128
-        }
129
-        return '';
130
-    }
106
+	/**
107
+	 * @param EE_Message_Template_Group $item
108
+	 * @return string
109
+	 */
110
+	public function column_actions($item)
111
+	{
112
+		if (EE_Registry::instance()->CAP->current_user_can(
113
+			'ee_edit_messages',
114
+			'espresso_messages_add_new_message_template'
115
+		)) {
116
+			$create_args = array(
117
+				'GRP_ID'       => $item->ID(),
118
+				'messenger'    => $item->messenger(),
119
+				'message_type' => $item->message_type(),
120
+				'action'       => 'add_new_message_template',
121
+			);
122
+			$create_link = EE_Admin_Page::add_query_args_and_nonce($create_args, EE_MSG_ADMIN_URL);
123
+			return sprintf(
124
+				'<p><a href="%s" class="button button-small">%s</a></p>',
125
+				$create_link,
126
+				esc_html__('Create Custom', 'event_espresso')
127
+			);
128
+		}
129
+		return '';
130
+	}
131 131
 
132
-    /**
133
-     * Set the view counts on the _views property
134
-     */
135
-    protected function _add_view_counts()
136
-    {
137
-        foreach ($this->_views as $view => $args) {
138
-            $this->_views[ $view ]['count'] = $this->get_admin_page()->get_message_templates(
139
-                $this->_per_page,
140
-                $view,
141
-                true,
142
-                true,
143
-                false
144
-            );
145
-        }
146
-    }
132
+	/**
133
+	 * Set the view counts on the _views property
134
+	 */
135
+	protected function _add_view_counts()
136
+	{
137
+		foreach ($this->_views as $view => $args) {
138
+			$this->_views[ $view ]['count'] = $this->get_admin_page()->get_message_templates(
139
+				$this->_per_page,
140
+				$view,
141
+				true,
142
+				true,
143
+				false
144
+			);
145
+		}
146
+	}
147 147
 
148 148
 
149
-    /**
150
-     * column_events
151
-     * This provides a count of events using this custom template
152
-     *
153
-     * @param  EE_Message_Template_Group $item message_template group data
154
-     * @return string column output
155
-     */
156
-    public function column_events($item)
157
-    {
158
-        return $item->count_events();
159
-    }
149
+	/**
150
+	 * column_events
151
+	 * This provides a count of events using this custom template
152
+	 *
153
+	 * @param  EE_Message_Template_Group $item message_template group data
154
+	 * @return string column output
155
+	 */
156
+	public function column_events($item)
157
+	{
158
+		return $item->count_events();
159
+	}
160 160
 
161 161
 
162
-    /**
163
-     * Add additional actions for custom message template list view.
164
-     *
165
-     * @param EE_Message_Template_Group $item
166
-     * @return array
167
-     * @throws EE_Error
168
-     */
169
-    protected function _get_actions_for_messenger_column(EE_Message_Template_Group $item)
170
-    {
171
-        $actions = parent::_get_actions_for_messenger_column($item);
162
+	/**
163
+	 * Add additional actions for custom message template list view.
164
+	 *
165
+	 * @param EE_Message_Template_Group $item
166
+	 * @return array
167
+	 * @throws EE_Error
168
+	 */
169
+	protected function _get_actions_for_messenger_column(EE_Message_Template_Group $item)
170
+	{
171
+		$actions = parent::_get_actions_for_messenger_column($item);
172 172
 
173
-        // add additional actions for trash/restore etc.
174
-        $trash_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
175
-            'action'   => 'trash_message_template',
176
-            'id'       => $item->GRP_ID(),
177
-            'noheader' => true,
178
-        ), EE_MSG_ADMIN_URL);
179
-        // restore link
180
-        $restore_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
181
-            'action'   => 'restore_message_template',
182
-            'id'       => $item->GRP_ID(),
183
-            'noheader' => true,
184
-        ), EE_MSG_ADMIN_URL);
185
-        // delete price link
186
-        $delete_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
187
-            'action'   => 'delete_message_template',
188
-            'id'       => $item->GRP_ID(),
189
-            'noheader' => true,
190
-        ), EE_MSG_ADMIN_URL);
173
+		// add additional actions for trash/restore etc.
174
+		$trash_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
175
+			'action'   => 'trash_message_template',
176
+			'id'       => $item->GRP_ID(),
177
+			'noheader' => true,
178
+		), EE_MSG_ADMIN_URL);
179
+		// restore link
180
+		$restore_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
181
+			'action'   => 'restore_message_template',
182
+			'id'       => $item->GRP_ID(),
183
+			'noheader' => true,
184
+		), EE_MSG_ADMIN_URL);
185
+		// delete price link
186
+		$delete_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array(
187
+			'action'   => 'delete_message_template',
188
+			'id'       => $item->GRP_ID(),
189
+			'noheader' => true,
190
+		), EE_MSG_ADMIN_URL);
191 191
 
192
-        if (! $item->get('MTP_deleted')
193
-            && EE_Registry::instance()->CAP->current_user_can(
194
-                'ee_delete_message',
195
-                'espresso_messages_trash_message_template',
196
-                $item->ID()
197
-            )
198
-        ) {
199
-            $actions['trash'] = '<a href="'
200
-                                . $trash_lnk_url
201
-                                . '" title="'
202
-                                . esc_attr__('Move Template Group to Trash', 'event_espresso')
203
-                                . '">'
204
-                                . esc_html__('Move to Trash', 'event_espresso')
205
-                                . '</a>';
206
-        } else {
207
-            if (EE_Registry::instance()->CAP->current_user_can(
208
-                'ee_delete_message',
209
-                'espresso_messages_restore_message_template',
210
-                $item->ID()
211
-            )) {
212
-                $actions['restore'] = '<a href="'
213
-                                      . $restore_lnk_url
214
-                                      . '" title="'
215
-                                      . esc_attr__('Restore Message Template', 'event_espresso')
216
-                                      . '">'
217
-                                      . esc_html__('Restore', 'event_espresso') . '</a>';
218
-            }
192
+		if (! $item->get('MTP_deleted')
193
+			&& EE_Registry::instance()->CAP->current_user_can(
194
+				'ee_delete_message',
195
+				'espresso_messages_trash_message_template',
196
+				$item->ID()
197
+			)
198
+		) {
199
+			$actions['trash'] = '<a href="'
200
+								. $trash_lnk_url
201
+								. '" title="'
202
+								. esc_attr__('Move Template Group to Trash', 'event_espresso')
203
+								. '">'
204
+								. esc_html__('Move to Trash', 'event_espresso')
205
+								. '</a>';
206
+		} else {
207
+			if (EE_Registry::instance()->CAP->current_user_can(
208
+				'ee_delete_message',
209
+				'espresso_messages_restore_message_template',
210
+				$item->ID()
211
+			)) {
212
+				$actions['restore'] = '<a href="'
213
+									  . $restore_lnk_url
214
+									  . '" title="'
215
+									  . esc_attr__('Restore Message Template', 'event_espresso')
216
+									  . '">'
217
+									  . esc_html__('Restore', 'event_espresso') . '</a>';
218
+			}
219 219
 
220
-            if ($this->_view === 'trashed'
221
-                && EE_Registry::instance()->CAP->current_user_can(
222
-                    'ee_delete_message',
223
-                    'espresso_messages_delete_message_template',
224
-                    $item->ID()
225
-                )) {
226
-                $actions['delete'] = '<a href="'
227
-                                     . $delete_lnk_url
228
-                                     . '" title="'
229
-                                     . esc_attr__('Delete Template Group Permanently', 'event_espresso')
230
-                                     . '">'
231
-                                     . esc_html__('Delete Permanently', 'event_espresso')
232
-                                     . '</a>';
233
-            }
234
-        }
235
-        return $actions;
236
-    }
220
+			if ($this->_view === 'trashed'
221
+				&& EE_Registry::instance()->CAP->current_user_can(
222
+					'ee_delete_message',
223
+					'espresso_messages_delete_message_template',
224
+					$item->ID()
225
+				)) {
226
+				$actions['delete'] = '<a href="'
227
+									 . $delete_lnk_url
228
+									 . '" title="'
229
+									 . esc_attr__('Delete Template Group Permanently', 'event_espresso')
230
+									 . '">'
231
+									 . esc_html__('Delete Permanently', 'event_espresso')
232
+									 . '</a>';
233
+			}
234
+		}
235
+		return $actions;
236
+	}
237 237
 
238 238
 
239
-    /**
240
-     * Generate dropdown filter select input for messengers
241
-     *
242
-     * @param bool $global
243
-     * @return string
244
-     * @throws EE_Error
245
-     */
246
-    protected function _get_messengers_dropdown_filter($global = true)
247
-    {
248
-        return parent::_get_messengers_dropdown_filter(false);
249
-    }
239
+	/**
240
+	 * Generate dropdown filter select input for messengers
241
+	 *
242
+	 * @param bool $global
243
+	 * @return string
244
+	 * @throws EE_Error
245
+	 */
246
+	protected function _get_messengers_dropdown_filter($global = true)
247
+	{
248
+		return parent::_get_messengers_dropdown_filter(false);
249
+	}
250 250
 
251 251
 
252
-    /**
253
-     * Generate dropdown filter select input for message types
254
-     *
255
-     * @param bool $global
256
-     * @return string
257
-     * @throws EE_Error
258
-     */
259
-    protected function _get_message_types_dropdown_filter($global = true)
260
-    {
261
-        return parent::_get_message_types_dropdown_filter(false);
262
-    }
252
+	/**
253
+	 * Generate dropdown filter select input for message types
254
+	 *
255
+	 * @param bool $global
256
+	 * @return string
257
+	 * @throws EE_Error
258
+	 */
259
+	protected function _get_message_types_dropdown_filter($global = true)
260
+	{
261
+		return parent::_get_message_types_dropdown_filter(false);
262
+	}
263 263
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
      */
100 100
     public function column_name($item)
101 101
     {
102
-        return '<p>' . $item->name() . '</p>';
102
+        return '<p>'.$item->name().'</p>';
103 103
     }
104 104
 
105 105
 
@@ -135,7 +135,7 @@  discard block
 block discarded – undo
135 135
     protected function _add_view_counts()
136 136
     {
137 137
         foreach ($this->_views as $view => $args) {
138
-            $this->_views[ $view ]['count'] = $this->get_admin_page()->get_message_templates(
138
+            $this->_views[$view]['count'] = $this->get_admin_page()->get_message_templates(
139 139
                 $this->_per_page,
140 140
                 $view,
141 141
                 true,
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
             'noheader' => true,
190 190
         ), EE_MSG_ADMIN_URL);
191 191
 
192
-        if (! $item->get('MTP_deleted')
192
+        if ( ! $item->get('MTP_deleted')
193 193
             && EE_Registry::instance()->CAP->current_user_can(
194 194
                 'ee_delete_message',
195 195
                 'espresso_messages_trash_message_template',
@@ -214,7 +214,7 @@  discard block
 block discarded – undo
214 214
                                       . '" title="'
215 215
                                       . esc_attr__('Restore Message Template', 'event_espresso')
216 216
                                       . '">'
217
-                                      . esc_html__('Restore', 'event_espresso') . '</a>';
217
+                                      . esc_html__('Restore', 'event_espresso').'</a>';
218 218
             }
219 219
 
220 220
             if ($this->_view === 'trashed'
Please login to merge, or discard this patch.
core/libraries/messages/EE_Message_Template_Group_Collection.lib.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@
 block discarded – undo
47 47
     /**
48 48
      * This retrieves any EE_Message_Template_Group in the repo by its ID.
49 49
      *
50
-     * @param $GRP_ID
50
+     * @param integer $GRP_ID
51 51
      * @return EE_Message_Template_Group | null
52 52
      */
53 53
     public function get_by_ID($GRP_ID)
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -14,115 +14,115 @@
 block discarded – undo
14 14
 {
15 15
 
16 16
 
17
-    /**
18
-     * EE_Message_Template_Group_Collection constructor.
19
-     */
20
-    public function __construct()
21
-    {
22
-        $this->interface = 'EE_Message_Template_Group';
23
-    }
17
+	/**
18
+	 * EE_Message_Template_Group_Collection constructor.
19
+	 */
20
+	public function __construct()
21
+	{
22
+		$this->interface = 'EE_Message_Template_Group';
23
+	}
24 24
 
25 25
 
26
-    /**
27
-     * Adds the Message Template Group object to the repository.
28
-     *
29
-     * @param           $message_template_group
30
-     * @param array|int $EVT_ID    Some templates are specific to EVT, so this is provided as a way of
31
-     *                         indexing the template by key.  If this template is shared among multiple events then
32
-     *                         include the events as an array.
33
-     * @return bool
34
-     */
35
-    public function add($message_template_group, $EVT_ID = array())
36
-    {
37
-        $EVT_ID = is_array($EVT_ID) ? $EVT_ID : (array) $EVT_ID;
38
-        if ($message_template_group instanceof $this->interface) {
39
-            $data['key'] = $this->getKey(
40
-                $message_template_group->messenger(),
41
-                $message_template_group->message_type(),
42
-                $EVT_ID
43
-            );
44
-            return parent::add($message_template_group, $data);
45
-        }
46
-        return false;
47
-    }
26
+	/**
27
+	 * Adds the Message Template Group object to the repository.
28
+	 *
29
+	 * @param           $message_template_group
30
+	 * @param array|int $EVT_ID    Some templates are specific to EVT, so this is provided as a way of
31
+	 *                         indexing the template by key.  If this template is shared among multiple events then
32
+	 *                         include the events as an array.
33
+	 * @return bool
34
+	 */
35
+	public function add($message_template_group, $EVT_ID = array())
36
+	{
37
+		$EVT_ID = is_array($EVT_ID) ? $EVT_ID : (array) $EVT_ID;
38
+		if ($message_template_group instanceof $this->interface) {
39
+			$data['key'] = $this->getKey(
40
+				$message_template_group->messenger(),
41
+				$message_template_group->message_type(),
42
+				$EVT_ID
43
+			);
44
+			return parent::add($message_template_group, $data);
45
+		}
46
+		return false;
47
+	}
48 48
 
49 49
 
50
-    /**
51
-     * This retrieves any EE_Message_Template_Group in the repo by its ID.
52
-     *
53
-     * @param $GRP_ID
54
-     * @return EE_Message_Template_Group | null
55
-     */
56
-    public function get_by_ID($GRP_ID)
57
-    {
58
-        $this->rewind();
59
-        while ($this->valid()) {
60
-            if ($this->current()->ID() === $GRP_ID) {
61
-                /** @var EE_Message_Template_Group $message_template_group */
62
-                $message_template_group = $this->current();
63
-                $this->rewind();
64
-                return $message_template_group;
65
-            }
66
-            $this->next();
67
-        }
68
-        return null;
69
-    }
50
+	/**
51
+	 * This retrieves any EE_Message_Template_Group in the repo by its ID.
52
+	 *
53
+	 * @param $GRP_ID
54
+	 * @return EE_Message_Template_Group | null
55
+	 */
56
+	public function get_by_ID($GRP_ID)
57
+	{
58
+		$this->rewind();
59
+		while ($this->valid()) {
60
+			if ($this->current()->ID() === $GRP_ID) {
61
+				/** @var EE_Message_Template_Group $message_template_group */
62
+				$message_template_group = $this->current();
63
+				$this->rewind();
64
+				return $message_template_group;
65
+			}
66
+			$this->next();
67
+		}
68
+		return null;
69
+	}
70 70
 
71 71
 
72
-    /**
73
-     * Generates a hash used to identify a given Message Template Group.
74
-     *
75
-     * @param string $messenger    The EE_messenger->name
76
-     * @param string $message_type The EE_message_type->name
77
-     * @param int    $EVT_ID       Optional.  If the template is for a specific EVT then that should be included.
78
-     * @deprecated 4.9.40.rc.017  Use getKey instead.
79
-     * @return string
80
-     */
81
-    public function get_key($messenger, $message_type, $EVT_ID = 0)
82
-    {
83
-        $EVT_ID = (array) $EVT_ID;
84
-        return $this->getKey($messenger, $message_type, $EVT_ID);
85
-    }
72
+	/**
73
+	 * Generates a hash used to identify a given Message Template Group.
74
+	 *
75
+	 * @param string $messenger    The EE_messenger->name
76
+	 * @param string $message_type The EE_message_type->name
77
+	 * @param int    $EVT_ID       Optional.  If the template is for a specific EVT then that should be included.
78
+	 * @deprecated 4.9.40.rc.017  Use getKey instead.
79
+	 * @return string
80
+	 */
81
+	public function get_key($messenger, $message_type, $EVT_ID = 0)
82
+	{
83
+		$EVT_ID = (array) $EVT_ID;
84
+		return $this->getKey($messenger, $message_type, $EVT_ID);
85
+	}
86 86
 
87 87
 
88
-    /**
89
-     * Generates a hash used to identify a given Message Template Group
90
-     * @param string    $messenger      The EE_messenger->name
91
-     * @param string    $message_type   The EE_message_type->name
92
-     * @param array     $EVT_ID         Optional.  If the template is for a specific EVT_ID (or events) then that should
93
-     *                                  be included.
94
-     * @since 4.9.40.rc.017
95
-     * @return string
96
-     */
97
-    public function getKey($messenger, $message_type, array $EVT_ID = array())
98
-    {
99
-        sort($EVT_ID);
100
-        $EVT_ID = implode(',', array_unique($EVT_ID));
101
-        return md5($messenger . $message_type . $EVT_ID);
102
-    }
88
+	/**
89
+	 * Generates a hash used to identify a given Message Template Group
90
+	 * @param string    $messenger      The EE_messenger->name
91
+	 * @param string    $message_type   The EE_message_type->name
92
+	 * @param array     $EVT_ID         Optional.  If the template is for a specific EVT_ID (or events) then that should
93
+	 *                                  be included.
94
+	 * @since 4.9.40.rc.017
95
+	 * @return string
96
+	 */
97
+	public function getKey($messenger, $message_type, array $EVT_ID = array())
98
+	{
99
+		sort($EVT_ID);
100
+		$EVT_ID = implode(',', array_unique($EVT_ID));
101
+		return md5($messenger . $message_type . $EVT_ID);
102
+	}
103 103
 
104 104
 
105
-    /**
106
-     * This returns a saved EE_Message_Template_Group object if there is one in the repository indexed by a key matching
107
-     * the given string.
108
-     *
109
-     * @param string $key @see EE_Message_Template_Group::get_key() to setup a key formatted for searching.
110
-     * @return null|EE_Message_Template_Group
111
-     */
112
-    public function get_by_key($key)
113
-    {
114
-        $this->rewind();
115
-        while ($this->valid()) {
116
-            $data = $this->getInfo();
117
-            if (isset($data['key']) && $data['key'] === $key) {
118
-                /** @var EE_Message_Template_Group $message_template_group */
119
-                $message_template_group = $this->current();
120
-                $this->rewind();
121
-                return $message_template_group;
122
-            }
123
-            $this->next();
124
-        }
125
-        return null;
126
-    }
105
+	/**
106
+	 * This returns a saved EE_Message_Template_Group object if there is one in the repository indexed by a key matching
107
+	 * the given string.
108
+	 *
109
+	 * @param string $key @see EE_Message_Template_Group::get_key() to setup a key formatted for searching.
110
+	 * @return null|EE_Message_Template_Group
111
+	 */
112
+	public function get_by_key($key)
113
+	{
114
+		$this->rewind();
115
+		while ($this->valid()) {
116
+			$data = $this->getInfo();
117
+			if (isset($data['key']) && $data['key'] === $key) {
118
+				/** @var EE_Message_Template_Group $message_template_group */
119
+				$message_template_group = $this->current();
120
+				$this->rewind();
121
+				return $message_template_group;
122
+			}
123
+			$this->next();
124
+		}
125
+		return null;
126
+	}
127 127
 
128 128
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -98,7 +98,7 @@
 block discarded – undo
98 98
     {
99 99
         sort($EVT_ID);
100 100
         $EVT_ID = implode(',', array_unique($EVT_ID));
101
-        return md5($messenger . $message_type . $EVT_ID);
101
+        return md5($messenger.$message_type.$EVT_ID);
102 102
     }
103 103
 
104 104
 
Please login to merge, or discard this patch.
public/template_tags.php 3 patches
Doc Comments   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
  * can_use_espresso_conditionals
131 131
  * tests whether the Espresso Conditional tags like is_espresso_event_single() can be called
132 132
  *
133
- * @param $conditional_tag
133
+ * @param string $conditional_tag
134 134
  * @return bool
135 135
  */
136 136
 function can_use_espresso_conditionals( $conditional_tag ) {
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 if ( ! function_exists( 'espresso_ticket_selector' )) {
202 202
 	/**
203 203
 	 * espresso_ticket_selector
204
-	 * @param null $event
204
+	 * @param EE_Event $event
205 205
 	 */
206 206
 	function espresso_ticket_selector( $event = NULL ) {
207 207
 		if (  ! apply_filters( 'FHEE_disable_espresso_ticket_selector', FALSE ) ) {
@@ -842,7 +842,7 @@  discard block
 block discarded – undo
842 842
 	/**
843 843
 	 * espresso_event_venues
844 844
 	 *
845
-	 * @return array  all venues related to an event
845
+	 * @return EE_Venue[]  all venues related to an event
846 846
 	 */
847 847
 	function espresso_event_venues() {
848 848
 		return EEH_Venue_View::get_event_venues();
@@ -875,7 +875,7 @@  discard block
 block discarded – undo
875 875
 	 *
876 876
 	 * @param int     $VNU_ID optional, the venue id to check.
877 877
 	 *
878
-	 * @return bool | null
878
+	 * @return null|boolean | null
879 879
 	 */
880 880
 	function espresso_is_venue_private( $VNU_ID = 0 ) {
881 881
 		return EEH_Venue_View::is_venue_private( $VNU_ID );
@@ -889,7 +889,7 @@  discard block
 block discarded – undo
889 889
 	 * returns true or false if a venue is password protected or not
890 890
 	 *
891 891
 	 * @param int     $VNU_ID optional, the venue id to check.
892
-	 * @return string
892
+	 * @return boolean
893 893
 	 */
894 894
 	function espresso_venue_is_password_protected( $VNU_ID = 0 ) {
895 895
 		EE_Registry::instance()->load_helper( 'Venue_View' );
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -206,7 +206,7 @@
 block discarded – undo
206 206
 	function espresso_ticket_selector( $event = NULL ) {
207 207
 		if (  ! apply_filters( 'FHEE_disable_espresso_ticket_selector', FALSE ) ) {
208 208
 			espresso_load_ticket_selector();
209
-            \EED_Ticket_Selector::set_definitions();
209
+			\EED_Ticket_Selector::set_definitions();
210 210
 			echo EED_Ticket_Selector::display_ticket_selector( $event );
211 211
 		}
212 212
 	}
Please login to merge, or discard this patch.
Spacing   +289 added lines, -289 removed lines patch added patch discarded remove patch
@@ -14,12 +14,12 @@  discard block
 block discarded – undo
14 14
  * @param int | \EE_Event $event
15 15
  * @return bool
16 16
  */
17
-function is_espresso_event( $event = NULL ) {
18
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
17
+function is_espresso_event($event = NULL) {
18
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
19 19
 		// extract EE_Event object from passed param regardless of what it is (within reason of course)
20
-		$event = EEH_Event_View::get_event( $event );
20
+		$event = EEH_Event_View::get_event($event);
21 21
 		// do we have a valid event ?
22
-		return $event instanceof EE_Event  ? TRUE : FALSE;
22
+		return $event instanceof EE_Event ? TRUE : FALSE;
23 23
 	}
24 24
 	return FALSE;
25 25
 }
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
  * @return bool
32 32
  */
33 33
 function is_espresso_event_single() {
34
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
34
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
35 35
 		global $wp_query;
36 36
 		// return conditionals set by CPTs
37 37
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_event_single : FALSE;
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
  * @return bool
47 47
  */
48 48
 function is_espresso_event_archive() {
49
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
49
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
50 50
 		global $wp_query;
51 51
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_event_archive : FALSE;
52 52
 	}
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
  * @return bool
61 61
  */
62 62
 function is_espresso_event_taxonomy() {
63
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
63
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
64 64
 		global $wp_query;
65 65
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_event_taxonomy : FALSE;
66 66
 	}
@@ -74,10 +74,10 @@  discard block
 block discarded – undo
74 74
  * @param int | \EE_Venue $venue
75 75
  * @return bool
76 76
  */
77
-function is_espresso_venue( $venue = NULL ) {
78
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
77
+function is_espresso_venue($venue = NULL) {
78
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
79 79
 		// extract EE_Venue object from passed param regardless of what it is (within reason of course)
80
-		$venue = EEH_Venue_View::get_venue( $venue, FALSE );
80
+		$venue = EEH_Venue_View::get_venue($venue, FALSE);
81 81
 		// do we have a valid event ?
82 82
 		return $venue instanceof EE_Venue ? TRUE : FALSE;
83 83
 	}
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
  * @return bool
92 92
  */
93 93
 function is_espresso_venue_single() {
94
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
94
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
95 95
 		global $wp_query;
96 96
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_venue_single : FALSE;
97 97
 	}
@@ -105,7 +105,7 @@  discard block
 block discarded – undo
105 105
  * @return bool
106 106
  */
107 107
 function is_espresso_venue_archive() {
108
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
108
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
109 109
 		global $wp_query;
110 110
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_venue_archive : FALSE;
111 111
 	}
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
  * @return bool
120 120
  */
121 121
 function is_espresso_venue_taxonomy() {
122
-	if ( can_use_espresso_conditionals( __FUNCTION__ )) {
122
+	if (can_use_espresso_conditionals(__FUNCTION__)) {
123 123
 		global $wp_query;
124 124
 		return $wp_query instanceof WP_Query ? $wp_query->is_espresso_venue_taxonomy : FALSE;
125 125
 	}
@@ -133,12 +133,12 @@  discard block
 block discarded – undo
133 133
  * @param $conditional_tag
134 134
  * @return bool
135 135
  */
136
-function can_use_espresso_conditionals( $conditional_tag ) {
137
-	if ( ! did_action( 'AHEE__EE_System__initialize' )) {
136
+function can_use_espresso_conditionals($conditional_tag) {
137
+	if ( ! did_action('AHEE__EE_System__initialize')) {
138 138
 		EE_Error::doing_it_wrong(
139 139
 			__FUNCTION__,
140 140
 			sprintf(
141
-				__( 'The "%s" conditional tag can not be used until after the "init" hook has run, but works best when used within a theme\'s template files.','event_espresso'),
141
+				__('The "%s" conditional tag can not be used until after the "init" hook has run, but works best when used within a theme\'s template files.', 'event_espresso'),
142 142
 				$conditional_tag
143 143
 			),
144 144
 			'4.4.0'
@@ -153,13 +153,13 @@  discard block
 block discarded – undo
153 153
 
154 154
 /*************************** Event Queries ***************************/
155 155
 
156
-if ( ! function_exists( 'espresso_get_events' )) {
156
+if ( ! function_exists('espresso_get_events')) {
157 157
 	/**
158 158
 	 * 	espresso_get_events
159 159
 	 * @param array $params
160 160
 	 * @return array
161 161
 	 */
162
-	function espresso_get_events( $params = array() ) {
162
+	function espresso_get_events($params = array()) {
163 163
 		//set default params
164 164
 		$default_espresso_events_params = array(
165 165
 			'limit' => 10,
@@ -170,18 +170,18 @@  discard block
 block discarded – undo
170 170
 			'sort' => 'ASC'
171 171
 		);
172 172
 		// allow the defaults to be filtered
173
-		$default_espresso_events_params = apply_filters( 'espresso_get_events__default_espresso_events_params', $default_espresso_events_params );
173
+		$default_espresso_events_params = apply_filters('espresso_get_events__default_espresso_events_params', $default_espresso_events_params);
174 174
 		// grab params and merge with defaults, then extract
175
-		$params = array_merge( $default_espresso_events_params, $params );
175
+		$params = array_merge($default_espresso_events_params, $params);
176 176
 		// run the query
177
-		$events_query = new EventEspresso\core\domain\services\wp_queries\EventListQuery( $params );
177
+		$events_query = new EventEspresso\core\domain\services\wp_queries\EventListQuery($params);
178 178
 		// assign results to a variable so we can return it
179 179
 		$events = $events_query->have_posts() ? $events_query->posts : array();
180 180
 		// but first reset the query and postdata
181 181
 		wp_reset_query();
182 182
 		wp_reset_postdata();
183 183
 		EED_Events_Archive::remove_all_events_archive_filters();
184
-		unset( $events_query );
184
+		unset($events_query);
185 185
 		return $events;
186 186
 	}
187 187
 }
@@ -195,33 +195,33 @@  discard block
 block discarded – undo
195 195
  * espresso_load_ticket_selector
196 196
  */
197 197
 function espresso_load_ticket_selector() {
198
-	EE_Registry::instance()->load_file( EE_MODULES . 'ticket_selector', 'EED_Ticket_Selector', 'module' );
198
+	EE_Registry::instance()->load_file(EE_MODULES.'ticket_selector', 'EED_Ticket_Selector', 'module');
199 199
 }
200 200
 
201
-if ( ! function_exists( 'espresso_ticket_selector' )) {
201
+if ( ! function_exists('espresso_ticket_selector')) {
202 202
 	/**
203 203
 	 * espresso_ticket_selector
204 204
 	 * @param null $event
205 205
 	 */
206
-	function espresso_ticket_selector( $event = NULL ) {
207
-		if (  ! apply_filters( 'FHEE_disable_espresso_ticket_selector', FALSE ) ) {
206
+	function espresso_ticket_selector($event = NULL) {
207
+		if ( ! apply_filters('FHEE_disable_espresso_ticket_selector', FALSE)) {
208 208
 			espresso_load_ticket_selector();
209 209
             \EED_Ticket_Selector::set_definitions();
210
-			echo EED_Ticket_Selector::display_ticket_selector( $event );
210
+			echo EED_Ticket_Selector::display_ticket_selector($event);
211 211
 		}
212 212
 	}
213 213
 }
214 214
 
215 215
 
216
-	if ( ! function_exists( 'espresso_view_details_btn' )) {
216
+	if ( ! function_exists('espresso_view_details_btn')) {
217 217
 	/**
218 218
 	 * espresso_view_details_btn
219 219
 	 * @param null $event
220 220
 	 */
221
-	function espresso_view_details_btn( $event = NULL ) {
222
-		if (  ! apply_filters( 'FHEE_disable_espresso_view_details_btn', FALSE ) ) {
221
+	function espresso_view_details_btn($event = NULL) {
222
+		if ( ! apply_filters('FHEE_disable_espresso_view_details_btn', FALSE)) {
223 223
 			espresso_load_ticket_selector();
224
-			echo EED_Ticket_Selector::display_ticket_selector( $event, TRUE );
224
+			echo EED_Ticket_Selector::display_ticket_selector($event, TRUE);
225 225
 		}
226 226
 	}
227 227
 }
@@ -231,7 +231,7 @@  discard block
 block discarded – undo
231 231
 
232 232
 /*************************** EEH_Event_View ***************************/
233 233
 
234
-if ( ! function_exists( 'espresso_load_event_list_assets' )) {
234
+if ( ! function_exists('espresso_load_event_list_assets')) {
235 235
 	/**
236 236
 	 * espresso_load_event_list_assets
237 237
 	 * ensures that event list styles and scripts are loaded
@@ -240,13 +240,13 @@  discard block
 block discarded – undo
240 240
 	 */
241 241
 	function espresso_load_event_list_assets() {
242 242
 		$event_list = EED_Events_Archive::instance();
243
-		add_action( 'AHEE__EE_System__initialize_last', array( $event_list, 'load_event_list_assets' ), 10 );
244
-		add_filter( 'FHEE_enable_default_espresso_css', '__return_true' );
243
+		add_action('AHEE__EE_System__initialize_last', array($event_list, 'load_event_list_assets'), 10);
244
+		add_filter('FHEE_enable_default_espresso_css', '__return_true');
245 245
 	}
246 246
 }
247 247
 
248 248
 
249
-if ( ! function_exists( 'espresso_event_reg_button' )) {
249
+if ( ! function_exists('espresso_event_reg_button')) {
250 250
 	/**
251 251
 	 * espresso_event_reg_button
252 252
 	 * returns the "Register Now" button if event is active,
@@ -258,9 +258,9 @@  discard block
 block discarded – undo
258 258
 	 * @param bool $EVT_ID
259 259
 	 * @return string
260 260
 	 */
261
-	function espresso_event_reg_button( $btn_text_if_active = NULL, $btn_text_if_inactive = FALSE, $EVT_ID = FALSE ) {
262
-		$event_status = EEH_Event_View::event_active_status( $EVT_ID );
263
-		switch ( $event_status ) {
261
+	function espresso_event_reg_button($btn_text_if_active = NULL, $btn_text_if_inactive = FALSE, $EVT_ID = FALSE) {
262
+		$event_status = EEH_Event_View::event_active_status($EVT_ID);
263
+		switch ($event_status) {
264 264
 			case EE_Datetime::sold_out :
265 265
 				$btn_text = __('Sold Out', 'event_espresso');
266 266
 				$class = 'ee-pink';
@@ -276,10 +276,10 @@  discard block
 block discarded – undo
276 276
 			case EE_Datetime::upcoming :
277 277
 			case EE_Datetime::active :
278 278
 			default :
279
-				$btn_text =! empty( $btn_text_if_active ) ? $btn_text_if_active : __( 'Register Now', 'event_espresso' );
279
+				$btn_text = ! empty($btn_text_if_active) ? $btn_text_if_active : __('Register Now', 'event_espresso');
280 280
 				$class = 'ee-green';
281 281
 		}
282
-		if ( $event_status < 1 && ! empty( $btn_text_if_inactive )) {
282
+		if ($event_status < 1 && ! empty($btn_text_if_inactive)) {
283 283
 			$btn_text = $btn_text_if_inactive;
284 284
 			$class = 'ee-grey';
285 285
 		}
@@ -293,7 +293,7 @@  discard block
 block discarded – undo
293 293
 
294 294
 
295 295
 
296
-if ( ! function_exists( 'espresso_display_ticket_selector' )) {
296
+if ( ! function_exists('espresso_display_ticket_selector')) {
297 297
 	/**
298 298
 	 * espresso_display_ticket_selector
299 299
 	 * whether or not to display the Ticket Selector for an event
@@ -301,14 +301,14 @@  discard block
 block discarded – undo
301 301
 	 * @param bool $EVT_ID
302 302
 	 * @return boolean
303 303
 	 */
304
-	function espresso_display_ticket_selector( $EVT_ID = FALSE ) {
305
-		return EEH_Event_View::display_ticket_selector( $EVT_ID );
304
+	function espresso_display_ticket_selector($EVT_ID = FALSE) {
305
+		return EEH_Event_View::display_ticket_selector($EVT_ID);
306 306
 	}
307 307
 }
308 308
 
309 309
 
310 310
 
311
-if ( ! function_exists( 'espresso_event_status_banner' )) {
311
+if ( ! function_exists('espresso_event_status_banner')) {
312 312
 	/**
313 313
 	 * espresso_event_status
314 314
 	 * returns a banner showing the event status if it is sold out, expired, or inactive
@@ -316,13 +316,13 @@  discard block
 block discarded – undo
316 316
 	 * @param bool $EVT_ID
317 317
 	 * @return string
318 318
 	 */
319
-	function espresso_event_status_banner( $EVT_ID = FALSE ) {
320
-		return EEH_Event_View::event_status( $EVT_ID );
319
+	function espresso_event_status_banner($EVT_ID = FALSE) {
320
+		return EEH_Event_View::event_status($EVT_ID);
321 321
 	}
322 322
 }
323 323
 
324 324
 
325
-if ( ! function_exists( 'espresso_event_status' )) {
325
+if ( ! function_exists('espresso_event_status')) {
326 326
 	/**
327 327
 	 * espresso_event_status
328 328
 	 * returns the event status if it is sold out, expired, or inactive
@@ -331,13 +331,13 @@  discard block
 block discarded – undo
331 331
 	 * @param bool $echo
332 332
 	 * @return string
333 333
 	 */
334
-	function espresso_event_status( $EVT_ID = 0, $echo = TRUE ) {
335
-		return EEH_Event_View::event_active_status( $EVT_ID, $echo );
334
+	function espresso_event_status($EVT_ID = 0, $echo = TRUE) {
335
+		return EEH_Event_View::event_active_status($EVT_ID, $echo);
336 336
 	}
337 337
 }
338 338
 
339 339
 
340
-if ( ! function_exists( 'espresso_event_categories' )) {
340
+if ( ! function_exists('espresso_event_categories')) {
341 341
 	/**
342 342
 	 * espresso_event_categories
343 343
 	 * returns the terms associated with an event
@@ -347,17 +347,17 @@  discard block
 block discarded – undo
347 347
 	 * @param bool $echo
348 348
 	 * @return string
349 349
 	 */
350
-	function espresso_event_categories( $EVT_ID = 0, $hide_uncategorized = TRUE, $echo = TRUE ) {
351
-		if ( $echo ) {
352
-			echo EEH_Event_View::event_categories( $EVT_ID, $hide_uncategorized );
350
+	function espresso_event_categories($EVT_ID = 0, $hide_uncategorized = TRUE, $echo = TRUE) {
351
+		if ($echo) {
352
+			echo EEH_Event_View::event_categories($EVT_ID, $hide_uncategorized);
353 353
 			return '';
354 354
 		}
355
-		return EEH_Event_View::event_categories( $EVT_ID, $hide_uncategorized );
355
+		return EEH_Event_View::event_categories($EVT_ID, $hide_uncategorized);
356 356
 	}
357 357
 }
358 358
 
359 359
 
360
-if ( ! function_exists( 'espresso_event_tickets_available' )) {
360
+if ( ! function_exists('espresso_event_tickets_available')) {
361 361
 	/**
362 362
 	 * espresso_event_tickets_available
363 363
 	 * returns the ticket types available for purchase for an event
@@ -367,26 +367,26 @@  discard block
 block discarded – undo
367 367
 	 * @param bool $format
368 368
 	 * @return string
369 369
 	 */
370
-	function espresso_event_tickets_available( $EVT_ID = 0, $echo = TRUE, $format = TRUE ) {
371
-		$tickets = EEH_Event_View::event_tickets_available( $EVT_ID );
372
-		if ( is_array( $tickets ) && ! empty( $tickets )) {
370
+	function espresso_event_tickets_available($EVT_ID = 0, $echo = TRUE, $format = TRUE) {
371
+		$tickets = EEH_Event_View::event_tickets_available($EVT_ID);
372
+		if (is_array($tickets) && ! empty($tickets)) {
373 373
 			// if formatting then $html will be a string, else it will be an array of ticket objects
374
-			$html = $format ? '<ul id="ee-event-tickets-ul-' . $EVT_ID . '" class="ee-event-tickets-ul">' : array();
375
-			foreach ( $tickets as $ticket ) {
376
-				if ( $ticket instanceof EE_Ticket ) {
377
-					if ( $format ) {
378
-						$html .= '<li id="ee-event-tickets-li-' . $ticket->ID() . '" class="ee-event-tickets-li">';
379
-						$html .= $ticket->name() . ' ' . EEH_Template::format_currency( $ticket->get_ticket_total_with_taxes() );
374
+			$html = $format ? '<ul id="ee-event-tickets-ul-'.$EVT_ID.'" class="ee-event-tickets-ul">' : array();
375
+			foreach ($tickets as $ticket) {
376
+				if ($ticket instanceof EE_Ticket) {
377
+					if ($format) {
378
+						$html .= '<li id="ee-event-tickets-li-'.$ticket->ID().'" class="ee-event-tickets-li">';
379
+						$html .= $ticket->name().' '.EEH_Template::format_currency($ticket->get_ticket_total_with_taxes());
380 380
 						$html .= '</li>';
381 381
 					} else {
382 382
 						$html[] = $ticket;
383 383
 					}
384 384
 				}
385 385
 			}
386
-			if ( $format ) {
386
+			if ($format) {
387 387
 				$html .= '</ul>';
388 388
 			}
389
-			if ( $echo && $format ) {
389
+			if ($echo && $format) {
390 390
 				echo $html;
391 391
 				return '';
392 392
 			}
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
 	}
397 397
 }
398 398
 
399
-if ( ! function_exists( 'espresso_event_date_obj' )) {
399
+if ( ! function_exists('espresso_event_date_obj')) {
400 400
 	/**
401 401
 	 * espresso_event_date_obj
402 402
 	 * returns the primary date object for an event
@@ -404,13 +404,13 @@  discard block
 block discarded – undo
404 404
 	 * @param bool $EVT_ID
405 405
 	 * @return object
406 406
 	 */
407
-	function espresso_event_date_obj( $EVT_ID = FALSE ) {
408
-		return EEH_Event_View::get_primary_date_obj( $EVT_ID );
407
+	function espresso_event_date_obj($EVT_ID = FALSE) {
408
+		return EEH_Event_View::get_primary_date_obj($EVT_ID);
409 409
 	}
410 410
 }
411 411
 
412 412
 
413
-if ( ! function_exists( 'espresso_event_date' )) {
413
+if ( ! function_exists('espresso_event_date')) {
414 414
 	/**
415 415
 	 * espresso_event_date
416 416
 	 * returns the primary date for an event
@@ -421,22 +421,22 @@  discard block
 block discarded – undo
421 421
 	 * @param bool $echo
422 422
 	 * @return string
423 423
 	 */
424
-	function espresso_event_date( $date_format = '', $time_format = '', $EVT_ID = FALSE, $echo = TRUE ) {
425
-		$date_format = ! empty( $date_format ) ? $date_format : get_option( 'date_format' );
426
-		$time_format = ! empty( $time_format ) ? $time_format : get_option( 'time_format' );
427
-		$date_format = apply_filters( 'FHEE__espresso_event_date__date_format', $date_format );
428
-		$time_format = apply_filters( 'FHEE__espresso_event_date__time_format', $time_format );
429
-		if($echo){
430
-			echo EEH_Event_View::the_event_date( $date_format, $time_format, $EVT_ID );
424
+	function espresso_event_date($date_format = '', $time_format = '', $EVT_ID = FALSE, $echo = TRUE) {
425
+		$date_format = ! empty($date_format) ? $date_format : get_option('date_format');
426
+		$time_format = ! empty($time_format) ? $time_format : get_option('time_format');
427
+		$date_format = apply_filters('FHEE__espresso_event_date__date_format', $date_format);
428
+		$time_format = apply_filters('FHEE__espresso_event_date__time_format', $time_format);
429
+		if ($echo) {
430
+			echo EEH_Event_View::the_event_date($date_format, $time_format, $EVT_ID);
431 431
 			return '';
432 432
 		}
433
-		return EEH_Event_View::the_event_date( $date_format, $time_format, $EVT_ID );
433
+		return EEH_Event_View::the_event_date($date_format, $time_format, $EVT_ID);
434 434
 
435 435
 	}
436 436
 }
437 437
 
438 438
 
439
-if ( ! function_exists( 'espresso_list_of_event_dates' )) {
439
+if ( ! function_exists('espresso_list_of_event_dates')) {
440 440
 	/**
441 441
 	 * espresso_list_of_event_dates
442 442
 	 * returns a unordered list of dates for an event
@@ -451,40 +451,40 @@  discard block
 block discarded – undo
451 451
 	 * @param null   $limit
452 452
 	 * @return string
453 453
 	 */
454
-	function espresso_list_of_event_dates( $EVT_ID = 0, $date_format = '', $time_format = '', $echo = TRUE, $show_expired = NULL, $format = TRUE, $add_breaks = TRUE, $limit = NULL ) {
455
-		$date_format = ! empty( $date_format ) ? $date_format : get_option( 'date_format' );
456
-		$time_format = ! empty( $time_format ) ? $time_format : get_option( 'time_format' );
457
-		$date_format = apply_filters( 'FHEE__espresso_list_of_event_dates__date_format', $date_format );
458
-		$time_format = apply_filters( 'FHEE__espresso_list_of_event_dates__time_format', $time_format );
459
-		$datetimes = EEH_Event_View::get_all_date_obj( $EVT_ID, $show_expired, FALSE, $limit );
460
-		if ( ! $format ) {
461
-			return apply_filters( 'FHEE__espresso_list_of_event_dates__datetimes', $datetimes );
454
+	function espresso_list_of_event_dates($EVT_ID = 0, $date_format = '', $time_format = '', $echo = TRUE, $show_expired = NULL, $format = TRUE, $add_breaks = TRUE, $limit = NULL) {
455
+		$date_format = ! empty($date_format) ? $date_format : get_option('date_format');
456
+		$time_format = ! empty($time_format) ? $time_format : get_option('time_format');
457
+		$date_format = apply_filters('FHEE__espresso_list_of_event_dates__date_format', $date_format);
458
+		$time_format = apply_filters('FHEE__espresso_list_of_event_dates__time_format', $time_format);
459
+		$datetimes = EEH_Event_View::get_all_date_obj($EVT_ID, $show_expired, FALSE, $limit);
460
+		if ( ! $format) {
461
+			return apply_filters('FHEE__espresso_list_of_event_dates__datetimes', $datetimes);
462 462
 		}
463 463
 		//d( $datetimes );
464
-		if ( is_array( $datetimes ) && ! empty( $datetimes )) {
464
+		if (is_array($datetimes) && ! empty($datetimes)) {
465 465
 			global $post;
466
-			$html = $format ? '<ul id="ee-event-datetimes-ul-' . $post->ID . '" class="ee-event-datetimes-ul ee-clearfix">' : '';
467
-			foreach ( $datetimes as $datetime ) {
468
-				if ( $datetime instanceof EE_Datetime ) {
469
-					$html .= '<li id="ee-event-datetimes-li-' . $datetime->ID();
470
-					$html .= '" class="ee-event-datetimes-li ee-event-datetimes-li-' . $datetime->get_active_status() . '">';
466
+			$html = $format ? '<ul id="ee-event-datetimes-ul-'.$post->ID.'" class="ee-event-datetimes-ul ee-clearfix">' : '';
467
+			foreach ($datetimes as $datetime) {
468
+				if ($datetime instanceof EE_Datetime) {
469
+					$html .= '<li id="ee-event-datetimes-li-'.$datetime->ID();
470
+					$html .= '" class="ee-event-datetimes-li ee-event-datetimes-li-'.$datetime->get_active_status().'">';
471 471
 					$datetime_name = $datetime->name();
472
-					$html .= ! empty( $datetime_name ) ? '<strong>' . $datetime_name . '</strong>' : '';
473
-					$html .= ! empty( $datetime_name )  && $add_breaks ? '<br />' : '';
474
-					$html .= '<span class="dashicons dashicons-calendar"></span><span class="ee-event-datetimes-li-daterange">' . $datetime->date_range( $date_format ) . '</span><br/>';
475
-					$html .= '<span class="dashicons dashicons-clock"></span><span class="ee-event-datetimes-li-timerange">' . $datetime->time_range( $time_format ) . '</span>';
472
+					$html .= ! empty($datetime_name) ? '<strong>'.$datetime_name.'</strong>' : '';
473
+					$html .= ! empty($datetime_name) && $add_breaks ? '<br />' : '';
474
+					$html .= '<span class="dashicons dashicons-calendar"></span><span class="ee-event-datetimes-li-daterange">'.$datetime->date_range($date_format).'</span><br/>';
475
+					$html .= '<span class="dashicons dashicons-clock"></span><span class="ee-event-datetimes-li-timerange">'.$datetime->time_range($time_format).'</span>';
476 476
 					$datetime_description = $datetime->description();
477
-					$html .= ! empty( $datetime_description )  && $add_breaks ? '<br />' : '';
478
-					$html .= ! empty( $datetime_description ) ? ' - ' . $datetime_description : '';
479
-					$html = apply_filters( 'FHEE__espresso_list_of_event_dates__datetime_html', $html, $datetime );
477
+					$html .= ! empty($datetime_description) && $add_breaks ? '<br />' : '';
478
+					$html .= ! empty($datetime_description) ? ' - '.$datetime_description : '';
479
+					$html = apply_filters('FHEE__espresso_list_of_event_dates__datetime_html', $html, $datetime);
480 480
 					$html .= '</li>';
481 481
 				}
482 482
 			}
483 483
 			$html .= $format ? '</ul>' : '';
484 484
 		} else {
485
-			$html = $format ?  '<p><span class="dashicons dashicons-marker pink-text"></span>' . __( 'There are no upcoming dates for this event.', 'event_espresso' ) . '</p><br/>' : '';
485
+			$html = $format ? '<p><span class="dashicons dashicons-marker pink-text"></span>'.__('There are no upcoming dates for this event.', 'event_espresso').'</p><br/>' : '';
486 486
 		}
487
-		if ( $echo ) {
487
+		if ($echo) {
488 488
 			echo $html;
489 489
 			return '';
490 490
 		}
@@ -493,7 +493,7 @@  discard block
 block discarded – undo
493 493
 }
494 494
 
495 495
 
496
-if ( ! function_exists( 'espresso_event_end_date' )) {
496
+if ( ! function_exists('espresso_event_end_date')) {
497 497
 	/**
498 498
 	 * espresso_event_end_date
499 499
 	 * returns the last date for an event
@@ -504,20 +504,20 @@  discard block
 block discarded – undo
504 504
 	 * @param bool   $echo
505 505
 	 * @return string
506 506
 	 */
507
-	function espresso_event_end_date( $date_format = '', $time_format = '', $EVT_ID = FALSE, $echo = TRUE ) {
508
-		$date_format = ! empty( $date_format ) ? $date_format : get_option( 'date_format' );
509
-		$time_format = ! empty( $time_format ) ? $time_format : get_option( 'time_format' );
510
-		$date_format = apply_filters( 'FHEE__espresso_event_end_date__date_format', $date_format );
511
-		$time_format = apply_filters( 'FHEE__espresso_event_end_date__time_format', $time_format );
512
-		if($echo){
513
-			echo EEH_Event_View::the_event_end_date( $date_format, $time_format, $EVT_ID );
507
+	function espresso_event_end_date($date_format = '', $time_format = '', $EVT_ID = FALSE, $echo = TRUE) {
508
+		$date_format = ! empty($date_format) ? $date_format : get_option('date_format');
509
+		$time_format = ! empty($time_format) ? $time_format : get_option('time_format');
510
+		$date_format = apply_filters('FHEE__espresso_event_end_date__date_format', $date_format);
511
+		$time_format = apply_filters('FHEE__espresso_event_end_date__time_format', $time_format);
512
+		if ($echo) {
513
+			echo EEH_Event_View::the_event_end_date($date_format, $time_format, $EVT_ID);
514 514
 			return '';
515 515
 		}
516
-		return EEH_Event_View::the_event_end_date( $date_format, $time_format, $EVT_ID );
516
+		return EEH_Event_View::the_event_end_date($date_format, $time_format, $EVT_ID);
517 517
 	}
518 518
 }
519 519
 
520
-if ( ! function_exists( 'espresso_event_date_range' )) {
520
+if ( ! function_exists('espresso_event_date_range')) {
521 521
 	/**
522 522
 	 * espresso_event_date_range
523 523
 	 * returns the first and last chronologically ordered dates for an event (if different)
@@ -530,31 +530,31 @@  discard block
 block discarded – undo
530 530
 	 * @param bool   $echo
531 531
 	 * @return string
532 532
 	 */
533
-	function espresso_event_date_range( $date_format = '', $time_format = '', $single_date_format = '', $single_time_format = '', $EVT_ID = FALSE, $echo = TRUE ) {
533
+	function espresso_event_date_range($date_format = '', $time_format = '', $single_date_format = '', $single_time_format = '', $EVT_ID = FALSE, $echo = TRUE) {
534 534
 		// set and filter date and time formats when a range is returned
535
-		$date_format = ! empty( $date_format ) ? $date_format : get_option( 'date_format' );
536
-		$date_format = apply_filters( 'FHEE__espresso_event_date_range__date_format', $date_format );
535
+		$date_format = ! empty($date_format) ? $date_format : get_option('date_format');
536
+		$date_format = apply_filters('FHEE__espresso_event_date_range__date_format', $date_format);
537 537
 		// get the start and end date with NO time portion
538
-		$the_event_date = EEH_Event_View::the_earliest_event_date( $date_format, '', $EVT_ID );
539
-		$the_event_end_date = EEH_Event_View::the_latest_event_date( $date_format, '', $EVT_ID );
538
+		$the_event_date = EEH_Event_View::the_earliest_event_date($date_format, '', $EVT_ID);
539
+		$the_event_end_date = EEH_Event_View::the_latest_event_date($date_format, '', $EVT_ID);
540 540
 		// now we can determine if date range spans more than one day
541
-		if ( $the_event_date != $the_event_end_date ) {
542
-			$time_format = ! empty( $time_format ) ? $time_format : get_option( 'time_format' );
543
-			$time_format = apply_filters( 'FHEE__espresso_event_date_range__time_format', $time_format );
541
+		if ($the_event_date != $the_event_end_date) {
542
+			$time_format = ! empty($time_format) ? $time_format : get_option('time_format');
543
+			$time_format = apply_filters('FHEE__espresso_event_date_range__time_format', $time_format);
544 544
 			$html = sprintf(
545
-				__( '%1$s - %2$s', 'event_espresso' ),
546
-				EEH_Event_View::the_earliest_event_date( $date_format, $time_format, $EVT_ID ),
547
-				EEH_Event_View::the_latest_event_date( $date_format, $time_format, $EVT_ID )
545
+				__('%1$s - %2$s', 'event_espresso'),
546
+				EEH_Event_View::the_earliest_event_date($date_format, $time_format, $EVT_ID),
547
+				EEH_Event_View::the_latest_event_date($date_format, $time_format, $EVT_ID)
548 548
 			);
549 549
 		} else {
550 550
 			// set and filter date and time formats when only a single datetime is returned
551
-			$single_date_format = ! empty( $single_date_format ) ? $single_date_format : get_option( 'date_format' );
552
-			$single_time_format = ! empty( $single_time_format ) ? $single_time_format : get_option( 'time_format' );
553
-			$single_date_format = apply_filters( 'FHEE__espresso_event_date_range__single_date_format', $single_date_format );
554
-			$single_time_format = apply_filters( 'FHEE__espresso_event_date_range__single_time_format', $single_time_format );
555
-			$html = EEH_Event_View::the_earliest_event_date( $single_date_format, $single_time_format, $EVT_ID );
551
+			$single_date_format = ! empty($single_date_format) ? $single_date_format : get_option('date_format');
552
+			$single_time_format = ! empty($single_time_format) ? $single_time_format : get_option('time_format');
553
+			$single_date_format = apply_filters('FHEE__espresso_event_date_range__single_date_format', $single_date_format);
554
+			$single_time_format = apply_filters('FHEE__espresso_event_date_range__single_time_format', $single_time_format);
555
+			$html = EEH_Event_View::the_earliest_event_date($single_date_format, $single_time_format, $EVT_ID);
556 556
 		}
557
-		if ( $echo ) {
557
+		if ($echo) {
558 558
 			echo $html;
559 559
 			return '';
560 560
 		}
@@ -562,7 +562,7 @@  discard block
 block discarded – undo
562 562
 	}
563 563
 }
564 564
 
565
-if ( ! function_exists( 'espresso_next_upcoming_datetime_obj' )) {
565
+if ( ! function_exists('espresso_next_upcoming_datetime_obj')) {
566 566
 	/**
567 567
 	 * espresso_next_upcoming_datetime_obj
568 568
 	 * returns the next upcoming datetime object for an event
@@ -570,12 +570,12 @@  discard block
 block discarded – undo
570 570
 	 * @param int $EVT_ID
571 571
 	 * @return EE_Datetime|null
572 572
 	 */
573
-	function espresso_next_upcoming_datetime_obj( $EVT_ID = 0 ) {
574
-		return EEH_Event_View::get_next_upcoming_date_obj( $EVT_ID );
573
+	function espresso_next_upcoming_datetime_obj($EVT_ID = 0) {
574
+		return EEH_Event_View::get_next_upcoming_date_obj($EVT_ID);
575 575
 	}
576 576
 }
577 577
 
578
-if ( ! function_exists( 'espresso_next_upcoming_datetime' ) ) {
578
+if ( ! function_exists('espresso_next_upcoming_datetime')) {
579 579
 	/**
580 580
 	 * espresso_next_upcoming_datetime
581 581
 	 * returns the start date and time for the next upcoming event.
@@ -586,30 +586,30 @@  discard block
 block discarded – undo
586 586
 	 * @param bool $echo
587 587
 	 * @return string
588 588
 	 */
589
-	function espresso_next_upcoming_datetime( $date_format = '', $time_format = '', $EVT_ID = 0, $echo = true ) {
589
+	function espresso_next_upcoming_datetime($date_format = '', $time_format = '', $EVT_ID = 0, $echo = true) {
590 590
 
591
-		$date_format = ! empty( $date_format ) ? $date_format : get_option( 'date_format' );
592
-		$date_format = apply_filters( 'FHEE__espresso_next_upcoming_datetime__date_format', $date_format );
591
+		$date_format = ! empty($date_format) ? $date_format : get_option('date_format');
592
+		$date_format = apply_filters('FHEE__espresso_next_upcoming_datetime__date_format', $date_format);
593 593
 
594
-		$time_format = ! empty( $time_format ) ? $time_format : get_option( 'time_format' );
595
-		$time_format = apply_filters( 'FHEE__espresso_next_upcoming_datetime__time_format', $time_format );
594
+		$time_format = ! empty($time_format) ? $time_format : get_option('time_format');
595
+		$time_format = apply_filters('FHEE__espresso_next_upcoming_datetime__time_format', $time_format);
596 596
 
597
-		$datetime_format = trim( $date_format . ' ' . $time_format);
597
+		$datetime_format = trim($date_format.' '.$time_format);
598 598
 
599
-		$datetime = espresso_next_upcoming_datetime_obj( $EVT_ID );
599
+		$datetime = espresso_next_upcoming_datetime_obj($EVT_ID);
600 600
 
601
-		if( ! $datetime instanceof EE_Datetime ) {
601
+		if ( ! $datetime instanceof EE_Datetime) {
602 602
 			return '';
603 603
 		}
604
-		if ( $echo ){
605
-			echo $datetime->get_i18n_datetime( 'DTT_EVT_start', $datetime_format );
604
+		if ($echo) {
605
+			echo $datetime->get_i18n_datetime('DTT_EVT_start', $datetime_format);
606 606
 			return '';
607 607
 		}
608
-		return $datetime->get_i18n_datetime( 'DTT_EVT_start', $datetime_format );
608
+		return $datetime->get_i18n_datetime('DTT_EVT_start', $datetime_format);
609 609
 	}
610 610
 }
611 611
 
612
-if ( ! function_exists( 'espresso_event_date_as_calendar_page' )) {
612
+if ( ! function_exists('espresso_event_date_as_calendar_page')) {
613 613
 	/**
614 614
 	 * espresso_event_date_as_calendar_page
615 615
 	 * returns the primary date for an event, stylized to appear as the page of a calendar
@@ -617,15 +617,15 @@  discard block
 block discarded – undo
617 617
 	 * @param bool $EVT_ID
618 618
 	 * @return string
619 619
 	 */
620
-	function espresso_event_date_as_calendar_page( $EVT_ID = FALSE ) {
621
-		EEH_Event_View::event_date_as_calendar_page( $EVT_ID );
620
+	function espresso_event_date_as_calendar_page($EVT_ID = FALSE) {
621
+		EEH_Event_View::event_date_as_calendar_page($EVT_ID);
622 622
 	}
623 623
 }
624 624
 
625 625
 
626 626
 
627 627
 
628
-if ( ! function_exists( 'espresso_event_link_url' )) {
628
+if ( ! function_exists('espresso_event_link_url')) {
629 629
 	/**
630 630
 	 * espresso_event_link_url
631 631
 	 *
@@ -633,18 +633,18 @@  discard block
 block discarded – undo
633 633
 	 * @param bool $echo
634 634
 	 * @return string
635 635
 	 */
636
-	function espresso_event_link_url( $EVT_ID = 0, $echo = TRUE ) {
637
-		if ( $echo ) {
638
-			echo EEH_Event_View::event_link_url( $EVT_ID );
636
+	function espresso_event_link_url($EVT_ID = 0, $echo = TRUE) {
637
+		if ($echo) {
638
+			echo EEH_Event_View::event_link_url($EVT_ID);
639 639
 			return '';
640 640
 		}
641
-		return EEH_Event_View::event_link_url( $EVT_ID );
641
+		return EEH_Event_View::event_link_url($EVT_ID);
642 642
 	}
643 643
 }
644 644
 
645 645
 
646 646
 
647
-if ( ! function_exists( 'espresso_event_has_content_or_excerpt' )) {
647
+if ( ! function_exists('espresso_event_has_content_or_excerpt')) {
648 648
 	/**
649 649
 	 *    espresso_event_has_content_or_excerpt
650 650
 	 *
@@ -652,15 +652,15 @@  discard block
 block discarded – undo
652 652
 	 * @param bool $EVT_ID
653 653
 	 * @return    boolean
654 654
 	 */
655
-	function espresso_event_has_content_or_excerpt( $EVT_ID = FALSE ) {
656
-		return EEH_Event_View::event_has_content_or_excerpt( $EVT_ID );
655
+	function espresso_event_has_content_or_excerpt($EVT_ID = FALSE) {
656
+		return EEH_Event_View::event_has_content_or_excerpt($EVT_ID);
657 657
 	}
658 658
 }
659 659
 
660 660
 
661 661
 
662 662
 
663
-if ( ! function_exists( 'espresso_event_content_or_excerpt' )) {
663
+if ( ! function_exists('espresso_event_content_or_excerpt')) {
664 664
 	/**
665 665
 	 * espresso_event_content_or_excerpt
666 666
 	 *
@@ -669,18 +669,18 @@  discard block
 block discarded – undo
669 669
 	 * @param bool $echo
670 670
 	 * @return string
671 671
 	 */
672
-	function espresso_event_content_or_excerpt( $num_words = 55, $more = NULL, $echo = TRUE ) {
673
-		if ( $echo ) {
674
-			echo EEH_Event_View::event_content_or_excerpt( $num_words, $more );
672
+	function espresso_event_content_or_excerpt($num_words = 55, $more = NULL, $echo = TRUE) {
673
+		if ($echo) {
674
+			echo EEH_Event_View::event_content_or_excerpt($num_words, $more);
675 675
 			return '';
676 676
 		}
677
-		return EEH_Event_View::event_content_or_excerpt( $num_words, $more );
677
+		return EEH_Event_View::event_content_or_excerpt($num_words, $more);
678 678
 	}
679 679
 }
680 680
 
681 681
 
682 682
 
683
-if ( ! function_exists( 'espresso_event_phone' )) {
683
+if ( ! function_exists('espresso_event_phone')) {
684 684
 	/**
685 685
 	 * espresso_event_phone
686 686
 	 *
@@ -688,18 +688,18 @@  discard block
 block discarded – undo
688 688
 	 * @param bool $echo
689 689
 	 * @return string
690 690
 	 */
691
-	function espresso_event_phone( $EVT_ID = 0, $echo = TRUE ) {
692
-		if ( $echo ) {
693
-			echo EEH_Event_View::event_phone( $EVT_ID );
691
+	function espresso_event_phone($EVT_ID = 0, $echo = TRUE) {
692
+		if ($echo) {
693
+			echo EEH_Event_View::event_phone($EVT_ID);
694 694
 			return '';
695 695
 		}
696
-		return EEH_Event_View::event_phone( $EVT_ID );
696
+		return EEH_Event_View::event_phone($EVT_ID);
697 697
 	}
698 698
 }
699 699
 
700 700
 
701 701
 
702
-if ( ! function_exists( 'espresso_edit_event_link' )) {
702
+if ( ! function_exists('espresso_edit_event_link')) {
703 703
 	/**
704 704
 	 * espresso_edit_event_link
705 705
 	 * returns a link to edit an event
@@ -708,39 +708,39 @@  discard block
 block discarded – undo
708 708
 	 * @param bool $echo
709 709
 	 * @return string
710 710
 	 */
711
-	function espresso_edit_event_link( $EVT_ID = 0, $echo = TRUE ) {
712
-		if ( $echo ) {
713
-			echo EEH_Event_View::edit_event_link( $EVT_ID );
711
+	function espresso_edit_event_link($EVT_ID = 0, $echo = TRUE) {
712
+		if ($echo) {
713
+			echo EEH_Event_View::edit_event_link($EVT_ID);
714 714
 			return '';
715 715
 		}
716
-		return EEH_Event_View::edit_event_link( $EVT_ID );
716
+		return EEH_Event_View::edit_event_link($EVT_ID);
717 717
 	}
718 718
 }
719 719
 
720 720
 
721
-if ( ! function_exists( 'espresso_organization_name' )) {
721
+if ( ! function_exists('espresso_organization_name')) {
722 722
 	/**
723 723
 	 * espresso_organization_name
724 724
 	 * @param bool $echo
725 725
 	 * @return string
726 726
 	 */
727 727
 	function espresso_organization_name($echo = TRUE) {
728
-		if($echo){
729
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'name' );
728
+		if ($echo) {
729
+			echo EE_Registry::instance()->CFG->organization->get_pretty('name');
730 730
 			return '';
731 731
 		}
732
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'name' );
732
+		return EE_Registry::instance()->CFG->organization->get_pretty('name');
733 733
 	}
734 734
 }
735 735
 
736
-if ( ! function_exists( 'espresso_organization_address' )) {
736
+if ( ! function_exists('espresso_organization_address')) {
737 737
 	/**
738 738
 	 * espresso_organization_address
739 739
 	 * @param string $type
740 740
 	 * @return string
741 741
 	 */
742
-	function espresso_organization_address( $type = 'inline' ) {
743
-		if ( EE_Registry::instance()->CFG->organization instanceof EE_Organization_Config ) {
742
+	function espresso_organization_address($type = 'inline') {
743
+		if (EE_Registry::instance()->CFG->organization instanceof EE_Organization_Config) {
744 744
 			$address = new EventEspresso\core\domain\entities\GenericAddress(
745 745
 				EE_Registry::instance()->CFG->organization->address_1,
746 746
 				EE_Registry::instance()->CFG->organization->address_2,
@@ -749,129 +749,129 @@  discard block
 block discarded – undo
749 749
 				EE_Registry::instance()->CFG->organization->zip,
750 750
 				EE_Registry::instance()->CFG->organization->CNT_ISO
751 751
 			);
752
-			return EEH_Address::format( $address, $type );
752
+			return EEH_Address::format($address, $type);
753 753
 		}
754 754
 		return '';
755 755
 	}
756 756
 }
757 757
 
758
-if ( ! function_exists( 'espresso_organization_email' )) {
758
+if ( ! function_exists('espresso_organization_email')) {
759 759
 	/**
760 760
 	 * espresso_organization_email
761 761
 	 * @param bool $echo
762 762
 	 * @return string
763 763
 	 */
764
-	function espresso_organization_email( $echo = TRUE ) {
765
-		if($echo){
766
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'email' );
764
+	function espresso_organization_email($echo = TRUE) {
765
+		if ($echo) {
766
+			echo EE_Registry::instance()->CFG->organization->get_pretty('email');
767 767
 			return '';
768 768
 		}
769
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'email' );
769
+		return EE_Registry::instance()->CFG->organization->get_pretty('email');
770 770
 	}
771 771
 }
772 772
 
773
-if ( ! function_exists( 'espresso_organization_logo_url' )) {
773
+if ( ! function_exists('espresso_organization_logo_url')) {
774 774
 	/**
775 775
 	 * espresso_organization_logo_url
776 776
 	 * @param bool $echo
777 777
 	 * @return string
778 778
 	 */
779
-	function espresso_organization_logo_url( $echo = TRUE ) {
780
-		if($echo){
781
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'logo_url' );
779
+	function espresso_organization_logo_url($echo = TRUE) {
780
+		if ($echo) {
781
+			echo EE_Registry::instance()->CFG->organization->get_pretty('logo_url');
782 782
 			return '';
783 783
 		}
784
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'logo_url' );
784
+		return EE_Registry::instance()->CFG->organization->get_pretty('logo_url');
785 785
 	}
786 786
 }
787 787
 
788
-if ( ! function_exists( 'espresso_organization_facebook' )) {
788
+if ( ! function_exists('espresso_organization_facebook')) {
789 789
 	/**
790 790
 	 * espresso_organization_facebook
791 791
 	 * @param bool $echo
792 792
 	 * @return string
793 793
 	 */
794
-	function espresso_organization_facebook( $echo = TRUE ) {
795
-		if($echo){
796
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'facebook' );
794
+	function espresso_organization_facebook($echo = TRUE) {
795
+		if ($echo) {
796
+			echo EE_Registry::instance()->CFG->organization->get_pretty('facebook');
797 797
 			return '';
798 798
 		}
799
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'facebook' );
799
+		return EE_Registry::instance()->CFG->organization->get_pretty('facebook');
800 800
 	}
801 801
 }
802 802
 
803
-if ( ! function_exists( 'espresso_organization_twitter' )) {
803
+if ( ! function_exists('espresso_organization_twitter')) {
804 804
 	/**
805 805
 	 * espresso_organization_twitter
806 806
 	 * @param bool $echo
807 807
 	 * @return string
808 808
 	 */
809
-	function espresso_organization_twitter( $echo = TRUE ) {
810
-		if($echo){
811
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'twitter' );
809
+	function espresso_organization_twitter($echo = TRUE) {
810
+		if ($echo) {
811
+			echo EE_Registry::instance()->CFG->organization->get_pretty('twitter');
812 812
 			return '';
813 813
 		}
814
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'twitter' );
814
+		return EE_Registry::instance()->CFG->organization->get_pretty('twitter');
815 815
 	}
816 816
 }
817 817
 
818
-if ( ! function_exists( 'espresso_organization_linkedin' )) {
818
+if ( ! function_exists('espresso_organization_linkedin')) {
819 819
 	/**
820 820
 	 * espresso_organization_linkedin
821 821
 	 * @param bool $echo
822 822
 	 * @return string
823 823
 	 */
824
-	function espresso_organization_linkedin( $echo = TRUE ) {
825
-		if($echo){
826
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'linkedin' );
824
+	function espresso_organization_linkedin($echo = TRUE) {
825
+		if ($echo) {
826
+			echo EE_Registry::instance()->CFG->organization->get_pretty('linkedin');
827 827
 			return '';
828 828
 		}
829
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'linkedin' );
829
+		return EE_Registry::instance()->CFG->organization->get_pretty('linkedin');
830 830
 	}
831 831
 }
832 832
 
833
-if ( ! function_exists( 'espresso_organization_pinterest' )) {
833
+if ( ! function_exists('espresso_organization_pinterest')) {
834 834
 	/**
835 835
 	 * espresso_organization_pinterest
836 836
 	 * @param bool $echo
837 837
 	 * @return string
838 838
 	 */
839
-	function espresso_organization_pinterest( $echo = TRUE ) {
840
-		if($echo){
841
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'pinterest' );
839
+	function espresso_organization_pinterest($echo = TRUE) {
840
+		if ($echo) {
841
+			echo EE_Registry::instance()->CFG->organization->get_pretty('pinterest');
842 842
 			return '';
843 843
 		}
844
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'pinterest' );
844
+		return EE_Registry::instance()->CFG->organization->get_pretty('pinterest');
845 845
 	}
846 846
 }
847 847
 
848
-if ( ! function_exists( 'espresso_organization_google' )) {
848
+if ( ! function_exists('espresso_organization_google')) {
849 849
 	/**
850 850
 	 * espresso_organization_google
851 851
 	 * @param bool $echo
852 852
 	 * @return string
853 853
 	 */
854
-	function espresso_organization_google( $echo = TRUE ) {
855
-		if($echo){
856
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'google' );
854
+	function espresso_organization_google($echo = TRUE) {
855
+		if ($echo) {
856
+			echo EE_Registry::instance()->CFG->organization->get_pretty('google');
857 857
 			return '';
858 858
 		}
859
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'google' );
859
+		return EE_Registry::instance()->CFG->organization->get_pretty('google');
860 860
 	}
861 861
 }
862 862
 
863
-if ( ! function_exists( 'espresso_organization_instagram' )) {
863
+if ( ! function_exists('espresso_organization_instagram')) {
864 864
 	/**
865 865
 	 * espresso_organization_instagram
866 866
 	 * @param bool $echo
867 867
 	 * @return string
868 868
 	 */
869
-	function espresso_organization_instagram( $echo = TRUE ) {
870
-		if($echo){
871
-			echo EE_Registry::instance()->CFG->organization->get_pretty( 'instagram' );
869
+	function espresso_organization_instagram($echo = TRUE) {
870
+		if ($echo) {
871
+			echo EE_Registry::instance()->CFG->organization->get_pretty('instagram');
872 872
 			return '';
873 873
 		}
874
-		return EE_Registry::instance()->CFG->organization->get_pretty( 'instagram' );
874
+		return EE_Registry::instance()->CFG->organization->get_pretty('instagram');
875 875
 	}
876 876
 }
877 877
 
@@ -881,7 +881,7 @@  discard block
 block discarded – undo
881 881
 
882 882
 
883 883
 
884
-if ( ! function_exists( 'espresso_event_venues' )) {
884
+if ( ! function_exists('espresso_event_venues')) {
885 885
 	/**
886 886
 	 * espresso_event_venues
887 887
 	 *
@@ -895,7 +895,7 @@  discard block
 block discarded – undo
895 895
 
896 896
 
897 897
 
898
-if ( ! function_exists( 'espresso_venue_id' )) {
898
+if ( ! function_exists('espresso_venue_id')) {
899 899
 	/**
900 900
 	 *    espresso_venue_name
901 901
 	 *
@@ -903,15 +903,15 @@  discard block
 block discarded – undo
903 903
 	 * @param     int $EVT_ID
904 904
 	 * @return    string
905 905
 	 */
906
-	function espresso_venue_id( $EVT_ID = 0 ) {
907
-		$venue = EEH_Venue_View::get_venue( $EVT_ID );
906
+	function espresso_venue_id($EVT_ID = 0) {
907
+		$venue = EEH_Venue_View::get_venue($EVT_ID);
908 908
 		return $venue instanceof EE_Venue ? $venue->ID() : 0;
909 909
 	}
910 910
 }
911 911
 
912 912
 
913 913
 
914
-if ( ! function_exists( 'espresso_is_venue_private' ) ) {
914
+if ( ! function_exists('espresso_is_venue_private')) {
915 915
 	/**
916 916
 	 * Return whether a venue is private or not.
917 917
 	 * @see EEH_Venue_View::get_venue() for more info on expected return results.
@@ -920,45 +920,45 @@  discard block
 block discarded – undo
920 920
 	 *
921 921
 	 * @return bool | null
922 922
 	 */
923
-	function espresso_is_venue_private( $VNU_ID = 0 ) {
924
-		return EEH_Venue_View::is_venue_private( $VNU_ID );
923
+	function espresso_is_venue_private($VNU_ID = 0) {
924
+		return EEH_Venue_View::is_venue_private($VNU_ID);
925 925
 	}
926 926
 }
927 927
 
928 928
 
929 929
 
930
-if ( ! function_exists( 'espresso_venue_is_password_protected' ) ) {
930
+if ( ! function_exists('espresso_venue_is_password_protected')) {
931 931
 	/**
932 932
 	 * returns true or false if a venue is password protected or not
933 933
 	 *
934 934
 	 * @param int     $VNU_ID optional, the venue id to check.
935 935
 	 * @return string
936 936
 	 */
937
-	function espresso_venue_is_password_protected( $VNU_ID = 0 ) {
938
-		EE_Registry::instance()->load_helper( 'Venue_View' );
939
-		return EEH_Venue_View::is_venue_password_protected( $VNU_ID );
937
+	function espresso_venue_is_password_protected($VNU_ID = 0) {
938
+		EE_Registry::instance()->load_helper('Venue_View');
939
+		return EEH_Venue_View::is_venue_password_protected($VNU_ID);
940 940
 	}
941 941
 }
942 942
 
943 943
 
944 944
 
945
-if ( ! function_exists( 'espresso_password_protected_venue_form' ) ) {
945
+if ( ! function_exists('espresso_password_protected_venue_form')) {
946 946
 	/**
947 947
 	 * Returns a password form if venue is password protected.
948 948
 	 *
949 949
 	 * @param int     $VNU_ID optional, the venue id to check.
950 950
 	 * @return string
951 951
 	 */
952
-	function espresso_password_protected_venue_form( $VNU_ID = 0 ) {
953
-		EE_Registry::instance()->load_helper( 'Venue_View' );
954
-		return EEH_Venue_View::password_protected_venue_form( $VNU_ID );
952
+	function espresso_password_protected_venue_form($VNU_ID = 0) {
953
+		EE_Registry::instance()->load_helper('Venue_View');
954
+		return EEH_Venue_View::password_protected_venue_form($VNU_ID);
955 955
 	}
956 956
 }
957 957
 
958 958
 
959 959
 
960 960
 
961
-if ( ! function_exists( 'espresso_venue_name' )) {
961
+if ( ! function_exists('espresso_venue_name')) {
962 962
 	/**
963 963
 	 *    espresso_venue_name
964 964
 	 *
@@ -968,19 +968,19 @@  discard block
 block discarded – undo
968 968
 	 * @param bool   $echo
969 969
 	 * @return    string
970 970
 	 */
971
-	function espresso_venue_name( $VNU_ID = 0, $link_to = 'details', $echo = TRUE ) {
972
-		if($echo){
973
-			echo EEH_Venue_View::venue_name( $link_to, $VNU_ID );
971
+	function espresso_venue_name($VNU_ID = 0, $link_to = 'details', $echo = TRUE) {
972
+		if ($echo) {
973
+			echo EEH_Venue_View::venue_name($link_to, $VNU_ID);
974 974
 			return '';
975 975
 		}
976
-		return EEH_Venue_View::venue_name( $link_to, $VNU_ID );
976
+		return EEH_Venue_View::venue_name($link_to, $VNU_ID);
977 977
 	}
978 978
 }
979 979
 
980 980
 
981 981
 
982 982
 
983
-if ( ! function_exists( 'espresso_venue_link' )) {
983
+if ( ! function_exists('espresso_venue_link')) {
984 984
 	/**
985 985
 	 * 	espresso_venue_link
986 986
 	 *
@@ -989,14 +989,14 @@  discard block
 block discarded – undo
989 989
 	 *  @param 	string 	$text
990 990
 	 *  @return 	string
991 991
 	 */
992
-	function espresso_venue_link( $VNU_ID = 0, $text = '' ) {
993
-		return EEH_Venue_View::venue_details_link( $VNU_ID, $text );
992
+	function espresso_venue_link($VNU_ID = 0, $text = '') {
993
+		return EEH_Venue_View::venue_details_link($VNU_ID, $text);
994 994
 	}
995 995
 }
996 996
 
997 997
 
998 998
 
999
-if ( ! function_exists( 'espresso_venue_description' )) {
999
+if ( ! function_exists('espresso_venue_description')) {
1000 1000
 	/**
1001 1001
 	 *    espresso_venue_description
1002 1002
 	 *
@@ -1005,17 +1005,17 @@  discard block
 block discarded – undo
1005 1005
 	 * @param bool $echo
1006 1006
 	 * @return    string
1007 1007
 	 */
1008
-	function espresso_venue_description( $VNU_ID = FALSE, $echo = TRUE ) {
1009
-		if($echo){
1010
-			echo EEH_Venue_View::venue_description( $VNU_ID );
1008
+	function espresso_venue_description($VNU_ID = FALSE, $echo = TRUE) {
1009
+		if ($echo) {
1010
+			echo EEH_Venue_View::venue_description($VNU_ID);
1011 1011
 			return '';
1012 1012
 		}
1013
-		return EEH_Venue_View::venue_description( $VNU_ID );
1013
+		return EEH_Venue_View::venue_description($VNU_ID);
1014 1014
 	}
1015 1015
 }
1016 1016
 
1017 1017
 
1018
-if ( ! function_exists( 'espresso_venue_excerpt' )) {
1018
+if ( ! function_exists('espresso_venue_excerpt')) {
1019 1019
 	/**
1020 1020
 	 *    espresso_venue_excerpt
1021 1021
 	 *
@@ -1024,18 +1024,18 @@  discard block
 block discarded – undo
1024 1024
 	 * @param bool $echo
1025 1025
 	 * @return    string
1026 1026
 	 */
1027
-	function espresso_venue_excerpt( $VNU_ID = 0,  $echo = TRUE ) {
1028
-		if ( $echo ) {
1029
-			echo EEH_Venue_View::venue_excerpt( $VNU_ID );
1027
+	function espresso_venue_excerpt($VNU_ID = 0, $echo = TRUE) {
1028
+		if ($echo) {
1029
+			echo EEH_Venue_View::venue_excerpt($VNU_ID);
1030 1030
 			return '';
1031 1031
 		}
1032
-		return EEH_Venue_View::venue_excerpt( $VNU_ID );
1032
+		return EEH_Venue_View::venue_excerpt($VNU_ID);
1033 1033
 	}
1034 1034
 }
1035 1035
 
1036 1036
 
1037 1037
 
1038
-if ( ! function_exists( 'espresso_venue_categories' )) {
1038
+if ( ! function_exists('espresso_venue_categories')) {
1039 1039
 	/**
1040 1040
 	 * espresso_venue_categories
1041 1041
 	 * returns the terms associated with a venue
@@ -1045,17 +1045,17 @@  discard block
 block discarded – undo
1045 1045
 	 * @param bool $echo
1046 1046
 	 * @return string
1047 1047
 	 */
1048
-	function espresso_venue_categories( $VNU_ID = 0, $hide_uncategorized = TRUE,  $echo = TRUE ) {
1049
-		if ( $echo ) {
1050
-			echo EEH_Venue_View::venue_categories( $VNU_ID, $hide_uncategorized );
1048
+	function espresso_venue_categories($VNU_ID = 0, $hide_uncategorized = TRUE, $echo = TRUE) {
1049
+		if ($echo) {
1050
+			echo EEH_Venue_View::venue_categories($VNU_ID, $hide_uncategorized);
1051 1051
 			return '';
1052 1052
 		}
1053
-		return EEH_Venue_View::venue_categories( $VNU_ID, $hide_uncategorized );
1053
+		return EEH_Venue_View::venue_categories($VNU_ID, $hide_uncategorized);
1054 1054
 	}
1055 1055
 }
1056 1056
 
1057 1057
 
1058
-if ( ! function_exists( 'espresso_venue_address' )) {
1058
+if ( ! function_exists('espresso_venue_address')) {
1059 1059
 	/**
1060 1060
 	 * espresso_venue_address
1061 1061
 	 * returns a formatted block of html  for displaying a venue's address
@@ -1065,17 +1065,17 @@  discard block
 block discarded – undo
1065 1065
 	 * @param bool   $echo
1066 1066
 	 * @return string
1067 1067
 	 */
1068
-	function espresso_venue_address( $type = 'multiline', $VNU_ID = 0, $echo = TRUE ) {
1069
-		if ( $echo ) {
1070
-			echo EEH_Venue_View::venue_address( $type, $VNU_ID );
1068
+	function espresso_venue_address($type = 'multiline', $VNU_ID = 0, $echo = TRUE) {
1069
+		if ($echo) {
1070
+			echo EEH_Venue_View::venue_address($type, $VNU_ID);
1071 1071
 			return '';
1072 1072
 		}
1073
-		return EEH_Venue_View::venue_address( $type, $VNU_ID );
1073
+		return EEH_Venue_View::venue_address($type, $VNU_ID);
1074 1074
 	}
1075 1075
 }
1076 1076
 
1077 1077
 
1078
-if ( ! function_exists( 'espresso_venue_raw_address' )) {
1078
+if ( ! function_exists('espresso_venue_raw_address')) {
1079 1079
 	/**
1080 1080
 	 * espresso_venue_address
1081 1081
 	 * returns an UN-formatted string containing a venue's address
@@ -1085,17 +1085,17 @@  discard block
 block discarded – undo
1085 1085
 	 * @param bool     $echo
1086 1086
 	 * @return string
1087 1087
 	 */
1088
-	function espresso_venue_raw_address( $type = 'multiline', $VNU_ID = 0, $echo = TRUE ) {
1089
-		if ( $echo ) {
1090
-			echo EEH_Venue_View::venue_address( $type, $VNU_ID, FALSE, FALSE );
1088
+	function espresso_venue_raw_address($type = 'multiline', $VNU_ID = 0, $echo = TRUE) {
1089
+		if ($echo) {
1090
+			echo EEH_Venue_View::venue_address($type, $VNU_ID, FALSE, FALSE);
1091 1091
 			return '';
1092 1092
 		}
1093
-		return EEH_Venue_View::venue_address( $type, $VNU_ID, FALSE, FALSE );
1093
+		return EEH_Venue_View::venue_address($type, $VNU_ID, FALSE, FALSE);
1094 1094
 	}
1095 1095
 }
1096 1096
 
1097 1097
 
1098
-if ( ! function_exists( 'espresso_venue_has_address' )) {
1098
+if ( ! function_exists('espresso_venue_has_address')) {
1099 1099
 	/**
1100 1100
 	 * espresso_venue_has_address
1101 1101
 	 * returns TRUE or FALSE if a Venue has address information
@@ -1103,13 +1103,13 @@  discard block
 block discarded – undo
1103 1103
 	 * @param int $VNU_ID
1104 1104
 	 * @return bool
1105 1105
 	 */
1106
-	function espresso_venue_has_address( $VNU_ID = 0 ) {
1107
-		return EEH_Venue_View::venue_has_address( $VNU_ID );
1106
+	function espresso_venue_has_address($VNU_ID = 0) {
1107
+		return EEH_Venue_View::venue_has_address($VNU_ID);
1108 1108
 	}
1109 1109
 }
1110 1110
 
1111 1111
 
1112
-if ( ! function_exists( 'espresso_venue_gmap' )) {
1112
+if ( ! function_exists('espresso_venue_gmap')) {
1113 1113
 	/**
1114 1114
 	 * espresso_venue_gmap
1115 1115
 	 * returns a google map for the venue address
@@ -1120,17 +1120,17 @@  discard block
 block discarded – undo
1120 1120
 	 * @param bool     $echo
1121 1121
 	 * @return string
1122 1122
 	 */
1123
-	function espresso_venue_gmap( $VNU_ID = 0, $map_ID = FALSE, $gmap = array(), $echo = TRUE  ) {
1124
-		if ( $echo ) {
1125
-			echo EEH_Venue_View::venue_gmap( $VNU_ID, $map_ID, $gmap );
1123
+	function espresso_venue_gmap($VNU_ID = 0, $map_ID = FALSE, $gmap = array(), $echo = TRUE) {
1124
+		if ($echo) {
1125
+			echo EEH_Venue_View::venue_gmap($VNU_ID, $map_ID, $gmap);
1126 1126
 			return '';
1127 1127
 		}
1128
-		return EEH_Venue_View::venue_gmap( $VNU_ID, $map_ID, $gmap );
1128
+		return EEH_Venue_View::venue_gmap($VNU_ID, $map_ID, $gmap);
1129 1129
 	}
1130 1130
 }
1131 1131
 
1132 1132
 
1133
-if ( ! function_exists( 'espresso_venue_phone' )) {
1133
+if ( ! function_exists('espresso_venue_phone')) {
1134 1134
 	/**
1135 1135
 	 * espresso_venue_phone
1136 1136
 	 *
@@ -1138,18 +1138,18 @@  discard block
 block discarded – undo
1138 1138
 	 * @param bool $echo
1139 1139
 	 * @return string
1140 1140
 	 */
1141
-	function espresso_venue_phone( $VNU_ID = 0, $echo = TRUE ) {
1142
-		if ( $echo ) {
1143
-			echo EEH_Venue_View::venue_phone( $VNU_ID );
1141
+	function espresso_venue_phone($VNU_ID = 0, $echo = TRUE) {
1142
+		if ($echo) {
1143
+			echo EEH_Venue_View::venue_phone($VNU_ID);
1144 1144
 			return '';
1145 1145
 		}
1146
-		return EEH_Venue_View::venue_phone( $VNU_ID );
1146
+		return EEH_Venue_View::venue_phone($VNU_ID);
1147 1147
 	}
1148 1148
 }
1149 1149
 
1150 1150
 
1151 1151
 
1152
-if ( ! function_exists( 'espresso_venue_website' )) {
1152
+if ( ! function_exists('espresso_venue_website')) {
1153 1153
 	/**
1154 1154
 	 * espresso_venue_website
1155 1155
 	 *
@@ -1157,18 +1157,18 @@  discard block
 block discarded – undo
1157 1157
 	 * @param bool $echo
1158 1158
 	 * @return string
1159 1159
 	 */
1160
-	function espresso_venue_website( $VNU_ID = 0, $echo = TRUE ) {
1161
-		if ( $echo ) {
1162
-			echo EEH_Venue_View::venue_website_link( $VNU_ID );
1160
+	function espresso_venue_website($VNU_ID = 0, $echo = TRUE) {
1161
+		if ($echo) {
1162
+			echo EEH_Venue_View::venue_website_link($VNU_ID);
1163 1163
 			return '';
1164 1164
 		}
1165
-		return EEH_Venue_View::venue_website_link( $VNU_ID );
1165
+		return EEH_Venue_View::venue_website_link($VNU_ID);
1166 1166
 	}
1167 1167
 }
1168 1168
 
1169 1169
 
1170 1170
 
1171
-if ( ! function_exists( 'espresso_edit_venue_link' )) {
1171
+if ( ! function_exists('espresso_edit_venue_link')) {
1172 1172
 	/**
1173 1173
 	 * espresso_edit_venue_link
1174 1174
 	 *
@@ -1176,12 +1176,12 @@  discard block
 block discarded – undo
1176 1176
 	 * @param bool $echo
1177 1177
 	 * @return string
1178 1178
 	 */
1179
-	function espresso_edit_venue_link( $VNU_ID = 0, $echo = TRUE ) {
1180
-		if($echo){
1181
-			echo EEH_Venue_View::edit_venue_link( $VNU_ID );
1179
+	function espresso_edit_venue_link($VNU_ID = 0, $echo = TRUE) {
1180
+		if ($echo) {
1181
+			echo EEH_Venue_View::edit_venue_link($VNU_ID);
1182 1182
 			return '';
1183 1183
 		}
1184
-		return EEH_Venue_View::edit_venue_link( $VNU_ID );
1184
+		return EEH_Venue_View::edit_venue_link($VNU_ID);
1185 1185
 	}
1186 1186
 }
1187 1187
 
Please login to merge, or discard this patch.
core/services/cache/BasicCacheManager.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -140,7 +140,7 @@  discard block
 block discarded – undo
140 140
         // with these parameters
141 141
         $cache_id .= filter_input(INPUT_SERVER, 'QUERY_STRING', FILTER_SANITIZE_URL);
142 142
         // then md5 the above to control it's length, add all of our prefixes, and truncate
143
-        return substr($this->cachePrefix() . $id_prefix . '-' . md5($cache_id), 0, 182);
143
+        return substr($this->cachePrefix().$id_prefix.'-'.md5($cache_id), 0, 182);
144 144
     }
145 145
 
146 146
 
@@ -170,9 +170,9 @@  discard block
 block discarded – undo
170 170
         return '
171 171
 <div class="ee-cached-content-notice" style="position:fixed; bottom:0; left: 0;">
172 172
     <p style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;margin:0 0 3px 5px">
173
-        <b>' . $type . '</b><span style="color:#999"> : </span>
174
-        <span>' . $cache_id . '</span>
175
-        <span style="margin-left:2em;">' . __FILE__ . '</span>
173
+        <b>' . $type.'</b><span style="color:#999"> : </span>
174
+        <span>' . $cache_id.'</span>
175
+        <span style="margin-left:2em;">' . __FILE__.'</span>
176 176
     </p>
177 177
 </div>';
178 178
     }
Please login to merge, or discard this patch.
Indentation   +130 added lines, -130 removed lines patch added patch discarded remove patch
@@ -16,135 +16,135 @@  discard block
 block discarded – undo
16 16
 class BasicCacheManager implements CacheManagerInterface
17 17
 {
18 18
 
19
-    /**
20
-     * @type string
21
-     */
22
-    const CACHE_PREFIX = 'ee_cache_';
23
-
24
-
25
-    /**
26
-     * @var CacheStorageInterface $cache_storage
27
-     */
28
-    private $cache_storage;
29
-
30
-
31
-    /**
32
-     * BasicCacheManager constructor.
33
-     *
34
-     * @param CacheStorageInterface $cache_storage [required]
35
-     */
36
-    public function __construct(CacheStorageInterface $cache_storage)
37
-    {
38
-        $this->cache_storage = $cache_storage;
39
-    }
40
-
41
-
42
-    /**
43
-     * returns a string that will be prepended to all cache identifiers
44
-     *
45
-     * @return string
46
-     */
47
-    public function cachePrefix()
48
-    {
49
-        return BasicCacheManager::CACHE_PREFIX;
50
-    }
51
-
52
-
53
-    /**
54
-     * @param string  $id_prefix [required] Prepended to all cache IDs. Can be helpful in finding specific cache types.
55
-     *                           May also be helpful to include an additional specific identifier,
56
-     *                           such as a post ID as part of the $id_prefix so that individual caches
57
-     *                           can be found and/or cleared. ex: "venue-28", or "shortcode-156".
58
-     *                           BasicCacheManager::CACHE_PREFIX will also be prepended to the cache id.
59
-     * @param string  $cache_id  [required] Additional identifying details that make this cache unique.
60
-     *                           It is advisable to use some of the actual data
61
-     *                           that is used to generate the content being cached,
62
-     *                           in order to guarantee that the cache id is unique for that content.
63
-     *                           The cache id will be md5'd before usage to make it more db friendly,
64
-     *                           and the entire cache id string will be truncated to 190 characters.
65
-     * @param Closure $callback  [required] since the point of caching is to avoid generating content when not
66
-     *                           necessary,
67
-     *                           we wrap our content creation in a Closure so that it is not executed until needed.
68
-     * @param int     $expiration
69
-     * @return Closure|mixed
70
-     */
71
-    public function get($id_prefix, $cache_id, Closure $callback, $expiration = HOUR_IN_SECONDS)
72
-    {
73
-        $content = '';
74
-        $expiration = absint(
75
-            apply_filters(
76
-                'FHEE__CacheManager__get__cache_expiration',
77
-                $expiration,
78
-                $id_prefix,
79
-                $cache_id
80
-            )
81
-        );
82
-        $cache_id = $this->generateCacheIdentifier($id_prefix, $cache_id);
83
-        // is caching enabled for this content ?
84
-        if ($expiration) {
85
-            $content = $this->cache_storage->get($cache_id);
86
-        }
87
-        // any existing content ?
88
-        if (empty($content)) {
89
-            // nope! let's generate some new stuff
90
-            $content = $callback();
91
-            // save the new content if caching is enabled
92
-            if ($expiration) {
93
-                $this->cache_storage->add($cache_id, $content, $expiration);
94
-                if (EE_DEBUG) {
95
-                    $content .= $this->displayCacheNotice($cache_id, 'REFRESH CACHE');
96
-                }
97
-            }
98
-        } else {
99
-            if (EE_DEBUG) {
100
-                $content .= $this->displayCacheNotice($cache_id, 'CACHED CONTENT');
101
-            }
102
-        }
103
-        return $content;
104
-    }
105
-
106
-
107
-    /**
108
-     * Generates a unique identifier string for the cache
109
-     *
110
-     * @param string $id_prefix [required] see BasicCacheManager::get()
111
-     * @param string $cache_id  [required] see BasicCacheManager::get()
112
-     * @return string
113
-     */
114
-    private function generateCacheIdentifier($id_prefix, $cache_id)
115
-    {
116
-        // let's make the cached content unique for this "page"
117
-        $cache_id .= filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL);
118
-        // with these parameters
119
-        $cache_id .= filter_input(INPUT_SERVER, 'QUERY_STRING', FILTER_SANITIZE_URL);
120
-        // then md5 the above to control it's length, add all of our prefixes, and truncate
121
-        return substr($this->cachePrefix() . $id_prefix . '-' . md5($cache_id), 0, 182);
122
-    }
123
-
124
-
125
-    /**
126
-     * @param array|string $cache_id [required] Could be an ID prefix affecting many caches
127
-     *                               or a specific ID targeting a single cache item
128
-     * @return void
129
-     */
130
-    public function clear($cache_id)
131
-    {
132
-        // ensure incoming arg is in an array
133
-        $cache_id = is_array($cache_id) ? $cache_id : array($cache_id);
134
-        // delete corresponding transients for the supplied id prefix
135
-        $this->cache_storage->deleteMany($cache_id);
136
-    }
137
-
138
-
139
-    /**
140
-     * @param array|string $cache_id [required] Could be an ID prefix affecting many caches
141
-     *                               or a specific ID targeting a single cache item
142
-     * @param string       $type
143
-     * @return string
144
-     */
145
-    private function displayCacheNotice($cache_id, $type)
146
-    {
147
-        return '
19
+	/**
20
+	 * @type string
21
+	 */
22
+	const CACHE_PREFIX = 'ee_cache_';
23
+
24
+
25
+	/**
26
+	 * @var CacheStorageInterface $cache_storage
27
+	 */
28
+	private $cache_storage;
29
+
30
+
31
+	/**
32
+	 * BasicCacheManager constructor.
33
+	 *
34
+	 * @param CacheStorageInterface $cache_storage [required]
35
+	 */
36
+	public function __construct(CacheStorageInterface $cache_storage)
37
+	{
38
+		$this->cache_storage = $cache_storage;
39
+	}
40
+
41
+
42
+	/**
43
+	 * returns a string that will be prepended to all cache identifiers
44
+	 *
45
+	 * @return string
46
+	 */
47
+	public function cachePrefix()
48
+	{
49
+		return BasicCacheManager::CACHE_PREFIX;
50
+	}
51
+
52
+
53
+	/**
54
+	 * @param string  $id_prefix [required] Prepended to all cache IDs. Can be helpful in finding specific cache types.
55
+	 *                           May also be helpful to include an additional specific identifier,
56
+	 *                           such as a post ID as part of the $id_prefix so that individual caches
57
+	 *                           can be found and/or cleared. ex: "venue-28", or "shortcode-156".
58
+	 *                           BasicCacheManager::CACHE_PREFIX will also be prepended to the cache id.
59
+	 * @param string  $cache_id  [required] Additional identifying details that make this cache unique.
60
+	 *                           It is advisable to use some of the actual data
61
+	 *                           that is used to generate the content being cached,
62
+	 *                           in order to guarantee that the cache id is unique for that content.
63
+	 *                           The cache id will be md5'd before usage to make it more db friendly,
64
+	 *                           and the entire cache id string will be truncated to 190 characters.
65
+	 * @param Closure $callback  [required] since the point of caching is to avoid generating content when not
66
+	 *                           necessary,
67
+	 *                           we wrap our content creation in a Closure so that it is not executed until needed.
68
+	 * @param int     $expiration
69
+	 * @return Closure|mixed
70
+	 */
71
+	public function get($id_prefix, $cache_id, Closure $callback, $expiration = HOUR_IN_SECONDS)
72
+	{
73
+		$content = '';
74
+		$expiration = absint(
75
+			apply_filters(
76
+				'FHEE__CacheManager__get__cache_expiration',
77
+				$expiration,
78
+				$id_prefix,
79
+				$cache_id
80
+			)
81
+		);
82
+		$cache_id = $this->generateCacheIdentifier($id_prefix, $cache_id);
83
+		// is caching enabled for this content ?
84
+		if ($expiration) {
85
+			$content = $this->cache_storage->get($cache_id);
86
+		}
87
+		// any existing content ?
88
+		if (empty($content)) {
89
+			// nope! let's generate some new stuff
90
+			$content = $callback();
91
+			// save the new content if caching is enabled
92
+			if ($expiration) {
93
+				$this->cache_storage->add($cache_id, $content, $expiration);
94
+				if (EE_DEBUG) {
95
+					$content .= $this->displayCacheNotice($cache_id, 'REFRESH CACHE');
96
+				}
97
+			}
98
+		} else {
99
+			if (EE_DEBUG) {
100
+				$content .= $this->displayCacheNotice($cache_id, 'CACHED CONTENT');
101
+			}
102
+		}
103
+		return $content;
104
+	}
105
+
106
+
107
+	/**
108
+	 * Generates a unique identifier string for the cache
109
+	 *
110
+	 * @param string $id_prefix [required] see BasicCacheManager::get()
111
+	 * @param string $cache_id  [required] see BasicCacheManager::get()
112
+	 * @return string
113
+	 */
114
+	private function generateCacheIdentifier($id_prefix, $cache_id)
115
+	{
116
+		// let's make the cached content unique for this "page"
117
+		$cache_id .= filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL);
118
+		// with these parameters
119
+		$cache_id .= filter_input(INPUT_SERVER, 'QUERY_STRING', FILTER_SANITIZE_URL);
120
+		// then md5 the above to control it's length, add all of our prefixes, and truncate
121
+		return substr($this->cachePrefix() . $id_prefix . '-' . md5($cache_id), 0, 182);
122
+	}
123
+
124
+
125
+	/**
126
+	 * @param array|string $cache_id [required] Could be an ID prefix affecting many caches
127
+	 *                               or a specific ID targeting a single cache item
128
+	 * @return void
129
+	 */
130
+	public function clear($cache_id)
131
+	{
132
+		// ensure incoming arg is in an array
133
+		$cache_id = is_array($cache_id) ? $cache_id : array($cache_id);
134
+		// delete corresponding transients for the supplied id prefix
135
+		$this->cache_storage->deleteMany($cache_id);
136
+	}
137
+
138
+
139
+	/**
140
+	 * @param array|string $cache_id [required] Could be an ID prefix affecting many caches
141
+	 *                               or a specific ID targeting a single cache item
142
+	 * @param string       $type
143
+	 * @return string
144
+	 */
145
+	private function displayCacheNotice($cache_id, $type)
146
+	{
147
+		return '
148 148
 <div class="ee-cached-content-notice" style="position:fixed; bottom:0; left: 0;">
149 149
     <p style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;margin:0 0 3px 5px">
150 150
         <b>' . $type . '</b><span style="color:#999"> : </span>
@@ -152,5 +152,5 @@  discard block
 block discarded – undo
152 152
         <span style="margin-left:2em;">' . __FILE__ . '</span>
153 153
     </p>
154 154
 </div>';
155
-    }
155
+	}
156 156
 }
Please login to merge, or discard this patch.
acceptance_tests/Page/EventsAdmin.php 2 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -120,7 +120,7 @@
 block discarded – undo
120 120
 
121 121
     /**
122 122
      * Wrapper for getting the selector for a given field and given display row of a ticket in the event editor.
123
-     * @param     $field_name
123
+     * @param     string $field_name
124 124
      * @param int $row_number
125 125
      * @return string
126 126
      */
Please login to merge, or discard this patch.
Indentation   +276 added lines, -276 removed lines patch added patch discarded remove patch
@@ -14,280 +14,280 @@
 block discarded – undo
14 14
 class EventsAdmin extends CoreAdmin
15 15
 {
16 16
 
17
-    /**
18
-     * Selector for the Add new Event button in the admin.
19
-     * @var string
20
-     */
21
-    const ADD_NEW_EVENT_BUTTON_SELECTOR = '#add-new-event';
22
-
23
-
24
-    /**
25
-     * Selector for the Event Title field in the event editor
26
-     * @var string
27
-     */
28
-    const EVENT_EDITOR_TITLE_FIELD_SELECTOR = ['xpath' => "//input[@id='title']"];
29
-
30
-    /**
31
-     * Selector for the publish submit button in the event editor.
32
-     * @var string
33
-     */
34
-    const EVENT_EDITOR_PUBLISH_BUTTON_SELECTOR = ['xpath'=>"//div[@id='major-publishing-actions']//input[@id='publish']"];
35
-
36
-
37
-    /**
38
-     * Selector for the save button in the event editor
39
-     */
40
-    const EVENT_EDITOR_SAVE_BUTTON_SELECTOR = ['xpath' => "//div[@id='minor-publishing-actions']//input[@id='save-post']"];
41
-
42
-
43
-    /**
44
-     * @var string
45
-     */
46
-    const EVENT_EDITOR_DEFAULT_REGISTRATION_STATUS_FIELD_SELECTOR = '#EVT_default_registration_status';
47
-
48
-    /**
49
-     * Selector for the view link after publishing an event.
50
-     * @var string
51
-     */
52
-    const EVENT_EDITOR_VIEW_LINK_AFTER_PUBLISH_SELECTOR = "//span[@id='sample-permalink']/a";
53
-
54
-
55
-    /**
56
-     * Selector for the ID of the event in the event editor
57
-     * @var string
58
-     */
59
-    const EVENT_EDITOR_EVT_ID_SELECTOR = "//input[@id='post_ID']";
60
-
61
-
62
-    /**
63
-     * Selector for the search input on the event list table page.
64
-     * @var string
65
-     */
66
-    const EVENT_LIST_TABLE_SEARCH_INPUT_SELECTOR = '#toplevel_page_espresso_events-search-input';
67
-
68
-
69
-
70
-
71
-    /**
72
-     * @param string $additional_params
73
-     * @return string
74
-     */
75
-    public static function defaultEventsListTableUrl($additional_params = '')
76
-    {
77
-        return self::adminUrl('espresso_events', 'default', $additional_params);
78
-    }
79
-
80
-
81
-    /**
82
-     * The selector for the DTTname field for the given row in the event editor.
83
-     * @param int $row_number
84
-     * @return string
85
-     */
86
-    public static function eventEditorDatetimeNameFieldSelector($row_number = 1)
87
-    {
88
-        return self::eventEditorDatetimeFieldSelectorForField('DTT_name', $row_number);
89
-    }
90
-
91
-
92
-    /**
93
-     * The selector for the DTT_EVT_start field for the given row in the event editor.d
94
-     * @param int $row_number
95
-     * @return string
96
-     */
97
-    public static function eventEditorDatetimeStartDateFieldSelector($row_number = 1)
98
-    {
99
-        return self::eventEditorDatetimeFieldSelectorForField('DTT_EVT_start', $row_number);
100
-    }
101
-
102
-
103
-    /**
104
-     * Wrapper for getting the selector for a given field and given row of a datetime in the event editor.
105
-     *
106
-     * @param string $field_name
107
-     * @param int    $row_number
108
-     * @return string
109
-     */
110
-    public static function eventEditorDatetimeFieldSelectorForField($field_name, $row_number = 1)
111
-    {
112
-        return "//input[@id='event-datetime-$field_name-$row_number']";
113
-    }
114
-
115
-
116
-    /**
117
-     * The selector for the TKT_name field for the given display row in the event editor.
118
-     * @param int $row_number
119
-     * @return string
120
-     */
121
-    public static function eventEditorTicketNameFieldSelector($row_number = 1)
122
-    {
123
-        return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_name', $row_number);
124
-    }
125
-
126
-
127
-    /**
128
-     * Selector for the TKT_base_price field for the given display row in the event editor.
129
-     * @param int $row_number
130
-     * @return string
131
-     */
132
-    public static function eventEditorTicketPriceFieldSelector($row_number = 1)
133
-    {
134
-        return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_base_price', $row_number);
135
-    }
136
-
137
-
138
-    /**
139
-     * Selector for the TKT_qty field for the given display row in the event editor.
140
-     * @param int $row_number
141
-     * @return string
142
-     */
143
-    public static function eventEditorTicketQuantityFieldSelector($row_number = 1)
144
-    {
145
-        return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_qty', $row_number);
146
-    }
147
-
148
-
149
-    /**
150
-     * Selector for the advanced details toggle for the ticket for the given display row in the event editor.
151
-     * @param int $row_number
152
-     * @return string
153
-     */
154
-    public static function eventEditorTicketAdvancedDetailsSelector($row_number = 1)
155
-    {
156
-        return "//tr[@id='display-ticketrow-$row_number']//span[contains(@class, 'gear-icon')]";
157
-    }
158
-
159
-
160
-    /**
161
-     * Selector for the subtotal amount for the given display row of the ticket in the event editor.
162
-     * @param int $row_number
163
-     * @return string
164
-     */
165
-    public static function eventEditorTicketAdvancedDetailsSubtotalSelector($row_number = 1)
166
-    {
167
-        return "//span[@id='price-total-amount-$row_number']";
168
-    }
169
-
170
-
171
-    /**
172
-     * Selector for the Total element for the given display row of the ticket in the event editor.
173
-     * @param int $row_number
174
-     * @return string
175
-     */
176
-    public static function eventEditorTicketAdvancedDetailsTotalSelector($row_number = 1)
177
-    {
178
-        return "//span[@id='price-total-amount-$row_number']";
179
-    }
180
-
181
-
182
-    /**
183
-     * Selector for the taxable selector for the ticket for the given display row in the event editor.
184
-     * @param int $row_number
185
-     * @return string
186
-     */
187
-    public static function eventEditorTicketTaxableCheckboxSelector($row_number = 1)
188
-    {
189
-        return "//input[@id='edit-ticket-TKT_taxable-$row_number']";
190
-    }
191
-
192
-
193
-    /**
194
-     * This returns the xpath locater for the Tax amount display container within the advanced settings view for the
195
-     * given ticket (row) and the given tax id (PRC_ID).
196
-     *
197
-     * @param int $tax_id     The PRC_ID for the tax you want the locater for.  Note, this defaults to the default tax
198
-     *                        setup on a fresh install.
199
-     * @param int $row_number What row representing the ticket you want the locator for.
200
-     * @return string
201
-     */
202
-    public static function eventEditorTicketTaxAmountDisplayForTaxIdAndTicketRowSelector($tax_id = 2, $row_number = 1)
203
-    {
204
-        return "//span[@id='TKT-tax-amount-display-$tax_id-$row_number']";
205
-    }
206
-
207
-
208
-    /**
209
-     * Wrapper for getting the selector for a given field and given display row of a ticket in the event editor.
210
-     * @param     $field_name
211
-     * @param int $row_number
212
-     * @return string
213
-     */
214
-    public static function eventEditorTicketFieldSelectorForFieldInDisplayRow($field_name, $row_number = 1)
215
-    {
216
-        return "//tr[@id='display-ticketrow-$row_number']//input[contains(@class, 'edit-ticket-$field_name')]";
217
-    }
218
-
219
-
220
-    /**
221
-     * Returns the selector for the event title edit link in the events list table for the given Event Title.
222
-     * @param string $event_title
223
-     * @return string
224
-     */
225
-    public static function eventListTableEventTitleEditLinkSelectorForTitle($event_title)
226
-    {
227
-        return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']";
228
-    }
229
-
230
-
231
-    /**
232
-     * Locator for for the ID column in the event list table for a given event title.
233
-     * @param string $event_title
234
-     * @return string
235
-     */
236
-    public static function eventListTableEventIdSelectorForTitle($event_title)
237
-    {
238
-        return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']"
239
-               . "//ancestor::tr/th[contains(@class, 'check-column')]/input";
240
-    }
241
-
242
-
243
-    /**
244
-     * Locator for the view link in the row of an event list table for the given event title.
245
-     * @param string $event_title
246
-     * @return string
247
-     */
248
-    public static function eventListTableEventTitleViewLinkSelectorForTitle($event_title)
249
-    {
250
-        return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']"
251
-               . "//ancestor::td//span[@class='view']/a";
252
-    }
253
-
254
-
255
-    /**
256
-     * Locator for the messenger tab in the Notifications metabox in the event editor.
257
-     * @param string $messenger_slug  The slug for the messenger (it's reference slug).
258
-     * @return string
259
-     */
260
-    public static function eventEditorNotificationsMetaBoxMessengerTabSelector($messenger_slug)
261
-    {
262
-        return "//div[@id='espresso_events_Messages_Hooks_Extend_messages_metabox_metabox']"
263
-               . "//a[@rel='ee-tab-$messenger_slug']";
264
-    }
265
-
266
-
267
-    /**
268
-     * Locator for the select input within the notifications metabox.
269
-     * Note, this assumes the tab content for the related messenger is already visible.
270
-     * @param string $message_type_label The message type label (visible string in the table) you want the selector for.
271
-     * @return string
272
-     */
273
-    public static function eventEditorNotificationsMetaBoxSelectSelectorForMessageType($message_type_label)
274
-    {
275
-        return "//div[@id='espresso_events_Messages_Hooks_Extend_messages_metabox_metabox']"
276
-               . "//table[@class='messages-custom-template-switcher']"
277
-               . "//tr/td[contains(.,'Registration Approved')]"
278
-               . "//ancestor::tr//select[contains(@class,'message-template-selector')]";
279
-    }
280
-
281
-
282
-    /**
283
-     * Returns the selector for the action link to the registrations list table view filtered by the given event_id.
284
-     * Assumes one is in the context of the Events List Table
285
-     * @param int $event_id
286
-     * @return string
287
-     */
288
-    public static function listTableActionLinkRegistrationsForEvent($event_id)
289
-    {
290
-        return "//tbody[@id='the-list']/tr/td[contains(@class, 'column-id') and contains(.,$event_id)]"
291
-                . "//ancestor::tr/td//a[div[contains(@class, 'dashicons-groups')]]";
292
-    }
17
+	/**
18
+	 * Selector for the Add new Event button in the admin.
19
+	 * @var string
20
+	 */
21
+	const ADD_NEW_EVENT_BUTTON_SELECTOR = '#add-new-event';
22
+
23
+
24
+	/**
25
+	 * Selector for the Event Title field in the event editor
26
+	 * @var string
27
+	 */
28
+	const EVENT_EDITOR_TITLE_FIELD_SELECTOR = ['xpath' => "//input[@id='title']"];
29
+
30
+	/**
31
+	 * Selector for the publish submit button in the event editor.
32
+	 * @var string
33
+	 */
34
+	const EVENT_EDITOR_PUBLISH_BUTTON_SELECTOR = ['xpath'=>"//div[@id='major-publishing-actions']//input[@id='publish']"];
35
+
36
+
37
+	/**
38
+	 * Selector for the save button in the event editor
39
+	 */
40
+	const EVENT_EDITOR_SAVE_BUTTON_SELECTOR = ['xpath' => "//div[@id='minor-publishing-actions']//input[@id='save-post']"];
41
+
42
+
43
+	/**
44
+	 * @var string
45
+	 */
46
+	const EVENT_EDITOR_DEFAULT_REGISTRATION_STATUS_FIELD_SELECTOR = '#EVT_default_registration_status';
47
+
48
+	/**
49
+	 * Selector for the view link after publishing an event.
50
+	 * @var string
51
+	 */
52
+	const EVENT_EDITOR_VIEW_LINK_AFTER_PUBLISH_SELECTOR = "//span[@id='sample-permalink']/a";
53
+
54
+
55
+	/**
56
+	 * Selector for the ID of the event in the event editor
57
+	 * @var string
58
+	 */
59
+	const EVENT_EDITOR_EVT_ID_SELECTOR = "//input[@id='post_ID']";
60
+
61
+
62
+	/**
63
+	 * Selector for the search input on the event list table page.
64
+	 * @var string
65
+	 */
66
+	const EVENT_LIST_TABLE_SEARCH_INPUT_SELECTOR = '#toplevel_page_espresso_events-search-input';
67
+
68
+
69
+
70
+
71
+	/**
72
+	 * @param string $additional_params
73
+	 * @return string
74
+	 */
75
+	public static function defaultEventsListTableUrl($additional_params = '')
76
+	{
77
+		return self::adminUrl('espresso_events', 'default', $additional_params);
78
+	}
79
+
80
+
81
+	/**
82
+	 * The selector for the DTTname field for the given row in the event editor.
83
+	 * @param int $row_number
84
+	 * @return string
85
+	 */
86
+	public static function eventEditorDatetimeNameFieldSelector($row_number = 1)
87
+	{
88
+		return self::eventEditorDatetimeFieldSelectorForField('DTT_name', $row_number);
89
+	}
90
+
91
+
92
+	/**
93
+	 * The selector for the DTT_EVT_start field for the given row in the event editor.d
94
+	 * @param int $row_number
95
+	 * @return string
96
+	 */
97
+	public static function eventEditorDatetimeStartDateFieldSelector($row_number = 1)
98
+	{
99
+		return self::eventEditorDatetimeFieldSelectorForField('DTT_EVT_start', $row_number);
100
+	}
101
+
102
+
103
+	/**
104
+	 * Wrapper for getting the selector for a given field and given row of a datetime in the event editor.
105
+	 *
106
+	 * @param string $field_name
107
+	 * @param int    $row_number
108
+	 * @return string
109
+	 */
110
+	public static function eventEditorDatetimeFieldSelectorForField($field_name, $row_number = 1)
111
+	{
112
+		return "//input[@id='event-datetime-$field_name-$row_number']";
113
+	}
114
+
115
+
116
+	/**
117
+	 * The selector for the TKT_name field for the given display row in the event editor.
118
+	 * @param int $row_number
119
+	 * @return string
120
+	 */
121
+	public static function eventEditorTicketNameFieldSelector($row_number = 1)
122
+	{
123
+		return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_name', $row_number);
124
+	}
125
+
126
+
127
+	/**
128
+	 * Selector for the TKT_base_price field for the given display row in the event editor.
129
+	 * @param int $row_number
130
+	 * @return string
131
+	 */
132
+	public static function eventEditorTicketPriceFieldSelector($row_number = 1)
133
+	{
134
+		return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_base_price', $row_number);
135
+	}
136
+
137
+
138
+	/**
139
+	 * Selector for the TKT_qty field for the given display row in the event editor.
140
+	 * @param int $row_number
141
+	 * @return string
142
+	 */
143
+	public static function eventEditorTicketQuantityFieldSelector($row_number = 1)
144
+	{
145
+		return self::eventEditorTicketFieldSelectorForFieldInDisplayRow('TKT_qty', $row_number);
146
+	}
147
+
148
+
149
+	/**
150
+	 * Selector for the advanced details toggle for the ticket for the given display row in the event editor.
151
+	 * @param int $row_number
152
+	 * @return string
153
+	 */
154
+	public static function eventEditorTicketAdvancedDetailsSelector($row_number = 1)
155
+	{
156
+		return "//tr[@id='display-ticketrow-$row_number']//span[contains(@class, 'gear-icon')]";
157
+	}
158
+
159
+
160
+	/**
161
+	 * Selector for the subtotal amount for the given display row of the ticket in the event editor.
162
+	 * @param int $row_number
163
+	 * @return string
164
+	 */
165
+	public static function eventEditorTicketAdvancedDetailsSubtotalSelector($row_number = 1)
166
+	{
167
+		return "//span[@id='price-total-amount-$row_number']";
168
+	}
169
+
170
+
171
+	/**
172
+	 * Selector for the Total element for the given display row of the ticket in the event editor.
173
+	 * @param int $row_number
174
+	 * @return string
175
+	 */
176
+	public static function eventEditorTicketAdvancedDetailsTotalSelector($row_number = 1)
177
+	{
178
+		return "//span[@id='price-total-amount-$row_number']";
179
+	}
180
+
181
+
182
+	/**
183
+	 * Selector for the taxable selector for the ticket for the given display row in the event editor.
184
+	 * @param int $row_number
185
+	 * @return string
186
+	 */
187
+	public static function eventEditorTicketTaxableCheckboxSelector($row_number = 1)
188
+	{
189
+		return "//input[@id='edit-ticket-TKT_taxable-$row_number']";
190
+	}
191
+
192
+
193
+	/**
194
+	 * This returns the xpath locater for the Tax amount display container within the advanced settings view for the
195
+	 * given ticket (row) and the given tax id (PRC_ID).
196
+	 *
197
+	 * @param int $tax_id     The PRC_ID for the tax you want the locater for.  Note, this defaults to the default tax
198
+	 *                        setup on a fresh install.
199
+	 * @param int $row_number What row representing the ticket you want the locator for.
200
+	 * @return string
201
+	 */
202
+	public static function eventEditorTicketTaxAmountDisplayForTaxIdAndTicketRowSelector($tax_id = 2, $row_number = 1)
203
+	{
204
+		return "//span[@id='TKT-tax-amount-display-$tax_id-$row_number']";
205
+	}
206
+
207
+
208
+	/**
209
+	 * Wrapper for getting the selector for a given field and given display row of a ticket in the event editor.
210
+	 * @param     $field_name
211
+	 * @param int $row_number
212
+	 * @return string
213
+	 */
214
+	public static function eventEditorTicketFieldSelectorForFieldInDisplayRow($field_name, $row_number = 1)
215
+	{
216
+		return "//tr[@id='display-ticketrow-$row_number']//input[contains(@class, 'edit-ticket-$field_name')]";
217
+	}
218
+
219
+
220
+	/**
221
+	 * Returns the selector for the event title edit link in the events list table for the given Event Title.
222
+	 * @param string $event_title
223
+	 * @return string
224
+	 */
225
+	public static function eventListTableEventTitleEditLinkSelectorForTitle($event_title)
226
+	{
227
+		return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']";
228
+	}
229
+
230
+
231
+	/**
232
+	 * Locator for for the ID column in the event list table for a given event title.
233
+	 * @param string $event_title
234
+	 * @return string
235
+	 */
236
+	public static function eventListTableEventIdSelectorForTitle($event_title)
237
+	{
238
+		return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']"
239
+			   . "//ancestor::tr/th[contains(@class, 'check-column')]/input";
240
+	}
241
+
242
+
243
+	/**
244
+	 * Locator for the view link in the row of an event list table for the given event title.
245
+	 * @param string $event_title
246
+	 * @return string
247
+	 */
248
+	public static function eventListTableEventTitleViewLinkSelectorForTitle($event_title)
249
+	{
250
+		return "//td[contains(@class, 'column-name')]/strong/a[text()='$event_title']"
251
+			   . "//ancestor::td//span[@class='view']/a";
252
+	}
253
+
254
+
255
+	/**
256
+	 * Locator for the messenger tab in the Notifications metabox in the event editor.
257
+	 * @param string $messenger_slug  The slug for the messenger (it's reference slug).
258
+	 * @return string
259
+	 */
260
+	public static function eventEditorNotificationsMetaBoxMessengerTabSelector($messenger_slug)
261
+	{
262
+		return "//div[@id='espresso_events_Messages_Hooks_Extend_messages_metabox_metabox']"
263
+			   . "//a[@rel='ee-tab-$messenger_slug']";
264
+	}
265
+
266
+
267
+	/**
268
+	 * Locator for the select input within the notifications metabox.
269
+	 * Note, this assumes the tab content for the related messenger is already visible.
270
+	 * @param string $message_type_label The message type label (visible string in the table) you want the selector for.
271
+	 * @return string
272
+	 */
273
+	public static function eventEditorNotificationsMetaBoxSelectSelectorForMessageType($message_type_label)
274
+	{
275
+		return "//div[@id='espresso_events_Messages_Hooks_Extend_messages_metabox_metabox']"
276
+			   . "//table[@class='messages-custom-template-switcher']"
277
+			   . "//tr/td[contains(.,'Registration Approved')]"
278
+			   . "//ancestor::tr//select[contains(@class,'message-template-selector')]";
279
+	}
280
+
281
+
282
+	/**
283
+	 * Returns the selector for the action link to the registrations list table view filtered by the given event_id.
284
+	 * Assumes one is in the context of the Events List Table
285
+	 * @param int $event_id
286
+	 * @return string
287
+	 */
288
+	public static function listTableActionLinkRegistrationsForEvent($event_id)
289
+	{
290
+		return "//tbody[@id='the-list']/tr/td[contains(@class, 'column-id') and contains(.,$event_id)]"
291
+				. "//ancestor::tr/td//a[div[contains(@class, 'dashicons-groups')]]";
292
+	}
293 293
 }
Please login to merge, or discard this patch.