Completed
Pull Request — master (#378)
by Darren
21:48
created
modules/ticket_selector/TicketSelectorRowSimple.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -14,26 +14,26 @@
 block discarded – undo
14 14
 class TicketSelectorRowSimple extends TicketSelectorRow
15 15
 {
16 16
 
17
-    /**
18
-     * @throws EE_Error
19
-     */
20
-    public function setupTicketStatusDisplay()
21
-    {
22
-        $remaining = $this->ticket->remaining();
23
-        $this->setTicketMinAndMax($remaining);
24
-        $this->setTicketStatusClasses($remaining);
25
-        $this->setTicketStatusDisplay($remaining);
26
-    }
17
+	/**
18
+	 * @throws EE_Error
19
+	 */
20
+	public function setupTicketStatusDisplay()
21
+	{
22
+		$remaining = $this->ticket->remaining();
23
+		$this->setTicketMinAndMax($remaining);
24
+		$this->setTicketStatusClasses($remaining);
25
+		$this->setTicketStatusDisplay($remaining);
26
+	}
27 27
 
28 28
 
29
-    public function getTicketDescription()
30
-    {
31
-        $filtered_row_content = $this->getFilteredRowContents();
32
-        if ($filtered_row_content !== false) {
33
-            remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
34
-            add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_false');
35
-            return $filtered_row_content;
36
-        }
37
-        return $this->ticket->description();
38
-    }
29
+	public function getTicketDescription()
30
+	{
31
+		$filtered_row_content = $this->getFilteredRowContents();
32
+		if ($filtered_row_content !== false) {
33
+			remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
34
+			add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_false');
35
+			return $filtered_row_content;
36
+		}
37
+		return $this->ticket->description();
38
+	}
39 39
 }
Please login to merge, or discard this patch.
modules/ticket_selector/TicketSelectorIframe.php 2 patches
Indentation   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -22,81 +22,81 @@
 block discarded – undo
22 22
 class TicketSelectorIframe extends Iframe
23 23
 {
24 24
 
25
-    /**
26
-     * TicketSelectorIframe constructor.
27
-     *
28
-     * @throws InvalidArgumentException
29
-     * @throws InvalidInterfaceException
30
-     * @throws InvalidDataTypeException
31
-     * @throws DomainException
32
-     * @throws EE_Error
33
-     * @throws ReflectionException
34
-     */
35
-    public function __construct()
36
-    {
37
-        EE_Registry::instance()->REQ->set_espresso_page(true);
38
-        /** @type \EEM_Event $EEM_Event */
39
-        $EEM_Event = EE_Registry::instance()->load_model('Event');
40
-        $event = $EEM_Event->get_one_by_ID(
41
-            EE_Registry::instance()->REQ->get('event', 0)
42
-        );
43
-        $ticket_selector = new DisplayTicketSelector();
44
-        $ticket_selector->setIframe(true);
45
-        parent::__construct(
46
-            esc_html__('Ticket Selector', 'event_espresso'),
47
-            $ticket_selector->display($event)
48
-        );
49
-        $this->addStylesheets(
50
-            apply_filters(
51
-                'FHEE__EED_Ticket_Selector__ticket_selector_iframe__css',
52
-                array(
53
-                    'ticket_selector_embed' => TICKET_SELECTOR_ASSETS_URL
54
-                                               . 'ticket_selector_embed.css?ver='
55
-                                               . EVENT_ESPRESSO_VERSION,
56
-                    'ticket_selector'       => TICKET_SELECTOR_ASSETS_URL
57
-                                               . 'ticket_selector.css?ver='
58
-                                               . EVENT_ESPRESSO_VERSION,
59
-                ),
60
-                $this
61
-            )
62
-        );
63
-        if (! apply_filters('FHEE__EED_Ticket_Selector__ticket_selector_iframe__load_theme_css', false, $this)) {
64
-            $this->addStylesheets(array('site_theme' => ''));
65
-        }
66
-        $this->addScripts(
67
-            apply_filters(
68
-                'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
69
-                array(
70
-                    'ticket_selector_iframe_embed' => TICKET_SELECTOR_ASSETS_URL
71
-                                                      . 'ticket_selector_iframe_embed.js?ver='
72
-                                                      . EVENT_ESPRESSO_VERSION,
73
-                ),
74
-                $this
75
-            )
76
-        );
77
-        $js_attributes = apply_filters(
78
-            'FHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__js_attributes',
79
-            array(),
80
-            $this
81
-        );
82
-        if (! empty($js_attributes)) {
83
-            $this->addScriptAttributes($js_attributes);
84
-        }
85
-        $this->addLocalizedVars(
86
-            apply_filters(
87
-                'FHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__localized_vars',
88
-                array(
89
-                    'ticket_selector_iframe' => true,
90
-                    'EEDTicketSelectorMsg'   => __(
91
-                        'Please choose at least one ticket before continuing.',
92
-                        'event_espresso'
93
-                    ),
94
-                )
95
-            )
96
-        );
97
-        do_action(
98
-            'AHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__complete',
99
-            $this
100
-        );
101
-    }
25
+	/**
26
+	 * TicketSelectorIframe constructor.
27
+	 *
28
+	 * @throws InvalidArgumentException
29
+	 * @throws InvalidInterfaceException
30
+	 * @throws InvalidDataTypeException
31
+	 * @throws DomainException
32
+	 * @throws EE_Error
33
+	 * @throws ReflectionException
34
+	 */
35
+	public function __construct()
36
+	{
37
+		EE_Registry::instance()->REQ->set_espresso_page(true);
38
+		/** @type \EEM_Event $EEM_Event */
39
+		$EEM_Event = EE_Registry::instance()->load_model('Event');
40
+		$event = $EEM_Event->get_one_by_ID(
41
+			EE_Registry::instance()->REQ->get('event', 0)
42
+		);
43
+		$ticket_selector = new DisplayTicketSelector();
44
+		$ticket_selector->setIframe(true);
45
+		parent::__construct(
46
+			esc_html__('Ticket Selector', 'event_espresso'),
47
+			$ticket_selector->display($event)
48
+		);
49
+		$this->addStylesheets(
50
+			apply_filters(
51
+				'FHEE__EED_Ticket_Selector__ticket_selector_iframe__css',
52
+				array(
53
+					'ticket_selector_embed' => TICKET_SELECTOR_ASSETS_URL
54
+											   . 'ticket_selector_embed.css?ver='
55
+											   . EVENT_ESPRESSO_VERSION,
56
+					'ticket_selector'       => TICKET_SELECTOR_ASSETS_URL
57
+											   . 'ticket_selector.css?ver='
58
+											   . EVENT_ESPRESSO_VERSION,
59
+				),
60
+				$this
61
+			)
62
+		);
63
+		if (! apply_filters('FHEE__EED_Ticket_Selector__ticket_selector_iframe__load_theme_css', false, $this)) {
64
+			$this->addStylesheets(array('site_theme' => ''));
65
+		}
66
+		$this->addScripts(
67
+			apply_filters(
68
+				'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
69
+				array(
70
+					'ticket_selector_iframe_embed' => TICKET_SELECTOR_ASSETS_URL
71
+													  . 'ticket_selector_iframe_embed.js?ver='
72
+													  . EVENT_ESPRESSO_VERSION,
73
+				),
74
+				$this
75
+			)
76
+		);
77
+		$js_attributes = apply_filters(
78
+			'FHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__js_attributes',
79
+			array(),
80
+			$this
81
+		);
82
+		if (! empty($js_attributes)) {
83
+			$this->addScriptAttributes($js_attributes);
84
+		}
85
+		$this->addLocalizedVars(
86
+			apply_filters(
87
+				'FHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__localized_vars',
88
+				array(
89
+					'ticket_selector_iframe' => true,
90
+					'EEDTicketSelectorMsg'   => __(
91
+						'Please choose at least one ticket before continuing.',
92
+						'event_espresso'
93
+					),
94
+				)
95
+			)
96
+		);
97
+		do_action(
98
+			'AHEE__EventEspresso_modules_ticket_selector_TicketSelectorIframe__construct__complete',
99
+			$this
100
+		);
101
+	}
102 102
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
                 $this
61 61
             )
62 62
         );
