@@ -18,368 +18,368 @@ |
||
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 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 On 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 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 On 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 | } |
@@ -15,186 +15,186 @@ |
||
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'), ' '), |
|
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'), ' '), |
|
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'), ' '), |
|
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'), ' '), |
|
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 | } |
@@ -111,7 +111,7 @@ discard block |
||
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 |
||
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'), ' '), |
133 | 133 | esc_attr( |
@@ -139,7 +139,7 @@ discard block |
||
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 |
||
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 |
@@ -19,57 +19,57 @@ |
||
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 | } |
@@ -70,6 +70,6 @@ |
||
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 | } |
@@ -12,107 +12,107 @@ |
||
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 | } |
@@ -106,13 +106,13 @@ |
||
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 | } |
@@ -15,55 +15,55 @@ |
||
15 | 15 | { |
16 | 16 | |
17 | 17 | |
18 | - /** |
|
19 | - * EventsArchiveIframe constructor. |
|
20 | - * |
|
21 | - * @param \EED_Events_Archive $EED_Events_Archive |
|
22 | - * @throws \DomainException |
|
23 | - */ |
|
24 | - public function __construct($EED_Events_Archive) |
|
25 | - { |
|
26 | - \EE_Registry::instance()->REQ->set_espresso_page(true); |
|
27 | - add_filter('FHEE__EED_Events_Archive__event_list_iframe', '__return_true'); |
|
28 | - $EED_Events_Archive->event_list(); |
|
29 | - /** @var \EventEspresso\core\domain\entities\shortcodes\EspressoEvents $event_list */ |
|
30 | - $event_list = \EE_Registry::instance()->create('EventEspresso\core\domain\entities\shortcodes\EspressoEvents'); |
|
31 | - parent::__construct( |
|
32 | - esc_html__('Event List', 'event_espresso'), |
|
33 | - $event_list->processShortcode() |
|
34 | - ); |
|
35 | - $this->addStylesheets( |
|
36 | - apply_filters( |
|
37 | - 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css', |
|
38 | - array( |
|
39 | - 'espresso_default' => is_readable(EVENT_ESPRESSO_UPLOAD_DIR . 'css/style.css') |
|
40 | - ? EVENT_ESPRESSO_UPLOAD_DIR . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION |
|
41 | - : EE_GLOBAL_ASSETS_URL . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION, |
|
42 | - ), |
|
43 | - $this |
|
44 | - ) |
|
45 | - ); |
|
46 | - $this->addScripts( |
|
47 | - apply_filters( |
|
48 | - 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js', |
|
49 | - array( |
|
50 | - 'gmap_api' => sprintf( |
|
51 | - 'https://maps.googleapis.com/maps/api/js?key=%s', |
|
52 | - apply_filters( |
|
53 | - 'FHEE__EEH_Maps__espresso_google_maps_js__api_key', |
|
54 | - \EE_Registry::instance()->CFG->map_settings->google_map_api_key |
|
55 | - ) |
|
56 | - ), |
|
57 | - 'ee_gmap' => EE_HELPERS_ASSETS . 'ee_gmap.js?ver=1.0', |
|
58 | - ), |
|
59 | - $this |
|
60 | - ) |
|
61 | - ); |
|
62 | - $this->addLocalizedVars( |
|
63 | - array( |
|
64 | - 'ee_gmap' => \EEH_Maps::$gmap_vars, |
|
65 | - ), |
|
66 | - 'ee_gmap_vars' |
|
67 | - ); |
|
68 | - } |
|
18 | + /** |
|
19 | + * EventsArchiveIframe constructor. |
|
20 | + * |
|
21 | + * @param \EED_Events_Archive $EED_Events_Archive |
|
22 | + * @throws \DomainException |
|
23 | + */ |
|
24 | + public function __construct($EED_Events_Archive) |
|
25 | + { |
|
26 | + \EE_Registry::instance()->REQ->set_espresso_page(true); |
|
27 | + add_filter('FHEE__EED_Events_Archive__event_list_iframe', '__return_true'); |
|
28 | + $EED_Events_Archive->event_list(); |
|
29 | + /** @var \EventEspresso\core\domain\entities\shortcodes\EspressoEvents $event_list */ |
|
30 | + $event_list = \EE_Registry::instance()->create('EventEspresso\core\domain\entities\shortcodes\EspressoEvents'); |
|
31 | + parent::__construct( |
|
32 | + esc_html__('Event List', 'event_espresso'), |
|
33 | + $event_list->processShortcode() |
|
34 | + ); |
|
35 | + $this->addStylesheets( |
|
36 | + apply_filters( |
|
37 | + 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css', |
|
38 | + array( |
|
39 | + 'espresso_default' => is_readable(EVENT_ESPRESSO_UPLOAD_DIR . 'css/style.css') |
|
40 | + ? EVENT_ESPRESSO_UPLOAD_DIR . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION |
|
41 | + : EE_GLOBAL_ASSETS_URL . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION, |
|
42 | + ), |
|
43 | + $this |
|
44 | + ) |
|
45 | + ); |
|
46 | + $this->addScripts( |
|
47 | + apply_filters( |
|
48 | + 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js', |
|
49 | + array( |
|
50 | + 'gmap_api' => sprintf( |
|
51 | + 'https://maps.googleapis.com/maps/api/js?key=%s', |
|
52 | + apply_filters( |
|
53 | + 'FHEE__EEH_Maps__espresso_google_maps_js__api_key', |
|
54 | + \EE_Registry::instance()->CFG->map_settings->google_map_api_key |
|
55 | + ) |
|
56 | + ), |
|
57 | + 'ee_gmap' => EE_HELPERS_ASSETS . 'ee_gmap.js?ver=1.0', |
|
58 | + ), |
|
59 | + $this |
|
60 | + ) |
|
61 | + ); |
|
62 | + $this->addLocalizedVars( |
|
63 | + array( |
|
64 | + 'ee_gmap' => \EEH_Maps::$gmap_vars, |
|
65 | + ), |
|
66 | + 'ee_gmap_vars' |
|
67 | + ); |
|
68 | + } |
|
69 | 69 | } |
@@ -36,9 +36,9 @@ discard block |
||
36 | 36 | apply_filters( |
37 | 37 | 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css', |
38 | 38 | array( |
39 | - 'espresso_default' => is_readable(EVENT_ESPRESSO_UPLOAD_DIR . 'css/style.css') |
|
40 | - ? EVENT_ESPRESSO_UPLOAD_DIR . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION |
|
41 | - : EE_GLOBAL_ASSETS_URL . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION, |
|
39 | + 'espresso_default' => is_readable(EVENT_ESPRESSO_UPLOAD_DIR.'css/style.css') |
|
40 | + ? EVENT_ESPRESSO_UPLOAD_DIR . 'css/espresso_default.css?ver='.EVENT_ESPRESSO_VERSION |
|
41 | + : EE_GLOBAL_ASSETS_URL.'css/espresso_default.css?ver='.EVENT_ESPRESSO_VERSION, |
|
42 | 42 | ), |
43 | 43 | $this |
44 | 44 | ) |
@@ -54,7 +54,7 @@ discard block |
||
54 | 54 | \EE_Registry::instance()->CFG->map_settings->google_map_api_key |
55 | 55 | ) |
56 | 56 | ), |
57 | - 'ee_gmap' => EE_HELPERS_ASSETS . 'ee_gmap.js?ver=1.0', |
|
57 | + 'ee_gmap' => EE_HELPERS_ASSETS.'ee_gmap.js?ver=1.0', |
|
58 | 58 | ), |
59 | 59 | $this |
60 | 60 | ) |
@@ -27,241 +27,241 @@ |
||
27 | 27 | class InvisibleRecaptcha |
28 | 28 | { |
29 | 29 | |
30 | - const URL_GOOGLE_RECAPTCHA_API = 'https://www.google.com/recaptcha/api/siteverify'; |
|
30 | + const URL_GOOGLE_RECAPTCHA_API = 'https://www.google.com/recaptcha/api/siteverify'; |
|
31 | 31 | |
32 | - const SESSION_DATA_KEY_RECAPTCHA_PASSED = 'recaptcha_passed'; |
|
32 | + const SESSION_DATA_KEY_RECAPTCHA_PASSED = 'recaptcha_passed'; |
|
33 | 33 | |
34 | - /** |
|
35 | - * @var EE_Registration_Config $config |
|
36 | - */ |
|
37 | - private $config; |
|
34 | + /** |
|
35 | + * @var EE_Registration_Config $config |
|
36 | + */ |
|
37 | + private $config; |
|
38 | 38 | |
39 | - /** |
|
40 | - * @var EE_Session $session |
|
41 | - */ |
|
42 | - private $session; |
|
39 | + /** |
|
40 | + * @var EE_Session $session |
|
41 | + */ |
|
42 | + private $session; |
|
43 | 43 | |
44 | - /** |
|
45 | - * @var boolean $recaptcha_passed |
|
46 | - */ |
|
47 | - private $recaptcha_passed; |
|
44 | + /** |
|
45 | + * @var boolean $recaptcha_passed |
|
46 | + */ |
|
47 | + private $recaptcha_passed; |
|
48 | 48 | |
49 | 49 | |
50 | - /** |
|
51 | - * InvisibleRecaptcha constructor. |
|
52 | - * |
|
53 | - * @param EE_Registration_Config $registration_config |
|
54 | - * @param EE_Session $session |
|
55 | - */ |
|
56 | - public function __construct(EE_Registration_Config $registration_config, EE_Session $session) |
|
57 | - { |
|
58 | - $this->config = $registration_config; |
|
59 | - $this->session = $session; |
|
60 | - } |
|
50 | + /** |
|
51 | + * InvisibleRecaptcha constructor. |
|
52 | + * |
|
53 | + * @param EE_Registration_Config $registration_config |
|
54 | + * @param EE_Session $session |
|
55 | + */ |
|
56 | + public function __construct(EE_Registration_Config $registration_config, EE_Session $session) |
|
57 | + { |
|
58 | + $this->config = $registration_config; |
|
59 | + $this->session = $session; |
|
60 | + } |
|
61 | 61 | |
62 | 62 | |
63 | - /** |
|
64 | - * @return boolean |
|
65 | - */ |
|
66 | - public function useInvisibleRecaptcha() |
|
67 | - { |
|
68 | - return $this->config->use_captcha && $this->config->recaptcha_theme === 'invisible'; |
|
69 | - } |
|
63 | + /** |
|
64 | + * @return boolean |
|
65 | + */ |
|
66 | + public function useInvisibleRecaptcha() |
|
67 | + { |
|
68 | + return $this->config->use_captcha && $this->config->recaptcha_theme === 'invisible'; |
|
69 | + } |
|
70 | 70 | |
71 | 71 | |
72 | - /** |
|
73 | - * @param array $input_settings |
|
74 | - * @return EE_Invisible_Recaptcha_Input |
|
75 | - * @throws InvalidDataTypeException |
|
76 | - * @throws InvalidInterfaceException |
|
77 | - * @throws InvalidArgumentException |
|
78 | - * @throws DomainException |
|
79 | - */ |
|
80 | - public function getInput(array $input_settings = array()) |
|
81 | - { |
|
82 | - return new EE_Invisible_Recaptcha_Input( |
|
83 | - $input_settings, |
|
84 | - $this->config |
|
85 | - ); |
|
86 | - } |
|
72 | + /** |
|
73 | + * @param array $input_settings |
|
74 | + * @return EE_Invisible_Recaptcha_Input |
|
75 | + * @throws InvalidDataTypeException |
|
76 | + * @throws InvalidInterfaceException |
|
77 | + * @throws InvalidArgumentException |
|
78 | + * @throws DomainException |
|
79 | + */ |
|
80 | + public function getInput(array $input_settings = array()) |
|
81 | + { |
|
82 | + return new EE_Invisible_Recaptcha_Input( |
|
83 | + $input_settings, |
|
84 | + $this->config |
|
85 | + ); |
|
86 | + } |
|
87 | 87 | |
88 | 88 | |
89 | - /** |
|
90 | - * @param array $input_settings |
|
91 | - * @return string |
|
92 | - * @throws EE_Error |
|
93 | - * @throws InvalidDataTypeException |
|
94 | - * @throws InvalidInterfaceException |
|
95 | - * @throws InvalidArgumentException |
|
96 | - * @throws DomainException |
|
97 | - */ |
|
98 | - public function getInputHtml(array $input_settings = array()) |
|
99 | - { |
|
100 | - return $this->getInput($input_settings)->get_html_for_input(); |
|
101 | - } |
|
89 | + /** |
|
90 | + * @param array $input_settings |
|
91 | + * @return string |
|
92 | + * @throws EE_Error |
|
93 | + * @throws InvalidDataTypeException |
|
94 | + * @throws InvalidInterfaceException |
|
95 | + * @throws InvalidArgumentException |
|
96 | + * @throws DomainException |
|
97 | + */ |
|
98 | + public function getInputHtml(array $input_settings = array()) |
|
99 | + { |
|
100 | + return $this->getInput($input_settings)->get_html_for_input(); |
|
101 | + } |
|
102 | 102 | |
103 | 103 | |
104 | - /** |
|
105 | - * @param EE_Form_Section_Proper $form |
|
106 | - * @param array $input_settings |
|
107 | - * @throws EE_Error |
|
108 | - * @throws InvalidArgumentException |
|
109 | - * @throws InvalidDataTypeException |
|
110 | - * @throws InvalidInterfaceException |
|
111 | - * @throws DomainException |
|
112 | - */ |
|
113 | - public function addToFormSection(EE_Form_Section_Proper $form, array $input_settings = array()) |
|
114 | - { |
|
115 | - $form->add_subsections( |
|
116 | - array( |
|
117 | - 'espresso_recaptcha' => $this->getInput($input_settings), |
|
118 | - ), |
|
119 | - null, |
|
120 | - false |
|
121 | - ); |
|
122 | - } |
|
104 | + /** |
|
105 | + * @param EE_Form_Section_Proper $form |
|
106 | + * @param array $input_settings |
|
107 | + * @throws EE_Error |
|
108 | + * @throws InvalidArgumentException |
|
109 | + * @throws InvalidDataTypeException |
|
110 | + * @throws InvalidInterfaceException |
|
111 | + * @throws DomainException |
|
112 | + */ |
|
113 | + public function addToFormSection(EE_Form_Section_Proper $form, array $input_settings = array()) |
|
114 | + { |
|
115 | + $form->add_subsections( |
|
116 | + array( |
|
117 | + 'espresso_recaptcha' => $this->getInput($input_settings), |
|
118 | + ), |
|
119 | + null, |
|
120 | + false |
|
121 | + ); |
|
122 | + } |
|
123 | 123 | |
124 | 124 | |
125 | - /** |
|
126 | - * @param EE_Request $request |
|
127 | - * @return boolean |
|
128 | - * @throws RuntimeException |
|
129 | - */ |
|
130 | - public function verifyToken(EE_Request $request) |
|
131 | - { |
|
132 | - static $previous_recaptcha_response = array(); |
|
133 | - $grecaptcha_response = $request->get('g-recaptcha-response'); |
|
134 | - // if this token has already been verified, then return previous response |
|
135 | - if (isset($previous_recaptcha_response[ $grecaptcha_response ])) { |
|
136 | - return $previous_recaptcha_response[ $grecaptcha_response ]; |
|
137 | - } |
|
138 | - // will update to true if everything passes |
|
139 | - $previous_recaptcha_response[ $grecaptcha_response ] = false; |
|
140 | - $response = wp_safe_remote_post( |
|
141 | - InvisibleRecaptcha::URL_GOOGLE_RECAPTCHA_API, |
|
142 | - array( |
|
143 | - 'body' => array( |
|
144 | - 'secret' => $this->config->recaptcha_privatekey, |
|
145 | - 'response' => $grecaptcha_response, |
|
146 | - 'remoteip' => $request->ip_address(), |
|
147 | - ), |
|
148 | - ) |
|
149 | - ); |
|
150 | - if ($response instanceof WP_Error) { |
|
151 | - $this->generateError($response->get_error_messages()); |
|
152 | - return false; |
|
153 | - } |
|
154 | - $results = json_decode(wp_remote_retrieve_body($response), true); |
|
155 | - if (filter_var($results['success'], FILTER_VALIDATE_BOOLEAN) !== true) { |
|
156 | - $errors = array_map( |
|
157 | - array($this, 'getErrorCode'), |
|
158 | - $results['error-codes'] |
|
159 | - ); |
|
160 | - if (isset($results['challenge_ts'])) { |
|
161 | - $errors[] = 'challenge timestamp: ' . $results['challenge_ts'] . '.'; |
|
162 | - } |
|
163 | - $this->generateError(implode(' ', $errors)); |
|
164 | - } |
|
165 | - $previous_recaptcha_response[ $grecaptcha_response ] = true; |
|
166 | - add_action('shutdown', array($this, 'setSessionData')); |
|
167 | - return true; |
|
168 | - } |
|
125 | + /** |
|
126 | + * @param EE_Request $request |
|
127 | + * @return boolean |
|
128 | + * @throws RuntimeException |
|
129 | + */ |
|
130 | + public function verifyToken(EE_Request $request) |
|
131 | + { |
|
132 | + static $previous_recaptcha_response = array(); |
|
133 | + $grecaptcha_response = $request->get('g-recaptcha-response'); |
|
134 | + // if this token has already been verified, then return previous response |
|
135 | + if (isset($previous_recaptcha_response[ $grecaptcha_response ])) { |
|
136 | + return $previous_recaptcha_response[ $grecaptcha_response ]; |
|
137 | + } |
|
138 | + // will update to true if everything passes |
|
139 | + $previous_recaptcha_response[ $grecaptcha_response ] = false; |
|
140 | + $response = wp_safe_remote_post( |
|
141 | + InvisibleRecaptcha::URL_GOOGLE_RECAPTCHA_API, |
|
142 | + array( |
|
143 | + 'body' => array( |
|
144 | + 'secret' => $this->config->recaptcha_privatekey, |
|
145 | + 'response' => $grecaptcha_response, |
|
146 | + 'remoteip' => $request->ip_address(), |
|
147 | + ), |
|
148 | + ) |
|
149 | + ); |
|
150 | + if ($response instanceof WP_Error) { |
|
151 | + $this->generateError($response->get_error_messages()); |
|
152 | + return false; |
|
153 | + } |
|
154 | + $results = json_decode(wp_remote_retrieve_body($response), true); |
|
155 | + if (filter_var($results['success'], FILTER_VALIDATE_BOOLEAN) !== true) { |
|
156 | + $errors = array_map( |
|
157 | + array($this, 'getErrorCode'), |
|
158 | + $results['error-codes'] |
|
159 | + ); |
|
160 | + if (isset($results['challenge_ts'])) { |
|
161 | + $errors[] = 'challenge timestamp: ' . $results['challenge_ts'] . '.'; |
|
162 | + } |
|
163 | + $this->generateError(implode(' ', $errors)); |
|
164 | + } |
|
165 | + $previous_recaptcha_response[ $grecaptcha_response ] = true; |
|
166 | + add_action('shutdown', array($this, 'setSessionData')); |
|
167 | + return true; |
|
168 | + } |
|
169 | 169 | |
170 | 170 | |
171 | - /** |
|
172 | - * @param string $error_response |
|
173 | - * @return void |
|
174 | - * @throws RuntimeException |
|
175 | - */ |
|
176 | - public function generateError($error_response = '') |
|
177 | - { |
|
178 | - throw new RuntimeException( |
|
179 | - sprintf( |
|
180 | - esc_html__( |
|
181 | - 'We\'re sorry but an attempt to verify the form\'s reCAPTCHA has failed. %1$s %2$s Please try again.', |
|
182 | - 'event_espresso' |
|
183 | - ), |
|
184 | - '<br />', |
|
185 | - current_user_can('manage_options') ? $error_response : '' |
|
186 | - ) |
|
187 | - ); |
|
188 | - } |
|
171 | + /** |
|
172 | + * @param string $error_response |
|
173 | + * @return void |
|
174 | + * @throws RuntimeException |
|
175 | + */ |
|
176 | + public function generateError($error_response = '') |
|
177 | + { |
|
178 | + throw new RuntimeException( |
|
179 | + sprintf( |
|
180 | + esc_html__( |
|
181 | + 'We\'re sorry but an attempt to verify the form\'s reCAPTCHA has failed. %1$s %2$s Please try again.', |
|
182 | + 'event_espresso' |
|
183 | + ), |
|
184 | + '<br />', |
|
185 | + current_user_can('manage_options') ? $error_response : '' |
|
186 | + ) |
|
187 | + ); |
|
188 | + } |
|
189 | 189 | |
190 | 190 | |
191 | - /** |
|
192 | - * @param string $error_code |
|
193 | - * @return string |
|
194 | - */ |
|
195 | - public function getErrorCode(&$error_code) |
|
196 | - { |
|
197 | - $error_codes = array( |
|
198 | - 'missing-input-secret' => 'The secret parameter is missing.', |
|
199 | - 'invalid-input-secret' => 'The secret parameter is invalid or malformed.', |
|
200 | - 'missing-input-response' => 'The response parameter is missing.', |
|
201 | - 'invalid-input-response' => 'The response parameter is invalid or malformed.', |
|
202 | - 'bad-request' => 'The request is invalid or malformed.', |
|
203 | - 'timeout-or-duplicate' => 'The request took too long to be sent or was a duplicate of a previous request.', |
|
204 | - ); |
|
205 | - return isset($error_codes[ $error_code ]) ? $error_codes[ $error_code ] : ''; |
|
206 | - } |
|
191 | + /** |
|
192 | + * @param string $error_code |
|
193 | + * @return string |
|
194 | + */ |
|
195 | + public function getErrorCode(&$error_code) |
|
196 | + { |
|
197 | + $error_codes = array( |
|
198 | + 'missing-input-secret' => 'The secret parameter is missing.', |
|
199 | + 'invalid-input-secret' => 'The secret parameter is invalid or malformed.', |
|
200 | + 'missing-input-response' => 'The response parameter is missing.', |
|
201 | + 'invalid-input-response' => 'The response parameter is invalid or malformed.', |
|
202 | + 'bad-request' => 'The request is invalid or malformed.', |
|
203 | + 'timeout-or-duplicate' => 'The request took too long to be sent or was a duplicate of a previous request.', |
|
204 | + ); |
|
205 | + return isset($error_codes[ $error_code ]) ? $error_codes[ $error_code ] : ''; |
|
206 | + } |
|
207 | 207 | |
208 | 208 | |
209 | - /** |
|
210 | - * @return array |
|
211 | - * @throws InvalidInterfaceException |
|
212 | - * @throws InvalidDataTypeException |
|
213 | - * @throws InvalidArgumentException |
|
214 | - */ |
|
215 | - public function getLocalizedVars() |
|
216 | - { |
|
217 | - return (array) apply_filters( |
|
218 | - 'FHEE__EventEspresso_caffeinated_modules_recaptcha_invisible_InvisibleRecaptcha__getLocalizedVars__localized_vars', |
|
219 | - array( |
|
220 | - 'siteKey' => $this->config->recaptcha_publickey, |
|
221 | - 'recaptcha_passed' => $this->recaptchaPassed(), |
|
222 | - 'wp_debug' => WP_DEBUG, |
|
223 | - 'disable_submit' => defined('EE_EVENT_QUEUE_BASE_URL'), |
|
224 | - ) |
|
225 | - ); |
|
226 | - } |
|
209 | + /** |
|
210 | + * @return array |
|
211 | + * @throws InvalidInterfaceException |
|
212 | + * @throws InvalidDataTypeException |
|
213 | + * @throws InvalidArgumentException |
|
214 | + */ |
|
215 | + public function getLocalizedVars() |
|
216 | + { |
|
217 | + return (array) apply_filters( |
|
218 | + 'FHEE__EventEspresso_caffeinated_modules_recaptcha_invisible_InvisibleRecaptcha__getLocalizedVars__localized_vars', |
|
219 | + array( |
|
220 | + 'siteKey' => $this->config->recaptcha_publickey, |
|
221 | + 'recaptcha_passed' => $this->recaptchaPassed(), |
|
222 | + 'wp_debug' => WP_DEBUG, |
|
223 | + 'disable_submit' => defined('EE_EVENT_QUEUE_BASE_URL'), |
|
224 | + ) |
|
225 | + ); |
|
226 | + } |
|
227 | 227 | |
228 | 228 | |
229 | - /** |
|
230 | - * @return boolean |
|
231 | - * @throws InvalidInterfaceException |
|
232 | - * @throws InvalidDataTypeException |
|
233 | - * @throws InvalidArgumentException |
|
234 | - */ |
|
235 | - public function recaptchaPassed() |
|
236 | - { |
|
237 | - if ($this->recaptcha_passed !== null) { |
|
238 | - return $this->recaptcha_passed; |
|
239 | - } |
|
240 | - // logged in means you have already passed a turing test of sorts |
|
241 | - if ($this->useInvisibleRecaptcha() === false || is_user_logged_in()) { |
|
242 | - $this->recaptcha_passed = true; |
|
243 | - return $this->recaptcha_passed; |
|
244 | - } |
|
245 | - // was test already passed? |
|
246 | - $this->recaptcha_passed = filter_var( |
|
247 | - $this->session->get_session_data( |
|
248 | - InvisibleRecaptcha::SESSION_DATA_KEY_RECAPTCHA_PASSED |
|
249 | - ), |
|
250 | - FILTER_VALIDATE_BOOLEAN |
|
251 | - ); |
|
252 | - return $this->recaptcha_passed; |
|
253 | - } |
|
229 | + /** |
|
230 | + * @return boolean |
|
231 | + * @throws InvalidInterfaceException |
|
232 | + * @throws InvalidDataTypeException |
|
233 | + * @throws InvalidArgumentException |
|
234 | + */ |
|
235 | + public function recaptchaPassed() |
|
236 | + { |
|
237 | + if ($this->recaptcha_passed !== null) { |
|
238 | + return $this->recaptcha_passed; |
|
239 | + } |
|
240 | + // logged in means you have already passed a turing test of sorts |
|
241 | + if ($this->useInvisibleRecaptcha() === false || is_user_logged_in()) { |
|
242 | + $this->recaptcha_passed = true; |
|
243 | + return $this->recaptcha_passed; |
|
244 | + } |
|
245 | + // was test already passed? |
|
246 | + $this->recaptcha_passed = filter_var( |
|
247 | + $this->session->get_session_data( |
|
248 | + InvisibleRecaptcha::SESSION_DATA_KEY_RECAPTCHA_PASSED |
|
249 | + ), |
|
250 | + FILTER_VALIDATE_BOOLEAN |
|
251 | + ); |
|
252 | + return $this->recaptcha_passed; |
|
253 | + } |
|
254 | 254 | |
255 | 255 | |
256 | - /** |
|
257 | - * @throws InvalidArgumentException |
|
258 | - * @throws InvalidDataTypeException |
|
259 | - * @throws InvalidInterfaceException |
|
260 | - */ |
|
261 | - public function setSessionData() |
|
262 | - { |
|
263 | - $this->session->set_session_data( |
|
264 | - array(InvisibleRecaptcha::SESSION_DATA_KEY_RECAPTCHA_PASSED => true) |
|
265 | - ); |
|
266 | - } |
|
256 | + /** |
|
257 | + * @throws InvalidArgumentException |
|
258 | + * @throws InvalidDataTypeException |
|
259 | + * @throws InvalidInterfaceException |
|
260 | + */ |
|
261 | + public function setSessionData() |
|
262 | + { |
|
263 | + $this->session->set_session_data( |
|
264 | + array(InvisibleRecaptcha::SESSION_DATA_KEY_RECAPTCHA_PASSED => true) |
|
265 | + ); |
|
266 | + } |
|
267 | 267 | } |
@@ -132,11 +132,11 @@ discard block |
||
132 | 132 | static $previous_recaptcha_response = array(); |
133 | 133 | $grecaptcha_response = $request->get('g-recaptcha-response'); |
134 | 134 | // if this token has already been verified, then return previous response |
135 | - if (isset($previous_recaptcha_response[ $grecaptcha_response ])) { |
|
136 | - return $previous_recaptcha_response[ $grecaptcha_response ]; |
|
135 | + if (isset($previous_recaptcha_response[$grecaptcha_response])) { |
|
136 | + return $previous_recaptcha_response[$grecaptcha_response]; |
|
137 | 137 | } |
138 | 138 | // will update to true if everything passes |
139 | - $previous_recaptcha_response[ $grecaptcha_response ] = false; |
|
139 | + $previous_recaptcha_response[$grecaptcha_response] = false; |
|
140 | 140 | $response = wp_safe_remote_post( |
141 | 141 | InvisibleRecaptcha::URL_GOOGLE_RECAPTCHA_API, |
142 | 142 | array( |
@@ -153,16 +153,16 @@ discard block |
||
153 | 153 | } |
154 | 154 | $results = json_decode(wp_remote_retrieve_body($response), true); |
155 | 155 | if (filter_var($results['success'], FILTER_VALIDATE_BOOLEAN) !== true) { |
156 | - $errors = array_map( |
|
156 | + $errors = array_map( |
|
157 | 157 | array($this, 'getErrorCode'), |
158 | 158 | $results['error-codes'] |
159 | 159 | ); |
160 | 160 | if (isset($results['challenge_ts'])) { |
161 | - $errors[] = 'challenge timestamp: ' . $results['challenge_ts'] . '.'; |
|
161 | + $errors[] = 'challenge timestamp: '.$results['challenge_ts'].'.'; |
|
162 | 162 | } |
163 | 163 | $this->generateError(implode(' ', $errors)); |
164 | 164 | } |
165 | - $previous_recaptcha_response[ $grecaptcha_response ] = true; |
|
165 | + $previous_recaptcha_response[$grecaptcha_response] = true; |
|
166 | 166 | add_action('shutdown', array($this, 'setSessionData')); |
167 | 167 | return true; |
168 | 168 | } |
@@ -202,7 +202,7 @@ discard block |
||
202 | 202 | 'bad-request' => 'The request is invalid or malformed.', |
203 | 203 | 'timeout-or-duplicate' => 'The request took too long to be sent or was a duplicate of a previous request.', |
204 | 204 | ); |
205 | - return isset($error_codes[ $error_code ]) ? $error_codes[ $error_code ] : ''; |
|
205 | + return isset($error_codes[$error_code]) ? $error_codes[$error_code] : ''; |
|
206 | 206 | } |
207 | 207 | |
208 | 208 |
@@ -19,35 +19,35 @@ |
||
19 | 19 | class RecaptchaFactory implements FactoryInterface |
20 | 20 | { |
21 | 21 | |
22 | - /** |
|
23 | - * @param array $arguments |
|
24 | - * @return InvisibleRecaptcha |
|
25 | - * @throws InvalidDataTypeException |
|
26 | - * @throws InvalidInterfaceException |
|
27 | - * @throws InvalidArgumentException |
|
28 | - */ |
|
29 | - public static function create($arguments = array()) |
|
30 | - { |
|
31 | - return LoaderFactory::getLoader()->getShared( |
|
32 | - 'EventEspresso\caffeinated\modules\recaptcha_invisible\InvisibleRecaptcha', |
|
33 | - $arguments |
|
34 | - ); |
|
35 | - } |
|
22 | + /** |
|
23 | + * @param array $arguments |
|
24 | + * @return InvisibleRecaptcha |
|
25 | + * @throws InvalidDataTypeException |
|
26 | + * @throws InvalidInterfaceException |
|
27 | + * @throws InvalidArgumentException |
|
28 | + */ |
|
29 | + public static function create($arguments = array()) |
|
30 | + { |
|
31 | + return LoaderFactory::getLoader()->getShared( |
|
32 | + 'EventEspresso\caffeinated\modules\recaptcha_invisible\InvisibleRecaptcha', |
|
33 | + $arguments |
|
34 | + ); |
|
35 | + } |
|
36 | 36 | |
37 | 37 | |
38 | 38 | |
39 | - /** |
|
40 | - * @param array $arguments |
|
41 | - * @return RecaptchaAdminSettings |
|
42 | - * @throws InvalidDataTypeException |
|
43 | - * @throws InvalidInterfaceException |
|
44 | - * @throws InvalidArgumentException |
|
45 | - */ |
|
46 | - public static function getAdminModule($arguments = array()) |
|
47 | - { |
|
48 | - return LoaderFactory::getLoader()->getShared( |
|
49 | - 'EventEspresso\caffeinated\modules\recaptcha_invisible\RecaptchaAdminSettings', |
|
50 | - $arguments |
|
51 | - ); |
|
52 | - } |
|
39 | + /** |
|
40 | + * @param array $arguments |
|
41 | + * @return RecaptchaAdminSettings |
|
42 | + * @throws InvalidDataTypeException |
|
43 | + * @throws InvalidInterfaceException |
|
44 | + * @throws InvalidArgumentException |
|
45 | + */ |
|
46 | + public static function getAdminModule($arguments = array()) |
|
47 | + { |
|
48 | + return LoaderFactory::getLoader()->getShared( |
|
49 | + 'EventEspresso\caffeinated\modules\recaptcha_invisible\RecaptchaAdminSettings', |
|
50 | + $arguments |
|
51 | + ); |
|
52 | + } |
|
53 | 53 | } |
@@ -31,361 +31,361 @@ |
||
31 | 31 | class RecaptchaAdminSettings |
32 | 32 | { |
33 | 33 | |
34 | - /** |
|
35 | - * @var EE_Registration_Config $config |
|
36 | - */ |
|
37 | - private $config; |
|
34 | + /** |
|
35 | + * @var EE_Registration_Config $config |
|
36 | + */ |
|
37 | + private $config; |
|
38 | 38 | |
39 | 39 | |
40 | - /** |
|
41 | - * RecaptchaAdminSettings constructor. |
|
42 | - * |
|
43 | - * @param EE_Registration_Config $registration_config |
|
44 | - */ |
|
45 | - public function __construct(EE_Registration_Config $registration_config) |
|
46 | - { |
|
47 | - $this->config = $registration_config; |
|
48 | - } |
|
40 | + /** |
|
41 | + * RecaptchaAdminSettings constructor. |
|
42 | + * |
|
43 | + * @param EE_Registration_Config $registration_config |
|
44 | + */ |
|
45 | + public function __construct(EE_Registration_Config $registration_config) |
|
46 | + { |
|
47 | + $this->config = $registration_config; |
|
48 | + } |
|
49 | 49 | |
50 | 50 | |
51 | - /** |
|
52 | - * @throws InvalidArgumentException |
|
53 | - * @throws InvalidInterfaceException |
|
54 | - * @throws InvalidDataTypeException |
|
55 | - * @throws EE_Error |
|
56 | - */ |
|
57 | - public function adminSettings() |
|
58 | - { |
|
59 | - echo $this->settingsForm()->get_html_and_js(); |
|
60 | - } |
|
51 | + /** |
|
52 | + * @throws InvalidArgumentException |
|
53 | + * @throws InvalidInterfaceException |
|
54 | + * @throws InvalidDataTypeException |
|
55 | + * @throws EE_Error |
|
56 | + */ |
|
57 | + public function adminSettings() |
|
58 | + { |
|
59 | + echo $this->settingsForm()->get_html_and_js(); |
|
60 | + } |
|
61 | 61 | |
62 | 62 | |
63 | - /** |
|
64 | - * @return EE_Form_Section_Proper |
|
65 | - * @throws EE_Error |
|
66 | - */ |
|
67 | - protected function settingsForm() |
|
68 | - { |
|
69 | - return new EE_Form_Section_Proper( |
|
70 | - array( |
|
71 | - 'name' => 'recaptcha_settings_form', |
|
72 | - 'html_id' => 'recaptcha_settings_form', |
|
73 | - 'layout_strategy' => new EE_Div_Per_Section_Layout(), |
|
74 | - 'subsections' => apply_filters( |
|
75 | - 'FHEE__EED_Recaptcha___recaptcha_settings_form__form_subsections', |
|
76 | - array( |
|
77 | - 'main_settings_hdr' => new EE_Form_Section_HTML( |
|
78 | - EEH_HTML::h2( |
|
79 | - esc_html__('reCAPTCHA Anti-spam Settings', 'event_espresso') |
|
80 | - . EEH_Template::get_help_tab_link('recaptcha_info') |
|
81 | - ) |
|
82 | - ), |
|
83 | - 'main_settings' => $this->mainSettings(), |
|
84 | - 'appearance_settings_hdr' => new EE_Form_Section_HTML( |
|
85 | - EEH_HTML::h2(esc_html__('reCAPTCHA Appearance', 'event_espresso')) |
|
86 | - ), |
|
87 | - 'appearance_settings' => $this->appearanceSettings(), |
|
88 | - 'required_fields_note' => new EE_Form_Section_HTML( |
|
89 | - EEH_HTML::p( |
|
90 | - esc_html__('All fields marked with a * are required fields', 'event_espresso'), |
|
91 | - '', |
|
92 | - 'grey-text' |
|
93 | - ) |
|
94 | - ), |
|
95 | - ) |
|
96 | - ), |
|
97 | - ) |
|
98 | - ); |
|
99 | - } |
|
63 | + /** |
|
64 | + * @return EE_Form_Section_Proper |
|
65 | + * @throws EE_Error |
|
66 | + */ |
|
67 | + protected function settingsForm() |
|
68 | + { |
|
69 | + return new EE_Form_Section_Proper( |
|
70 | + array( |
|
71 | + 'name' => 'recaptcha_settings_form', |
|
72 | + 'html_id' => 'recaptcha_settings_form', |
|
73 | + 'layout_strategy' => new EE_Div_Per_Section_Layout(), |
|
74 | + 'subsections' => apply_filters( |
|
75 | + 'FHEE__EED_Recaptcha___recaptcha_settings_form__form_subsections', |
|
76 | + array( |
|
77 | + 'main_settings_hdr' => new EE_Form_Section_HTML( |
|
78 | + EEH_HTML::h2( |
|
79 | + esc_html__('reCAPTCHA Anti-spam Settings', 'event_espresso') |
|
80 | + . EEH_Template::get_help_tab_link('recaptcha_info') |
|
81 | + ) |
|
82 | + ), |
|
83 | + 'main_settings' => $this->mainSettings(), |
|
84 | + 'appearance_settings_hdr' => new EE_Form_Section_HTML( |
|
85 | + EEH_HTML::h2(esc_html__('reCAPTCHA Appearance', 'event_espresso')) |
|
86 | + ), |
|
87 | + 'appearance_settings' => $this->appearanceSettings(), |
|
88 | + 'required_fields_note' => new EE_Form_Section_HTML( |
|
89 | + EEH_HTML::p( |
|
90 | + esc_html__('All fields marked with a * are required fields', 'event_espresso'), |
|
91 | + '', |
|
92 | + 'grey-text' |
|
93 | + ) |
|
94 | + ), |
|
95 | + ) |
|
96 | + ), |
|
97 | + ) |
|
98 | + ); |
|
99 | + } |
|
100 | 100 | |
101 | 101 | |
102 | - /** |
|
103 | - * @return EE_Form_Section_Proper |
|
104 | - * @throws EE_Error |
|
105 | - */ |
|
106 | - protected function mainSettings() |
|
107 | - { |
|
108 | - return new EE_Form_Section_Proper( |
|
109 | - array( |
|
110 | - 'name' => 'recaptcha_settings_tbl', |
|
111 | - 'html_id' => 'recaptcha_settings_tbl', |
|
112 | - 'html_class' => 'form-table', |
|
113 | - 'layout_strategy' => new EE_Admin_Two_Column_Layout(), |
|
114 | - 'subsections' => apply_filters( |
|
115 | - 'FHEE__EED_Recaptcha___recaptcha_main_settings__form_subsections', |
|
116 | - array( |
|
117 | - 'use_captcha' => new EE_Yes_No_Input( |
|
118 | - array( |
|
119 | - 'html_label_text' => esc_html__('Use reCAPTCHA', 'event_espresso'), |
|
120 | - 'html_help_text' => sprintf( |
|
121 | - esc_html__( |
|
122 | - 'reCAPTCHA is a free service that protects your website from spam and abuse. It employs advanced risk analysis technology to separate humans from abusive actors. Sign up %1$shere%2$s to receive your Public and Private keys.', |
|
123 | - 'event_espresso' |
|
124 | - ), |
|
125 | - '<a href="https://www.google.com/recaptcha/intro/index.html">', |
|
126 | - '</a>' |
|
127 | - ), |
|
128 | - 'default' => $this->config->use_captcha !== null |
|
129 | - ? $this->config->use_captcha : false, |
|
130 | - 'display_html_label_text' => false, |
|
131 | - ) |
|
132 | - ), |
|
133 | - 'recaptcha_publickey' => new EE_Text_Input( |
|
134 | - array( |
|
135 | - 'html_label_text' => esc_html__('Site Key', 'event_espresso'), |
|
136 | - 'html_help_text' => esc_html__( |
|
137 | - 'The site key is used to display the widget on your site.', |
|
138 | - 'event_espresso' |
|
139 | - ), |
|
140 | - 'default' => $this->config->recaptcha_publickey !== null |
|
141 | - ? stripslashes($this->config->recaptcha_publickey) : '', |
|
142 | - ) |
|
143 | - ), |
|
144 | - 'recaptcha_privatekey' => new EE_Text_Input( |
|
145 | - array( |
|
146 | - 'html_label_text' => esc_html__('Secret Key', 'event_espresso'), |
|
147 | - 'html_help_text' => esc_html__( |
|
148 | - 'The secret key authorizes communication between your application backend and the reCAPTCHA server to verify the user\'s response. The secret key needs to be kept safe for security purposes.', |
|
149 | - 'event_espresso' |
|
150 | - ), |
|
151 | - 'default' => $this->config->recaptcha_privatekey !== null |
|
152 | - ? stripslashes($this->config->recaptcha_privatekey) |
|
153 | - : '', |
|
154 | - ) |
|
155 | - ), |
|
156 | - 'recaptcha_protected_forms' => new EE_Checkbox_Multi_Input( |
|
157 | - array( |
|
158 | - 'ticket_selector' => esc_html__('Ticket Selector', 'event_espresso'), |
|
159 | - 'registration_form' => esc_html__('Registration Form', 'event_espresso'), |
|
160 | - ), |
|
161 | - array( |
|
162 | - 'html_label_text' => esc_html__( |
|
163 | - 'Invisible reCAPTCHA Protection', |
|
164 | - 'event_espresso' |
|
165 | - ), |
|
166 | - 'html_help_text' => esc_html__( |
|
167 | - 'Select which Event Espresso forms you would like to enable Invisible reCAPTCHA on.', |
|
168 | - 'event_espresso' |
|
169 | - ), |
|
170 | - 'default' => is_array($this->config->recaptcha_protected_forms) |
|
171 | - ? $this->config->recaptcha_protected_forms |
|
172 | - : array(), |
|
173 | - 'display_html_label_text' => false, |
|
174 | - ) |
|
175 | - ), |
|
176 | - ) |
|
177 | - ), |
|
178 | - ) |
|
179 | - ); |
|
180 | - } |
|
102 | + /** |
|
103 | + * @return EE_Form_Section_Proper |
|
104 | + * @throws EE_Error |
|
105 | + */ |
|
106 | + protected function mainSettings() |
|
107 | + { |
|
108 | + return new EE_Form_Section_Proper( |
|
109 | + array( |
|
110 | + 'name' => 'recaptcha_settings_tbl', |
|
111 | + 'html_id' => 'recaptcha_settings_tbl', |
|
112 | + 'html_class' => 'form-table', |
|
113 | + 'layout_strategy' => new EE_Admin_Two_Column_Layout(), |
|
114 | + 'subsections' => apply_filters( |
|
115 | + 'FHEE__EED_Recaptcha___recaptcha_main_settings__form_subsections', |
|
116 | + array( |
|
117 | + 'use_captcha' => new EE_Yes_No_Input( |
|
118 | + array( |
|
119 | + 'html_label_text' => esc_html__('Use reCAPTCHA', 'event_espresso'), |
|
120 | + 'html_help_text' => sprintf( |
|
121 | + esc_html__( |
|
122 | + 'reCAPTCHA is a free service that protects your website from spam and abuse. It employs advanced risk analysis technology to separate humans from abusive actors. Sign up %1$shere%2$s to receive your Public and Private keys.', |
|
123 | + 'event_espresso' |
|
124 | + ), |
|
125 | + '<a href="https://www.google.com/recaptcha/intro/index.html">', |
|
126 | + '</a>' |
|
127 | + ), |
|
128 | + 'default' => $this->config->use_captcha !== null |
|
129 | + ? $this->config->use_captcha : false, |
|
130 | + 'display_html_label_text' => false, |
|
131 | + ) |
|
132 | + ), |
|
133 | + 'recaptcha_publickey' => new EE_Text_Input( |
|
134 | + array( |
|
135 | + 'html_label_text' => esc_html__('Site Key', 'event_espresso'), |
|
136 | + 'html_help_text' => esc_html__( |
|
137 | + 'The site key is used to display the widget on your site.', |
|
138 | + 'event_espresso' |
|
139 | + ), |
|
140 | + 'default' => $this->config->recaptcha_publickey !== null |
|
141 | + ? stripslashes($this->config->recaptcha_publickey) : '', |
|
142 | + ) |
|
143 | + ), |
|
144 | + 'recaptcha_privatekey' => new EE_Text_Input( |
|
145 | + array( |
|
146 | + 'html_label_text' => esc_html__('Secret Key', 'event_espresso'), |
|
147 | + 'html_help_text' => esc_html__( |
|
148 | + 'The secret key authorizes communication between your application backend and the reCAPTCHA server to verify the user\'s response. The secret key needs to be kept safe for security purposes.', |
|
149 | + 'event_espresso' |
|
150 | + ), |
|
151 | + 'default' => $this->config->recaptcha_privatekey !== null |
|
152 | + ? stripslashes($this->config->recaptcha_privatekey) |
|
153 | + : '', |
|
154 | + ) |
|
155 | + ), |
|
156 | + 'recaptcha_protected_forms' => new EE_Checkbox_Multi_Input( |
|
157 | + array( |
|
158 | + 'ticket_selector' => esc_html__('Ticket Selector', 'event_espresso'), |
|
159 | + 'registration_form' => esc_html__('Registration Form', 'event_espresso'), |
|
160 | + ), |
|
161 | + array( |
|
162 | + 'html_label_text' => esc_html__( |
|
163 | + 'Invisible reCAPTCHA Protection', |
|
164 | + 'event_espresso' |
|
165 | + ), |
|
166 | + 'html_help_text' => esc_html__( |
|
167 | + 'Select which Event Espresso forms you would like to enable Invisible reCAPTCHA on.', |
|
168 | + 'event_espresso' |
|
169 | + ), |
|
170 | + 'default' => is_array($this->config->recaptcha_protected_forms) |
|
171 | + ? $this->config->recaptcha_protected_forms |
|
172 | + : array(), |
|
173 | + 'display_html_label_text' => false, |
|
174 | + ) |
|
175 | + ), |
|
176 | + ) |
|
177 | + ), |
|
178 | + ) |
|
179 | + ); |
|
180 | + } |
|
181 | 181 | |
182 | 182 | |
183 | - /** |
|
184 | - * @return EE_Form_Section_Proper |
|
185 | - * @throws EE_Error |
|
186 | - */ |
|
187 | - protected function appearanceSettings() |
|
188 | - { |
|
189 | - return new EE_Form_Section_Proper( |
|
190 | - array( |
|
191 | - 'name' => 'recaptcha_appearance_settings_tbl', |
|
192 | - 'html_id' => 'recaptcha_appearance_settings_tbl', |
|
193 | - 'html_class' => 'form-table', |
|
194 | - 'layout_strategy' => new EE_Admin_Two_Column_Layout(), |
|
195 | - 'subsections' => apply_filters( |
|
196 | - 'FHEE__EED_Recaptcha___recaptcha_appearance_settings__form_subsections', |
|
197 | - array( |
|
198 | - 'recaptcha_theme' => new EE_Radio_Button_Input( |
|
199 | - array( |
|
200 | - 'invisible' => esc_html__('Invisible', 'event_espresso'), |
|
201 | - 'light' => esc_html__('Light', 'event_espresso'), |
|
202 | - 'dark' => esc_html__('Dark', 'event_espresso'), |
|
203 | - ), |
|
204 | - array( |
|
205 | - 'html_label_text' => esc_html__('Theme', 'event_espresso'), |
|
206 | - 'html_help_text' => esc_html__( |
|
207 | - 'The color theme of the widget.', |
|
208 | - 'event_espresso' |
|
209 | - ), |
|
210 | - 'default' => $this->config->recaptcha_theme !== null |
|
211 | - ? $this->config->recaptcha_theme |
|
212 | - : 'invisible', |
|
213 | - 'display_html_label_text' => false, |
|
214 | - ) |
|
215 | - ), |
|
216 | - 'recaptcha_badge' => new EE_Radio_Button_Input( |
|
217 | - array( |
|
218 | - 'bottomleft' => esc_html__('Bottom Left', 'event_espresso'), |
|
219 | - 'bottomright' => esc_html__('Bottom Right', 'event_espresso'), |
|
220 | - 'inline' => esc_html__('Inline', 'event_espresso'), |
|
221 | - ), |
|
222 | - array( |
|
223 | - 'html_label_text' => esc_html__( |
|
224 | - 'Invisible reCAPTCHA Badge Position', |
|
225 | - 'event_espresso' |
|
226 | - ), |
|
227 | - 'html_help_text' => esc_html__( |
|
228 | - 'If using Invisible reCAPTCHA, then this determines the position of the reCAPTCHA badge. "Bottom Left" and "Bottom Right" both will float at the bottom of the screen. "Inline" appears beside the submit button but allows you to control the CSS.', |
|
229 | - 'event_espresso' |
|
230 | - ), |
|
231 | - 'default' => $this->config->recaptcha_badge !== null |
|
232 | - ? $this->config->recaptcha_badge |
|
233 | - : 'bottomleft', |
|
234 | - 'display_html_label_text' => false, |
|
235 | - ) |
|
236 | - ), |
|
237 | - 'recaptcha_type' => new EE_Radio_Button_Input( |
|
238 | - array( |
|
239 | - 'image' => esc_html__('Image', 'event_espresso'), |
|
240 | - 'audio' => esc_html__('Audio', 'event_espresso'), |
|
241 | - ), |
|
242 | - array( |
|
243 | - 'html_label_text' => esc_html__('Type', 'event_espresso'), |
|
244 | - 'html_help_text' => esc_html__( |
|
245 | - 'The type of CAPTCHA to serve.', |
|
246 | - 'event_espresso' |
|
247 | - ), |
|
248 | - 'default' => $this->config->recaptcha_type !== null |
|
249 | - ? $this->config->recaptcha_type |
|
250 | - : 'image', |
|
251 | - 'display_html_label_text' => false, |
|
252 | - ) |
|
253 | - ), |
|
254 | - 'recaptcha_language' => new EE_Select_Input( |
|
255 | - array( |
|
256 | - 'ar' => esc_html__('Arabic', 'event_espresso'), |
|
257 | - 'bg' => esc_html__('Bulgarian', 'event_espresso'), |
|
258 | - 'ca' => esc_html__('Catalan', 'event_espresso'), |
|
259 | - 'zh-CN' => esc_html__('Chinese (Simplified)', 'event_espresso'), |
|
260 | - 'zh-TW' => esc_html__('Chinese (Traditional) ', 'event_espresso'), |
|
261 | - 'hr' => esc_html__('Croatian', 'event_espresso'), |
|
262 | - 'cs' => esc_html__('Czech', 'event_espresso'), |
|
263 | - 'da' => esc_html__('Danish', 'event_espresso'), |
|
264 | - 'nl' => esc_html__('Dutch', 'event_espresso'), |
|
265 | - 'en-GB' => esc_html__('English (UK)', 'event_espresso'), |
|
266 | - 'en' => esc_html__('English (US)', 'event_espresso'), |
|
267 | - 'fil' => esc_html__('Filipino', 'event_espresso'), |
|
268 | - 'fi' => esc_html__('Finnish', 'event_espresso'), |
|
269 | - 'fr' => esc_html__('French', 'event_espresso'), |
|
270 | - 'fr-CA' => esc_html__('French (Canadian)', 'event_espresso'), |
|
271 | - 'de' => esc_html__('German', 'event_espresso'), |
|
272 | - 'de-AT' => esc_html__('German (Austria)', 'event_espresso'), |
|
273 | - 'de-CH' => esc_html__('German (Switzerland)', 'event_espresso'), |
|
274 | - 'el' => esc_html__('Greek', 'event_espresso'), |
|
275 | - 'iw' => esc_html__('Hebrew', 'event_espresso'), |
|
276 | - 'hi' => esc_html__('Hindi', 'event_espresso'), |
|
277 | - 'hu' => esc_html__('Hungarian', 'event_espresso'), |
|
278 | - 'id' => esc_html__('Indonesian', 'event_espresso'), |
|
279 | - 'it' => esc_html__('Italian', 'event_espresso'), |
|
280 | - 'ja' => esc_html__('Japanese', 'event_espresso'), |
|
281 | - 'ko' => esc_html__('Korean', 'event_espresso'), |
|
282 | - 'lv' => esc_html__('Latvian', 'event_espresso'), |
|
283 | - 'lt' => esc_html__('Lithuanian', 'event_espresso'), |
|
284 | - 'no' => esc_html__('Norwegian', 'event_espresso'), |
|
285 | - 'fa' => esc_html__('Persian', 'event_espresso'), |
|
286 | - 'pl' => esc_html__('Polish', 'event_espresso'), |
|
287 | - 'pt' => esc_html__('Portuguese', 'event_espresso'), |
|
288 | - 'pt-BR' => esc_html__('Portuguese (Brazil)', 'event_espresso'), |
|
289 | - 'pt-PT' => esc_html__('Portuguese (Portugal)', 'event_espresso'), |
|
290 | - 'ro' => esc_html__('Romanian', 'event_espresso'), |
|
291 | - 'ru' => esc_html__('Russian', 'event_espresso'), |
|
292 | - 'sr' => esc_html__('Serbian', 'event_espresso'), |
|
293 | - 'sk' => esc_html__('Slovak', 'event_espresso'), |
|
294 | - 'sl' => esc_html__('Slovenian', 'event_espresso'), |
|
295 | - 'es' => esc_html__('Spanish', 'event_espresso'), |
|
296 | - 'es-419' => esc_html__('Spanish (Latin America)', 'event_espresso'), |
|
297 | - 'sv' => esc_html__('Swedish', 'event_espresso'), |
|
298 | - 'th' => esc_html__('Thai', 'event_espresso'), |
|
299 | - 'tr' => esc_html__('Turkish', 'event_espresso'), |
|
300 | - 'uk' => esc_html__('Ukrainian', 'event_espresso'), |
|
301 | - 'vi' => esc_html__('Vietnamese', 'event_espresso'), |
|
302 | - ), |
|
303 | - array( |
|
304 | - 'html_label_text' => esc_html__('Language', 'event_espresso'), |
|
305 | - 'html_help_text' => esc_html__( |
|
306 | - 'Forces the widget to render in a specific language.', |
|
307 | - 'event_espresso' |
|
308 | - ), |
|
309 | - 'default' => $this->config->recaptcha_language !== null |
|
310 | - ? $this->config->recaptcha_language : 'en', |
|
311 | - ) |
|
312 | - ), |
|
313 | - ) |
|
314 | - ), |
|
315 | - ) |
|
316 | - ); |
|
317 | - } |
|
183 | + /** |
|
184 | + * @return EE_Form_Section_Proper |
|
185 | + * @throws EE_Error |
|
186 | + */ |
|
187 | + protected function appearanceSettings() |
|
188 | + { |
|
189 | + return new EE_Form_Section_Proper( |
|
190 | + array( |
|
191 | + 'name' => 'recaptcha_appearance_settings_tbl', |
|
192 | + 'html_id' => 'recaptcha_appearance_settings_tbl', |
|
193 | + 'html_class' => 'form-table', |
|
194 | + 'layout_strategy' => new EE_Admin_Two_Column_Layout(), |
|
195 | + 'subsections' => apply_filters( |
|
196 | + 'FHEE__EED_Recaptcha___recaptcha_appearance_settings__form_subsections', |
|
197 | + array( |
|
198 | + 'recaptcha_theme' => new EE_Radio_Button_Input( |
|
199 | + array( |
|
200 | + 'invisible' => esc_html__('Invisible', 'event_espresso'), |
|
201 | + 'light' => esc_html__('Light', 'event_espresso'), |
|
202 | + 'dark' => esc_html__('Dark', 'event_espresso'), |
|
203 | + ), |
|
204 | + array( |
|
205 | + 'html_label_text' => esc_html__('Theme', 'event_espresso'), |
|
206 | + 'html_help_text' => esc_html__( |
|
207 | + 'The color theme of the widget.', |
|
208 | + 'event_espresso' |
|
209 | + ), |
|
210 | + 'default' => $this->config->recaptcha_theme !== null |
|
211 | + ? $this->config->recaptcha_theme |
|
212 | + : 'invisible', |
|
213 | + 'display_html_label_text' => false, |
|
214 | + ) |
|
215 | + ), |
|
216 | + 'recaptcha_badge' => new EE_Radio_Button_Input( |
|
217 | + array( |
|
218 | + 'bottomleft' => esc_html__('Bottom Left', 'event_espresso'), |
|
219 | + 'bottomright' => esc_html__('Bottom Right', 'event_espresso'), |
|
220 | + 'inline' => esc_html__('Inline', 'event_espresso'), |
|
221 | + ), |
|
222 | + array( |
|
223 | + 'html_label_text' => esc_html__( |
|
224 | + 'Invisible reCAPTCHA Badge Position', |
|
225 | + 'event_espresso' |
|
226 | + ), |
|
227 | + 'html_help_text' => esc_html__( |
|
228 | + 'If using Invisible reCAPTCHA, then this determines the position of the reCAPTCHA badge. "Bottom Left" and "Bottom Right" both will float at the bottom of the screen. "Inline" appears beside the submit button but allows you to control the CSS.', |
|
229 | + 'event_espresso' |
|
230 | + ), |
|
231 | + 'default' => $this->config->recaptcha_badge !== null |
|
232 | + ? $this->config->recaptcha_badge |
|
233 | + : 'bottomleft', |
|
234 | + 'display_html_label_text' => false, |
|
235 | + ) |
|
236 | + ), |
|
237 | + 'recaptcha_type' => new EE_Radio_Button_Input( |
|
238 | + array( |
|
239 | + 'image' => esc_html__('Image', 'event_espresso'), |
|
240 | + 'audio' => esc_html__('Audio', 'event_espresso'), |
|
241 | + ), |
|
242 | + array( |
|
243 | + 'html_label_text' => esc_html__('Type', 'event_espresso'), |
|
244 | + 'html_help_text' => esc_html__( |
|
245 | + 'The type of CAPTCHA to serve.', |
|
246 | + 'event_espresso' |
|
247 | + ), |
|
248 | + 'default' => $this->config->recaptcha_type !== null |
|
249 | + ? $this->config->recaptcha_type |
|
250 | + : 'image', |
|
251 | + 'display_html_label_text' => false, |
|
252 | + ) |
|
253 | + ), |
|
254 | + 'recaptcha_language' => new EE_Select_Input( |
|
255 | + array( |
|
256 | + 'ar' => esc_html__('Arabic', 'event_espresso'), |
|
257 | + 'bg' => esc_html__('Bulgarian', 'event_espresso'), |
|
258 | + 'ca' => esc_html__('Catalan', 'event_espresso'), |
|
259 | + 'zh-CN' => esc_html__('Chinese (Simplified)', 'event_espresso'), |
|
260 | + 'zh-TW' => esc_html__('Chinese (Traditional) ', 'event_espresso'), |
|
261 | + 'hr' => esc_html__('Croatian', 'event_espresso'), |
|
262 | + 'cs' => esc_html__('Czech', 'event_espresso'), |
|
263 | + 'da' => esc_html__('Danish', 'event_espresso'), |
|
264 | + 'nl' => esc_html__('Dutch', 'event_espresso'), |
|
265 | + 'en-GB' => esc_html__('English (UK)', 'event_espresso'), |
|
266 | + 'en' => esc_html__('English (US)', 'event_espresso'), |
|
267 | + 'fil' => esc_html__('Filipino', 'event_espresso'), |
|
268 | + 'fi' => esc_html__('Finnish', 'event_espresso'), |
|
269 | + 'fr' => esc_html__('French', 'event_espresso'), |
|
270 | + 'fr-CA' => esc_html__('French (Canadian)', 'event_espresso'), |
|
271 | + 'de' => esc_html__('German', 'event_espresso'), |
|
272 | + 'de-AT' => esc_html__('German (Austria)', 'event_espresso'), |
|
273 | + 'de-CH' => esc_html__('German (Switzerland)', 'event_espresso'), |
|
274 | + 'el' => esc_html__('Greek', 'event_espresso'), |
|
275 | + 'iw' => esc_html__('Hebrew', 'event_espresso'), |
|
276 | + 'hi' => esc_html__('Hindi', 'event_espresso'), |
|
277 | + 'hu' => esc_html__('Hungarian', 'event_espresso'), |
|
278 | + 'id' => esc_html__('Indonesian', 'event_espresso'), |
|
279 | + 'it' => esc_html__('Italian', 'event_espresso'), |
|
280 | + 'ja' => esc_html__('Japanese', 'event_espresso'), |
|
281 | + 'ko' => esc_html__('Korean', 'event_espresso'), |
|
282 | + 'lv' => esc_html__('Latvian', 'event_espresso'), |
|
283 | + 'lt' => esc_html__('Lithuanian', 'event_espresso'), |
|
284 | + 'no' => esc_html__('Norwegian', 'event_espresso'), |
|
285 | + 'fa' => esc_html__('Persian', 'event_espresso'), |
|
286 | + 'pl' => esc_html__('Polish', 'event_espresso'), |
|
287 | + 'pt' => esc_html__('Portuguese', 'event_espresso'), |
|
288 | + 'pt-BR' => esc_html__('Portuguese (Brazil)', 'event_espresso'), |
|
289 | + 'pt-PT' => esc_html__('Portuguese (Portugal)', 'event_espresso'), |
|
290 | + 'ro' => esc_html__('Romanian', 'event_espresso'), |
|
291 | + 'ru' => esc_html__('Russian', 'event_espresso'), |
|
292 | + 'sr' => esc_html__('Serbian', 'event_espresso'), |
|
293 | + 'sk' => esc_html__('Slovak', 'event_espresso'), |
|
294 | + 'sl' => esc_html__('Slovenian', 'event_espresso'), |
|
295 | + 'es' => esc_html__('Spanish', 'event_espresso'), |
|
296 | + 'es-419' => esc_html__('Spanish (Latin America)', 'event_espresso'), |
|
297 | + 'sv' => esc_html__('Swedish', 'event_espresso'), |
|
298 | + 'th' => esc_html__('Thai', 'event_espresso'), |
|
299 | + 'tr' => esc_html__('Turkish', 'event_espresso'), |
|
300 | + 'uk' => esc_html__('Ukrainian', 'event_espresso'), |
|
301 | + 'vi' => esc_html__('Vietnamese', 'event_espresso'), |
|
302 | + ), |
|
303 | + array( |
|
304 | + 'html_label_text' => esc_html__('Language', 'event_espresso'), |
|
305 | + 'html_help_text' => esc_html__( |
|
306 | + 'Forces the widget to render in a specific language.', |
|
307 | + 'event_espresso' |
|
308 | + ), |
|
309 | + 'default' => $this->config->recaptcha_language !== null |
|
310 | + ? $this->config->recaptcha_language : 'en', |
|
311 | + ) |
|
312 | + ), |
|
313 | + ) |
|
314 | + ), |
|
315 | + ) |
|
316 | + ); |
|
317 | + } |
|
318 | 318 | |
319 | 319 | |
320 | - /** |
|
321 | - * @param EE_Registration_Config $EE_Registration_Config |
|
322 | - * @return EE_Registration_Config |
|
323 | - * @throws InvalidArgumentException |
|
324 | - * @throws InvalidInterfaceException |
|
325 | - * @throws InvalidDataTypeException |
|
326 | - * @throws EE_Error |
|
327 | - * @throws ReflectionException |
|
328 | - */ |
|
329 | - public function updateAdminSettings(EE_Registration_Config $EE_Registration_Config) |
|
330 | - { |
|
331 | - try { |
|
332 | - $recaptcha_settings_form = $this->settingsForm(); |
|
333 | - // if not displaying a form, then check for form submission |
|
334 | - if ($recaptcha_settings_form->was_submitted()) { |
|
335 | - // capture form data |
|
336 | - $recaptcha_settings_form->receive_form_submission(); |
|
337 | - // validate form data |
|
338 | - if ($recaptcha_settings_form->is_valid()) { |
|
339 | - // grab validated data from form |
|
340 | - $valid_data = $recaptcha_settings_form->valid_data(); |
|
341 | - // user proofing recaptcha: If Use reCAPTCHA is set to yes but we dont' have site or secret keys then set Use reCAPTCHA to FALSE and give error message. |
|
342 | - if ($valid_data['main_settings']['use_captcha'] |
|
343 | - && ( |
|
344 | - ! $EE_Registration_Config->use_captcha |
|
345 | - && ( |
|
346 | - empty($valid_data['main_settings']['recaptcha_publickey']) |
|
347 | - || empty($valid_data['main_settings']['recaptcha_privatekey']) |
|
348 | - ) |
|
349 | - ) |
|
350 | - && apply_filters( |
|
351 | - 'FHEE__Extend_Registration_Form_Admin_Page__check_for_recaptcha_keys', |
|
352 | - true, |
|
353 | - $EE_Registration_Config |
|
354 | - ) |
|
355 | - ) { |
|
356 | - $valid_data['main_settings']['use_captcha'] = false; |
|
357 | - EE_Error::add_error( |
|
358 | - esc_html__( |
|
359 | - 'The use reCAPTCHA setting has been reset to "no". In order to enable the reCAPTCHA service, you must enter a Site Key and Secret Key.', |
|
360 | - 'event_espresso' |
|
361 | - ), |
|
362 | - __FILE__, |
|
363 | - __FUNCTION__, |
|
364 | - __LINE__ |
|
365 | - ); |
|
366 | - } |
|
367 | - $EE_Registration_Config->use_captcha = $valid_data['main_settings']['use_captcha']; |
|
368 | - $EE_Registration_Config->recaptcha_publickey = $valid_data['main_settings']['recaptcha_publickey']; |
|
369 | - $EE_Registration_Config->recaptcha_protected_forms = $valid_data['main_settings']['recaptcha_protected_forms']; |
|
370 | - $EE_Registration_Config->recaptcha_privatekey = $valid_data['main_settings']['recaptcha_privatekey']; |
|
371 | - $EE_Registration_Config->recaptcha_type = $valid_data['appearance_settings']['recaptcha_type']; |
|
372 | - $EE_Registration_Config->recaptcha_theme = $valid_data['appearance_settings']['recaptcha_theme']; |
|
373 | - $EE_Registration_Config->recaptcha_badge = $valid_data['appearance_settings']['recaptcha_badge']; |
|
374 | - $EE_Registration_Config->recaptcha_language = $valid_data['appearance_settings']['recaptcha_language']; |
|
375 | - } else { |
|
376 | - if ($recaptcha_settings_form->submission_error_message() !== '') { |
|
377 | - EE_Error::add_error( |
|
378 | - $recaptcha_settings_form->submission_error_message(), |
|
379 | - __FILE__, |
|
380 | - __FUNCTION__, |
|
381 | - __LINE__ |
|
382 | - ); |
|
383 | - } |
|
384 | - } |
|
385 | - } |
|
386 | - } catch (EE_Error $e) { |
|
387 | - $e->get_error(); |
|
388 | - } |
|
389 | - return $EE_Registration_Config; |
|
390 | - } |
|
320 | + /** |
|
321 | + * @param EE_Registration_Config $EE_Registration_Config |
|
322 | + * @return EE_Registration_Config |
|
323 | + * @throws InvalidArgumentException |
|
324 | + * @throws InvalidInterfaceException |
|
325 | + * @throws InvalidDataTypeException |
|
326 | + * @throws EE_Error |
|
327 | + * @throws ReflectionException |
|
328 | + */ |
|
329 | + public function updateAdminSettings(EE_Registration_Config $EE_Registration_Config) |
|
330 | + { |
|
331 | + try { |
|
332 | + $recaptcha_settings_form = $this->settingsForm(); |
|
333 | + // if not displaying a form, then check for form submission |
|
334 | + if ($recaptcha_settings_form->was_submitted()) { |
|
335 | + // capture form data |
|
336 | + $recaptcha_settings_form->receive_form_submission(); |
|
337 | + // validate form data |
|
338 | + if ($recaptcha_settings_form->is_valid()) { |
|
339 | + // grab validated data from form |
|
340 | + $valid_data = $recaptcha_settings_form->valid_data(); |
|
341 | + // user proofing recaptcha: If Use reCAPTCHA is set to yes but we dont' have site or secret keys then set Use reCAPTCHA to FALSE and give error message. |
|
342 | + if ($valid_data['main_settings']['use_captcha'] |
|
343 | + && ( |
|
344 | + ! $EE_Registration_Config->use_captcha |
|
345 | + && ( |
|
346 | + empty($valid_data['main_settings']['recaptcha_publickey']) |
|
347 | + || empty($valid_data['main_settings']['recaptcha_privatekey']) |
|
348 | + ) |
|
349 | + ) |
|
350 | + && apply_filters( |
|
351 | + 'FHEE__Extend_Registration_Form_Admin_Page__check_for_recaptcha_keys', |
|
352 | + true, |
|
353 | + $EE_Registration_Config |
|
354 | + ) |
|
355 | + ) { |
|
356 | + $valid_data['main_settings']['use_captcha'] = false; |
|
357 | + EE_Error::add_error( |
|
358 | + esc_html__( |
|
359 | + 'The use reCAPTCHA setting has been reset to "no". In order to enable the reCAPTCHA service, you must enter a Site Key and Secret Key.', |
|
360 | + 'event_espresso' |
|
361 | + ), |
|
362 | + __FILE__, |
|
363 | + __FUNCTION__, |
|
364 | + __LINE__ |
|
365 | + ); |
|
366 | + } |
|
367 | + $EE_Registration_Config->use_captcha = $valid_data['main_settings']['use_captcha']; |
|
368 | + $EE_Registration_Config->recaptcha_publickey = $valid_data['main_settings']['recaptcha_publickey']; |
|
369 | + $EE_Registration_Config->recaptcha_protected_forms = $valid_data['main_settings']['recaptcha_protected_forms']; |
|
370 | + $EE_Registration_Config->recaptcha_privatekey = $valid_data['main_settings']['recaptcha_privatekey']; |
|
371 | + $EE_Registration_Config->recaptcha_type = $valid_data['appearance_settings']['recaptcha_type']; |
|
372 | + $EE_Registration_Config->recaptcha_theme = $valid_data['appearance_settings']['recaptcha_theme']; |
|
373 | + $EE_Registration_Config->recaptcha_badge = $valid_data['appearance_settings']['recaptcha_badge']; |
|
374 | + $EE_Registration_Config->recaptcha_language = $valid_data['appearance_settings']['recaptcha_language']; |
|
375 | + } else { |
|
376 | + if ($recaptcha_settings_form->submission_error_message() !== '') { |
|
377 | + EE_Error::add_error( |
|
378 | + $recaptcha_settings_form->submission_error_message(), |
|
379 | + __FILE__, |
|
380 | + __FUNCTION__, |
|
381 | + __LINE__ |
|
382 | + ); |
|
383 | + } |
|
384 | + } |
|
385 | + } |
|
386 | + } catch (EE_Error $e) { |
|
387 | + $e->get_error(); |
|
388 | + } |
|
389 | + return $EE_Registration_Config; |
|
390 | + } |
|
391 | 391 | } |
@@ -6,33 +6,33 @@ |
||
6 | 6 | */ |
7 | 7 | |
8 | 8 | spl_autoload_register(function ($class) { |
9 | - if (substr($class, 0, 10) !== 'ReCaptcha\\') { |
|
10 | - /* If the class does not lie under the "ReCaptcha" namespace, |
|
9 | + if (substr($class, 0, 10) !== 'ReCaptcha\\') { |
|
10 | + /* If the class does not lie under the "ReCaptcha" namespace, |
|
11 | 11 | * then we can exit immediately. |
12 | 12 | */ |
13 | - return; |
|
14 | - } |
|
13 | + return; |
|
14 | + } |
|
15 | 15 | |
16 | - /* All of the classes have names like "ReCaptcha\Foo", so we need |
|
16 | + /* All of the classes have names like "ReCaptcha\Foo", so we need |
|
17 | 17 | * to replace the backslashes with frontslashes if we want the |
18 | 18 | * name to map directly to a location in the filesystem. |
19 | 19 | */ |
20 | - $class = str_replace('\\', '/', $class); |
|
20 | + $class = str_replace('\\', '/', $class); |
|
21 | 21 | |
22 | - /* First, check under the current directory. It is important that |
|
22 | + /* First, check under the current directory. It is important that |
|
23 | 23 | * we look here first, so that we don't waste time searching for |
24 | 24 | * test classes in the common case. |
25 | 25 | */ |
26 | - $path = dirname(__FILE__).'/'.$class.'.php'; |
|
27 | - if (is_readable($path)) { |
|
28 | - require_once $path; |
|
29 | - } |
|
26 | + $path = dirname(__FILE__).'/'.$class.'.php'; |
|
27 | + if (is_readable($path)) { |
|
28 | + require_once $path; |
|
29 | + } |
|
30 | 30 | |
31 | - /* If we didn't find what we're looking for already, maybe it's |
|
31 | + /* If we didn't find what we're looking for already, maybe it's |
|
32 | 32 | * a test class? |
33 | 33 | */ |
34 | - $path = dirname(__FILE__).'/../tests/'.$class.'.php'; |
|
35 | - if (is_readable($path)) { |
|
36 | - require_once $path; |
|
37 | - } |
|
34 | + $path = dirname(__FILE__).'/../tests/'.$class.'.php'; |
|
35 | + if (is_readable($path)) { |
|
36 | + require_once $path; |
|
37 | + } |
|
38 | 38 | }); |
@@ -5,7 +5,7 @@ |
||
5 | 5 | * classes. |
6 | 6 | */ |
7 | 7 | |
8 | -spl_autoload_register(function ($class) { |
|
8 | +spl_autoload_register(function($class) { |
|
9 | 9 | if (substr($class, 0, 10) !== 'ReCaptcha\\') { |
10 | 10 | /* If the class does not lie under the "ReCaptcha" namespace, |
11 | 11 | * then we can exit immediately. |