63
-        if (! apply_filters('FHEE__EED_Ticket_Selector__ticket_selector_iframe__load_theme_css', false, $this)) {
63
+        if ( ! apply_filters('FHEE__EED_Ticket_Selector__ticket_selector_iframe__load_theme_css', false, $this)) {
64 64
             $this->addStylesheets(array('site_theme' => ''));
65 65
         }
66 66
         $this->addScripts(
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
             array(),
80 80
             $this
81 81
         );
82
-        if (! empty($js_attributes)) {
82
+        if ( ! empty($js_attributes)) {
83 83
             $this->addScriptAttributes($js_attributes);
84 84
         }
85 85
         $this->addLocalizedVars(
Please login to merge, or discard this patch.
modules/ticket_selector/DisplayTicketSelector.php 2 patches
Indentation   +710 added lines, -710 removed lines patch added patch discarded remove patch
@@ -33,717 +33,717 @@
 block discarded – undo
33 33
 class DisplayTicketSelector
34 34
 {
35 35
 
36
-    /**
37
-     * event that ticket selector is being generated for
38
-     *
39
-     * @access protected
40
-     * @var EE_Event $event
41
-     */
42
-    protected $event;
43
-
44
-    /**
45
-     * Used to flag when the ticket selector is being called from an external iframe.
46
-     *
47
-     * @var bool $iframe
48
-     */
49
-    protected $iframe = false;
50
-
51
-    /**
52
-     * max attendees that can register for event at one time
53
-     *
54
-     * @var int $max_attendees
55
-     */
56
-    private $max_attendees = EE_INF;
57
-
58
-    /**
59
-     * @var string $date_format
60
-     */
61
-    private $date_format;
62
-
63
-    /**
64
-     * @var string $time_format
65
-     */
66
-    private $time_format;
67
-
68
-    /**
69
-     * @var boolean $display_full_ui
70
-     */
71
-    private $display_full_ui;
72
-
73
-
74
-    /**
75
-     * DisplayTicketSelector constructor.
76
-     *
77
-     * @param bool $iframe
78
-     */
79
-    public function __construct($iframe = false)
80
-    {
81
-        $this->iframe = $iframe;
82
-        $this->date_format = apply_filters(
83
-            'FHEE__EED_Ticket_Selector__display_ticket_selector__date_format',
84
-            get_option('date_format')
85
-        );
86
-        $this->time_format = apply_filters(
87
-            'FHEE__EED_Ticket_Selector__display_ticket_selector__time_format',
88
-            get_option('time_format')
89
-        );
90
-    }
91
-
92
-
93
-    /**
94
-     * @return bool
95
-     */
96
-    public function isIframe()
97
-    {
98
-        return $this->iframe;
99
-    }
100
-
101
-
102
-    /**
103
-     * @param boolean $iframe
104
-     */
105
-    public function setIframe($iframe = true)
106
-    {
107
-        $this->iframe = filter_var($iframe, FILTER_VALIDATE_BOOLEAN);
108
-    }
109
-
110
-
111
-    /**
112
-     * finds and sets the \EE_Event object for use throughout class
113
-     *
114
-     * @param mixed $event
115
-     * @return bool
116
-     * @throws EE_Error
117
-     * @throws InvalidDataTypeException
118
-     * @throws InvalidInterfaceException
119
-     * @throws InvalidArgumentException
120
-     */
121
-    protected function setEvent($event = null)
122
-    {
123
-        if ($event === null) {
124
-            global $post;
125
-            $event = $post;
126
-        }
127
-        if ($event instanceof EE_Event) {
128
-            $this->event = $event;
129
-        } elseif ($event instanceof WP_Post) {
130
-            if (isset($event->EE_Event) && $event->EE_Event instanceof EE_Event) {
131
-                $this->event = $event->EE_Event;
132
-            } elseif ($event->post_type === 'espresso_events') {
133
-                $event->EE_Event = EEM_Event::instance()->instantiate_class_from_post_object($event);
134
-                $this->event = $event->EE_Event;
135
-            }
136
-        } else {
137
-            $user_msg = __('No Event object or an invalid Event object was supplied.', 'event_espresso');
138
-            $dev_msg = $user_msg . __(
139
-                'In order to generate a ticket selector, please ensure you are passing either an EE_Event object or a WP_Post object of the post type "espresso_event" to the EE_Ticket_Selector class constructor.',
140
-                'event_espresso'
141
-            );
142
-            EE_Error::add_error($user_msg . '||' . $dev_msg, __FILE__, __FUNCTION__, __LINE__);
143
-            return false;
144
-        }
145
-        return true;
146
-    }
147
-
148
-
149
-    /**
150
-     * @return int
151
-     */
152
-    public function getMaxAttendees()
153
-    {
154
-        return $this->max_attendees;
155
-    }
156
-
157
-
158
-    /**
159
-     * @param int $max_attendees
160
-     */
161
-    public function setMaxAttendees($max_attendees)
162
-    {
163
-        $this->max_attendees = absint(
164
-            apply_filters(
165
-                'FHEE__EE_Ticket_Selector__display_ticket_selector__max_tickets',
166
-                $max_attendees
167
-            )
168
-        );
169
-    }
170
-
171
-
172
-    /**
173
-     * Returns whether or not the full ticket selector should be shown or not.
174
-     * Currently, it displays on the frontend (including ajax requests) but not the backend
175
-     *
176
-     * @return bool
177
-     */
178
-    private function display_full_ui()
179
-    {
180
-        if ($this->display_full_ui === null) {
181
-            $this->display_full_ui = ! is_admin() || (defined('DOING_AJAX') && DOING_AJAX);
182
-        }
183
-        return $this->display_full_ui;
184
-    }
185
-
186
-
187
-    /**
188
-     * creates buttons for selecting number of attendees for an event
189
-     *
190
-     * @param WP_Post|int $event
191
-     * @param bool        $view_details
192
-     * @return string
193
-     * @throws EE_Error
194
-     * @throws InvalidArgumentException
195
-     * @throws InvalidDataTypeException
196
-     * @throws InvalidInterfaceException
197
-     */
198
-    public function display($event = null, $view_details = false)
199
-    {
200
-        // reset filter for displaying submit button
201
-        remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
202
-        // poke and prod incoming event till it tells us what it is
203
-        if (! $this->setEvent($event)) {
204
-            return false;
205
-        }
206
-        // begin gathering template arguments by getting event status
207
-        $template_args = array('event_status' => $this->event->get_active_status());
208
-        if ($this->activeEventAndShowTicketSelector(
209
-            $event,
210
-            $template_args['event_status'],
211
-            $view_details
212
-        )) {
213
-            return ! is_single() ? $this->displayViewDetailsButton() : '';
214
-        }
215
-        // filter the maximum qty that can appear in the Ticket Selector qty dropdowns
216
-        $this->setMaxAttendees($this->event->additional_limit());
217
-        if ($this->getMaxAttendees() < 1) {
218
-            return $this->ticketSalesClosedMessage();
219
-        }
220
-        // is the event expired ?
221
-        $template_args['event_is_expired'] = $this->event->is_expired();
222
-        if ($template_args['event_is_expired']) {
223
-            return $this->expiredEventMessage();
224
-        }
225
-        // get all tickets for this event ordered by the datetime
226
-        $tickets = $this->getTickets();
227
-        if (count($tickets) < 1) {
228
-            return $this->noTicketAvailableMessage();
229
-        }
230
-        // redirecting to another site for registration ??
231
-        $external_url = (string)$this->event->external_url();
232
-        // if redirecting to another site for registration, then we don't load the TS
233
-        $ticket_selector = $external_url
234
-            ? $this->externalEventRegistration()
235
-            : $this->loadTicketSelector($tickets, $template_args);
236
-        // now set up the form (but not for the admin)
237
-        $ticket_selector = $this->display_full_ui()
238
-            ? $this->formOpen($this->event->ID(), $external_url) . $ticket_selector
239
-            : $ticket_selector;
240
-        // submit button and form close tag
241
-        $ticket_selector .= $this->display_full_ui() ? $this->displaySubmitButton($external_url) : '';
242
-        return $ticket_selector;
243
-    }
244
-
245
-
246
-    /**
247
-     * displayTicketSelector
248
-     * examines the event properties and determines whether a Ticket Selector should be displayed
249
-     *
250
-     * @param WP_Post|int $event
251
-     * @param string      $_event_active_status
252
-     * @param bool        $view_details
253
-     * @return bool
254
-     * @throws EE_Error
255
-     */
256
-    protected function activeEventAndShowTicketSelector($event, $_event_active_status, $view_details)
257
-    {
258
-        $event_post = $this->event instanceof EE_Event ? $this->event->ID() : $event;
259
-        return $this->display_full_ui()
260
-               && (
261
-                   ! $this->event->display_ticket_selector()
262
-                   || $view_details
263
-                   || post_password_required($event_post)
264
-                   || (
265
-                       $_event_active_status !== EE_Datetime::active
266
-                       && $_event_active_status !== EE_Datetime::upcoming
267
-                       && $_event_active_status !== EE_Datetime::sold_out
268
-                       && ! (
269
-                           $_event_active_status === EE_Datetime::inactive
270
-                           && is_user_logged_in()
271
-                       )
272
-                   )
273
-               );
274
-    }
275
-
276
-
277
-    /**
278
-     * noTicketAvailableMessage
279
-     * notice displayed if event is expired
280
-     *
281
-     * @return string
282
-     * @throws EE_Error
283
-     */
284
-    protected function expiredEventMessage()
285
-    {
286
-        return '<div class="ee-event-expired-notice"><span class="important-notice">' . esc_html__(
287
-            'We\'re sorry, but all tickets sales have ended because the event is expired.',
288
-            'event_espresso'
289
-        ) . '</span></div><!-- .ee-event-expired-notice -->';
290
-    }
291
-
292
-
293
-    /**
294
-     * noTicketAvailableMessage
295
-     * notice displayed if event has no more tickets available
296
-     *
297
-     * @return string
298
-     * @throws EE_Error
299
-     */
300
-    protected function noTicketAvailableMessage()
301
-    {
302
-        $no_ticket_available_msg = esc_html__('We\'re sorry, but all ticket sales have ended.', 'event_espresso');
303
-        if (current_user_can('edit_post', $this->event->ID())) {
304
-            $no_ticket_available_msg .= sprintf(
305
-                esc_html__(
306
-                    '%1$sNote to Event Admin:%2$sNo tickets were found for this event. This effectively turns off ticket sales. Please ensure that at least one ticket is available for if you want people to be able to register.%3$s(click to edit this event)%4$s',
307
-                    'event_espresso'
308
-                ),
309
-                '<div class="ee-attention" style="text-align: left;"><b>',
310
-                '</b><br />',
311
-                '<span class="edit-link"><a class="post-edit-link" href="'
312
-                . get_edit_post_link($this->event->ID())
313
-                . '">',
314
-                '</a></span></div><!-- .ee-attention noTicketAvailableMessage -->'
315
-            );
316
-        }
317
-        return '
36
+	/**
37
+	 * event that ticket selector is being generated for
38
+	 *
39
+	 * @access protected
40
+	 * @var EE_Event $event
41
+	 */
42
+	protected $event;
43
+
44
+	/**
45
+	 * Used to flag when the ticket selector is being called from an external iframe.
46
+	 *
47
+	 * @var bool $iframe
48
+	 */
49
+	protected $iframe = false;
50
+
51
+	/**
52
+	 * max attendees that can register for event at one time
53
+	 *
54
+	 * @var int $max_attendees
55
+	 */
56
+	private $max_attendees = EE_INF;
57
+
58
+	/**
59
+	 * @var string $date_format
60
+	 */
61
+	private $date_format;
62
+
63
+	/**
64
+	 * @var string $time_format
65
+	 */
66
+	private $time_format;
67
+
68
+	/**
69
+	 * @var boolean $display_full_ui
70
+	 */
71
+	private $display_full_ui;
72
+
73
+
74
+	/**
75
+	 * DisplayTicketSelector constructor.
76
+	 *
77
+	 * @param bool $iframe
78
+	 */
79
+	public function __construct($iframe = false)
80
+	{
81
+		$this->iframe = $iframe;
82
+		$this->date_format = apply_filters(
83
+			'FHEE__EED_Ticket_Selector__display_ticket_selector__date_format',
84
+			get_option('date_format')
85
+		);
86
+		$this->time_format = apply_filters(
87
+			'FHEE__EED_Ticket_Selector__display_ticket_selector__time_format',
88
+			get_option('time_format')
89
+		);
90
+	}
91
+
92
+
93
+	/**
94
+	 * @return bool
95
+	 */
96
+	public function isIframe()
97
+	{
98
+		return $this->iframe;
99
+	}
100
+
101
+
102
+	/**
103
+	 * @param boolean $iframe
104
+	 */
105
+	public function setIframe($iframe = true)
106
+	{
107
+		$this->iframe = filter_var($iframe, FILTER_VALIDATE_BOOLEAN);
108
+	}
109
+
110
+
111
+	/**
112
+	 * finds and sets the \EE_Event object for use throughout class
113
+	 *
114
+	 * @param mixed $event
115
+	 * @return bool
116
+	 * @throws EE_Error
117
+	 * @throws InvalidDataTypeException
118
+	 * @throws InvalidInterfaceException
119
+	 * @throws InvalidArgumentException
120
+	 */
121
+	protected function setEvent($event = null)
122
+	{
123
+		if ($event === null) {
124
+			global $post;
125
+			$event = $post;
126
+		}
127
+		if ($event instanceof EE_Event) {
128
+			$this->event = $event;
129
+		} elseif ($event instanceof WP_Post) {
130
+			if (isset($event->EE_Event) && $event->EE_Event instanceof EE_Event) {
131
+				$this->event = $event->EE_Event;
132
+			} elseif ($event->post_type === 'espresso_events') {
133
+				$event->EE_Event = EEM_Event::instance()->instantiate_class_from_post_object($event);
134
+				$this->event = $event->EE_Event;
135
+			}
136
+		} else {
137
+			$user_msg = __('No Event object or an invalid Event object was supplied.', 'event_espresso');
138
+			$dev_msg = $user_msg . __(
139
+				'In order to generate a ticket selector, please ensure you are passing either an EE_Event object or a WP_Post object of the post type "espresso_event" to the EE_Ticket_Selector class constructor.',
140
+				'event_espresso'
141
+			);
142
+			EE_Error::add_error($user_msg . '||' . $dev_msg, __FILE__, __FUNCTION__, __LINE__);
143
+			return false;
144
+		}
145
+		return true;
146
+	}
147
+
148
+
149
+	/**
150
+	 * @return int
151
+	 */
152
+	public function getMaxAttendees()
153
+	{
154
+		return $this->max_attendees;
155
+	}
156
+
157
+
158
+	/**
159
+	 * @param int $max_attendees
160
+	 */
161
+	public function setMaxAttendees($max_attendees)
162
+	{
163
+		$this->max_attendees = absint(
164
+			apply_filters(
165
+				'FHEE__EE_Ticket_Selector__display_ticket_selector__max_tickets',
166
+				$max_attendees
167
+			)
168
+		);
169
+	}
170
+
171
+
172
+	/**
173
+	 * Returns whether or not the full ticket selector should be shown or not.
174
+	 * Currently, it displays on the frontend (including ajax requests) but not the backend
175
+	 *
176
+	 * @return bool
177
+	 */
178
+	private function display_full_ui()
179
+	{
180
+		if ($this->display_full_ui === null) {
181
+			$this->display_full_ui = ! is_admin() || (defined('DOING_AJAX') && DOING_AJAX);
182
+		}
183
+		return $this->display_full_ui;
184
+	}
185
+
186
+
187
+	/**
188
+	 * creates buttons for selecting number of attendees for an event
189
+	 *
190
+	 * @param WP_Post|int $event
191
+	 * @param bool        $view_details
192
+	 * @return string
193
+	 * @throws EE_Error
194
+	 * @throws InvalidArgumentException
195
+	 * @throws InvalidDataTypeException
196
+	 * @throws InvalidInterfaceException
197
+	 */
198
+	public function display($event = null, $view_details = false)
199
+	{
200
+		// reset filter for displaying submit button
201
+		remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
202
+		// poke and prod incoming event till it tells us what it is
203
+		if (! $this->setEvent($event)) {
204
+			return false;
205
+		}
206
+		// begin gathering template arguments by getting event status
207
+		$template_args = array('event_status' => $this->event->get_active_status());
208
+		if ($this->activeEventAndShowTicketSelector(
209
+			$event,
210
+			$template_args['event_status'],
211
+			$view_details
212
+		)) {
213
+			return ! is_single() ? $this->displayViewDetailsButton() : '';
214
+		}
215
+		// filter the maximum qty that can appear in the Ticket Selector qty dropdowns
216
+		$this->setMaxAttendees($this->event->additional_limit());
217
+		if ($this->getMaxAttendees() < 1) {
218
+			return $this->ticketSalesClosedMessage();
219
+		}
220
+		// is the event expired ?
221
+		$template_args['event_is_expired'] = $this->event->is_expired();
222
+		if ($template_args['event_is_expired']) {
223
+			return $this->expiredEventMessage();
224
+		}
225
+		// get all tickets for this event ordered by the datetime
226
+		$tickets = $this->getTickets();
227
+		if (count($tickets) < 1) {
228
+			return $this->noTicketAvailableMessage();
229
+		}
230
+		// redirecting to another site for registration ??
231
+		$external_url = (string)$this->event->external_url();
232
+		// if redirecting to another site for registration, then we don't load the TS
233
+		$ticket_selector = $external_url
234
+			? $this->externalEventRegistration()
235
+			: $this->loadTicketSelector($tickets, $template_args);
236
+		// now set up the form (but not for the admin)
237
+		$ticket_selector = $this->display_full_ui()
238
+			? $this->formOpen($this->event->ID(), $external_url) . $ticket_selector
239
+			: $ticket_selector;
240
+		// submit button and form close tag
241
+		$ticket_selector .= $this->display_full_ui() ? $this->displaySubmitButton($external_url) : '';
242
+		return $ticket_selector;
243
+	}
244
+
245
+
246
+	/**
247
+	 * displayTicketSelector
248
+	 * examines the event properties and determines whether a Ticket Selector should be displayed
249
+	 *
250
+	 * @param WP_Post|int $event
251
+	 * @param string      $_event_active_status
252
+	 * @param bool        $view_details
253
+	 * @return bool
254
+	 * @throws EE_Error
255
+	 */
256
+	protected function activeEventAndShowTicketSelector($event, $_event_active_status, $view_details)
257
+	{
258
+		$event_post = $this->event instanceof EE_Event ? $this->event->ID() : $event;
259
+		return $this->display_full_ui()
260
+			   && (
261
+				   ! $this->event->display_ticket_selector()
262
+				   || $view_details
263
+				   || post_password_required($event_post)
264
+				   || (
265
+					   $_event_active_status !== EE_Datetime::active
266
+					   && $_event_active_status !== EE_Datetime::upcoming
267
+					   && $_event_active_status !== EE_Datetime::sold_out
268
+					   && ! (
269
+						   $_event_active_status === EE_Datetime::inactive
270
+						   && is_user_logged_in()
271
+					   )
272
+				   )
273
+			   );
274
+	}
275
+
276
+
277
+	/**
278
+	 * noTicketAvailableMessage
279
+	 * notice displayed if event is expired
280
+	 *
281
+	 * @return string
282
+	 * @throws EE_Error
283
+	 */
284
+	protected function expiredEventMessage()
285
+	{
286
+		return '<div class="ee-event-expired-notice"><span class="important-notice">' . esc_html__(
287
+			'We\'re sorry, but all tickets sales have ended because the event is expired.',
288
+			'event_espresso'
289
+		) . '</span></div><!-- .ee-event-expired-notice -->';
290
+	}
291
+
292
+
293
+	/**
294
+	 * noTicketAvailableMessage
295
+	 * notice displayed if event has no more tickets available
296
+	 *
297
+	 * @return string
298
+	 * @throws EE_Error
299
+	 */
300
+	protected function noTicketAvailableMessage()
301
+	{
302
+		$no_ticket_available_msg = esc_html__('We\'re sorry, but all ticket sales have ended.', 'event_espresso');
303
+		if (current_user_can('edit_post', $this->event->ID())) {
304
+			$no_ticket_available_msg .= sprintf(
305
+				esc_html__(
306
+					'%1$sNote to Event Admin:%2$sNo tickets were found for this event. This effectively turns off ticket sales. Please ensure that at least one ticket is available for if you want people to be able to register.%3$s(click to edit this event)%4$s',
307
+					'event_espresso'
308
+				),
309
+				'<div class="ee-attention" style="text-align: left;"><b>',
310
+				'</b><br />',
311
+				'<span class="edit-link"><a class="post-edit-link" href="'
312
+				. get_edit_post_link($this->event->ID())
313
+				. '">',
314
+				'</a></span></div><!-- .ee-attention noTicketAvailableMessage -->'
315
+			);
316
+		}
317
+		return '
318 318
             <div class="ee-event-expired-notice">
319 319
                 <span class="important-notice">' . $no_ticket_available_msg . '</span>
320 320
             </div><!-- .ee-event-expired-notice -->';
321
-    }
322
-
323
-
324
-    /**
325
-     * ticketSalesClosed
326
-     * notice displayed if event ticket sales are turned off
327
-     *
328
-     * @return string
329
-     * @throws EE_Error
330
-     */
331
-    protected function ticketSalesClosedMessage()
332
-    {
333
-        $sales_closed_msg = esc_html__(
334
-            'We\'re sorry, but ticket sales have been closed at this time. Please check back again later.',
335
-            'event_espresso'
336
-        );
337
-        if (current_user_can('edit_post', $this->event->ID())) {
338
-            $sales_closed_msg .= sprintf(
339
-                esc_html__(
340
-                    '%sNote to Event Admin:%sThe "Maximum number of tickets allowed per order for this event" in the Event Registration Options has been set to "0". This effectively turns off ticket sales. %s(click to edit this event)%s',
341
-                    'event_espresso'
342
-                ),
343
-                '<div class="ee-attention" style="text-align: left;"><b>',
344
-                '</b><br />',
345
-                '<span class="edit-link"><a class="post-edit-link" href="'
346
-                . get_edit_post_link($this->event->ID())
347
-                . '">',
348
-                '</a></span></div><!-- .ee-attention ticketSalesClosedMessage -->'
349
-            );
350
-        }
351
-        return '<p><span class="important-notice">' . $sales_closed_msg . '</span></p>';
352
-    }
353
-
354
-
355
-    /**
356
-     * getTickets
357
-     *
358
-     * @return \EE_Base_Class[]|\EE_Ticket[]
359
-     * @throws EE_Error
360
-     * @throws InvalidDataTypeException
361
-     * @throws InvalidInterfaceException
362
-     * @throws InvalidArgumentException
363
-     */
364
-    protected function getTickets()
365
-    {
366
-        $ticket_query_args = array(
367
-            array('Datetime.EVT_ID' => $this->event->ID()),
368
-            'order_by' => array(
369
-                'TKT_order'              => 'ASC',
370
-                'TKT_required'           => 'DESC',
371
-                'TKT_start_date'         => 'ASC',
372
-                'TKT_end_date'           => 'ASC',
373
-                'Datetime.DTT_EVT_start' => 'DESC',
374
-            ),
375
-        );
376
-        if (! (
377
-            EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector instanceof EE_Ticket_Selector_Config
378
-            && EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector->show_expired_tickets
379
-        )) {
380
-            // use the correct applicable time query depending on what version of core is being run.
381
-            $current_time = method_exists('EEM_Datetime', 'current_time_for_query')
382
-                ? time()
383
-                : current_time('timestamp');
384
-            $ticket_query_args[0]['TKT_end_date'] = array('>', $current_time);
385
-        }
386
-        return EEM_Ticket::instance()->get_all($ticket_query_args);
387
-    }
388
-
389
-
390
-    /**
391
-     * loadTicketSelector
392
-     * begins to assemble template arguments
393
-     * and decides whether to load a "simple" ticket selector, or the standard
394
-     *
395
-     * @param \EE_Ticket[] $tickets
396
-     * @param array        $template_args
397
-     * @return string
398
-     * @throws EE_Error
399
-     */
400
-    protected function loadTicketSelector(array $tickets, array $template_args)
401
-    {
402
-        $template_args['event'] = $this->event;
403
-        $template_args['EVT_ID'] = $this->event->ID();
404
-        $template_args['event_is_expired'] = $this->event->is_expired();
405
-        $template_args['max_atndz'] = $this->getMaxAttendees();
406
-        $template_args['date_format'] = $this->date_format;
407
-        $template_args['time_format'] = $this->time_format;
408
-        /**
409
-         * Filters the anchor ID used when redirecting to the Ticket Selector if no quantity selected
410
-         *
411
-         * @since 4.9.13
412
-         * @param     string  '#tkt-slctr-tbl-' . $EVT_ID The html ID to anchor to
413
-         * @param int $EVT_ID The Event ID
414
-         */
415
-        $template_args['anchor_id'] = apply_filters(
416
-            'FHEE__EE_Ticket_Selector__redirect_anchor_id',
417
-            '#tkt-slctr-tbl-' . $this->event->ID(),
418
-            $this->event->ID()
419
-        );
420
-        $template_args['tickets'] = $tickets;
421
-        $template_args['ticket_count'] = count($tickets);
422
-        $ticket_selector = $this->simpleTicketSelector($tickets, $template_args);
423
-        return $ticket_selector instanceof TicketSelectorSimple
424
-            ? $ticket_selector
425
-            : new TicketSelectorStandard(
426
-                $this->event,
427
-                $tickets,
428
-                $this->getMaxAttendees(),
429
-                $template_args,
430
-                $this->date_format,
431
-                $this->time_format
432
-            );
433
-    }
434
-
435
-
436
-    /**
437
-     * simpleTicketSelector
438
-     * there's one ticket, and max attendees is set to one,
439
-     * so if the event is free, then this is a "simple" ticket selector
440
-     * a.k.a. "Dude Where's my Ticket Selector?"
441
-     *
442
-     * @param \EE_Ticket[] $tickets
443
-     * @param array        $template_args
444
-     * @return string
445
-     * @throws EE_Error
446
-     */
447
-    protected function simpleTicketSelector($tickets, array $template_args)
448
-    {
449
-        // if there is only ONE ticket with a max qty of ONE
450
-        if (count($tickets) > 1 || $this->getMaxAttendees() !== 1) {
451
-            return '';
452
-        }
453
-        /** @var \EE_Ticket $ticket */
454
-        $ticket = reset($tickets);
455
-        // if the ticket is free... then not much need for the ticket selector
456
-        if (apply_filters(
457
-            'FHEE__ticket_selector_chart_template__hide_ticket_selector',
458
-            $ticket->is_free(),
459
-            $this->event->ID()
460
-        )) {
461
-            return new TicketSelectorSimple(
462
-                $this->event,
463
-                $ticket,
464
-                $this->getMaxAttendees(),
465
-                $template_args
466
-            );
467
-        }
468
-        return '';
469
-    }
470
-
471
-
472
-    /**
473
-     * externalEventRegistration
474
-     *
475
-     * @return string
476
-     */
477
-    public function externalEventRegistration()
478
-    {
479
-        // if not we still need to trigger the display of the submit button
480
-        add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
481
-        // display notice to admin that registration is external
482
-        return $this->display_full_ui()
483
-            ? esc_html__(
484
-                'Registration is at an external URL for this event.',
485
-                'event_espresso'
486
-            )
487
-            : '';
488
-    }
489
-
490
-
491
-    /**
492
-     * formOpen
493
-     *
494
-     * @param        int    $ID
495
-     * @param        string $external_url
496
-     * @return        string
497
-     */
498
-    public function formOpen($ID = 0, $external_url = '')
499
-    {
500
-        // if redirecting, we don't need any anything else
501
-        if ($external_url) {
502
-            $html = '<form method="GET" ';
503
-            $html .= 'action="' . EEH_URL::refactor_url($external_url) . '" ';
504
-            $html .= 'name="ticket-selector-form-' . $ID . '"';
505
-            // open link in new window ?
506
-            $html .= apply_filters(
507
-                'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__formOpen__external_url_target_blank',
508
-                $this->isIframe(),
509
-                $this
510
-            )
511
-                ? ' target="_blank"'
512
-                : '';
513
-            $html .= '>';
514
-            $query_args = EEH_URL::get_query_string($external_url);
515
-            foreach ((array)$query_args as $query_arg => $value) {
516
-                $html .= '<input type="hidden" name="' . $query_arg . '" value="' . $value . '">';
517
-            }
518
-            return $html;
519
-        }
520
-        // if there is no submit button, then don't start building a form
521
-        // because the "View Details" button will build its own form
522
-        if (! apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
523
-            return '';
524
-        }
525
-        $checkout_url = EEH_Event_View::event_link_url($ID);
526
-        if (! $checkout_url) {
527
-            EE_Error::add_error(
528
-                esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
529
-                __FILE__,
530
-                __FUNCTION__,
531
-                __LINE__
532
-            );
533
-        }
534
-        // set no cache headers and constants
535
-        EE_System::do_not_cache();
536
-        $html = '<form method="POST" ';
537
-        $html .= 'action="' . $checkout_url . '" ';
538
-        $html .= 'name="ticket-selector-form-' . $ID . '"';
539
-        $html .= $this->iframe ? ' target="_blank"' : '';
540
-        $html .= '>';
541
-        $html .= '<input type="hidden" name="ee" value="process_ticket_selections">';
542
-        $html = apply_filters('FHEE__EE_Ticket_Selector__ticket_selector_form_open__html', $html, $this->event);
543
-        return $html;
544
-    }
545
-
546
-
547
-    /**
548
-     * displaySubmitButton
549
-     *
550
-     * @param  string $external_url
551
-     * @return string
552
-     * @throws EE_Error
553
-     */
554
-    public function displaySubmitButton($external_url = '')
555
-    {
556
-        $html = '';
557
-        if ($this->display_full_ui()) {
558
-            // standard TS displayed with submit button, ie: "Register Now"
559
-            if (apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
560
-                $html .= $this->displayRegisterNowButton();
561
-                $html .= empty($external_url)
562
-                    ? $this->ticketSelectorEndDiv()
563
-                    : $this->clearTicketSelector();
564
-                $html .= '<br/>' . $this->formClose();
565
-            } elseif ($this->getMaxAttendees() === 1) {
566
-                // its a "Dude Where's my Ticket Selector?" (DWMTS) type event (ie: $_max_atndz === 1)
567
-                if ($this->event->is_sold_out()) {
568
-                    // then instead of a View Details or Submit button, just display a "Sold Out" message
569
-                    $html .= apply_filters(
570
-                        'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__sold_out_msg',
571
-                        sprintf(
572
-                            __(
573
-                                '%1$s"%2$s" is currently sold out.%4$sPlease check back again later, as spots may become available.%3$s',
574
-                                'event_espresso'
575
-                            ),
576
-                            '<p class="no-ticket-selector-msg clear-float">',
577
-                            $this->event->name(),
578
-                            '</p>',
579
-                            '<br />'
580
-                        ),
581
-                        $this->event
582
-                    );
583
-                    if (apply_filters(
584
-                        'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__no_tickets_but_display_register_now_button',
585
-                        false,
586
-                        $this->event
587
-                    )) {
588
-                        $html .= $this->displayRegisterNowButton();
589
-                    }
590
-                    // sold out DWMTS event, no TS, no submit or view details button, but has additional content
591
-                    $html .= $this->ticketSelectorEndDiv();
592
-                } elseif (apply_filters('FHEE__EE_Ticket_Selector__hide_ticket_selector', false)
593
-                    && ! is_single()
594
-                ) {
595
-                    // this is a "Dude Where's my Ticket Selector?" (DWMTS) type event,
596
-                    // but no tickets are available, so display event's "View Details" button.
597
-                    // it is being viewed via somewhere other than a single post
598
-                    $html .= $this->displayViewDetailsButton(true);
599
-                } else {
600
-                    $html .= $this->ticketSelectorEndDiv();
601
-                }
602
-            } elseif (is_archive()) {
603
-                // event list, no tickets available so display event's "View Details" button
604
-                $html .= $this->ticketSelectorEndDiv();
605
-                $html .= $this->displayViewDetailsButton();
606
-            } else {
607
-                if (apply_filters(
608
-                    'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__no_tickets_but_display_register_now_button',
609
-                    false,
610
-                    $this->event
611
-                )) {
612
-                    $html .= $this->displayRegisterNowButton();
613
-                }
614
-                // no submit or view details button, and no additional content
615
-                $html .= $this->ticketSelectorEndDiv();
616
-            }
617
-            if (! $this->iframe && ! is_archive()) {
618
-                $html .= EEH_Template::powered_by_event_espresso('', '', array('utm_content' => 'ticket_selector'));
619
-            }
620
-        }
621
-        return apply_filters(
622
-            'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__displaySubmitButton__html',
623
-            $html,
624
-            $this->event,
625
-            $this
626
-        );
627
-    }
628
-
629
-
630
-    /**
631
-     * @return string
632
-     * @throws EE_Error
633
-     */
634
-    public function displayRegisterNowButton()
635
-    {
636
-        $btn_text = apply_filters(
637
-            'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__btn_text',
638
-            __('Register Now', 'event_espresso'),
639
-            $this->event
640
-        );
641
-        $external_url = $this->event->external_url();
642
-        $html = EEH_HTML::div(
643
-            '',
644
-            'ticket-selector-submit-' . $this->event->ID() . '-btn-wrap',
645
-            'ticket-selector-submit-btn-wrap'
646
-        );
647
-        $html .= '<input id="ticket-selector-submit-' . $this->event->ID() . '-btn"';
648
-        $html .= ' class="ticket-selector-submit-btn ';
649
-        $html .= empty($external_url) ? 'ticket-selector-submit-ajax"' : '"';
650
-        $html .= ' type="submit" value="' . $btn_text . '" />';
651
-        $html .= EEH_HTML::divx() . '<!-- .ticket-selector-submit-btn-wrap -->';
652
-        $html .= apply_filters(
653
-            'FHEE__EE_Ticket_Selector__after_ticket_selector_submit',
654
-            '',
655
-            $this->event,
656
-            $this->iframe
657
-        );
658
-        return $html;
659
-    }
660
-
661
-
662
-    /**
663
-     * displayViewDetailsButton
664
-     *
665
-     * @param bool $DWMTS indicates a "Dude Where's my Ticket Selector?" (DWMTS) type event
666
-     *                    (ie: $_max_atndz === 1) where there are no available tickets,
667
-     *                    either because they are sold out, expired, or not yet on sale.
668
-     *                    In this case, we need to close the form BEFORE adding any closing divs
669
-     * @return string
670
-     * @throws EE_Error
671
-     */
672
-    public function displayViewDetailsButton($DWMTS = false)
673
-    {
674
-        if (! $this->event->get_permalink()) {
675
-            EE_Error::add_error(
676
-                esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
677
-                __FILE__,
678
-                __FUNCTION__,
679
-                __LINE__
680
-            );
681
-        }
682
-        $view_details_btn = '<form method="POST" action="';
683
-        $view_details_btn .= apply_filters(
684
-            'FHEE__EE_Ticket_Selector__display_view_details_btn__btn_url',
685
-            $this->event->get_permalink(),
686
-            $this->event
687
-        );
688
-        $view_details_btn .= '"';
689
-        // open link in new window ?
690
-        $view_details_btn .= apply_filters(
691
-            'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__displayViewDetailsButton__url_target_blank',
692
-            $this->isIframe(),
693
-            $this
694
-        )
695
-            ? ' target="_blank"'
696
-            : '';
697
-        $view_details_btn .= '>';
698
-        $btn_text = apply_filters(
699
-            'FHEE__EE_Ticket_Selector__display_view_details_btn__btn_text',
700
-            esc_html__('View Details', 'event_espresso'),
701
-            $this->event
702
-        );
703
-        $view_details_btn .= '<input id="ticket-selector-submit-'
704
-                             . $this->event->ID()
705
-                             . '-btn" class="ticket-selector-submit-btn view-details-btn" type="submit" value="'
706
-                             . $btn_text
707
-                             . '" />';
708
-        $view_details_btn .= apply_filters('FHEE__EE_Ticket_Selector__after_view_details_btn', '', $this->event);
709
-        if ($DWMTS) {
710
-            $view_details_btn .= $this->formClose();
711
-            $view_details_btn .= $this->ticketSelectorEndDiv();
712
-            $view_details_btn .= '<br/>';
713
-        } else {
714
-            $view_details_btn .= $this->clearTicketSelector();
715
-            $view_details_btn .= '<br/>';
716
-            $view_details_btn .= $this->formClose();
717
-        }
718
-        return $view_details_btn;
719
-    }
720
-
721
-
722
-    /**
723
-     * @return string
724
-     */
725
-    public function ticketSelectorEndDiv()
726
-    {
727
-        return $this->clearTicketSelector() . '</div><!-- ticketSelectorEndDiv -->';
728
-    }
729
-
730
-
731
-    /**
732
-     * @return string
733
-     */
734
-    public function clearTicketSelector()
735
-    {
736
-        // standard TS displayed, appears after a "Register Now" or "view Details" button
737
-        return '<div class="clear"></div><!-- clearTicketSelector -->';
738
-    }
739
-
740
-
741
-    /**
742
-     * @access        public
743
-     * @return        string
744
-     */
745
-    public function formClose()
746
-    {
747
-        return '</form>';
748
-    }
321
+	}
322
+
323
+
324
+	/**
325
+	 * ticketSalesClosed
326
+	 * notice displayed if event ticket sales are turned off
327
+	 *
328
+	 * @return string
329
+	 * @throws EE_Error
330
+	 */
331
+	protected function ticketSalesClosedMessage()
332
+	{
333
+		$sales_closed_msg = esc_html__(
334
+			'We\'re sorry, but ticket sales have been closed at this time. Please check back again later.',
335
+			'event_espresso'
336
+		);
337
+		if (current_user_can('edit_post', $this->event->ID())) {
338
+			$sales_closed_msg .= sprintf(
339
+				esc_html__(
340
+					'%sNote to Event Admin:%sThe "Maximum number of tickets allowed per order for this event" in the Event Registration Options has been set to "0". This effectively turns off ticket sales. %s(click to edit this event)%s',
341
+					'event_espresso'
342
+				),
343
+				'<div class="ee-attention" style="text-align: left;"><b>',
344
+				'</b><br />',
345
+				'<span class="edit-link"><a class="post-edit-link" href="'
346
+				. get_edit_post_link($this->event->ID())
347
+				. '">',
348
+				'</a></span></div><!-- .ee-attention ticketSalesClosedMessage -->'
349
+			);
350
+		}
351
+		return '<p><span class="important-notice">' . $sales_closed_msg . '</span></p>';
352
+	}
353
+
354
+
355
+	/**
356
+	 * getTickets
357
+	 *
358
+	 * @return \EE_Base_Class[]|\EE_Ticket[]
359
+	 * @throws EE_Error
360
+	 * @throws InvalidDataTypeException
361
+	 * @throws InvalidInterfaceException
362
+	 * @throws InvalidArgumentException
363
+	 */
364
+	protected function getTickets()
365
+	{
366
+		$ticket_query_args = array(
367
+			array('Datetime.EVT_ID' => $this->event->ID()),
368
+			'order_by' => array(
369
+				'TKT_order'              => 'ASC',
370
+				'TKT_required'           => 'DESC',
371
+				'TKT_start_date'         => 'ASC',
372
+				'TKT_end_date'           => 'ASC',
373
+				'Datetime.DTT_EVT_start' => 'DESC',
374
+			),
375
+		);
376
+		if (! (
377
+			EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector instanceof EE_Ticket_Selector_Config
378
+			&& EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector->show_expired_tickets
379
+		)) {
380
+			// use the correct applicable time query depending on what version of core is being run.
381
+			$current_time = method_exists('EEM_Datetime', 'current_time_for_query')
382
+				? time()
383
+				: current_time('timestamp');
384
+			$ticket_query_args[0]['TKT_end_date'] = array('>', $current_time);
385
+		}
386
+		return EEM_Ticket::instance()->get_all($ticket_query_args);
387
+	}
388
+
389
+
390
+	/**
391
+	 * loadTicketSelector
392
+	 * begins to assemble template arguments
393
+	 * and decides whether to load a "simple" ticket selector, or the standard
394
+	 *
395
+	 * @param \EE_Ticket[] $tickets
396
+	 * @param array        $template_args
397
+	 * @return string
398
+	 * @throws EE_Error
399
+	 */
400
+	protected function loadTicketSelector(array $tickets, array $template_args)
401
+	{
402
+		$template_args['event'] = $this->event;
403
+		$template_args['EVT_ID'] = $this->event->ID();
404
+		$template_args['event_is_expired'] = $this->event->is_expired();
405
+		$template_args['max_atndz'] = $this->getMaxAttendees();
406
+		$template_args['date_format'] = $this->date_format;
407
+		$template_args['time_format'] = $this->time_format;
408
+		/**
409
+		 * Filters the anchor ID used when redirecting to the Ticket Selector if no quantity selected
410
+		 *
411
+		 * @since 4.9.13
412
+		 * @param     string  '#tkt-slctr-tbl-' . $EVT_ID The html ID to anchor to
413
+		 * @param int $EVT_ID The Event ID
414
+		 */
415
+		$template_args['anchor_id'] = apply_filters(
416
+			'FHEE__EE_Ticket_Selector__redirect_anchor_id',
417
+			'#tkt-slctr-tbl-' . $this->event->ID(),
418
+			$this->event->ID()
419
+		);
420
+		$template_args['tickets'] = $tickets;
421
+		$template_args['ticket_count'] = count($tickets);
422
+		$ticket_selector = $this->simpleTicketSelector($tickets, $template_args);
423
+		return $ticket_selector instanceof TicketSelectorSimple
424
+			? $ticket_selector
425
+			: new TicketSelectorStandard(
426
+				$this->event,
427
+				$tickets,
428
+				$this->getMaxAttendees(),
429
+				$template_args,
430
+				$this->date_format,
431
+				$this->time_format
432
+			);
433
+	}
434
+
435
+
436
+	/**
437
+	 * simpleTicketSelector
438
+	 * there's one ticket, and max attendees is set to one,
439
+	 * so if the event is free, then this is a "simple" ticket selector
440
+	 * a.k.a. "Dude Where's my Ticket Selector?"
441
+	 *
442
+	 * @param \EE_Ticket[] $tickets
443
+	 * @param array        $template_args
444
+	 * @return string
445
+	 * @throws EE_Error
446
+	 */
447
+	protected function simpleTicketSelector($tickets, array $template_args)
448
+	{
449
+		// if there is only ONE ticket with a max qty of ONE
450
+		if (count($tickets) > 1 || $this->getMaxAttendees() !== 1) {
451
+			return '';
452
+		}
453
+		/** @var \EE_Ticket $ticket */
454
+		$ticket = reset($tickets);
455
+		// if the ticket is free... then not much need for the ticket selector
456
+		if (apply_filters(
457
+			'FHEE__ticket_selector_chart_template__hide_ticket_selector',
458
+			$ticket->is_free(),
459
+			$this->event->ID()
460
+		)) {
461
+			return new TicketSelectorSimple(
462
+				$this->event,
463
+				$ticket,
464
+				$this->getMaxAttendees(),
465
+				$template_args
466
+			);
467
+		}
468
+		return '';
469
+	}
470
+
471
+
472
+	/**
473
+	 * externalEventRegistration
474
+	 *
475
+	 * @return string
476
+	 */
477
+	public function externalEventRegistration()
478
+	{
479
+		// if not we still need to trigger the display of the submit button
480
+		add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
481
+		// display notice to admin that registration is external
482
+		return $this->display_full_ui()
483
+			? esc_html__(
484
+				'Registration is at an external URL for this event.',
485
+				'event_espresso'
486
+			)
487
+			: '';
488
+	}
489
+
490
+
491
+	/**
492
+	 * formOpen
493
+	 *
494
+	 * @param        int    $ID
495
+	 * @param        string $external_url
496
+	 * @return        string
497
+	 */
498
+	public function formOpen($ID = 0, $external_url = '')
499
+	{
500
+		// if redirecting, we don't need any anything else
501
+		if ($external_url) {
502
+			$html = '<form method="GET" ';
503
+			$html .= 'action="' . EEH_URL::refactor_url($external_url) . '" ';
504
+			$html .= 'name="ticket-selector-form-' . $ID . '"';
505
+			// open link in new window ?
506
+			$html .= apply_filters(
507
+				'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__formOpen__external_url_target_blank',
508
+				$this->isIframe(),
509
+				$this
510
+			)
511
+				? ' target="_blank"'
512
+				: '';
513
+			$html .= '>';
514
+			$query_args = EEH_URL::get_query_string($external_url);
515
+			foreach ((array)$query_args as $query_arg => $value) {
516
+				$html .= '<input type="hidden" name="' . $query_arg . '" value="' . $value . '">';
517
+			}
518
+			return $html;
519
+		}
520
+		// if there is no submit button, then don't start building a form
521
+		// because the "View Details" button will build its own form
522
+		if (! apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
523
+			return '';
524
+		}
525
+		$checkout_url = EEH_Event_View::event_link_url($ID);
526
+		if (! $checkout_url) {
527
+			EE_Error::add_error(
528
+				esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
529
+				__FILE__,
530
+				__FUNCTION__,
531
+				__LINE__
532
+			);
533
+		}
534
+		// set no cache headers and constants
535
+		EE_System::do_not_cache();
536
+		$html = '<form method="POST" ';
537
+		$html .= 'action="' . $checkout_url . '" ';
538
+		$html .= 'name="ticket-selector-form-' . $ID . '"';
539
+		$html .= $this->iframe ? ' target="_blank"' : '';
540
+		$html .= '>';
541
+		$html .= '<input type="hidden" name="ee" value="process_ticket_selections">';
542
+		$html = apply_filters('FHEE__EE_Ticket_Selector__ticket_selector_form_open__html', $html, $this->event);
543
+		return $html;
544
+	}
545
+
546
+
547
+	/**
548
+	 * displaySubmitButton
549
+	 *
550
+	 * @param  string $external_url
551
+	 * @return string
552
+	 * @throws EE_Error
553
+	 */
554
+	public function displaySubmitButton($external_url = '')
555
+	{
556
+		$html = '';
557
+		if ($this->display_full_ui()) {
558
+			// standard TS displayed with submit button, ie: "Register Now"
559
+			if (apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
560
+				$html .= $this->displayRegisterNowButton();
561
+				$html .= empty($external_url)
562
+					? $this->ticketSelectorEndDiv()
563
+					: $this->clearTicketSelector();
564
+				$html .= '<br/>' . $this->formClose();
565
+			} elseif ($this->getMaxAttendees() === 1) {
566
+				// its a "Dude Where's my Ticket Selector?" (DWMTS) type event (ie: $_max_atndz === 1)
567
+				if ($this->event->is_sold_out()) {
568
+					// then instead of a View Details or Submit button, just display a "Sold Out" message
569
+					$html .= apply_filters(
570
+						'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__sold_out_msg',
571
+						sprintf(
572
+							__(
573
+								'%1$s"%2$s" is currently sold out.%4$sPlease check back again later, as spots may become available.%3$s',
574
+								'event_espresso'
575
+							),
576
+							'<p class="no-ticket-selector-msg clear-float">',
577
+							$this->event->name(),
578
+							'</p>',
579
+							'<br />'
580
+						),
581
+						$this->event
582
+					);
583
+					if (apply_filters(
584
+						'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__no_tickets_but_display_register_now_button',
585
+						false,
586
+						$this->event
587
+					)) {
588
+						$html .= $this->displayRegisterNowButton();
589
+					}
590
+					// sold out DWMTS event, no TS, no submit or view details button, but has additional content
591
+					$html .= $this->ticketSelectorEndDiv();
592
+				} elseif (apply_filters('FHEE__EE_Ticket_Selector__hide_ticket_selector', false)
593
+					&& ! is_single()
594
+				) {
595
+					// this is a "Dude Where's my Ticket Selector?" (DWMTS) type event,
596
+					// but no tickets are available, so display event's "View Details" button.
597
+					// it is being viewed via somewhere other than a single post
598
+					$html .= $this->displayViewDetailsButton(true);
599
+				} else {
600
+					$html .= $this->ticketSelectorEndDiv();
601
+				}
602
+			} elseif (is_archive()) {
603
+				// event list, no tickets available so display event's "View Details" button
604
+				$html .= $this->ticketSelectorEndDiv();
605
+				$html .= $this->displayViewDetailsButton();
606
+			} else {
607
+				if (apply_filters(
608
+					'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__no_tickets_but_display_register_now_button',
609
+					false,
610
+					$this->event
611
+				)) {
612
+					$html .= $this->displayRegisterNowButton();
613
+				}
614
+				// no submit or view details button, and no additional content
615
+				$html .= $this->ticketSelectorEndDiv();
616
+			}
617
+			if (! $this->iframe && ! is_archive()) {
618
+				$html .= EEH_Template::powered_by_event_espresso('', '', array('utm_content' => 'ticket_selector'));
619
+			}
620
+		}
621
+		return apply_filters(
622
+			'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__displaySubmitButton__html',
623
+			$html,
624
+			$this->event,
625
+			$this
626
+		);
627
+	}
628
+
629
+
630
+	/**
631
+	 * @return string
632
+	 * @throws EE_Error
633
+	 */
634
+	public function displayRegisterNowButton()
635
+	{
636
+		$btn_text = apply_filters(
637
+			'FHEE__EE_Ticket_Selector__display_ticket_selector_submit__btn_text',
638
+			__('Register Now', 'event_espresso'),
639
+			$this->event
640
+		);
641
+		$external_url = $this->event->external_url();
642
+		$html = EEH_HTML::div(
643
+			'',
644
+			'ticket-selector-submit-' . $this->event->ID() . '-btn-wrap',
645
+			'ticket-selector-submit-btn-wrap'
646
+		);
647
+		$html .= '<input id="ticket-selector-submit-' . $this->event->ID() . '-btn"';
648
+		$html .= ' class="ticket-selector-submit-btn ';
649
+		$html .= empty($external_url) ? 'ticket-selector-submit-ajax"' : '"';
650
+		$html .= ' type="submit" value="' . $btn_text . '" />';
651
+		$html .= EEH_HTML::divx() . '<!-- .ticket-selector-submit-btn-wrap -->';
652
+		$html .= apply_filters(
653
+			'FHEE__EE_Ticket_Selector__after_ticket_selector_submit',
654
+			'',
655
+			$this->event,
656
+			$this->iframe
657
+		);
658
+		return $html;
659
+	}
660
+
661
+
662
+	/**
663
+	 * displayViewDetailsButton
664
+	 *
665
+	 * @param bool $DWMTS indicates a "Dude Where's my Ticket Selector?" (DWMTS) type event
666
+	 *                    (ie: $_max_atndz === 1) where there are no available tickets,
667
+	 *                    either because they are sold out, expired, or not yet on sale.
668
+	 *                    In this case, we need to close the form BEFORE adding any closing divs
669
+	 * @return string
670
+	 * @throws EE_Error
671
+	 */
672
+	public function displayViewDetailsButton($DWMTS = false)
673
+	{
674
+		if (! $this->event->get_permalink()) {
675
+			EE_Error::add_error(
676
+				esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
677
+				__FILE__,
678
+				__FUNCTION__,
679
+				__LINE__
680
+			);
681
+		}
682
+		$view_details_btn = '<form method="POST" action="';
683
+		$view_details_btn .= apply_filters(
684
+			'FHEE__EE_Ticket_Selector__display_view_details_btn__btn_url',
685
+			$this->event->get_permalink(),
686
+			$this->event
687
+		);
688
+		$view_details_btn .= '"';
689
+		// open link in new window ?
690
+		$view_details_btn .= apply_filters(
691
+			'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__displayViewDetailsButton__url_target_blank',
692
+			$this->isIframe(),
693
+			$this
694
+		)
695
+			? ' target="_blank"'
696
+			: '';
697
+		$view_details_btn .= '>';
698
+		$btn_text = apply_filters(
699
+			'FHEE__EE_Ticket_Selector__display_view_details_btn__btn_text',
700
+			esc_html__('View Details', 'event_espresso'),
701
+			$this->event
702
+		);
703
+		$view_details_btn .= '<input id="ticket-selector-submit-'
704
+							 . $this->event->ID()
705
+							 . '-btn" class="ticket-selector-submit-btn view-details-btn" type="submit" value="'
706
+							 . $btn_text
707
+							 . '" />';
708
+		$view_details_btn .= apply_filters('FHEE__EE_Ticket_Selector__after_view_details_btn', '', $this->event);
709
+		if ($DWMTS) {
710
+			$view_details_btn .= $this->formClose();
711
+			$view_details_btn .= $this->ticketSelectorEndDiv();
712
+			$view_details_btn .= '<br/>';
713
+		} else {
714
+			$view_details_btn .= $this->clearTicketSelector();
715
+			$view_details_btn .= '<br/>';
716
+			$view_details_btn .= $this->formClose();
717
+		}
718
+		return $view_details_btn;
719
+	}
720
+
721
+
722
+	/**
723
+	 * @return string
724
+	 */
725
+	public function ticketSelectorEndDiv()
726
+	{
727
+		return $this->clearTicketSelector() . '</div><!-- ticketSelectorEndDiv -->';
728
+	}
729
+
730
+
731
+	/**
732
+	 * @return string
733
+	 */
734
+	public function clearTicketSelector()
735
+	{
736
+		// standard TS displayed, appears after a "Register Now" or "view Details" button
737
+		return '<div class="clear"></div><!-- clearTicketSelector -->';
738
+	}
739
+
740
+
741
+	/**
742
+	 * @access        public
743
+	 * @return        string
744
+	 */
745
+	public function formClose()
746
+	{
747
+		return '</form>';
748
+	}
749 749
 }
Please login to merge, or discard this patch.
Spacing   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -135,11 +135,11 @@  discard block
 block discarded – undo
135 135
             }
136 136
         } else {
137 137
             $user_msg = __('No Event object or an invalid Event object was supplied.', 'event_espresso');
138
-            $dev_msg = $user_msg . __(
138
+            $dev_msg = $user_msg.__(
139 139
                 'In order to generate a ticket selector, please ensure you are passing either an EE_Event object or a WP_Post object of the post type "espresso_event" to the EE_Ticket_Selector class constructor.',
140 140
                 'event_espresso'
141 141
             );
142
-            EE_Error::add_error($user_msg . '||' . $dev_msg, __FILE__, __FUNCTION__, __LINE__);
142
+            EE_Error::add_error($user_msg.'||'.$dev_msg, __FILE__, __FUNCTION__, __LINE__);
143 143
             return false;
144 144
         }
145 145
         return true;
@@ -200,7 +200,7 @@  discard block
 block discarded – undo
200 200
         // reset filter for displaying submit button
201 201
         remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
202 202
         // poke and prod incoming event till it tells us what it is
203
-        if (! $this->setEvent($event)) {
203
+        if ( ! $this->setEvent($event)) {
204 204
             return false;
205 205
         }
206 206
         // begin gathering template arguments by getting event status
@@ -228,14 +228,14 @@  discard block
 block discarded – undo
228 228
             return $this->noTicketAvailableMessage();
229 229
         }
230 230
         // redirecting to another site for registration ??
231
-        $external_url = (string)$this->event->external_url();
231
+        $external_url = (string) $this->event->external_url();
232 232
         // if redirecting to another site for registration, then we don't load the TS
233 233
         $ticket_selector = $external_url
234 234
             ? $this->externalEventRegistration()
235 235
             : $this->loadTicketSelector($tickets, $template_args);
236 236
         // now set up the form (but not for the admin)
237 237
         $ticket_selector = $this->display_full_ui()
238
-            ? $this->formOpen($this->event->ID(), $external_url) . $ticket_selector
238
+            ? $this->formOpen($this->event->ID(), $external_url).$ticket_selector
239 239
             : $ticket_selector;
240 240
         // submit button and form close tag
241 241
         $ticket_selector .= $this->display_full_ui() ? $this->displaySubmitButton($external_url) : '';
@@ -283,10 +283,10 @@  discard block
 block discarded – undo
283 283
      */
284 284
     protected function expiredEventMessage()
285 285
     {
286
-        return '<div class="ee-event-expired-notice"><span class="important-notice">' . esc_html__(
286
+        return '<div class="ee-event-expired-notice"><span class="important-notice">'.esc_html__(
287 287
             'We\'re sorry, but all tickets sales have ended because the event is expired.',
288 288
             'event_espresso'
289
-        ) . '</span></div><!-- .ee-event-expired-notice -->';
289
+        ).'</span></div><!-- .ee-event-expired-notice -->';
290 290
     }
291 291
 
292 292
 
@@ -316,7 +316,7 @@  discard block
 block discarded – undo
316 316
         }
317 317
         return '
318 318
             <div class="ee-event-expired-notice">
319
-                <span class="important-notice">' . $no_ticket_available_msg . '</span>
319
+                <span class="important-notice">' . $no_ticket_available_msg.'</span>
320 320
             </div><!-- .ee-event-expired-notice -->';
321 321
     }
322 322
 
@@ -348,7 +348,7 @@  discard block
 block discarded – undo
348 348
                 '</a></span></div><!-- .ee-attention ticketSalesClosedMessage -->'
349 349
             );
350 350
         }
351
-        return '<p><span class="important-notice">' . $sales_closed_msg . '</span></p>';
351
+        return '<p><span class="important-notice">'.$sales_closed_msg.'</span></p>';
352 352
     }
353 353
 
354 354
 
@@ -373,7 +373,7 @@  discard block
 block discarded – undo
373 373
                 'Datetime.DTT_EVT_start' => 'DESC',
374 374
             ),
375 375
         );
376
-        if (! (
376
+        if ( ! (
377 377
             EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector instanceof EE_Ticket_Selector_Config
378 378
             && EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector->show_expired_tickets
379 379
         )) {
@@ -414,7 +414,7 @@  discard block
 block discarded – undo
414 414
          */
415 415
         $template_args['anchor_id'] = apply_filters(
416 416
             'FHEE__EE_Ticket_Selector__redirect_anchor_id',
417
-            '#tkt-slctr-tbl-' . $this->event->ID(),
417
+            '#tkt-slctr-tbl-'.$this->event->ID(),
418 418
             $this->event->ID()
419 419
         );
420 420
         $template_args['tickets'] = $tickets;
@@ -500,8 +500,8 @@  discard block
 block discarded – undo
500 500
         // if redirecting, we don't need any anything else
501 501
         if ($external_url) {
502 502
             $html = '<form method="GET" ';
503
-            $html .= 'action="' . EEH_URL::refactor_url($external_url) . '" ';
504
-            $html .= 'name="ticket-selector-form-' . $ID . '"';
503
+            $html .= 'action="'.EEH_URL::refactor_url($external_url).'" ';
504
+            $html .= 'name="ticket-selector-form-'.$ID.'"';
505 505
             // open link in new window ?
506 506
             $html .= apply_filters(
507 507
                 'FHEE__EventEspresso_modules_ticket_selector_DisplayTicketSelector__formOpen__external_url_target_blank',
@@ -512,18 +512,18 @@  discard block
 block discarded – undo
512 512
                 : '';
513 513
             $html .= '>';
514 514
             $query_args = EEH_URL::get_query_string($external_url);
515
-            foreach ((array)$query_args as $query_arg => $value) {
516
-                $html .= '<input type="hidden" name="' . $query_arg . '" value="' . $value . '">';
515
+            foreach ((array) $query_args as $query_arg => $value) {
516
+                $html .= '<input type="hidden" name="'.$query_arg.'" value="'.$value.'">';
517 517
             }
518 518
             return $html;
519 519
         }
520 520
         // if there is no submit button, then don't start building a form
521 521
         // because the "View Details" button will build its own form
522
-        if (! apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
522
+        if ( ! apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', false)) {
523 523
             return '';
524 524
         }
525 525
         $checkout_url = EEH_Event_View::event_link_url($ID);
526
-        if (! $checkout_url) {
526
+        if ( ! $checkout_url) {
527 527
             EE_Error::add_error(
528 528
                 esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
529 529
                 __FILE__,
@@ -534,8 +534,8 @@  discard block
 block discarded – undo
534 534
         // set no cache headers and constants
535 535
         EE_System::do_not_cache();
536 536
         $html = '<form method="POST" ';
537
-        $html .= 'action="' . $checkout_url . '" ';
538
-        $html .= 'name="ticket-selector-form-' . $ID . '"';
537
+        $html .= 'action="'.$checkout_url.'" ';
538
+        $html .= 'name="ticket-selector-form-'.$ID.'"';
539 539
         $html .= $this->iframe ? ' target="_blank"' : '';
540 540
         $html .= '>';
541 541
         $html .= '<input type="hidden" name="ee" value="process_ticket_selections">';
@@ -561,7 +561,7 @@  discard block
 block discarded – undo
561 561
                 $html .= empty($external_url)
562 562
                     ? $this->ticketSelectorEndDiv()
563 563
                     : $this->clearTicketSelector();
564
-                $html .= '<br/>' . $this->formClose();
564
+                $html .= '<br/>'.$this->formClose();
565 565
             } elseif ($this->getMaxAttendees() === 1) {
566 566
                 // its a "Dude Where's my Ticket Selector?" (DWMTS) type event (ie: $_max_atndz === 1)
567 567
                 if ($this->event->is_sold_out()) {
@@ -614,7 +614,7 @@  discard block
 block discarded – undo
614 614
                 // no submit or view details button, and no additional content
615 615
                 $html .= $this->ticketSelectorEndDiv();
616 616
             }
617
-            if (! $this->iframe && ! is_archive()) {
617
+            if ( ! $this->iframe && ! is_archive()) {
618 618
                 $html .= EEH_Template::powered_by_event_espresso('', '', array('utm_content' => 'ticket_selector'));
619 619
             }
620 620
         }
@@ -641,14 +641,14 @@  discard block
 block discarded – undo
641 641
         $external_url = $this->event->external_url();
642 642
         $html = EEH_HTML::div(
643 643
             '',
644
-            'ticket-selector-submit-' . $this->event->ID() . '-btn-wrap',
644
+            'ticket-selector-submit-'.$this->event->ID().'-btn-wrap',
645 645
             'ticket-selector-submit-btn-wrap'
646 646
         );
647
-        $html .= '<input id="ticket-selector-submit-' . $this->event->ID() . '-btn"';
647
+        $html .= '<input id="ticket-selector-submit-'.$this->event->ID().'-btn"';
648 648
         $html .= ' class="ticket-selector-submit-btn ';
649 649
         $html .= empty($external_url) ? 'ticket-selector-submit-ajax"' : '"';
650
-        $html .= ' type="submit" value="' . $btn_text . '" />';
651
-        $html .= EEH_HTML::divx() . '<!-- .ticket-selector-submit-btn-wrap -->';
650
+        $html .= ' type="submit" value="'.$btn_text.'" />';
651
+        $html .= EEH_HTML::divx().'<!-- .ticket-selector-submit-btn-wrap -->';
652 652
         $html .= apply_filters(
653 653
             'FHEE__EE_Ticket_Selector__after_ticket_selector_submit',
654 654
             '',
@@ -671,7 +671,7 @@  discard block
 block discarded – undo
671 671
      */
672 672
     public function displayViewDetailsButton($DWMTS = false)
673 673
     {
674
-        if (! $this->event->get_permalink()) {
674
+        if ( ! $this->event->get_permalink()) {
675 675
             EE_Error::add_error(
676 676
                 esc_html__('The URL for the Event Details page could not be retrieved.', 'event_espresso'),
677 677
                 __FILE__,
@@ -724,7 +724,7 @@  discard block
 block discarded – undo
724 724
      */
725 725
     public function ticketSelectorEndDiv()
726 726
     {
727
-        return $this->clearTicketSelector() . '</div><!-- ticketSelectorEndDiv -->';
727
+        return $this->clearTicketSelector().'</div><!-- ticketSelectorEndDiv -->';
728 728
     }
729 729
 
730 730
 
Please login to merge, or discard this patch.
modules/ticket_selector/TicketSelectorRow.php 1 patch
Indentation   +364 added lines, -364 removed lines patch added patch discarded remove patch
@@ -18,368 +18,368 @@
 block discarded – undo
18 18
 abstract class TicketSelectorRow
19 19
 {
20 20
 
21
-    /**
22
-     * @var EE_Ticket $ticket
23
-     */
24
-    protected $ticket;
25
-
26
-    /**
27
-     * @var int $total_tickets
28
-     */
29
-    protected $total_tickets;
30
-
31
-    /**
32
-     * @var int $max_attendees
33
-     */
34
-    protected $max_attendees;
35
-
36
-    /**
37
-     * @var string $date_format
38
-     */
39
-    protected $date_format;
40
-
41
-    /**
42
-     * @var int $EVT_ID
43
-     */
44
-    protected $EVT_ID;
45
-
46
-    /**
47
-     * @var string $event_status
48
-     */
49
-    protected $event_status;
50
-
51
-    /**
52
-     * @var boolean $required_ticket_sold_out
53
-     */
54
-    protected $required_ticket_sold_out;
55
-
56
-    /**
57
-     * @var string $ticket_status_display
58
-     */
59
-    protected $ticket_status_display;
60
-
61
-    /**
62
-     * @var int $max
63
-     */
64
-    protected $max = 0;
65
-
66
-    /**
67
-     * @var int $min
68
-     */
69
-    protected $min = 0;
70
-
71
-    /**
72
-     * @var float $ticket_price
73
-     */
74
-    protected $ticket_price = 0.00;
75
-
76
-    /**
77
-     * @var bool $ticket_bundle
78
-     */
79
-    protected $ticket_bundle = false;
80
-
81
-    /**
82
-     * @var string $ticket_status_id
83
-     */
84
-    protected $ticket_status_id = EE_Ticket::sold_out;
85
-
86
-    /**
87
-     * @var string $ticket_status_html
88
-     */
89
-    protected $ticket_status_html = 'ticket-sales-sold-out';
90
-
91
-    /**
92
-     * @var string $status_class
93
-     */
94
-    protected $status_class = 'ticket-sales-sold-out lt-grey-text';
95
-
96
-
97
-    /**
98
-     * @param EE_Ticket $ticket
99
-     * @param int       $max_attendees
100
-     * @param string    $date_format
101
-     * @param string    $event_status
102
-     * @param bool      $required_ticket_sold_out
103
-     * @param int       $total_tickets
104
-     * @throws EE_Error
105
-     * @throws UnexpectedEntityException
106
-     */
107
-    public function __construct(
108
-        EE_Ticket $ticket,
109
-        $max_attendees,
110
-        $date_format,
111
-        $event_status,
112
-        $required_ticket_sold_out = false,
113
-        $total_tickets = 1
114
-    ) {
115
-        $this->ticket = $ticket;
116
-        $this->max_attendees = $max_attendees;
117
-        $this->date_format = $date_format;
118
-        $this->EVT_ID = $this->ticket->get_event_ID();
119
-        $this->event_status = $event_status;
120
-        $this->required_ticket_sold_out = $required_ticket_sold_out;
121
-        $this->total_tickets = $total_tickets;
122
-    }
123
-
124
-
125
-    /**
126
-     * getTicketStatusClasses
127
-     *
128
-     * @param int $remaining
129
-     * @return void
130
-     * @throws EE_Error
131
-     */
132
-    protected function setTicketStatusClasses($remaining = 0)
133
-    {
134
-        // if a previous required ticket with the same sale start date is sold out,
135
-        // then mark this ticket as sold out as well.
136
-        // tickets that go on sale at a later date than the required ticket  will NOT be affected
137
-        $this->ticket_status_id = $this->required_ticket_sold_out !== false
138
-                                  && $this->required_ticket_sold_out === $this->ticket->start_date()
139
-            ? EE_Ticket::sold_out
140
-            : $this->ticket->ticket_status();
141
-        $this->ticket_status_id = $this->event_status === EE_Datetime::sold_out
142
-            ? EE_Ticket::sold_out
143
-            : $this->ticket_status_id;
144
-        // check ticket status
145
-        switch ($this->ticket_status_id) {
146
-            // sold_out
147
-            case EE_Ticket::sold_out:
148
-                $ticket_status_class = 'ticket-sales-sold-out';
149
-                $this->status_class = 'ticket-sales-sold-out lt-grey-text';
150
-                break;
151
-            // expired
152
-            case EE_Ticket::expired:
153
-                $ticket_status_class = 'ticket-sales-expired';
154
-                $this->status_class = 'ticket-sales-expired lt-grey-text';
155
-                break;
156
-            // archived
157
-            case EE_Ticket::archived:
158
-                $ticket_status_class = 'archived-ticket';
159
-                $this->status_class = 'archived-ticket hidden';
160
-                break;
161
-            // pending
162
-            case EE_Ticket::pending:
163
-                $ticket_status_class = 'ticket-pending';
164
-                $this->status_class = 'ticket-pending';
165
-                break;
166
-            // on sale
167
-            case EE_Ticket::onsale:
168
-            default:
169
-                $ticket_status_class = 'ticket-on-sale';
170
-                $this->status_class = 'ticket-on-sale';
171
-                break;
172
-        }
173
-        $this->ticket_status_html = EEH_HTML::span(
174
-            $this->ticket->ticket_status(true, ($remaining > 0)),
175
-            "{$ticket_status_class}-{$this->ticket->ID()}",
176
-            $ticket_status_class
177
-        );
178
-    }
179
-
180
-
181
-    /**
182
-     * @return string
183
-     */
184
-    public function getTicketStatusDisplay()
185
-    {
186
-        return $this->ticket_status_display;
187
-    }
188
-
189
-
190
-    /**
191
-     * setTicketStatusDisplay
192
-     *
193
-     * @param int $remaining
194
-     * @throws EE_Error
195
-     */
196
-    protected function setTicketStatusDisplay($remaining)
197
-    {
198
-        $this->ticket_status_display = '';
199
-        // now depending on the ticket and other circumstances...
200
-        if ($this->max_attendees === 0) {
201
-            // registration is CLOSED because admin set max attendees to ZERO
202
-            $this->ticket_status_display = $this->registrationClosed();
203
-        } elseif ($this->ticket_status_id === EE_Ticket::sold_out || $remaining === 0) {
204
-            // SOLD OUT - no tickets remaining
205
-            $this->ticket_status_display = $this->ticketsSoldOut();
206
-        } elseif ($this->ticket_status_id === EE_Ticket::expired || $this->ticket_status_id === EE_Ticket::archived) {
207
-            // expired or archived ticket
208
-            $this->ticket_status_display = $this->ticket_status_html;
209
-        } elseif ($this->ticket_status_id === EE_Ticket::pending) {
210
-            // ticket not on sale yet
211
-            $this->ticket_status_display = $this->ticketsSalesPending();
212
-        } elseif ($this->ticket->min() > $remaining) {
213
-            // min qty purchasable is less than tickets available
214
-            $this->ticket_status_display = $this->notEnoughTicketsAvailable();
215
-        }
216
-    }
217
-
218
-
219
-    /**
220
-     * registrationClosed
221
-     */
222
-    protected function registrationClosed()
223
-    {
224
-        return EEH_HTML::span(
225
-            apply_filters(
226
-                'FHEE__ticket_selector_chart_template__ticket_closed_msg',
227
-                __('Closed', 'event_espresso')
228
-            ),
229
-            '',
230
-            'sold-out'
231
-        );
232
-    }
233
-
234
-
235
-    /**
236
-     * ticketsSoldOut
237
-     */
238
-    protected function ticketsSoldOut()
239
-    {
240
-        return EEH_HTML::span(
241
-            apply_filters(
242
-                'FHEE__ticket_selector_chart_template__ticket_sold_out_msg',
243
-                __('Sold&nbsp;Out', 'event_espresso')
244
-            ),
245
-            '',
246
-            'sold-out'
247
-        );
248
-    }
249
-
250
-
251
-    /**
252
-     * ticketsSalesPending
253
-     *
254
-     * @throws EE_Error
255
-     */
256
-    protected function ticketsSalesPending()
257
-    {
258
-        return EEH_HTML::span(
259
-            EEH_HTML::span(
260
-                apply_filters(
261
-                    'FHEE__ticket_selector_chart_template__ticket_goes_on_sale_msg',
262
-                    __('Goes&nbsp;On&nbsp;Sale', 'event_espresso')
263
-                ),
264
-                '',
265
-                'ticket-pending'
266
-            )
267
-            . EEH_HTML::br()
268
-            . EEH_HTML::span(
269
-                $this->ticket->get_i18n_datetime(
270
-                    'TKT_start_date',
271
-                    apply_filters(
272
-                        'FHEE__EED_Ticket_Selector__display_goes_on_sale__date_format',
273
-                        $this->date_format
274
-                    )
275
-                ),
276
-                '',
277
-                'small-text'
278
-            ),
279
-            '',
280
-            'ticket-pending-pg'
281
-        );
282
-    }
283
-
284
-
285
-    /**
286
-     * notEnoughTicketsAvailable
287
-     */
288
-    protected function notEnoughTicketsAvailable()
289
-    {
290
-        return EEH_HTML::div(
291
-            EEH_HTML::span(
292
-                apply_filters(
293
-                    'FHEE__ticket_selector_chart_template__ticket_not_available_msg',
294
-                    __('Not Available', 'event_espresso')
295
-                ),
296
-                '',
297
-                'archived-ticket small-text'
298
-            )
299
-            . EEH_HTML::br(),
300
-            '',
301
-            'archived-ticket-pg'
302
-        );
303
-    }
304
-
305
-
306
-    /**
307
-     * setTicketMinAndMax
308
-     *
309
-     * @param int $remaining
310
-     * @return void
311
-     * @throws EE_Error
312
-     */
313
-    protected function setTicketMinAndMax($remaining)
314
-    {
315
-        // offer the number of $tickets_remaining or $this->max_attendees, whichever is smaller
316
-        $this->max = min($remaining, $this->max_attendees);
317
-        // but... we also want to restrict the number of tickets by the ticket max setting,
318
-        // however, the max still can't be higher than what was just set above
319
-        $this->max = $this->ticket->max() > 0
320
-            ? min($this->ticket->max(), $this->max)
321
-            : $this->max;
322
-        // and we also want to restrict the minimum number of tickets by the ticket min setting
323
-        $this->min = $this->ticket->min() > 0
324
-            ? $this->ticket->min()
325
-            : 0;
326
-        // and if the ticket is required, then make sure that min qty is at least 1
327
-        $this->min = $this->ticket->required()
328
-            ? max($this->min, 1)
329
-            : $this->min;
330
-    }
331
-
332
-
333
-    /**
334
-     * Allow plugins to hook in and abort the generation and display of this row to do
335
-     * something elseif they want.
336
-     * For an addon to abort things, all they have to do is register a filter with this hook, and
337
-     * return a value that is NOT false.  Whatever is returned gets echoed instead of the
338
-     * current row.
339
-     *
340
-     * @return string|bool
341
-     */
342
-    protected function getFilteredRowHtml()
343
-    {
344
-        return apply_filters(
345
-            'FHEE__ticket_selector_chart_template__do_ticket_entire_row',
346
-            false,
347
-            $this->ticket,
348
-            $this->max,
349
-            $this->min,
350
-            $this->required_ticket_sold_out,
351
-            $this->ticket_price,
352
-            $this->ticket_bundle,
353
-            $this->ticket_status_html,
354
-            $this->status_class,
355
-            $this
356
-        );
357
-    }
358
-
359
-
360
-    /**
361
-     * Allow plugins to hook in and abort the generation and display of the contents of this
362
-     * row to do something elseif they want.
363
-     * For an addon to abort things, all they have to do is register a filter with this hook, and
364
-     * return a value that is NOT false.  Whatever is returned gets echoed instead of the
365
-     * current row.
366
-     *
367
-     * @return string|bool
368
-     */
369
-    protected function getFilteredRowContents()
370
-    {
371
-        return apply_filters(
372
-            'FHEE__ticket_selector_chart_template__do_ticket_inside_row',
373
-            false,
374
-            $this->ticket,
375
-            $this->max,
376
-            $this->min,
377
-            $this->required_ticket_sold_out,
378
-            $this->ticket_price,
379
-            $this->ticket_bundle,
380
-            $this->ticket_status_html,
381
-            $this->status_class,
382
-            $this
383
-        );
384
-    }
21
+	/**
22
+	 * @var EE_Ticket $ticket
23
+	 */
24
+	protected $ticket;
25
+
26
+	/**
27
+	 * @var int $total_tickets
28
+	 */
29
+	protected $total_tickets;
30
+
31
+	/**
32
+	 * @var int $max_attendees
33
+	 */
34
+	protected $max_attendees;
35
+
36
+	/**
37
+	 * @var string $date_format
38
+	 */
39
+	protected $date_format;
40
+
41
+	/**
42
+	 * @var int $EVT_ID
43
+	 */
44
+	protected $EVT_ID;
45
+
46
+	/**
47
+	 * @var string $event_status
48
+	 */
49
+	protected $event_status;
50
+
51
+	/**
52
+	 * @var boolean $required_ticket_sold_out
53
+	 */
54
+	protected $required_ticket_sold_out;
55
+
56
+	/**
57
+	 * @var string $ticket_status_display
58
+	 */
59
+	protected $ticket_status_display;
60
+
61
+	/**
62
+	 * @var int $max
63
+	 */
64
+	protected $max = 0;
65
+
66
+	/**
67
+	 * @var int $min
68
+	 */
69
+	protected $min = 0;
70
+
71
+	/**
72
+	 * @var float $ticket_price
73
+	 */
74
+	protected $ticket_price = 0.00;
75
+
76
+	/**
77
+	 * @var bool $ticket_bundle
78
+	 */
79
+	protected $ticket_bundle = false;
80
+
81
+	/**
82
+	 * @var string $ticket_status_id
83
+	 */
84
+	protected $ticket_status_id = EE_Ticket::sold_out;
85
+
86
+	/**
87
+	 * @var string $ticket_status_html
88
+	 */
89
+	protected $ticket_status_html = 'ticket-sales-sold-out';
90
+
91
+	/**
92
+	 * @var string $status_class
93
+	 */
94
+	protected $status_class = 'ticket-sales-sold-out lt-grey-text';
95
+
96
+
97
+	/**
98
+	 * @param EE_Ticket $ticket
99
+	 * @param int       $max_attendees
100
+	 * @param string    $date_format
101
+	 * @param string    $event_status
102
+	 * @param bool      $required_ticket_sold_out
103
+	 * @param int       $total_tickets
104
+	 * @throws EE_Error
105
+	 * @throws UnexpectedEntityException
106
+	 */
107
+	public function __construct(
108
+		EE_Ticket $ticket,
109
+		$max_attendees,
110
+		$date_format,
111
+		$event_status,
112
+		$required_ticket_sold_out = false,
113
+		$total_tickets = 1
114
+	) {
115
+		$this->ticket = $ticket;
116
+		$this->max_attendees = $max_attendees;
117
+		$this->date_format = $date_format;
118
+		$this->EVT_ID = $this->ticket->get_event_ID();
119
+		$this->event_status = $event_status;
120
+		$this->required_ticket_sold_out = $required_ticket_sold_out;
121
+		$this->total_tickets = $total_tickets;
122
+	}
123
+
124
+
125
+	/**
126
+	 * getTicketStatusClasses
127
+	 *
128
+	 * @param int $remaining
129
+	 * @return void
130
+	 * @throws EE_Error
131
+	 */
132
+	protected function setTicketStatusClasses($remaining = 0)
133
+	{
134
+		// if a previous required ticket with the same sale start date is sold out,
135
+		// then mark this ticket as sold out as well.
136
+		// tickets that go on sale at a later date than the required ticket  will NOT be affected
137
+		$this->ticket_status_id = $this->required_ticket_sold_out !== false
138
+								  && $this->required_ticket_sold_out === $this->ticket->start_date()
139
+			? EE_Ticket::sold_out
140
+			: $this->ticket->ticket_status();
141
+		$this->ticket_status_id = $this->event_status === EE_Datetime::sold_out
142
+			? EE_Ticket::sold_out
143
+			: $this->ticket_status_id;
144
+		// check ticket status
145
+		switch ($this->ticket_status_id) {
146
+			// sold_out
147
+			case EE_Ticket::sold_out:
148
+				$ticket_status_class = 'ticket-sales-sold-out';
149
+				$this->status_class = 'ticket-sales-sold-out lt-grey-text';
150
+				break;
151
+			// expired
152
+			case EE_Ticket::expired:
153
+				$ticket_status_class = 'ticket-sales-expired';
154
+				$this->status_class = 'ticket-sales-expired lt-grey-text';
155
+				break;
156
+			// archived
157
+			case EE_Ticket::archived:
158
+				$ticket_status_class = 'archived-ticket';
159
+				$this->status_class = 'archived-ticket hidden';
160
+				break;
161
+			// pending
162
+			case EE_Ticket::pending:
163
+				$ticket_status_class = 'ticket-pending';
164
+				$this->status_class = 'ticket-pending';
165
+				break;
166
+			// on sale
167
+			case EE_Ticket::onsale:
168
+			default:
169
+				$ticket_status_class = 'ticket-on-sale';
170
+				$this->status_class = 'ticket-on-sale';
171
+				break;
172
+		}
173
+		$this->ticket_status_html = EEH_HTML::span(
174
+			$this->ticket->ticket_status(true, ($remaining > 0)),
175
+			"{$ticket_status_class}-{$this->ticket->ID()}",
176
+			$ticket_status_class
177
+		);
178
+	}
179
+
180
+
181
+	/**
182
+	 * @return string
183
+	 */
184
+	public function getTicketStatusDisplay()
185
+	{
186
+		return $this->ticket_status_display;
187
+	}
188
+
189
+
190
+	/**
191
+	 * setTicketStatusDisplay
192
+	 *
193
+	 * @param int $remaining
194
+	 * @throws EE_Error
195
+	 */
196
+	protected function setTicketStatusDisplay($remaining)
197
+	{
198
+		$this->ticket_status_display = '';
199
+		// now depending on the ticket and other circumstances...
200
+		if ($this->max_attendees === 0) {
201
+			// registration is CLOSED because admin set max attendees to ZERO
202
+			$this->ticket_status_display = $this->registrationClosed();
203
+		} elseif ($this->ticket_status_id === EE_Ticket::sold_out || $remaining === 0) {
204
+			// SOLD OUT - no tickets remaining
205
+			$this->ticket_status_display = $this->ticketsSoldOut();
206
+		} elseif ($this->ticket_status_id === EE_Ticket::expired || $this->ticket_status_id === EE_Ticket::archived) {
207
+			// expired or archived ticket
208
+			$this->ticket_status_display = $this->ticket_status_html;
209
+		} elseif ($this->ticket_status_id === EE_Ticket::pending) {
210
+			// ticket not on sale yet
211
+			$this->ticket_status_display = $this->ticketsSalesPending();
212
+		} elseif ($this->ticket->min() > $remaining) {
213
+			// min qty purchasable is less than tickets available
214
+			$this->ticket_status_display = $this->notEnoughTicketsAvailable();
215
+		}
216
+	}
217
+
218
+
219
+	/**
220
+	 * registrationClosed
221
+	 */
222
+	protected function registrationClosed()
223
+	{
224
+		return EEH_HTML::span(
225
+			apply_filters(
226
+				'FHEE__ticket_selector_chart_template__ticket_closed_msg',
227
+				__('Closed', 'event_espresso')
228
+			),
229
+			'',
230
+			'sold-out'
231
+		);
232
+	}
233
+
234
+
235
+	/**
236
+	 * ticketsSoldOut
237
+	 */
238
+	protected function ticketsSoldOut()
239
+	{
240
+		return EEH_HTML::span(
241
+			apply_filters(
242
+				'FHEE__ticket_selector_chart_template__ticket_sold_out_msg',
243
+				__('Sold&nbsp;Out', 'event_espresso')
244
+			),
245
+			'',
246
+			'sold-out'
247
+		);
248
+	}
249
+
250
+
251
+	/**
252
+	 * ticketsSalesPending
253
+	 *
254
+	 * @throws EE_Error
255
+	 */
256
+	protected function ticketsSalesPending()
257
+	{
258
+		return EEH_HTML::span(
259
+			EEH_HTML::span(
260
+				apply_filters(
261
+					'FHEE__ticket_selector_chart_template__ticket_goes_on_sale_msg',
262
+					__('Goes&nbsp;On&nbsp;Sale', 'event_espresso')
263
+				),
264
+				'',
265
+				'ticket-pending'
266
+			)
267
+			. EEH_HTML::br()
268
+			. EEH_HTML::span(
269
+				$this->ticket->get_i18n_datetime(
270
+					'TKT_start_date',
271
+					apply_filters(
272
+						'FHEE__EED_Ticket_Selector__display_goes_on_sale__date_format',
273
+						$this->date_format
274
+					)
275
+				),
276
+				'',
277
+				'small-text'
278
+			),
279
+			'',
280
+			'ticket-pending-pg'
281
+		);
282
+	}
283
+
284
+
285
+	/**
286
+	 * notEnoughTicketsAvailable
287
+	 */
288
+	protected function notEnoughTicketsAvailable()
289
+	{
290
+		return EEH_HTML::div(
291
+			EEH_HTML::span(
292
+				apply_filters(
293
+					'FHEE__ticket_selector_chart_template__ticket_not_available_msg',
294
+					__('Not Available', 'event_espresso')
295
+				),
296
+				'',
297
+				'archived-ticket small-text'
298
+			)
299
+			. EEH_HTML::br(),
300
+			'',
301
+			'archived-ticket-pg'
302
+		);
303
+	}
304
+
305
+
306
+	/**
307
+	 * setTicketMinAndMax
308
+	 *
309
+	 * @param int $remaining
310
+	 * @return void
311
+	 * @throws EE_Error
312
+	 */
313
+	protected function setTicketMinAndMax($remaining)
314
+	{
315
+		// offer the number of $tickets_remaining or $this->max_attendees, whichever is smaller
316
+		$this->max = min($remaining, $this->max_attendees);
317
+		// but... we also want to restrict the number of tickets by the ticket max setting,
318
+		// however, the max still can't be higher than what was just set above
319
+		$this->max = $this->ticket->max() > 0
320
+			? min($this->ticket->max(), $this->max)
321
+			: $this->max;
322
+		// and we also want to restrict the minimum number of tickets by the ticket min setting
323
+		$this->min = $this->ticket->min() > 0
324
+			? $this->ticket->min()
325
+			: 0;
326
+		// and if the ticket is required, then make sure that min qty is at least 1
327
+		$this->min = $this->ticket->required()
328
+			? max($this->min, 1)
329
+			: $this->min;
330
+	}
331
+
332
+
333
+	/**
334
+	 * Allow plugins to hook in and abort the generation and display of this row to do
335
+	 * something elseif they want.
336
+	 * For an addon to abort things, all they have to do is register a filter with this hook, and
337
+	 * return a value that is NOT false.  Whatever is returned gets echoed instead of the
338
+	 * current row.
339
+	 *
340
+	 * @return string|bool
341
+	 */
342
+	protected function getFilteredRowHtml()
343
+	{
344
+		return apply_filters(
345
+			'FHEE__ticket_selector_chart_template__do_ticket_entire_row',
346
+			false,
347
+			$this->ticket,
348
+			$this->max,
349
+			$this->min,
350
+			$this->required_ticket_sold_out,
351
+			$this->ticket_price,
352
+			$this->ticket_bundle,
353
+			$this->ticket_status_html,
354
+			$this->status_class,
355
+			$this
356
+		);
357
+	}
358
+
359
+
360
+	/**
361
+	 * Allow plugins to hook in and abort the generation and display of the contents of this
362
+	 * row to do something elseif they want.
363
+	 * For an addon to abort things, all they have to do is register a filter with this hook, and
364
+	 * return a value that is NOT false.  Whatever is returned gets echoed instead of the
365
+	 * current row.
366
+	 *
367
+	 * @return string|bool
368
+	 */
369
+	protected function getFilteredRowContents()
370
+	{
371
+		return apply_filters(
372
+			'FHEE__ticket_selector_chart_template__do_ticket_inside_row',
373
+			false,
374
+			$this->ticket,
375
+			$this->max,
376
+			$this->min,
377
+			$this->required_ticket_sold_out,
378
+			$this->ticket_price,
379
+			$this->ticket_bundle,
380
+			$this->ticket_status_html,
381
+			$this->status_class,
382
+			$this
383
+		);
384
+	}
385 385
 }
Please login to merge, or discard this patch.
modules/ticket_selector/TicketDatetimeAvailabilityTracker.php 2 patches
Indentation   +211 added lines, -211 removed lines patch added patch discarded remove patch
@@ -22,215 +22,215 @@
 block discarded – undo
22 22
 class TicketDatetimeAvailabilityTracker
23 23
 {
24 24
 
25
-    /**
26
-     * array of datetimes and the spaces available for them
27
-     *
28
-     * @var array[][]
29
-     */
30
-    private $available_spaces = array();
31
-
32
-    /**
33
-     * @var EEM_Datetime $datetime_model
34
-     */
35
-    private $datetime_model;
36
-
37
-
38
-    /**
39
-     * TicketDatetimeAvailabilityTracker constructor.
40
-     *
41
-     * @param EEM_Datetime $datetime_model
42
-     */
43
-    public function __construct(EEM_Datetime $datetime_model)
44
-    {
45
-        $this->datetime_model = $datetime_model;
46
-    }
47
-
48
-
49
-    /**
50
-     * ticketDatetimeAvailability
51
-     * creates an array of tickets plus all of the datetimes available to each ticket
52
-     * and tracks the spaces remaining for each of those datetimes
53
-     *
54
-     * @param EE_Ticket $ticket - selected ticket
55
-     * @param bool      $get_original_ticket_spaces
56
-     * @return int
57
-     * @throws EE_Error
58
-     * @throws InvalidArgumentException
59
-     * @throws InvalidDataTypeException
60
-     * @throws InvalidInterfaceException
61
-     */
62
-    public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
63
-    {
64
-        // if the $_available_spaces array has not been set up yet...
65
-        if (! isset($this->available_spaces['tickets'][$ticket->ID()])) {
66
-            $this->setInitialTicketDatetimeAvailability($ticket);
67
-        }
68
-        $available_spaces = $ticket->qty() - $ticket->sold();
69
-        if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
70
-            // loop thru tickets, which will ALSO include individual ticket records AND a total
71
-            foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
72
-                // if we want the original datetime availability BEFORE we started subtracting tickets ?
73
-                if ($get_original_ticket_spaces) {
74
-                    // then grab the available spaces from the "tickets" array
75
-                    // and compare with the above to get the lowest number
76
-                    $available_spaces = min(
77
-                        $available_spaces,
78
-                        $this->available_spaces['tickets'][$ticket->ID()][$DTD_ID]
79
-                    );
80
-                } else {
81
-                    // we want the updated ticket availability as stored in the "datetimes" array
82
-                    $available_spaces = min($available_spaces, $this->available_spaces['datetimes'][$DTD_ID]);
83
-                }
84
-            }
85
-        }
86
-        return $available_spaces;
87
-    }
88
-
89
-
90
-    /**
91
-     * @param EE_Ticket $ticket
92
-     * @return void
93
-     * @throws InvalidArgumentException
94
-     * @throws InvalidInterfaceException
95
-     * @throws InvalidDataTypeException
96
-     * @throws EE_Error
97
-     */
98
-    private function setInitialTicketDatetimeAvailability(EE_Ticket $ticket)
99
-    {
100
-        // first, get all of the datetimes that are available to this ticket
101
-        $datetimes = $ticket->get_many_related(
102
-            'Datetime',
103
-            array(
104
-                array(
105
-                    'DTT_EVT_end' => array(
106
-                        '>=',
107
-                        $this->datetime_model->current_time_for_query('DTT_EVT_end'),
108
-                    ),
109
-                ),
110
-                'order_by' => array('DTT_EVT_start' => 'ASC'),
111
-            )
112
-        );
113
-        if (! empty($datetimes)) {
114
-            // now loop thru all of the datetimes
115
-            foreach ($datetimes as $datetime) {
116
-                if ($datetime instanceof EE_Datetime) {
117
-                    // the number of spaces available for the datetime without considering individual ticket quantities
118
-                    $spaces_remaining = $datetime->spaces_remaining();
119
-                    // save the total available spaces ( the lesser of the ticket qty minus the number of tickets sold
120
-                    // or the datetime spaces remaining) to this ticket using the datetime ID as the key
121
-                    $this->available_spaces['tickets'][$ticket->ID()][$datetime->ID()] = min(
122
-                        $ticket->qty() - $ticket->sold(),
123
-                        $spaces_remaining
124
-                    );
125
-                    // if the remaining spaces for this datetime is already set,
126
-                    // then compare that against the datetime spaces remaining, and take the lowest number,
127
-                    // else just take the datetime spaces remaining, and assign to the datetimes array
128
-                    $this->available_spaces['datetimes'][$datetime->ID()] = isset(
129
-                        $this->available_spaces['datetimes'][$datetime->ID()]
130
-                    )
131
-                        ? min($this->available_spaces['datetimes'][$datetime->ID()], $spaces_remaining)
132
-                        : $spaces_remaining;
133
-                }
134
-            }
135
-        }
136
-    }
137
-
138
-
139
-    /**
140
-     * @param    EE_Ticket $ticket
141
-     * @param    int       $qty
142
-     * @return    void
143
-     * @throws EE_Error
144
-     */
145
-    public function recalculateTicketDatetimeAvailability(EE_Ticket $ticket, $qty = 0)
146
-    {
147
-        if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
148
-            // loop thru tickets, which will ALSO include individual ticket records AND a total
149
-            foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
150
-                // subtract the qty of selected tickets from each datetime's available spaces this ticket has access to,
151
-                $this->available_spaces['datetimes'][$DTD_ID] -= $qty;
152
-            }
153
-        }
154
-    }
155
-
156
-
157
-    /**
158
-     * @param EE_Ticket $ticket
159
-     * @param           $qty
160
-     * @param int       $total_ticket_count
161
-     * @throws EE_Error
162
-     * @throws InvalidArgumentException
163
-     * @throws InvalidDataTypeException
164
-     * @throws InvalidInterfaceException
165
-     */
166
-    public function processAvailabilityError(EE_Ticket $ticket, $qty, $total_ticket_count = 1)
167
-    {
168
-        // tickets can not be purchased but let's find the exact number left
169
-        // for the last ticket selected PRIOR to subtracting tickets
170
-        $available_spaces = $this->ticketDatetimeAvailability($ticket, true);
171
-        // greedy greedy greedy eh?
172
-        if ($available_spaces > 0) {
173
-            if (apply_filters(
174
-                'FHEE__EE_Ticket_Selector___add_ticket_to_cart__allow_display_availability_error',
175
-                true,
176
-                $ticket,
177
-                $qty,
178
-                $available_spaces
179
-            )) {
180
-                $this->availabilityError(
181
-                    $available_spaces,
182
-                    $total_ticket_count
183
-                );
184
-            }
185
-        } else {
186
-            EE_Error::add_error(
187
-                esc_html__(
188
-                    'We\'re sorry, but there are no available spaces left for this event at this particular date and time.',
189
-                    'event_espresso'
190
-                ),
191
-                __FILE__,
192
-                __FUNCTION__,
193
-                __LINE__
194
-            );
195
-        }
196
-    }
197
-
198
-
199
-    /**
200
-     * @param int $available_spaces
201
-     * @param int $total_ticket_count
202
-     */
203
-    private function availabilityError($available_spaces = 1, $total_ticket_count = 1)
204
-    {
205
-        // add error messaging - we're using the _n function that will generate
206
-        // the appropriate singular or plural message based on the number of $available_spaces
207
-        if ($total_ticket_count) {
208
-            $msg = sprintf(
209
-                esc_html(
210
-                    _n(
211
-                        'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
212
-                        'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
213
-                        $available_spaces,
214
-                        'event_espresso'
215
-                    )
216
-                ),
217
-                $available_spaces,
218
-                '<br />'
219
-            );
220
-        } else {
221
-            $msg = sprintf(
222
-                esc_html(
223
-                    _n(
224
-                        'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
225
-                        'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
226
-                        $available_spaces,
227
-                        'event_espresso'
228
-                    )
229
-                ),
230
-                $available_spaces,
231
-                '<br />'
232
-            );
233
-        }
234
-        EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
235
-    }
25
+	/**
26
+	 * array of datetimes and the spaces available for them
27
+	 *
28
+	 * @var array[][]
29
+	 */
30
+	private $available_spaces = array();
31
+
32
+	/**
33
+	 * @var EEM_Datetime $datetime_model
34
+	 */
35
+	private $datetime_model;
36
+
37
+
38
+	/**
39
+	 * TicketDatetimeAvailabilityTracker constructor.
40
+	 *
41
+	 * @param EEM_Datetime $datetime_model
42
+	 */
43
+	public function __construct(EEM_Datetime $datetime_model)
44
+	{
45
+		$this->datetime_model = $datetime_model;
46
+	}
47
+
48
+
49
+	/**
50
+	 * ticketDatetimeAvailability
51
+	 * creates an array of tickets plus all of the datetimes available to each ticket
52
+	 * and tracks the spaces remaining for each of those datetimes
53
+	 *
54
+	 * @param EE_Ticket $ticket - selected ticket
55
+	 * @param bool      $get_original_ticket_spaces
56
+	 * @return int
57
+	 * @throws EE_Error
58
+	 * @throws InvalidArgumentException
59
+	 * @throws InvalidDataTypeException
60
+	 * @throws InvalidInterfaceException
61
+	 */
62
+	public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
63
+	{
64
+		// if the $_available_spaces array has not been set up yet...
65
+		if (! isset($this->available_spaces['tickets'][$ticket->ID()])) {
66
+			$this->setInitialTicketDatetimeAvailability($ticket);
67
+		}
68
+		$available_spaces = $ticket->qty() - $ticket->sold();
69
+		if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
70
+			// loop thru tickets, which will ALSO include individual ticket records AND a total
71
+			foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
72
+				// if we want the original datetime availability BEFORE we started subtracting tickets ?
73
+				if ($get_original_ticket_spaces) {
74
+					// then grab the available spaces from the "tickets" array
75
+					// and compare with the above to get the lowest number
76
+					$available_spaces = min(
77
+						$available_spaces,
78
+						$this->available_spaces['tickets'][$ticket->ID()][$DTD_ID]
79
+					);
80
+				} else {
81
+					// we want the updated ticket availability as stored in the "datetimes" array
82
+					$available_spaces = min($available_spaces, $this->available_spaces['datetimes'][$DTD_ID]);
83
+				}
84
+			}
85
+		}
86
+		return $available_spaces;
87
+	}
88
+
89
+
90
+	/**
91
+	 * @param EE_Ticket $ticket
92
+	 * @return void
93
+	 * @throws InvalidArgumentException
94
+	 * @throws InvalidInterfaceException
95
+	 * @throws InvalidDataTypeException
96
+	 * @throws EE_Error
97
+	 */
98
+	private function setInitialTicketDatetimeAvailability(EE_Ticket $ticket)
99
+	{
100
+		// first, get all of the datetimes that are available to this ticket
101
+		$datetimes = $ticket->get_many_related(
102
+			'Datetime',
103
+			array(
104
+				array(
105
+					'DTT_EVT_end' => array(
106
+						'>=',
107
+						$this->datetime_model->current_time_for_query('DTT_EVT_end'),
108
+					),
109
+				),
110
+				'order_by' => array('DTT_EVT_start' => 'ASC'),
111
+			)
112
+		);
113
+		if (! empty($datetimes)) {
114
+			// now loop thru all of the datetimes
115
+			foreach ($datetimes as $datetime) {
116
+				if ($datetime instanceof EE_Datetime) {
117
+					// the number of spaces available for the datetime without considering individual ticket quantities
118
+					$spaces_remaining = $datetime->spaces_remaining();
119
+					// save the total available spaces ( the lesser of the ticket qty minus the number of tickets sold
120
+					// or the datetime spaces remaining) to this ticket using the datetime ID as the key
121
+					$this->available_spaces['tickets'][$ticket->ID()][$datetime->ID()] = min(
122
+						$ticket->qty() - $ticket->sold(),
123
+						$spaces_remaining
124
+					);
125
+					// if the remaining spaces for this datetime is already set,
126
+					// then compare that against the datetime spaces remaining, and take the lowest number,
127
+					// else just take the datetime spaces remaining, and assign to the datetimes array
128
+					$this->available_spaces['datetimes'][$datetime->ID()] = isset(
129
+						$this->available_spaces['datetimes'][$datetime->ID()]
130
+					)
131
+						? min($this->available_spaces['datetimes'][$datetime->ID()], $spaces_remaining)
132
+						: $spaces_remaining;
133
+				}
134
+			}
135
+		}
136
+	}
137
+
138
+
139
+	/**
140
+	 * @param    EE_Ticket $ticket
141
+	 * @param    int       $qty
142
+	 * @return    void
143
+	 * @throws EE_Error
144
+	 */
145
+	public function recalculateTicketDatetimeAvailability(EE_Ticket $ticket, $qty = 0)
146
+	{
147
+		if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
148
+			// loop thru tickets, which will ALSO include individual ticket records AND a total
149
+			foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
150
+				// subtract the qty of selected tickets from each datetime's available spaces this ticket has access to,
151
+				$this->available_spaces['datetimes'][$DTD_ID] -= $qty;
152
+			}
153
+		}
154
+	}
155
+
156
+
157
+	/**
158
+	 * @param EE_Ticket $ticket
159
+	 * @param           $qty
160
+	 * @param int       $total_ticket_count
161
+	 * @throws EE_Error
162
+	 * @throws InvalidArgumentException
163
+	 * @throws InvalidDataTypeException
164
+	 * @throws InvalidInterfaceException
165
+	 */
166
+	public function processAvailabilityError(EE_Ticket $ticket, $qty, $total_ticket_count = 1)
167
+	{
168
+		// tickets can not be purchased but let's find the exact number left
169
+		// for the last ticket selected PRIOR to subtracting tickets
170
+		$available_spaces = $this->ticketDatetimeAvailability($ticket, true);
171
+		// greedy greedy greedy eh?
172
+		if ($available_spaces > 0) {
173
+			if (apply_filters(
174
+				'FHEE__EE_Ticket_Selector___add_ticket_to_cart__allow_display_availability_error',
175
+				true,
176
+				$ticket,
177
+				$qty,
178
+				$available_spaces
179
+			)) {
180
+				$this->availabilityError(
181
+					$available_spaces,
182
+					$total_ticket_count
183
+				);
184
+			}
185
+		} else {
186
+			EE_Error::add_error(
187
+				esc_html__(
188
+					'We\'re sorry, but there are no available spaces left for this event at this particular date and time.',
189
+					'event_espresso'
190
+				),
191
+				__FILE__,
192
+				__FUNCTION__,
193
+				__LINE__
194
+			);
195
+		}
196
+	}
197
+
198
+
199
+	/**
200
+	 * @param int $available_spaces
201
+	 * @param int $total_ticket_count
202
+	 */
203
+	private function availabilityError($available_spaces = 1, $total_ticket_count = 1)
204
+	{
205
+		// add error messaging - we're using the _n function that will generate
206
+		// the appropriate singular or plural message based on the number of $available_spaces
207
+		if ($total_ticket_count) {
208
+			$msg = sprintf(
209
+				esc_html(
210
+					_n(
211
+						'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
212
+						'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
213
+						$available_spaces,
214
+						'event_espresso'
215
+					)
216
+				),
217
+				$available_spaces,
218
+				'<br />'
219
+			);
220
+		} else {
221
+			$msg = sprintf(
222
+				esc_html(
223
+					_n(
224
+						'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
225
+						'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
226
+						$available_spaces,
227
+						'event_espresso'
228
+					)
229
+				),
230
+				$available_spaces,
231
+				'<br />'
232
+			);
233
+		}
234
+		EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
235
+	}
236 236
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
63 63
     {
64 64
         // if the $_available_spaces array has not been set up yet...
65
-        if (! isset($this->available_spaces['tickets'][$ticket->ID()])) {
65
+        if ( ! isset($this->available_spaces['tickets'][$ticket->ID()])) {
66 66
             $this->setInitialTicketDatetimeAvailability($ticket);
67 67
         }
68 68
         $available_spaces = $ticket->qty() - $ticket->sold();
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
                 'order_by' => array('DTT_EVT_start' => 'ASC'),
111 111
             )
112 112
         );
113
-        if (! empty($datetimes)) {
113
+        if ( ! empty($datetimes)) {
114 114
             // now loop thru all of the datetimes
115 115
             foreach ($datetimes as $datetime) {
116 116
                 if ($datetime instanceof EE_Datetime) {
Please login to merge, or discard this patch.
modules/ticket_selector/TicketDetails.php 2 patches
Indentation   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -15,186 +15,186 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    /**
19
-     * @var \EE_Ticket $ticket
20
-     */
21
-    protected $ticket;
22
-
23
-    /**
24
-     * @var \EE_Ticket_Selector_Config $template_settings
25
-     */
26
-    protected $template_settings;
27
-
28
-    /**
29
-     * @var string $date_format
30
-     */
31
-    protected $date_format;
32
-
33
-    /**
34
-     * @var string $time_format
35
-     */
36
-    protected $time_format;
37
-
38
-    /**
39
-     * @var boolean $event_is_expired
40
-     */
41
-    protected $event_is_expired;
42
-
43
-
44
-    /**
45
-     * TicketDetails constructor.
46
-     *
47
-     * @param \EE_Ticket                 $ticket
48
-     * @param \EE_Ticket_Selector_Config $template_settings
49
-     * @param array                      $template_args
50
-     */
51
-    public function __construct(
52
-        \EE_Ticket $ticket,
53
-        \EE_Ticket_Selector_Config $template_settings,
54
-        array $template_args
55
-    ) {
56
-        $this->ticket = $ticket;
57
-        $this->template_settings = $template_settings;
58
-        $this->date_format = $template_args['date_format'];
59
-        $this->time_format = $template_args['time_format'];
60
-        $this->event_is_expired = $template_args['event_is_expired'];
61
-    }
62
-
63
-
64
-    /**
65
-     * @return \EE_Ticket
66
-     */
67
-    public function getTicket()
68
-    {
69
-        return $this->ticket;
70
-    }
71
-
72
-
73
-    /**
74
-     * @return bool
75
-     */
76
-    public function showTicketDetails()
77
-    {
78
-        return $this->template_settings->show_ticket_details;
79
-    }
80
-
81
-
82
-    /**
83
-     * @return \EE_Ticket_Selector_Config
84
-     */
85
-    public function getTemplateSettings()
86
-    {
87
-        return $this->template_settings;
88
-    }
89
-
90
-
91
-    /**
92
-     * @return string
93
-     */
94
-    public function getDateFormat()
95
-    {
96
-        return $this->date_format;
97
-    }
98
-
99
-
100
-    /**
101
-     * @return string
102
-     */
103
-    public function getTimeFormat()
104
-    {
105
-        return $this->time_format;
106
-    }
107
-
108
-
109
-    /**
110
-     * @return string
111
-     */
112
-    public function getShowHideLinks()
113
-    {
114
-        if (! $this->showTicketDetails()) {
115
-            return '';
116
-        }
117
-        return \EEH_HTML::link(
118
-            '',
119
-            sprintf(__('show%1$sdetails%1$s+', 'event_espresso'), '&nbsp;'),
120
-            esc_attr(
121
-                apply_filters(
122
-                    'FHEE__ticket_selector_chart_template__show_ticket_details_link_title',
123
-                    __('click to show additional ticket details', 'event_espresso')
124
-                )
125
-            ),
126
-            "display-{$this->cssId()}",
127
-            'display-tckt-slctr-tkt-details display-the-hidden lt-grey-text smaller-text hide-if-no-js',
128
-            '',
129
-            'rel="' . $this->cssId() . '"'
130
-        ) . \EEH_HTML::link(
131
-            '',
132
-            sprintf(__('hide%1$sdetails%1$s-', 'event_espresso'), '&nbsp;'),
133
-            esc_attr(
134
-                apply_filters(
135
-                    'FHEE__ticket_selector_chart_template__hide_ticket_details_link_title',
136
-                    __('click to hide additional ticket details', 'event_espresso')
137
-                )
138
-            ),
139
-            "hide-{$this->cssId()}",
140
-            'hide-tckt-slctr-tkt-details hide-the-displayed lt-grey-text smaller-text hide-if-no-js',
141
-            'display:none;',
142
-            'rel="' . $this->cssId() . '"'
143
-        );
144
-    }
145
-
146
-
147
-    /**
148
-     * @return string
149
-     */
150
-    public function cssId()
151
-    {
152
-        return apply_filters(
153
-            'FHEE__ticket_selector_chart_template__ticket_details_css_id',
154
-            "tckt-slctr-tkt-details-{$this->ticket->get_event_ID()}-{$this->ticket->ID()}"
155
-        );
156
-    }
157
-
158
-
159
-    /**
160
-     * @param float $ticket_price
161
-     * @param int   $remaining
162
-     * @param int   $cols
163
-     * @return string
164
-     */
165
-    public function display(
166
-        $ticket_price = 0.00,
167
-        $remaining,
168
-        $cols = 2
169
-    ) {
170
-        $template_args = array();
171
-        $template_args['ticket'] = $this->ticket;
172
-        $template_args['ticket_price'] = $ticket_price;
173
-        $template_args['remaining'] = $remaining;
174
-        $template_args['cols'] = $cols;
175
-        $template_args['show_ticket_details'] = $this->template_settings->show_ticket_details;
176
-        $template_args['show_ticket_sale_columns'] = $this->template_settings->show_ticket_sale_columns;
177
-        $template_args['ticket_details_row_class'] = espresso_get_object_css_class($this->ticket, '', 'details');
178
-        $template_args['ticket_details_css_id'] = $this->cssId();
179
-        $template_args['display_ticket_price'] = $ticket_price !== 0 && apply_filters(
180
-            'FHEE__ticket_selector_chart_template__display_ticket_price_details',
181
-            true
182
-        );
183
-        $template_args['price_breakdown_heading'] = apply_filters(
184
-            'FHEE__ticket_selector_chart_template__ticket_details_price_breakdown_heading',
185
-            esc_html__('Price', 'event_espresso')
186
-        );
187
-        $template_args['date_format'] = $this->date_format;
188
-        $template_args['time_format'] = $this->time_format;
189
-        $template_args['event_is_expired'] = $this->event_is_expired;
190
-
191
-        return \EEH_Template::locate_template(
192
-            apply_filters(
193
-                'FHEE__EventEspresso_modules_ticket_selector_TicketDetails__display__template_path',
194
-                TICKET_SELECTOR_TEMPLATES_PATH . 'ticket_details.template.php',
195
-                $this->ticket
196
-            ),
197
-            $template_args
198
-        );
199
-    }
18
+	/**
19
+	 * @var \EE_Ticket $ticket
20
+	 */
21
+	protected $ticket;
22
+
23
+	/**
24
+	 * @var \EE_Ticket_Selector_Config $template_settings
25
+	 */
26
+	protected $template_settings;
27
+
28
+	/**
29
+	 * @var string $date_format
30
+	 */
31
+	protected $date_format;
32
+
33
+	/**
34
+	 * @var string $time_format
35
+	 */
36
+	protected $time_format;
37
+
38
+	/**
39
+	 * @var boolean $event_is_expired
40
+	 */
41
+	protected $event_is_expired;
42
+
43
+
44
+	/**
45
+	 * TicketDetails constructor.
46
+	 *
47
+	 * @param \EE_Ticket                 $ticket
48
+	 * @param \EE_Ticket_Selector_Config $template_settings
49
+	 * @param array                      $template_args
50
+	 */
51
+	public function __construct(
52
+		\EE_Ticket $ticket,
53
+		\EE_Ticket_Selector_Config $template_settings,
54
+		array $template_args
55
+	) {
56
+		$this->ticket = $ticket;
57
+		$this->template_settings = $template_settings;
58
+		$this->date_format = $template_args['date_format'];
59
+		$this->time_format = $template_args['time_format'];
60
+		$this->event_is_expired = $template_args['event_is_expired'];
61
+	}
62
+
63
+
64
+	/**
65
+	 * @return \EE_Ticket
66
+	 */
67
+	public function getTicket()
68
+	{
69
+		return $this->ticket;
70
+	}
71
+
72
+
73
+	/**
74
+	 * @return bool
75
+	 */
76
+	public function showTicketDetails()
77
+	{
78
+		return $this->template_settings->show_ticket_details;
79
+	}
80
+
81
+
82
+	/**
83
+	 * @return \EE_Ticket_Selector_Config
84
+	 */
85
+	public function getTemplateSettings()
86
+	{
87
+		return $this->template_settings;
88
+	}
89
+
90
+
91
+	/**
92
+	 * @return string
93
+	 */
94
+	public function getDateFormat()
95
+	{
96
+		return $this->date_format;
97
+	}
98
+
99
+
100
+	/**
101
+	 * @return string
102
+	 */
103
+	public function getTimeFormat()
104
+	{
105
+		return $this->time_format;
106
+	}
107
+
108
+
109
+	/**
110
+	 * @return string
111
+	 */
112
+	public function getShowHideLinks()
113
+	{
114
+		if (! $this->showTicketDetails()) {
115
+			return '';
116
+		}
117
+		return \EEH_HTML::link(
118
+			'',
119
+			sprintf(__('show%1$sdetails%1$s+', 'event_espresso'), '&nbsp;'),
120
+			esc_attr(
121
+				apply_filters(
122
+					'FHEE__ticket_selector_chart_template__show_ticket_details_link_title',
123
+					__('click to show additional ticket details', 'event_espresso')
124
+				)
125
+			),
126
+			"display-{$this->cssId()}",
127
+			'display-tckt-slctr-tkt-details display-the-hidden lt-grey-text smaller-text hide-if-no-js',
128
+			'',
129
+			'rel="' . $this->cssId() . '"'
130
+		) . \EEH_HTML::link(
131
+			'',
132
+			sprintf(__('hide%1$sdetails%1$s-', 'event_espresso'), '&nbsp;'),
133
+			esc_attr(
134
+				apply_filters(
135
+					'FHEE__ticket_selector_chart_template__hide_ticket_details_link_title',
136
+					__('click to hide additional ticket details', 'event_espresso')
137
+				)
138
+			),
139
+			"hide-{$this->cssId()}",
140
+			'hide-tckt-slctr-tkt-details hide-the-displayed lt-grey-text smaller-text hide-if-no-js',
141
+			'display:none;',
142
+			'rel="' . $this->cssId() . '"'
143
+		);
144
+	}
145
+
146
+
147
+	/**
148
+	 * @return string
149
+	 */
150
+	public function cssId()
151
+	{
152
+		return apply_filters(
153
+			'FHEE__ticket_selector_chart_template__ticket_details_css_id',
154
+			"tckt-slctr-tkt-details-{$this->ticket->get_event_ID()}-{$this->ticket->ID()}"
155
+		);
156
+	}
157
+
158
+
159
+	/**
160
+	 * @param float $ticket_price
161
+	 * @param int   $remaining
162
+	 * @param int   $cols
163
+	 * @return string
164
+	 */
165
+	public function display(
166
+		$ticket_price = 0.00,
167
+		$remaining,
168
+		$cols = 2
169
+	) {
170
+		$template_args = array();
171
+		$template_args['ticket'] = $this->ticket;
172
+		$template_args['ticket_price'] = $ticket_price;
173
+		$template_args['remaining'] = $remaining;
174
+		$template_args['cols'] = $cols;
175
+		$template_args['show_ticket_details'] = $this->template_settings->show_ticket_details;
176
+		$template_args['show_ticket_sale_columns'] = $this->template_settings->show_ticket_sale_columns;
177
+		$template_args['ticket_details_row_class'] = espresso_get_object_css_class($this->ticket, '', 'details');
178
+		$template_args['ticket_details_css_id'] = $this->cssId();
179
+		$template_args['display_ticket_price'] = $ticket_price !== 0 && apply_filters(
180
+			'FHEE__ticket_selector_chart_template__display_ticket_price_details',
181
+			true
182
+		);
183
+		$template_args['price_breakdown_heading'] = apply_filters(
184
+			'FHEE__ticket_selector_chart_template__ticket_details_price_breakdown_heading',
185
+			esc_html__('Price', 'event_espresso')
186
+		);
187
+		$template_args['date_format'] = $this->date_format;
188
+		$template_args['time_format'] = $this->time_format;
189
+		$template_args['event_is_expired'] = $this->event_is_expired;
190
+
191
+		return \EEH_Template::locate_template(
192
+			apply_filters(
193
+				'FHEE__EventEspresso_modules_ticket_selector_TicketDetails__display__template_path',
194
+				TICKET_SELECTOR_TEMPLATES_PATH . 'ticket_details.template.php',
195
+				$this->ticket
196
+			),
197
+			$template_args
198
+		);
199
+	}
200 200
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
      */
112 112
     public function getShowHideLinks()
113 113
     {
114
-        if (! $this->showTicketDetails()) {
114
+        if ( ! $this->showTicketDetails()) {
115 115
             return '';
116 116
         }
117 117
         return \EEH_HTML::link(
@@ -126,8 +126,8 @@  discard block
 block discarded – undo
126 126
             "display-{$this->cssId()}",
127 127
             'display-tckt-slctr-tkt-details display-the-hidden lt-grey-text smaller-text hide-if-no-js',
128 128
             '',
129
-            'rel="' . $this->cssId() . '"'
130
-        ) . \EEH_HTML::link(
129
+            'rel="'.$this->cssId().'"'
130
+        ).\EEH_HTML::link(
131 131
             '',
132 132
             sprintf(__('hide%1$sdetails%1$s-', 'event_espresso'), '&nbsp;'),
133 133
             esc_attr(
@@ -139,7 +139,7 @@  discard block
 block discarded – undo
139 139
             "hide-{$this->cssId()}",
140 140
             'hide-tckt-slctr-tkt-details hide-the-displayed lt-grey-text smaller-text hide-if-no-js',
141 141
             'display:none;',
142
-            'rel="' . $this->cssId() . '"'
142
+            'rel="'.$this->cssId().'"'
143 143
         );
144 144
     }
145 145
 
@@ -191,7 +191,7 @@  discard block
 block discarded – undo
191 191
         return \EEH_Template::locate_template(
192 192
             apply_filters(
193 193
                 'FHEE__EventEspresso_modules_ticket_selector_TicketDetails__display__template_path',
194
-                TICKET_SELECTOR_TEMPLATES_PATH . 'ticket_details.template.php',
194
+                TICKET_SELECTOR_TEMPLATES_PATH.'ticket_details.template.php',
195 195
                 $this->ticket
196 196
             ),
197 197
             $template_args
Please login to merge, or discard this patch.
modules/ticket_selector/TicketSelectorSimple.php 2 patches
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -19,57 +19,57 @@
 block discarded – undo
19 19
 class TicketSelectorSimple extends TicketSelector
20 20
 {
21 21
 
22
-    /**
23
-     * @var EE_Ticket $ticket
24
-     */
25
-    protected $ticket;
22
+	/**
23
+	 * @var EE_Ticket $ticket
24
+	 */
25
+	protected $ticket;
26 26
 
27 27
 
28
-    /**
29
-     * TicketSelectorSimple constructor.
30
-     *
31
-     * @param EE_Event  $event
32
-     * @param EE_Ticket $ticket
33
-     * @param int       $max_attendees
34
-     * @param array     $template_args
35
-     * @throws EE_Error
36
-     */
37
-    public function __construct(EE_Event $event, EE_Ticket $ticket, $max_attendees, array $template_args)
38
-    {
39
-        $this->ticket = $ticket;
40
-        parent::__construct(
41
-            $event,
42
-            array($this->ticket),
43
-            $max_attendees,
44
-            $template_args
45
-        );
46
-    }
28
+	/**
29
+	 * TicketSelectorSimple constructor.
30
+	 *
31
+	 * @param EE_Event  $event
32
+	 * @param EE_Ticket $ticket
33
+	 * @param int       $max_attendees
34
+	 * @param array     $template_args
35
+	 * @throws EE_Error
36
+	 */
37
+	public function __construct(EE_Event $event, EE_Ticket $ticket, $max_attendees, array $template_args)
38
+	{
39
+		$this->ticket = $ticket;
40
+		parent::__construct(
41
+			$event,
42
+			array($this->ticket),
43
+			$max_attendees,
44
+			$template_args
45
+		);
46
+	}
47 47
 
48 48
 
49
-    /**
50
-     * sets any and all template args that are required for this Ticket Selector
51
-     *
52
-     * @return void
53
-     * @throws \EventEspresso\core\exceptions\UnexpectedEntityException
54
-     * @throws EE_Error
55
-     */
56
-    protected function addTemplateArgs()
57
-    {
58
-        unset($this->template_args['tickets']);
59
-        $this->template_args['ticket'] = $this->ticket;
60
-        $ticket_selector_row = new TicketSelectorRowSimple(
61
-            $this->ticket,
62
-            $this->max_attendees,
63
-            $this->template_args['date_format'],
64
-            $this->template_args['event_status']
65
-        );
66
-        $this->template_args['TKT_ID'] = $this->ticket->ID();
67
-        $ticket_selector_row->setupTicketStatusDisplay();
68
-        $this->template_args['ticket_status_display'] = $ticket_selector_row->getTicketStatusDisplay();
69
-        if (empty($this->template_args['ticket_status_display'])) {
70
-            add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
71
-        }
72
-        $this->template_args['ticket_description'] = $ticket_selector_row->getTicketDescription();
73
-        $this->template_args['template_path'] = TICKET_SELECTOR_TEMPLATES_PATH . 'simple_ticket_selector.template.php';
74
-    }
49
+	/**
50
+	 * sets any and all template args that are required for this Ticket Selector
51
+	 *
52
+	 * @return void
53
+	 * @throws \EventEspresso\core\exceptions\UnexpectedEntityException
54
+	 * @throws EE_Error
55
+	 */
56
+	protected function addTemplateArgs()
57
+	{
58
+		unset($this->template_args['tickets']);
59
+		$this->template_args['ticket'] = $this->ticket;
60
+		$ticket_selector_row = new TicketSelectorRowSimple(
61
+			$this->ticket,
62
+			$this->max_attendees,
63
+			$this->template_args['date_format'],
64
+			$this->template_args['event_status']
65
+		);
66
+		$this->template_args['TKT_ID'] = $this->ticket->ID();
67
+		$ticket_selector_row->setupTicketStatusDisplay();
68
+		$this->template_args['ticket_status_display'] = $ticket_selector_row->getTicketStatusDisplay();
69
+		if (empty($this->template_args['ticket_status_display'])) {
70
+			add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
71
+		}
72
+		$this->template_args['ticket_description'] = $ticket_selector_row->getTicketDescription();
73
+		$this->template_args['template_path'] = TICKET_SELECTOR_TEMPLATES_PATH . 'simple_ticket_selector.template.php';
74
+	}
75 75
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -70,6 +70,6 @@
 block discarded – undo
70 70
             add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
71 71
         }
72 72
         $this->template_args['ticket_description'] = $ticket_selector_row->getTicketDescription();
73
-        $this->template_args['template_path'] = TICKET_SELECTOR_TEMPLATES_PATH . 'simple_ticket_selector.template.php';
73
+        $this->template_args['template_path'] = TICKET_SELECTOR_TEMPLATES_PATH.'simple_ticket_selector.template.php';
74 74
     }
75 75
 }
Please login to merge, or discard this patch.
modules/ticket_selector/DatetimeSelector.php 2 patches
Indentation   +167 added lines, -167 removed lines patch added patch discarded remove patch
@@ -12,171 +12,171 @@
 block discarded – undo
12 12
 class DatetimeSelector
13 13
 {
14 14
 
15
-    /**
16
-     * @var \EE_Event $event
17
-     */
18
-    protected $event;
19
-
20
-    /**
21
-     * @var \EE_Ticket[] $tickets
22
-     */
23
-    protected $tickets;
24
-
25
-    /**
26
-     * @var \EE_Datetime[] $datetimes
27
-     */
28
-    protected $datetimes;
29
-
30
-    /**
31
-     * @var \EE_Datetime[] $unique_dates
32
-     */
33
-    protected $unique_dates;
34
-
35
-    /**
36
-     * @var \EE_Ticket_Selector_Config $template_settings
37
-     */
38
-    protected $template_settings;
39
-
40
-    /**
41
-     * @var boolean $active
42
-     */
43
-    protected $active = false;
44
-
45
-
46
-    /**
47
-     * DatetimeSelector constructor.
48
-     *
49
-     * @param \EE_Event                  $event
50
-     * @param \EE_Ticket[]               $tickets
51
-     * @param \EE_Ticket_Selector_Config $template_settings
52
-     * @param string                     $date_format
53
-     * @param string                     $time_format
54
-     * @throws \EE_Error
55
-     */
56
-    public function __construct(
57
-        \EE_Event $event,
58
-        array $tickets,
59
-        \EE_Ticket_Selector_Config $template_settings,
60
-        $date_format = 'Y-m-d',
61
-        $time_format = 'g:i a'
62
-    ) {
63
-        $this->event = $event;
64
-        $this->tickets = $tickets;
65
-        $this->template_settings = $template_settings;
66
-        $this->datetimes = $this->getAllDatetimesForAllTicket($tickets);
67
-        $this->unique_dates = $this->getUniqueDatetimeOptions($date_format, $time_format);
68
-        $this->active = $this->template_settings->showDatetimeSelector($this->unique_dates);
69
-    }
70
-
71
-
72
-    /**
73
-     * @param \EE_Ticket[] $tickets
74
-     * @return array
75
-     * @throws \EE_Error
76
-     */
77
-    protected function getAllDatetimesForAllTicket($tickets = array())
78
-    {
79
-        $datetimes = array();
80
-        foreach ($tickets as $ticket) {
81
-            $datetimes = $this->getTicketDatetimes($ticket, $datetimes);
82
-        }
83
-        return $datetimes;
84
-    }
85
-
86
-
87
-    /**
88
-     * @param \EE_Ticket      $ticket
89
-     * @param  \EE_Datetime[] $datetimes
90
-     * @return \EE_Datetime[]
91
-     * @throws \EE_Error
92
-     */
93
-    protected function getTicketDatetimes(\EE_Ticket $ticket, $datetimes = array())
94
-    {
95
-        $ticket_datetimes = $ticket->datetimes(
96
-            array(
97
-                'order_by'                 => array(
98
-                    'DTT_order'     => 'ASC',
99
-                    'DTT_EVT_start' => 'ASC',
100
-                ),
101
-                'default_where_conditions' => 'none',
102
-            )
103
-        );
104
-        foreach ($ticket_datetimes as $ticket_datetime) {
105
-            if (! $ticket_datetime instanceof \EE_Datetime) {
106
-                continue;
107
-            }
108
-            $datetimes[$ticket_datetime->ID()] = $ticket_datetime;
109
-        }
110
-        return $datetimes;
111
-    }
112
-
113
-
114
-    /**
115
-     * @param \EE_Ticket $ticket
116
-     * @return string
117
-     * @throws \EE_Error
118
-     */
119
-    public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120
-    {
121
-        if (! $this->active) {
122
-            return '';
123
-        }
124
-        $ticket_datetimes = $this->getTicketDatetimes($ticket);
125
-        $classes = '';
126
-        foreach ($this->datetimes as $datetime) {
127
-            if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128
-                continue;
129
-            }
130
-            $classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131
-        }
132
-        return $classes;
133
-    }
134
-
135
-
136
-    /**
137
-     * @param string $date_format
138
-     * @param string $time_format
139
-     * @return array
140
-     * @throws \EE_Error
141
-     */
142
-    public function getUniqueDatetimeOptions($date_format = 'Y-m-d', $time_format = 'g:i a')
143
-    {
144
-        $datetime_options = array();
145
-        foreach ($this->datetimes as $datetime) {
146
-            if (! $datetime instanceof \EE_Datetime) {
147
-                continue;
148
-            }
149
-            $datetime_options[$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_')] =
150
-                $datetime->date_and_time_range($date_format, $time_format, ' - ');
151
-        }
152
-        return $datetime_options;
153
-    }
154
-
155
-
156
-    /**
157
-     * @return string
158
-     * @throws \EE_Error
159
-     */
160
-    public function getDatetimeSelector()
161
-    {
162
-        if (! $this->active) {
163
-            return '';
164
-        }
165
-        $dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166
-            $this->unique_dates,
167
-            array(
168
-                'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
-                'html_name'             => 'datetime_selector_' . $this->event->ID(),
170
-                'html_class'            => 'datetime-selector',
171
-                'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172
-                                           . esc_html__('Filter by Date', 'event_espresso'),
173
-                'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
174
-            )
175
-        );
176
-        return \EEH_HTML::div(
177
-            $dropdown_selector->get_html_for_input(),
178
-            '',
179
-            'datetime_selector-dv'
180
-        );
181
-    }
15
+	/**
16
+	 * @var \EE_Event $event
17
+	 */
18
+	protected $event;
19
+
20
+	/**
21
+	 * @var \EE_Ticket[] $tickets
22
+	 */
23
+	protected $tickets;
24
+
25
+	/**
26
+	 * @var \EE_Datetime[] $datetimes
27
+	 */
28
+	protected $datetimes;
29
+
30
+	/**
31
+	 * @var \EE_Datetime[] $unique_dates
32
+	 */
33
+	protected $unique_dates;
34
+
35
+	/**
36
+	 * @var \EE_Ticket_Selector_Config $template_settings
37
+	 */
38
+	protected $template_settings;
39
+
40
+	/**
41
+	 * @var boolean $active
42
+	 */
43
+	protected $active = false;
44
+
45
+
46
+	/**
47
+	 * DatetimeSelector constructor.
48
+	 *
49
+	 * @param \EE_Event                  $event
50
+	 * @param \EE_Ticket[]               $tickets
51
+	 * @param \EE_Ticket_Selector_Config $template_settings
52
+	 * @param string                     $date_format
53
+	 * @param string                     $time_format
54
+	 * @throws \EE_Error
55
+	 */
56
+	public function __construct(
57
+		\EE_Event $event,
58
+		array $tickets,
59
+		\EE_Ticket_Selector_Config $template_settings,
60
+		$date_format = 'Y-m-d',
61
+		$time_format = 'g:i a'
62
+	) {
63
+		$this->event = $event;
64
+		$this->tickets = $tickets;
65
+		$this->template_settings = $template_settings;
66
+		$this->datetimes = $this->getAllDatetimesForAllTicket($tickets);
67
+		$this->unique_dates = $this->getUniqueDatetimeOptions($date_format, $time_format);
68
+		$this->active = $this->template_settings->showDatetimeSelector($this->unique_dates);
69
+	}
70
+
71
+
72
+	/**
73
+	 * @param \EE_Ticket[] $tickets
74
+	 * @return array
75
+	 * @throws \EE_Error
76
+	 */
77
+	protected function getAllDatetimesForAllTicket($tickets = array())
78
+	{
79
+		$datetimes = array();
80
+		foreach ($tickets as $ticket) {
81
+			$datetimes = $this->getTicketDatetimes($ticket, $datetimes);
82
+		}
83
+		return $datetimes;
84
+	}
85
+
86
+
87
+	/**
88
+	 * @param \EE_Ticket      $ticket
89
+	 * @param  \EE_Datetime[] $datetimes
90
+	 * @return \EE_Datetime[]
91
+	 * @throws \EE_Error
92
+	 */
93
+	protected function getTicketDatetimes(\EE_Ticket $ticket, $datetimes = array())
94
+	{
95
+		$ticket_datetimes = $ticket->datetimes(
96
+			array(
97
+				'order_by'                 => array(
98
+					'DTT_order'     => 'ASC',
99
+					'DTT_EVT_start' => 'ASC',
100
+				),
101
+				'default_where_conditions' => 'none',
102
+			)
103
+		);
104
+		foreach ($ticket_datetimes as $ticket_datetime) {
105
+			if (! $ticket_datetime instanceof \EE_Datetime) {
106
+				continue;
107
+			}
108
+			$datetimes[$ticket_datetime->ID()] = $ticket_datetime;
109
+		}
110
+		return $datetimes;
111
+	}
112
+
113
+
114
+	/**
115
+	 * @param \EE_Ticket $ticket
116
+	 * @return string
117
+	 * @throws \EE_Error
118
+	 */
119
+	public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120
+	{
121
+		if (! $this->active) {
122
+			return '';
123
+		}
124
+		$ticket_datetimes = $this->getTicketDatetimes($ticket);
125
+		$classes = '';
126
+		foreach ($this->datetimes as $datetime) {
127
+			if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128
+				continue;
129
+			}
130
+			$classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131
+		}
132
+		return $classes;
133
+	}
134
+
135
+
136
+	/**
137
+	 * @param string $date_format
138
+	 * @param string $time_format
139
+	 * @return array
140
+	 * @throws \EE_Error
141
+	 */
142
+	public function getUniqueDatetimeOptions($date_format = 'Y-m-d', $time_format = 'g:i a')
143
+	{
144
+		$datetime_options = array();
145
+		foreach ($this->datetimes as $datetime) {
146
+			if (! $datetime instanceof \EE_Datetime) {
147
+				continue;
148
+			}
149
+			$datetime_options[$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_')] =
150
+				$datetime->date_and_time_range($date_format, $time_format, ' - ');
151
+		}
152
+		return $datetime_options;
153
+	}
154
+
155
+
156
+	/**
157
+	 * @return string
158
+	 * @throws \EE_Error
159
+	 */
160
+	public function getDatetimeSelector()
161
+	{
162
+		if (! $this->active) {
163
+			return '';
164
+		}
165
+		$dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166
+			$this->unique_dates,
167
+			array(
168
+				'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
+				'html_name'             => 'datetime_selector_' . $this->event->ID(),
170
+				'html_class'            => 'datetime-selector',
171
+				'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172
+										   . esc_html__('Filter by Date', 'event_espresso'),
173
+				'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
174
+			)
175
+		);
176
+		return \EEH_HTML::div(
177
+			$dropdown_selector->get_html_for_input(),
178
+			'',
179
+			'datetime_selector-dv'
180
+		);
181
+	}
182 182
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -102,7 +102,7 @@  discard block
 block discarded – undo
102 102
             )
103 103
         );
104 104
         foreach ($ticket_datetimes as $ticket_datetime) {
105
-            if (! $ticket_datetime instanceof \EE_Datetime) {
105
+            if ( ! $ticket_datetime instanceof \EE_Datetime) {
106 106
                 continue;
107 107
             }
108 108
             $datetimes[$ticket_datetime->ID()] = $ticket_datetime;
@@ -118,16 +118,16 @@  discard block
 block discarded – undo
118 118
      */
119 119
     public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120 120
     {
121
-        if (! $this->active) {
121
+        if ( ! $this->active) {
122 122
             return '';
123 123
         }
124 124
         $ticket_datetimes = $this->getTicketDatetimes($ticket);
125 125
         $classes = '';
126 126
         foreach ($this->datetimes as $datetime) {
127
-            if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
127
+            if ( ! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128 128
                 continue;
129 129
             }
130
-            $classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
130
+            $classes .= ' ee-ticket-datetimes-'.$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131 131
         }
132 132
         return $classes;
133 133
     }
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
     {
144 144
         $datetime_options = array();
145 145
         foreach ($this->datetimes as $datetime) {
146
-            if (! $datetime instanceof \EE_Datetime) {
146
+            if ( ! $datetime instanceof \EE_Datetime) {
147 147
                 continue;
148 148
             }
149 149
             $datetime_options[$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_')] =
@@ -159,18 +159,18 @@  discard block
 block discarded – undo
159 159
      */
160 160
     public function getDatetimeSelector()
161 161
     {
162
-        if (! $this->active) {
162
+        if ( ! $this->active) {
163 163
             return '';
164 164
         }
165 165
         $dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166 166
             $this->unique_dates,
167 167
             array(
168
-                'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
-                'html_name'             => 'datetime_selector_' . $this->event->ID(),
168
+                'html_id'               => 'datetime-selector-'.$this->event->ID(),
169
+                'html_name'             => 'datetime_selector_'.$this->event->ID(),
170 170
                 'html_class'            => 'datetime-selector',
171 171
                 'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172 172
                                            . esc_html__('Filter by Date', 'event_espresso'),
173
-                'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
173
+                'other_html_attributes' => ' data-tkt_slctr_evt="'.$this->event->ID().'"',
174 174
             )
175 175
         );
176 176
         return \EEH_HTML::div(
Please login to merge, or discard this patch.
modules/ticket_selector/TicketSelector.php 2 patches
Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -12,107 +12,107 @@
 block discarded – undo
12 12
 abstract class TicketSelector
13 13
 {
14 14
 
15
-    /**
16
-     * @var \EE_Event $event
17
-     */
18
-    protected $event;
19
-
20
-    /**
21
-     * @var \EE_Ticket[] $tickets
22
-     */
23
-    protected $tickets;
24
-
25
-    /**
26
-     * @var int max_attendees
27
-     */
28
-    protected $max_attendees;
29
-
30
-    /**
31
-     * @var array $template_args
32
-     */
33
-    protected $template_args;
34
-
35
-
36
-    /**
37
-     * TicketSelectorSimple constructor.
38
-     *
39
-     * @param \EE_Event    $event
40
-     * @param \EE_Ticket[] $tickets
41
-     * @param int          $max_attendees
42
-     * @param array        $template_args
43
-     * @throws \EE_Error
44
-     */
45
-    public function __construct(\EE_Event $event, array $tickets, $max_attendees, array $template_args)
46
-    {
47
-        $this->event = $event;
48
-        $this->tickets = $tickets;
49
-        $this->max_attendees = $max_attendees;
50
-        $this->template_args = $template_args;
51
-        $this->template_args['hidden_inputs'] = $this->getHiddenInputs();
52
-        $this->addTemplateArgs();
53
-    }
54
-
55
-
56
-    /**
57
-     * sets any and all template args that are required for this Ticket Selector
58
-     *
59
-     * @return void
60
-     */
61
-    abstract protected function addTemplateArgs();
62
-
63
-
64
-    /**
65
-     * loadTicketSelectorTemplate
66
-     *
67
-     * @return string
68
-     */
69
-    protected function loadTicketSelectorTemplate()
70
-    {
71
-        try {
72
-            return \EEH_Template::locate_template(
73
-                apply_filters(
74
-                    'FHEE__EE_Ticket_Selector__display_ticket_selector__template_path',
75
-                    $this->template_args['template_path'],
76
-                    $this->event
77
-                ),
78
-                $this->template_args
79
-            );
80
-        } catch (\Exception $e) {
81
-            \EE_Error::add_error($e->getMessage(), __FILE__, __FUNCTION__, __LINE__);
82
-        }
83
-        return '';
84
-    }
85
-
86
-
87
-    /**
88
-     * The __toString method allows a class to decide how it will react when it is converted to a string.
89
-     *
90
-     * @return string
91
-     * @link http://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring
92
-     */
93
-    public function __toString()
94
-    {
95
-        return $this->loadTicketSelectorTemplate();
96
-    }
97
-
98
-
99
-    /**
100
-     * getHiddenInputs
101
-     *
102
-     * @return string
103
-     * @throws \EE_Error
104
-     */
105
-    public function getHiddenInputs()
106
-    {
107
-        // $rows = count($this->tickets);
108
-        $html = '<input type="hidden" name="noheader" value="true"/>';
109
-        $html .= '<input type="hidden" name="tkt-slctr-return-url-' . $this->event->ID() . '"';
110
-        $html .= ' value="' . \EEH_URL::current_url() . $this->template_args['anchor_id'] . '"/>';
111
-        $html .= '<input type="hidden" name="tkt-slctr-rows-' . $this->event->ID();
112
-        $html .= '" value="' . count($this->tickets) . '"/>';
113
-        $html .= '<input type="hidden" name="tkt-slctr-max-atndz-' . $this->event->ID();
114
-        $html .= '" value="' . $this->template_args['max_atndz'] . '"/>';
115
-        $html .= '<input type="hidden" name="tkt-slctr-event-id" value="' . $this->event->ID() . '"/>';
116
-        return $html;
117
-    }
15
+	/**
16
+	 * @var \EE_Event $event
17
+	 */
18
+	protected $event;
19
+
20
+	/**
21
+	 * @var \EE_Ticket[] $tickets
22
+	 */
23
+	protected $tickets;
24
+
25
+	/**
26
+	 * @var int max_attendees
27
+	 */
28
+	protected $max_attendees;
29
+
30
+	/**
31
+	 * @var array $template_args
32
+	 */
33
+	protected $template_args;
34
+
35
+
36
+	/**
37
+	 * TicketSelectorSimple constructor.
38
+	 *
39
+	 * @param \EE_Event    $event
40
+	 * @param \EE_Ticket[] $tickets
41
+	 * @param int          $max_attendees
42
+	 * @param array        $template_args
43
+	 * @throws \EE_Error
44
+	 */
45
+	public function __construct(\EE_Event $event, array $tickets, $max_attendees, array $template_args)
46
+	{
47
+		$this->event = $event;
48
+		$this->tickets = $tickets;
49
+		$this->max_attendees = $max_attendees;
50
+		$this->template_args = $template_args;
51
+		$this->template_args['hidden_inputs'] = $this->getHiddenInputs();
52
+		$this->addTemplateArgs();
53
+	}
54
+
55
+
56
+	/**
57
+	 * sets any and all template args that are required for this Ticket Selector
58
+	 *
59
+	 * @return void
60
+	 */
61
+	abstract protected function addTemplateArgs();
62
+
63
+
64
+	/**
65
+	 * loadTicketSelectorTemplate
66
+	 *
67
+	 * @return string
68
+	 */
69
+	protected function loadTicketSelectorTemplate()
70
+	{
71
+		try {
72
+			return \EEH_Template::locate_template(
73
+				apply_filters(
74
+					'FHEE__EE_Ticket_Selector__display_ticket_selector__template_path',
75
+					$this->template_args['template_path'],
76
+					$this->event
77
+				),
78
+				$this->template_args
79
+			);
80
+		} catch (\Exception $e) {
81
+			\EE_Error::add_error($e->getMessage(), __FILE__, __FUNCTION__, __LINE__);
82
+		}
83
+		return '';
84
+	}
85
+
86
+
87
+	/**
88
+	 * The __toString method allows a class to decide how it will react when it is converted to a string.
89
+	 *
90
+	 * @return string
91
+	 * @link http://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring
92
+	 */
93
+	public function __toString()
94
+	{
95
+		return $this->loadTicketSelectorTemplate();
96
+	}
97
+
98
+
99
+	/**
100
+	 * getHiddenInputs
101
+	 *
102
+	 * @return string
103
+	 * @throws \EE_Error
104
+	 */
105
+	public function getHiddenInputs()
106
+	{
107
+		// $rows = count($this->tickets);
108
+		$html = '<input type="hidden" name="noheader" value="true"/>';
109
+		$html .= '<input type="hidden" name="tkt-slctr-return-url-' . $this->event->ID() . '"';
110
+		$html .= ' value="' . \EEH_URL::current_url() . $this->template_args['anchor_id'] . '"/>';
111
+		$html .= '<input type="hidden" name="tkt-slctr-rows-' . $this->event->ID();
112
+		$html .= '" value="' . count($this->tickets) . '"/>';
113
+		$html .= '<input type="hidden" name="tkt-slctr-max-atndz-' . $this->event->ID();
114
+		$html .= '" value="' . $this->template_args['max_atndz'] . '"/>';
115
+		$html .= '<input type="hidden" name="tkt-slctr-event-id" value="' . $this->event->ID() . '"/>';
116
+		return $html;
117
+	}
118 118
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -106,13 +106,13 @@
 block discarded – undo
106 106
     {
107 107
         // $rows = count($this->tickets);
108 108
         $html = '<input type="hidden" name="noheader" value="true"/>';
109
-        $html .= '<input type="hidden" name="tkt-slctr-return-url-' . $this->event->ID() . '"';
110
-        $html .= ' value="' . \EEH_URL::current_url() . $this->template_args['anchor_id'] . '"/>';
111
-        $html .= '<input type="hidden" name="tkt-slctr-rows-' . $this->event->ID();
112
-        $html .= '" value="' . count($this->tickets) . '"/>';
113
-        $html .= '<input type="hidden" name="tkt-slctr-max-atndz-' . $this->event->ID();
114
-        $html .= '" value="' . $this->template_args['max_atndz'] . '"/>';
115
-        $html .= '<input type="hidden" name="tkt-slctr-event-id" value="' . $this->event->ID() . '"/>';
109
+        $html .= '<input type="hidden" name="tkt-slctr-return-url-'.$this->event->ID().'"';
110
+        $html .= ' value="'.\EEH_URL::current_url().$this->template_args['anchor_id'].'"/>';
111
+        $html .= '<input type="hidden" name="tkt-slctr-rows-'.$this->event->ID();
112
+        $html .= '" value="'.count($this->tickets).'"/>';
113
+        $html .= '<input type="hidden" name="tkt-slctr-max-atndz-'.$this->event->ID();
114
+        $html .= '" value="'.$this->template_args['max_atndz'].'"/>';
115
+        $html .= '<input type="hidden" name="tkt-slctr-event-id" value="'.$this->event->ID().'"/>';
116 116
         return $html;
117 117
     }
118 118
 }
Please login to merge, or discard this patch.