Completed
Branch update-venue-ui (4b9c7e)
by
unknown
02:27
created
core/domain/services/contexts/RequestTypeContextFactoryInterface.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -15,9 +15,9 @@
 block discarded – undo
15 15
 interface RequestTypeContextFactoryInterface
16 16
 {
17 17
 
18
-    /**
19
-     * @param string $slug
20
-     * @return RequestTypeContext
21
-     */
22
-    public function create($slug);
18
+	/**
19
+	 * @param string $slug
20
+	 * @return RequestTypeContext
21
+	 */
22
+	public function create($slug);
23 23
 }
Please login to merge, or discard this patch.
admin_pages/venues/templates/event_venues_metabox_content.template.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -5,9 +5,9 @@
 block discarded – undo
5 5
                 <?php echo $no_venues_info; ?>
6 6
                 <p><a href="admin.php?page=espresso_venues" target="_blank">
7 7
                         <?php echo __(
8
-                            'Add venues to the Venue Manager',
9
-                            'event_espresso'
10
-                        ) ?></a></p>
8
+							'Add venues to the Venue Manager',
9
+							'event_espresso'
10
+						) ?></a></p>
11 11
             </fieldset>
12 12
         </td>
13 13
     </tr>
Please login to merge, or discard this patch.
core/db_models/fields/EE_Datetime_Field.php 2 patches
Indentation   +752 added lines, -752 removed lines patch added patch discarded remove patch
@@ -15,757 +15,757 @@
 block discarded – undo
15 15
 class EE_Datetime_Field extends EE_Model_Field_Base
16 16
 {
17 17
 
18
-    /**
19
-     * The pattern we're looking for is if only the characters 0-9 are found and there are only
20
-     * 10 or more numbers (because 9 numbers even with all 9's would be sometime in 2001 )
21
-     *
22
-     * @type string unix_timestamp_regex
23
-     */
24
-    const unix_timestamp_regex = '/[0-9]{10,}/';
25
-
26
-    /**
27
-     * @type string mysql_timestamp_format
28
-     */
29
-    const mysql_timestamp_format = 'Y-m-d H:i:s';
30
-
31
-    /**
32
-     * @type string mysql_date_format
33
-     */
34
-    const mysql_date_format = 'Y-m-d';
35
-
36
-    /**
37
-     * @type string mysql_time_format
38
-     */
39
-    const mysql_time_format = 'H:i:s';
40
-
41
-    /**
42
-     * Const for using in the default value. If the field's default is set to this,
43
-     * then we will return the time of calling `get_default_value()`, not
44
-     * just the current time at construction
45
-     */
46
-    const now = 'now';
47
-
48
-    /**
49
-     * The following properties hold the default formats for date and time.
50
-     * Defaults are set via the constructor and can be overridden on class instantiation.
51
-     * However they can also be overridden later by the set_format() method
52
-     * (and corresponding set_date_format, set_time_format methods);
53
-     */
54
-    /**
55
-     * @type string $_date_format
56
-     */
57
-    protected $_date_format = '';
58
-
59
-    /**
60
-     * @type string $_time_format
61
-     */
62
-    protected $_time_format = '';
63
-
64
-    /**
65
-     * @type string $_pretty_date_format
66
-     */
67
-    protected $_pretty_date_format = '';
68
-
69
-    /**
70
-     * @type string $_pretty_time_format
71
-     */
72
-    protected $_pretty_time_format = '';
73
-
74
-    /**
75
-     * @type DateTimeZone $_DateTimeZone
76
-     */
77
-    protected $_DateTimeZone;
78
-
79
-    /**
80
-     * @type DateTimeZone $_UTC_DateTimeZone
81
-     */
82
-    protected $_UTC_DateTimeZone;
83
-
84
-    /**
85
-     * @type DateTimeZone $_blog_DateTimeZone
86
-     */
87
-    protected $_blog_DateTimeZone;
88
-
89
-
90
-    /**
91
-     * This property holds how we want the output returned when getting a datetime string.  It is set for the
92
-     * set_date_time_output() method.  By default this is empty.  When empty, we are assuming that we want both date
93
-     * and time returned via getters.
94
-     *
95
-     * @var mixed (null|string)
96
-     */
97
-    protected $_date_time_output;
98
-
99
-
100
-    /**
101
-     * timezone string
102
-     * This gets set by the constructor and can be changed by the "set_timezone()" method so that we know what timezone
103
-     * incoming strings|timestamps are in.  This can also be used before a get to set what timezone you want strings
104
-     * coming out of the object to be in.  Default timezone is the current WP timezone option setting
105
-     *
106
-     * @var string
107
-     */
108
-    protected $_timezone_string;
109
-
110
-
111
-    /**
112
-     * This holds whatever UTC offset for the blog (we automatically convert timezone strings into their related
113
-     * offsets for comparison purposes).
114
-     *
115
-     * @var int
116
-     */
117
-    protected $_blog_offset;
118
-
119
-
120
-
121
-    /**
122
-     * @param string $table_column
123
-     * @param string $nice_name
124
-     * @param bool   $nullable
125
-     * @param string $default_value
126
-     * @param string $timezone_string
127
-     * @param string $date_format
128
-     * @param string $time_format
129
-     * @param string $pretty_date_format
130
-     * @param string $pretty_time_format
131
-     * @throws EE_Error
132
-     * @throws InvalidArgumentException
133
-     */
134
-    public function __construct(
135
-        $table_column,
136
-        $nice_name,
137
-        $nullable,
138
-        $default_value,
139
-        $timezone_string = '',
140
-        $date_format = '',
141
-        $time_format = '',
142
-        $pretty_date_format = '',
143
-        $pretty_time_format = ''
144
-    ) {
145
-
146
-        $this->_date_format        = ! empty($date_format) ? $date_format : get_option('date_format');
147
-        $this->_time_format        = ! empty($time_format) ? $time_format : get_option('time_format');
148
-        $this->_pretty_date_format = ! empty($pretty_date_format) ? $pretty_date_format : get_option('date_format');
149
-        $this->_pretty_time_format = ! empty($pretty_time_format) ? $pretty_time_format : get_option('time_format');
150
-
151
-        parent::__construct($table_column, $nice_name, $nullable, $default_value);
152
-        $this->set_timezone($timezone_string);
153
-        $this->setSchemaFormat('date-time');
154
-    }
155
-
156
-
157
-    /**
158
-     * @return DateTimeZone
159
-     * @throws \EE_Error
160
-     */
161
-    public function get_UTC_DateTimeZone()
162
-    {
163
-        return $this->_UTC_DateTimeZone instanceof DateTimeZone
164
-            ? $this->_UTC_DateTimeZone
165
-            : $this->_create_timezone_object_from_timezone_string('UTC');
166
-    }
167
-
168
-
169
-    /**
170
-     * @return DateTimeZone
171
-     * @throws \EE_Error
172
-     */
173
-    public function get_blog_DateTimeZone()
174
-    {
175
-        return $this->_blog_DateTimeZone instanceof DateTimeZone
176
-            ? $this->_blog_DateTimeZone
177
-            : $this->_create_timezone_object_from_timezone_string('');
178
-    }
179
-
180
-
181
-    /**
182
-     * this prepares any incoming date data and make sure its converted to a utc unix timestamp
183
-     *
184
-     * @param  string|int $value_inputted_for_field_on_model_object could be a string formatted date time or int unix
185
-     *                                                              timestamp
186
-     * @return DateTime
187
-     */
188
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
189
-    {
190
-        return $this->_get_date_object($value_inputted_for_field_on_model_object);
191
-    }
192
-
193
-
194
-    /**
195
-     * This returns the format string to be used by getters depending on what the $_date_time_output property is set at.
196
-     * getters need to know whether we're just returning the date or the time or both.  By default we return both.
197
-     *
198
-     * @param bool $pretty If we're returning the pretty formats or standard format string.
199
-     * @return string    The final assembled format string.
200
-     */
201
-    protected function _get_date_time_output($pretty = false)
202
-    {
203
-
204
-        switch ($this->_date_time_output) {
205
-            case 'time':
206
-                return $pretty ? $this->_pretty_time_format : $this->_time_format;
207
-                break;
208
-
209
-            case 'date':
210
-                return $pretty ? $this->_pretty_date_format : $this->_date_format;
211
-                break;
212
-
213
-            default:
214
-                return $pretty
215
-                    ? $this->_pretty_date_format . ' ' . $this->_pretty_time_format
216
-                    : $this->_date_format . ' ' . $this->_time_format;
217
-        }
218
-    }
219
-
220
-
221
-    /**
222
-     * This just sets the $_date_time_output property so we can flag how date and times are formatted before being
223
-     * returned (using the format properties)
224
-     *
225
-     * @param string $what acceptable values are 'time' or 'date'.
226
-     *                     Any other value will be set but will always result
227
-     *                     in both 'date' and 'time' being returned.
228
-     * @return void
229
-     */
230
-    public function set_date_time_output($what = null)
231
-    {
232
-        $this->_date_time_output = $what;
233
-    }
234
-
235
-
236
-    /**
237
-     * See $_timezone property for description of what the timezone property is for.  This SETS the timezone internally
238
-     * for being able to reference what timezone we are running conversions on when converting TO the internal timezone
239
-     * (UTC Unix Timestamp) for the object OR when converting FROM the internal timezone (UTC Unix Timestamp).
240
-     * We also set some other properties in this method.
241
-     *
242
-     * @param string $timezone_string A valid timezone string as described by @link
243
-     *                                http://www.php.net/manual/en/timezones.php
244
-     * @return void
245
-     * @throws InvalidArgumentException
246
-     * @throws InvalidDataTypeException
247
-     * @throws InvalidInterfaceException
248
-     */
249
-    public function set_timezone($timezone_string)
250
-    {
251
-        if (empty($timezone_string) && $this->_timezone_string !== null) {
252
-            // leave the timezone AS-IS if we already have one and
253
-            // the function arg didn't provide one
254
-            return;
255
-        }
256
-        $timezone_string        = EEH_DTT_Helper::get_valid_timezone_string($timezone_string);
257
-        $this->_timezone_string = ! empty($timezone_string) ? $timezone_string : 'UTC';
258
-        $this->_DateTimeZone    = $this->_create_timezone_object_from_timezone_string($this->_timezone_string);
259
-    }
260
-
261
-
262
-    /**
263
-     * _create_timezone_object_from_timezone_name
264
-     *
265
-     * @access protected
266
-     * @param string $timezone_string
267
-     * @return \DateTimeZone
268
-     * @throws InvalidArgumentException
269
-     * @throws InvalidDataTypeException
270
-     * @throws InvalidInterfaceException
271
-     */
272
-    protected function _create_timezone_object_from_timezone_string($timezone_string = '')
273
-    {
274
-        return new DateTimeZone(EEH_DTT_Helper::get_valid_timezone_string($timezone_string));
275
-    }
276
-
277
-
278
-    /**
279
-     * This just returns whatever is set for the current timezone.
280
-     *
281
-     * @access public
282
-     * @return string timezone string
283
-     */
284
-    public function get_timezone()
285
-    {
286
-        return $this->_timezone_string;
287
-    }
288
-
289
-
290
-    /**
291
-     * set the $_date_format property
292
-     *
293
-     * @access public
294
-     * @param string $format a new date format (corresponding to formats accepted by PHP date() function)
295
-     * @param bool   $pretty Whether to set pretty format or not.
296
-     * @return void
297
-     */
298
-    public function set_date_format($format, $pretty = false)
299
-    {
300
-        if ($pretty) {
301
-            $this->_pretty_date_format = $format;
302
-        } else {
303
-            $this->_date_format = $format;
304
-        }
305
-    }
306
-
307
-
308
-    /**
309
-     * return the $_date_format property value.
310
-     *
311
-     * @param bool $pretty Whether to get pretty format or not.
312
-     * @return string
313
-     */
314
-    public function get_date_format($pretty = false)
315
-    {
316
-        return $pretty ? $this->_pretty_date_format : $this->_date_format;
317
-    }
318
-
319
-
320
-    /**
321
-     * set the $_time_format property
322
-     *
323
-     * @access public
324
-     * @param string $format a new time format (corresponding to formats accepted by PHP date() function)
325
-     * @param bool   $pretty Whether to set pretty format or not.
326
-     * @return void
327
-     */
328
-    public function set_time_format($format, $pretty = false)
329
-    {
330
-        if ($pretty) {
331
-            $this->_pretty_time_format = $format;
332
-        } else {
333
-            $this->_time_format = $format;
334
-        }
335
-    }
336
-
337
-
338
-    /**
339
-     * return the $_time_format property value.
340
-     *
341
-     * @param bool $pretty Whether to get pretty format or not.
342
-     * @return string
343
-     */
344
-    public function get_time_format($pretty = false)
345
-    {
346
-        return $pretty ? $this->_pretty_time_format : $this->_time_format;
347
-    }
348
-
349
-
350
-    /**
351
-     * set the $_pretty_date_format property
352
-     *
353
-     * @access public
354
-     * @param string $format a new pretty date format (corresponding to formats accepted by PHP date() function)
355
-     * @return void
356
-     */
357
-    public function set_pretty_date_format($format)
358
-    {
359
-        $this->_pretty_date_format = $format;
360
-    }
361
-
362
-
363
-    /**
364
-     * set the $_pretty_time_format property
365
-     *
366
-     * @access public
367
-     * @param string $format a new pretty time format (corresponding to formats accepted by PHP date() function)
368
-     * @return void
369
-     */
370
-    public function set_pretty_time_format($format)
371
-    {
372
-        $this->_pretty_time_format = $format;
373
-    }
374
-
375
-
376
-    /**
377
-     * Only sets the time portion of the datetime.
378
-     *
379
-     * @param string|DateTime $time_to_set_string like 8am OR a DateTime object.
380
-     * @param DateTime        $current            current DateTime object for the datetime field
381
-     * @return DateTime
382
-     */
383
-    public function prepare_for_set_with_new_time($time_to_set_string, DateTime $current)
384
-    {
385
-        // if $time_to_set_string is datetime object, then let's use it to set the parse array.
386
-        // Otherwise parse the string.
387
-        if ($time_to_set_string instanceof DateTime) {
388
-            $parsed = array(
389
-                'hour'   => $time_to_set_string->format('H'),
390
-                'minute' => $time_to_set_string->format('i'),
391
-                'second' => $time_to_set_string->format('s'),
392
-            );
393
-        } else {
394
-            // parse incoming string
395
-            $parsed = date_parse_from_format($this->_time_format, $time_to_set_string);
396
-        }
397
-        EEH_DTT_Helper::setTimezone($current, $this->_DateTimeZone);
398
-        return $current->setTime($parsed['hour'], $parsed['minute'], $parsed['second']);
399
-    }
400
-
401
-
402
-    /**
403
-     * Only sets the date portion of the datetime.
404
-     *
405
-     * @param string|DateTime $date_to_set_string like Friday, January 8th or a DateTime object.
406
-     * @param DateTime        $current            current DateTime object for the datetime field
407
-     * @return DateTime
408
-     */
409
-    public function prepare_for_set_with_new_date($date_to_set_string, DateTime $current)
410
-    {
411
-        // if $time_to_set_string is datetime object, then let's use it to set the parse array.
412
-        // Otherwise parse the string.
413
-        if ($date_to_set_string instanceof DateTime) {
414
-            $parsed = array(
415
-                'year'  => $date_to_set_string->format('Y'),
416
-                'month' => $date_to_set_string->format('m'),
417
-                'day'   => $date_to_set_string->format('d'),
418
-            );
419
-        } else {
420
-            // parse incoming string
421
-            $parsed = date_parse_from_format($this->_date_format, $date_to_set_string);
422
-        }
423
-        EEH_DTT_Helper::setTimezone($current, $this->_DateTimeZone);
424
-        return $current->setDate($parsed['year'], $parsed['month'], $parsed['day']);
425
-    }
426
-
427
-
428
-    /**
429
-     * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0 timezone).  When the
430
-     * datetime gets to this stage it should ALREADY be in UTC time
431
-     *
432
-     * @param  DateTime $DateTime
433
-     * @return string formatted date time for given timezone
434
-     * @throws \EE_Error
435
-     */
436
-    public function prepare_for_get($DateTime)
437
-    {
438
-        return $this->_prepare_for_display($DateTime);
439
-    }
440
-
441
-
442
-    /**
443
-     * This differs from prepare_for_get in that it considers whether the internal $_timezone differs
444
-     * from the set wp timezone.  If so, then it returns the datetime string formatted via
445
-     * _pretty_date_format, and _pretty_time_format.  However, it also appends a timezone
446
-     * abbreviation to the date_string.
447
-     *
448
-     * @param mixed $DateTime
449
-     * @param null  $schema
450
-     * @return string
451
-     * @throws \EE_Error
452
-     */
453
-    public function prepare_for_pretty_echoing($DateTime, $schema = null)
454
-    {
455
-        return $this->_prepare_for_display($DateTime, $schema ? $schema : true);
456
-    }
457
-
458
-
459
-    /**
460
-     * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0
461
-     * timezone).
462
-     *
463
-     * @param DateTime    $DateTime
464
-     * @param bool|string $schema
465
-     * @return string
466
-     * @throws \EE_Error
467
-     */
468
-    protected function _prepare_for_display($DateTime, $schema = false)
469
-    {
470
-        if (! $DateTime instanceof DateTime) {
471
-            if ($this->_nullable) {
472
-                return '';
473
-            } else {
474
-                if (WP_DEBUG) {
475
-                    throw new EE_Error(
476
-                        sprintf(
477
-                            __(
478
-                                'EE_Datetime_Field::_prepare_for_display requires a DateTime class to be the value for the $DateTime argument because the %s field is not nullable.',
479
-                                'event_espresso'
480
-                            ),
481
-                            $this->_nicename
482
-                        )
483
-                    );
484
-                } else {
485
-                    $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now);
486
-                    EE_Error::add_error(
487
-                        sprintf(
488
-                            __(
489
-                                'EE_Datetime_Field::_prepare_for_display requires a DateTime class to be the value for the $DateTime argument because the %s field is not nullable.  When WP_DEBUG is false, the value is set to "now" instead of throwing an exception.',
490
-                                'event_espresso'
491
-                            ),
492
-                            $this->_nicename
493
-                        )
494
-                    );
495
-                }
496
-            }
497
-        }
498
-        $format_string = $this->_get_date_time_output($schema);
499
-        EEH_DTT_Helper::setTimezone($DateTime, $this->_DateTimeZone);
500
-        if ($schema) {
501
-            if ($this->_display_timezone()) {
502
-                // must be explicit because schema could equal true.
503
-                if ($schema === 'no_html') {
504
-                    $timezone_string = ' (' . $DateTime->format('T') . ')';
505
-                } else {
506
-                    $timezone_string = ' <span class="ee_dtt_timezone_string">(' . $DateTime->format('T') . ')</span>';
507
-                }
508
-            } else {
509
-                $timezone_string = '';
510
-            }
511
-
512
-            return $DateTime->format($format_string) . $timezone_string;
513
-        }
514
-        return $DateTime->format($format_string);
515
-    }
516
-
517
-
518
-    /**
519
-     * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0
520
-     * timezone).
521
-     *
522
-     * @param  mixed $datetime_value u
523
-     * @return string mysql timestamp in UTC
524
-     * @throws \EE_Error
525
-     */
526
-    public function prepare_for_use_in_db($datetime_value)
527
-    {
528
-        // we allow an empty value or DateTime object, but nothing else.
529
-        if (! empty($datetime_value) && ! $datetime_value instanceof DateTime) {
530
-            throw new EE_Error(
531
-                sprintf(
532
-                    __(
533
-                        'The incoming value being prepared for setting in the database must either be empty or a php 
18
+	/**
19
+	 * The pattern we're looking for is if only the characters 0-9 are found and there are only
20
+	 * 10 or more numbers (because 9 numbers even with all 9's would be sometime in 2001 )
21
+	 *
22
+	 * @type string unix_timestamp_regex
23
+	 */
24
+	const unix_timestamp_regex = '/[0-9]{10,}/';
25
+
26
+	/**
27
+	 * @type string mysql_timestamp_format
28
+	 */
29
+	const mysql_timestamp_format = 'Y-m-d H:i:s';
30
+
31
+	/**
32
+	 * @type string mysql_date_format
33
+	 */
34
+	const mysql_date_format = 'Y-m-d';
35
+
36
+	/**
37
+	 * @type string mysql_time_format
38
+	 */
39
+	const mysql_time_format = 'H:i:s';
40
+
41
+	/**
42
+	 * Const for using in the default value. If the field's default is set to this,
43
+	 * then we will return the time of calling `get_default_value()`, not
44
+	 * just the current time at construction
45
+	 */
46
+	const now = 'now';
47
+
48
+	/**
49
+	 * The following properties hold the default formats for date and time.
50
+	 * Defaults are set via the constructor and can be overridden on class instantiation.
51
+	 * However they can also be overridden later by the set_format() method
52
+	 * (and corresponding set_date_format, set_time_format methods);
53
+	 */
54
+	/**
55
+	 * @type string $_date_format
56
+	 */
57
+	protected $_date_format = '';
58
+
59
+	/**
60
+	 * @type string $_time_format
61
+	 */
62
+	protected $_time_format = '';
63
+
64
+	/**
65
+	 * @type string $_pretty_date_format
66
+	 */
67
+	protected $_pretty_date_format = '';
68
+
69
+	/**
70
+	 * @type string $_pretty_time_format
71
+	 */
72
+	protected $_pretty_time_format = '';
73
+
74
+	/**
75
+	 * @type DateTimeZone $_DateTimeZone
76
+	 */
77
+	protected $_DateTimeZone;
78
+
79
+	/**
80
+	 * @type DateTimeZone $_UTC_DateTimeZone
81
+	 */
82
+	protected $_UTC_DateTimeZone;
83
+
84
+	/**
85
+	 * @type DateTimeZone $_blog_DateTimeZone
86
+	 */
87
+	protected $_blog_DateTimeZone;
88
+
89
+
90
+	/**
91
+	 * This property holds how we want the output returned when getting a datetime string.  It is set for the
92
+	 * set_date_time_output() method.  By default this is empty.  When empty, we are assuming that we want both date
93
+	 * and time returned via getters.
94
+	 *
95
+	 * @var mixed (null|string)
96
+	 */
97
+	protected $_date_time_output;
98
+
99
+
100
+	/**
101
+	 * timezone string
102
+	 * This gets set by the constructor and can be changed by the "set_timezone()" method so that we know what timezone
103
+	 * incoming strings|timestamps are in.  This can also be used before a get to set what timezone you want strings
104
+	 * coming out of the object to be in.  Default timezone is the current WP timezone option setting
105
+	 *
106
+	 * @var string
107
+	 */
108
+	protected $_timezone_string;
109
+
110
+
111
+	/**
112
+	 * This holds whatever UTC offset for the blog (we automatically convert timezone strings into their related
113
+	 * offsets for comparison purposes).
114
+	 *
115
+	 * @var int
116
+	 */
117
+	protected $_blog_offset;
118
+
119
+
120
+
121
+	/**
122
+	 * @param string $table_column
123
+	 * @param string $nice_name
124
+	 * @param bool   $nullable
125
+	 * @param string $default_value
126
+	 * @param string $timezone_string
127
+	 * @param string $date_format
128
+	 * @param string $time_format
129
+	 * @param string $pretty_date_format
130
+	 * @param string $pretty_time_format
131
+	 * @throws EE_Error
132
+	 * @throws InvalidArgumentException
133
+	 */
134
+	public function __construct(
135
+		$table_column,
136
+		$nice_name,
137
+		$nullable,
138
+		$default_value,
139
+		$timezone_string = '',
140
+		$date_format = '',
141
+		$time_format = '',
142
+		$pretty_date_format = '',
143
+		$pretty_time_format = ''
144
+	) {
145
+
146
+		$this->_date_format        = ! empty($date_format) ? $date_format : get_option('date_format');
147
+		$this->_time_format        = ! empty($time_format) ? $time_format : get_option('time_format');
148
+		$this->_pretty_date_format = ! empty($pretty_date_format) ? $pretty_date_format : get_option('date_format');
149
+		$this->_pretty_time_format = ! empty($pretty_time_format) ? $pretty_time_format : get_option('time_format');
150
+
151
+		parent::__construct($table_column, $nice_name, $nullable, $default_value);
152
+		$this->set_timezone($timezone_string);
153
+		$this->setSchemaFormat('date-time');
154
+	}
155
+
156
+
157
+	/**
158
+	 * @return DateTimeZone
159
+	 * @throws \EE_Error
160
+	 */
161
+	public function get_UTC_DateTimeZone()
162
+	{
163
+		return $this->_UTC_DateTimeZone instanceof DateTimeZone
164
+			? $this->_UTC_DateTimeZone
165
+			: $this->_create_timezone_object_from_timezone_string('UTC');
166
+	}
167
+
168
+
169
+	/**
170
+	 * @return DateTimeZone
171
+	 * @throws \EE_Error
172
+	 */
173
+	public function get_blog_DateTimeZone()
174
+	{
175
+		return $this->_blog_DateTimeZone instanceof DateTimeZone
176
+			? $this->_blog_DateTimeZone
177
+			: $this->_create_timezone_object_from_timezone_string('');
178
+	}
179
+
180
+
181
+	/**
182
+	 * this prepares any incoming date data and make sure its converted to a utc unix timestamp
183
+	 *
184
+	 * @param  string|int $value_inputted_for_field_on_model_object could be a string formatted date time or int unix
185
+	 *                                                              timestamp
186
+	 * @return DateTime
187
+	 */
188
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
189
+	{
190
+		return $this->_get_date_object($value_inputted_for_field_on_model_object);
191
+	}
192
+
193
+
194
+	/**
195
+	 * This returns the format string to be used by getters depending on what the $_date_time_output property is set at.
196
+	 * getters need to know whether we're just returning the date or the time or both.  By default we return both.
197
+	 *
198
+	 * @param bool $pretty If we're returning the pretty formats or standard format string.
199
+	 * @return string    The final assembled format string.
200
+	 */
201
+	protected function _get_date_time_output($pretty = false)
202
+	{
203
+
204
+		switch ($this->_date_time_output) {
205
+			case 'time':
206
+				return $pretty ? $this->_pretty_time_format : $this->_time_format;
207
+				break;
208
+
209
+			case 'date':
210
+				return $pretty ? $this->_pretty_date_format : $this->_date_format;
211
+				break;
212
+
213
+			default:
214
+				return $pretty
215
+					? $this->_pretty_date_format . ' ' . $this->_pretty_time_format
216
+					: $this->_date_format . ' ' . $this->_time_format;
217
+		}
218
+	}
219
+
220
+
221
+	/**
222
+	 * This just sets the $_date_time_output property so we can flag how date and times are formatted before being
223
+	 * returned (using the format properties)
224
+	 *
225
+	 * @param string $what acceptable values are 'time' or 'date'.
226
+	 *                     Any other value will be set but will always result
227
+	 *                     in both 'date' and 'time' being returned.
228
+	 * @return void
229
+	 */
230
+	public function set_date_time_output($what = null)
231
+	{
232
+		$this->_date_time_output = $what;
233
+	}
234
+
235
+
236
+	/**
237
+	 * See $_timezone property for description of what the timezone property is for.  This SETS the timezone internally
238
+	 * for being able to reference what timezone we are running conversions on when converting TO the internal timezone
239
+	 * (UTC Unix Timestamp) for the object OR when converting FROM the internal timezone (UTC Unix Timestamp).
240
+	 * We also set some other properties in this method.
241
+	 *
242
+	 * @param string $timezone_string A valid timezone string as described by @link
243
+	 *                                http://www.php.net/manual/en/timezones.php
244
+	 * @return void
245
+	 * @throws InvalidArgumentException
246
+	 * @throws InvalidDataTypeException
247
+	 * @throws InvalidInterfaceException
248
+	 */
249
+	public function set_timezone($timezone_string)
250
+	{
251
+		if (empty($timezone_string) && $this->_timezone_string !== null) {
252
+			// leave the timezone AS-IS if we already have one and
253
+			// the function arg didn't provide one
254
+			return;
255
+		}
256
+		$timezone_string        = EEH_DTT_Helper::get_valid_timezone_string($timezone_string);
257
+		$this->_timezone_string = ! empty($timezone_string) ? $timezone_string : 'UTC';
258
+		$this->_DateTimeZone    = $this->_create_timezone_object_from_timezone_string($this->_timezone_string);
259
+	}
260
+
261
+
262
+	/**
263
+	 * _create_timezone_object_from_timezone_name
264
+	 *
265
+	 * @access protected
266
+	 * @param string $timezone_string
267
+	 * @return \DateTimeZone
268
+	 * @throws InvalidArgumentException
269
+	 * @throws InvalidDataTypeException
270
+	 * @throws InvalidInterfaceException
271
+	 */
272
+	protected function _create_timezone_object_from_timezone_string($timezone_string = '')
273
+	{
274
+		return new DateTimeZone(EEH_DTT_Helper::get_valid_timezone_string($timezone_string));
275
+	}
276
+
277
+
278
+	/**
279
+	 * This just returns whatever is set for the current timezone.
280
+	 *
281
+	 * @access public
282
+	 * @return string timezone string
283
+	 */
284
+	public function get_timezone()
285
+	{
286
+		return $this->_timezone_string;
287
+	}
288
+
289
+
290
+	/**
291
+	 * set the $_date_format property
292
+	 *
293
+	 * @access public
294
+	 * @param string $format a new date format (corresponding to formats accepted by PHP date() function)
295
+	 * @param bool   $pretty Whether to set pretty format or not.
296
+	 * @return void
297
+	 */
298
+	public function set_date_format($format, $pretty = false)
299
+	{
300
+		if ($pretty) {
301
+			$this->_pretty_date_format = $format;
302
+		} else {
303
+			$this->_date_format = $format;
304
+		}
305
+	}
306
+
307
+
308
+	/**
309
+	 * return the $_date_format property value.
310
+	 *
311
+	 * @param bool $pretty Whether to get pretty format or not.
312
+	 * @return string
313
+	 */
314
+	public function get_date_format($pretty = false)
315
+	{
316
+		return $pretty ? $this->_pretty_date_format : $this->_date_format;
317
+	}
318
+
319
+
320
+	/**
321
+	 * set the $_time_format property
322
+	 *
323
+	 * @access public
324
+	 * @param string $format a new time format (corresponding to formats accepted by PHP date() function)
325
+	 * @param bool   $pretty Whether to set pretty format or not.
326
+	 * @return void
327
+	 */
328
+	public function set_time_format($format, $pretty = false)
329
+	{
330
+		if ($pretty) {
331
+			$this->_pretty_time_format = $format;
332
+		} else {
333
+			$this->_time_format = $format;
334
+		}
335
+	}
336
+
337
+
338
+	/**
339
+	 * return the $_time_format property value.
340
+	 *
341
+	 * @param bool $pretty Whether to get pretty format or not.
342
+	 * @return string
343
+	 */
344
+	public function get_time_format($pretty = false)
345
+	{
346
+		return $pretty ? $this->_pretty_time_format : $this->_time_format;
347
+	}
348
+
349
+
350
+	/**
351
+	 * set the $_pretty_date_format property
352
+	 *
353
+	 * @access public
354
+	 * @param string $format a new pretty date format (corresponding to formats accepted by PHP date() function)
355
+	 * @return void
356
+	 */
357
+	public function set_pretty_date_format($format)
358
+	{
359
+		$this->_pretty_date_format = $format;
360
+	}
361
+
362
+
363
+	/**
364
+	 * set the $_pretty_time_format property
365
+	 *
366
+	 * @access public
367
+	 * @param string $format a new pretty time format (corresponding to formats accepted by PHP date() function)
368
+	 * @return void
369
+	 */
370
+	public function set_pretty_time_format($format)
371
+	{
372
+		$this->_pretty_time_format = $format;
373
+	}
374
+
375
+
376
+	/**
377
+	 * Only sets the time portion of the datetime.
378
+	 *
379
+	 * @param string|DateTime $time_to_set_string like 8am OR a DateTime object.
380
+	 * @param DateTime        $current            current DateTime object for the datetime field
381
+	 * @return DateTime
382
+	 */
383
+	public function prepare_for_set_with_new_time($time_to_set_string, DateTime $current)
384
+	{
385
+		// if $time_to_set_string is datetime object, then let's use it to set the parse array.
386
+		// Otherwise parse the string.
387
+		if ($time_to_set_string instanceof DateTime) {
388
+			$parsed = array(
389
+				'hour'   => $time_to_set_string->format('H'),
390
+				'minute' => $time_to_set_string->format('i'),
391
+				'second' => $time_to_set_string->format('s'),
392
+			);
393
+		} else {
394
+			// parse incoming string
395
+			$parsed = date_parse_from_format($this->_time_format, $time_to_set_string);
396
+		}
397
+		EEH_DTT_Helper::setTimezone($current, $this->_DateTimeZone);
398
+		return $current->setTime($parsed['hour'], $parsed['minute'], $parsed['second']);
399
+	}
400
+
401
+
402
+	/**
403
+	 * Only sets the date portion of the datetime.
404
+	 *
405
+	 * @param string|DateTime $date_to_set_string like Friday, January 8th or a DateTime object.
406
+	 * @param DateTime        $current            current DateTime object for the datetime field
407
+	 * @return DateTime
408
+	 */
409
+	public function prepare_for_set_with_new_date($date_to_set_string, DateTime $current)
410
+	{
411
+		// if $time_to_set_string is datetime object, then let's use it to set the parse array.
412
+		// Otherwise parse the string.
413
+		if ($date_to_set_string instanceof DateTime) {
414
+			$parsed = array(
415
+				'year'  => $date_to_set_string->format('Y'),
416
+				'month' => $date_to_set_string->format('m'),
417
+				'day'   => $date_to_set_string->format('d'),
418
+			);
419
+		} else {
420
+			// parse incoming string
421
+			$parsed = date_parse_from_format($this->_date_format, $date_to_set_string);
422
+		}
423
+		EEH_DTT_Helper::setTimezone($current, $this->_DateTimeZone);
424
+		return $current->setDate($parsed['year'], $parsed['month'], $parsed['day']);
425
+	}
426
+
427
+
428
+	/**
429
+	 * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0 timezone).  When the
430
+	 * datetime gets to this stage it should ALREADY be in UTC time
431
+	 *
432
+	 * @param  DateTime $DateTime
433
+	 * @return string formatted date time for given timezone
434
+	 * @throws \EE_Error
435
+	 */
436
+	public function prepare_for_get($DateTime)
437
+	{
438
+		return $this->_prepare_for_display($DateTime);
439
+	}
440
+
441
+
442
+	/**
443
+	 * This differs from prepare_for_get in that it considers whether the internal $_timezone differs
444
+	 * from the set wp timezone.  If so, then it returns the datetime string formatted via
445
+	 * _pretty_date_format, and _pretty_time_format.  However, it also appends a timezone
446
+	 * abbreviation to the date_string.
447
+	 *
448
+	 * @param mixed $DateTime
449
+	 * @param null  $schema
450
+	 * @return string
451
+	 * @throws \EE_Error
452
+	 */
453
+	public function prepare_for_pretty_echoing($DateTime, $schema = null)
454
+	{
455
+		return $this->_prepare_for_display($DateTime, $schema ? $schema : true);
456
+	}
457
+
458
+
459
+	/**
460
+	 * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0
461
+	 * timezone).
462
+	 *
463
+	 * @param DateTime    $DateTime
464
+	 * @param bool|string $schema
465
+	 * @return string
466
+	 * @throws \EE_Error
467
+	 */
468
+	protected function _prepare_for_display($DateTime, $schema = false)
469
+	{
470
+		if (! $DateTime instanceof DateTime) {
471
+			if ($this->_nullable) {
472
+				return '';
473
+			} else {
474
+				if (WP_DEBUG) {
475
+					throw new EE_Error(
476
+						sprintf(
477
+							__(
478
+								'EE_Datetime_Field::_prepare_for_display requires a DateTime class to be the value for the $DateTime argument because the %s field is not nullable.',
479
+								'event_espresso'
480
+							),
481
+							$this->_nicename
482
+						)
483
+					);
484
+				} else {
485
+					$DateTime = new DbSafeDateTime(\EE_Datetime_Field::now);
486
+					EE_Error::add_error(
487
+						sprintf(
488
+							__(
489
+								'EE_Datetime_Field::_prepare_for_display requires a DateTime class to be the value for the $DateTime argument because the %s field is not nullable.  When WP_DEBUG is false, the value is set to "now" instead of throwing an exception.',
490
+								'event_espresso'
491
+							),
492
+							$this->_nicename
493
+						)
494
+					);
495
+				}
496
+			}
497
+		}
498
+		$format_string = $this->_get_date_time_output($schema);
499
+		EEH_DTT_Helper::setTimezone($DateTime, $this->_DateTimeZone);
500
+		if ($schema) {
501
+			if ($this->_display_timezone()) {
502
+				// must be explicit because schema could equal true.
503
+				if ($schema === 'no_html') {
504
+					$timezone_string = ' (' . $DateTime->format('T') . ')';
505
+				} else {
506
+					$timezone_string = ' <span class="ee_dtt_timezone_string">(' . $DateTime->format('T') . ')</span>';
507
+				}
508
+			} else {
509
+				$timezone_string = '';
510
+			}
511
+
512
+			return $DateTime->format($format_string) . $timezone_string;
513
+		}
514
+		return $DateTime->format($format_string);
515
+	}
516
+
517
+
518
+	/**
519
+	 * This prepares the EE_DateTime value to be saved to the db as mysql timestamp (UTC +0
520
+	 * timezone).
521
+	 *
522
+	 * @param  mixed $datetime_value u
523
+	 * @return string mysql timestamp in UTC
524
+	 * @throws \EE_Error
525
+	 */
526
+	public function prepare_for_use_in_db($datetime_value)
527
+	{
528
+		// we allow an empty value or DateTime object, but nothing else.
529
+		if (! empty($datetime_value) && ! $datetime_value instanceof DateTime) {
530
+			throw new EE_Error(
531
+				sprintf(
532
+					__(
533
+						'The incoming value being prepared for setting in the database must either be empty or a php 
534 534
             		    DateTime object, instead of: %1$s %2$s',
535
-                        'event_espresso'
536
-                    ),
537
-                    '<br />',
538
-                    print_r($datetime_value, true)
539
-                )
540
-            );
541
-        }
542
-
543
-        if ($datetime_value instanceof DateTime) {
544
-            if (! $datetime_value instanceof DbSafeDateTime) {
545
-                $datetime_value = DbSafeDateTime::createFromDateTime($datetime_value);
546
-            }
547
-            EEH_DTT_Helper::setTimezone($datetime_value, $this->get_UTC_DateTimeZone());
548
-            return $datetime_value->format(
549
-                EE_Datetime_Field::mysql_timestamp_format
550
-            );
551
-        }
552
-
553
-        // if $datetime_value is empty, and ! $this->_nullable, use current_time() but set the GMT flag to true
554
-        return ! $this->_nullable && empty($datetime_value) ? current_time('mysql', true) : null;
555
-    }
556
-
557
-
558
-    /**
559
-     * This prepares the datetime for internal usage as a PHP DateTime object OR null (if nullable is
560
-     * allowed)
561
-     *
562
-     * @param string $datetime_string mysql timestamp in UTC
563
-     * @return  mixed null | DateTime
564
-     * @throws \EE_Error
565
-     */
566
-    public function prepare_for_set_from_db($datetime_string)
567
-    {
568
-        // if $datetime_value is empty, and ! $this->_nullable, just use time()
569
-        if (empty($datetime_string) && $this->_nullable) {
570
-            return null;
571
-        }
572
-        // datetime strings from the db should ALWAYS be in UTC+0, so use UTC_DateTimeZone when creating
573
-        if (empty($datetime_string)) {
574
-            $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->get_UTC_DateTimeZone());
575
-        } else {
576
-            $DateTime = DbSafeDateTime::createFromFormat(
577
-                EE_Datetime_Field::mysql_timestamp_format,
578
-                $datetime_string,
579
-                $this->get_UTC_DateTimeZone()
580
-            );
581
-        }
582
-
583
-        if (! $DateTime instanceof DbSafeDateTime) {
584
-            // if still no datetime object, then let's just use now
585
-            $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->get_UTC_DateTimeZone());
586
-        }
587
-        // THEN apply the field's set DateTimeZone
588
-        EEH_DTT_Helper::setTimezone($DateTime, $this->_DateTimeZone);
589
-        return $DateTime;
590
-    }
591
-
592
-
593
-    /**
594
-     * All this method does is determine if we're going to display the timezone string or not on any output.
595
-     * To determine this we check if the set timezone offset is different than the blog's set timezone offset.
596
-     * If so, then true.
597
-     *
598
-     * @return bool true for yes false for no
599
-     * @throws \EE_Error
600
-     */
601
-    protected function _display_timezone()
602
-    {
603
-
604
-        // first let's do a comparison of timezone strings.
605
-        // If they match then we can get out without any further calculations
606
-        $blog_string = get_option('timezone_string');
607
-        if ($blog_string === $this->_timezone_string) {
608
-            return false;
609
-        }
610
-        // now we need to calc the offset for the timezone string so we can compare with the blog offset.
611
-        $this_offset = $this->get_timezone_offset($this->_DateTimeZone);
612
-        $blog_offset = $this->get_timezone_offset($this->get_blog_DateTimeZone());
613
-        // now compare
614
-        return $blog_offset !== $this_offset;
615
-    }
616
-
617
-
618
-    /**
619
-     * This method returns a php DateTime object for setting on the EE_Base_Class model.
620
-     * EE passes around DateTime objects because they are MUCH easier to manipulate and deal
621
-     * with.
622
-     *
623
-     * @param int|string|DateTime $date_string            This should be the incoming date string.  It's assumed to be
624
-     *                                                    in the format that is set on the date_field (or DateTime
625
-     *                                                    object)!
626
-     * @return DateTime
627
-     */
628
-    protected function _get_date_object($date_string)
629
-    {
630
-        // first if this is an empty date_string and nullable is allowed, just return null.
631
-        if ($this->_nullable && empty($date_string)) {
632
-            return null;
633
-        }
634
-
635
-        // if incoming date
636
-        if ($date_string instanceof DateTime) {
637
-            EEH_DTT_Helper::setTimezone($date_string, $this->_DateTimeZone);
638
-            return $date_string;
639
-        }
640
-        // if empty date_string and made it here.
641
-        // Return a datetime object for now in the given timezone.
642
-        if (empty($date_string)) {
643
-            return new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
644
-        }
645
-        // if $date_string is matches something that looks like a Unix timestamp let's just use it.
646
-        if (preg_match(EE_Datetime_Field::unix_timestamp_regex, $date_string)) {
647
-            try {
648
-                // This is operating under the assumption that the incoming Unix timestamp
649
-                // is an ACTUAL Unix timestamp and not the calculated one output by current_time('timestamp');
650
-                $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
651
-                $DateTime->setTimestamp($date_string);
652
-
653
-                return $DateTime;
654
-            } catch (Exception $e) {
655
-                // should be rare, but if things got fooled then let's just continue
656
-            }
657
-        }
658
-        // not a unix timestamp.  So we will use the set format on this object and set timezone to
659
-        // create the DateTime object.
660
-        $format = $this->_date_format . ' ' . $this->_time_format;
661
-        try {
662
-            $DateTime = DbSafeDateTime::createFromFormat($format, $date_string, $this->_DateTimeZone);
663
-            if (! $DateTime instanceof DbSafeDateTime) {
664
-                throw new EE_Error(
665
-                    sprintf(
666
-                        __('"%1$s" does not represent a valid Date Time in the format "%2$s".', 'event_espresso'),
667
-                        $date_string,
668
-                        $format
669
-                    )
670
-                );
671
-            }
672
-        } catch (Exception $e) {
673
-            // if we made it here then likely then something went really wrong.
674
-            // Instead of throwing an exception, let's just return a DateTime object for now, in the set timezone.
675
-            $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
676
-        }
677
-
678
-        return $DateTime;
679
-    }
680
-
681
-
682
-
683
-    /**
684
-     * get_timezone_transitions
685
-     *
686
-     * @param \DateTimeZone $DateTimeZone
687
-     * @param int           $time
688
-     * @param bool          $first_only
689
-     * @return mixed
690
-     */
691
-    public function get_timezone_transitions(DateTimeZone $DateTimeZone, $time = null, $first_only = true)
692
-    {
693
-        return EEH_DTT_Helper::get_timezone_transitions($DateTimeZone, $time, $first_only);
694
-    }
695
-
696
-
697
-
698
-    /**
699
-     * get_timezone_offset
700
-     *
701
-     * @param \DateTimeZone $DateTimeZone
702
-     * @param int           $time
703
-     * @return mixed
704
-     * @throws \DomainException
705
-     */
706
-    public function get_timezone_offset(DateTimeZone $DateTimeZone, $time = null)
707
-    {
708
-        return EEH_DTT_Helper::get_timezone_offset($DateTimeZone, $time);
709
-    }
710
-
711
-
712
-    /**
713
-     * This will take an incoming timezone string and return the abbreviation for that timezone
714
-     *
715
-     * @param  string $timezone_string
716
-     * @return string           abbreviation
717
-     * @throws \EE_Error
718
-     */
719
-    public function get_timezone_abbrev($timezone_string)
720
-    {
721
-        $timezone_string = EEH_DTT_Helper::get_valid_timezone_string($timezone_string);
722
-        $dateTime        = new DateTime(\EE_Datetime_Field::now, new DateTimeZone($timezone_string));
723
-
724
-        return $dateTime->format('T');
725
-    }
726
-
727
-    /**
728
-     * Overrides the parent to allow for having a dynamic "now" value
729
-     *
730
-     * @return mixed
731
-     */
732
-    public function get_default_value()
733
-    {
734
-        if ($this->_default_value === EE_Datetime_Field::now) {
735
-            return time();
736
-        } else {
737
-            return parent::get_default_value();
738
-        }
739
-    }
740
-
741
-    /**
742
-     * Gets the default datetime object from the field's default time
743
-     * @since 4.9.66.p
744
-     * @return DbSafeDateTime|null
745
-     * @throws InvalidArgumentException
746
-     * @throws InvalidDataTypeException
747
-     * @throws InvalidInterfaceException
748
-     */
749
-    public function getDefaultDateTimeObj()
750
-    {
751
-        $default_raw = $this->get_default_value();
752
-        if ($default_raw instanceof DateTime) {
753
-            return $default_raw;
754
-        } elseif (is_null($default_raw)) {
755
-            return $default_raw;
756
-        } else {
757
-            return new DbSafeDateTime(
758
-                $this->get_default_value(),
759
-                EEH_DTT_Helper::get_valid_timezone_string($this->get_timezone())
760
-            );
761
-        }
762
-    }
763
-
764
-    public function getSchemaDescription()
765
-    {
766
-        return sprintf(
767
-            esc_html__('%s - the value for this field is in the timezone of the site.', 'event_espresso'),
768
-            $this->get_nicename()
769
-        );
770
-    }
535
+						'event_espresso'
536
+					),
537
+					'<br />',
538
+					print_r($datetime_value, true)
539
+				)
540
+			);
541
+		}
542
+
543
+		if ($datetime_value instanceof DateTime) {
544
+			if (! $datetime_value instanceof DbSafeDateTime) {
545
+				$datetime_value = DbSafeDateTime::createFromDateTime($datetime_value);
546
+			}
547
+			EEH_DTT_Helper::setTimezone($datetime_value, $this->get_UTC_DateTimeZone());
548
+			return $datetime_value->format(
549
+				EE_Datetime_Field::mysql_timestamp_format
550
+			);
551
+		}
552
+
553
+		// if $datetime_value is empty, and ! $this->_nullable, use current_time() but set the GMT flag to true
554
+		return ! $this->_nullable && empty($datetime_value) ? current_time('mysql', true) : null;
555
+	}
556
+
557
+
558
+	/**
559
+	 * This prepares the datetime for internal usage as a PHP DateTime object OR null (if nullable is
560
+	 * allowed)
561
+	 *
562
+	 * @param string $datetime_string mysql timestamp in UTC
563
+	 * @return  mixed null | DateTime
564
+	 * @throws \EE_Error
565
+	 */
566
+	public function prepare_for_set_from_db($datetime_string)
567
+	{
568
+		// if $datetime_value is empty, and ! $this->_nullable, just use time()
569
+		if (empty($datetime_string) && $this->_nullable) {
570
+			return null;
571
+		}
572
+		// datetime strings from the db should ALWAYS be in UTC+0, so use UTC_DateTimeZone when creating
573
+		if (empty($datetime_string)) {
574
+			$DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->get_UTC_DateTimeZone());
575
+		} else {
576
+			$DateTime = DbSafeDateTime::createFromFormat(
577
+				EE_Datetime_Field::mysql_timestamp_format,
578
+				$datetime_string,
579
+				$this->get_UTC_DateTimeZone()
580
+			);
581
+		}
582
+
583
+		if (! $DateTime instanceof DbSafeDateTime) {
584
+			// if still no datetime object, then let's just use now
585
+			$DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->get_UTC_DateTimeZone());
586
+		}
587
+		// THEN apply the field's set DateTimeZone
588
+		EEH_DTT_Helper::setTimezone($DateTime, $this->_DateTimeZone);
589
+		return $DateTime;
590
+	}
591
+
592
+
593
+	/**
594
+	 * All this method does is determine if we're going to display the timezone string or not on any output.
595
+	 * To determine this we check if the set timezone offset is different than the blog's set timezone offset.
596
+	 * If so, then true.
597
+	 *
598
+	 * @return bool true for yes false for no
599
+	 * @throws \EE_Error
600
+	 */
601
+	protected function _display_timezone()
602
+	{
603
+
604
+		// first let's do a comparison of timezone strings.
605
+		// If they match then we can get out without any further calculations
606
+		$blog_string = get_option('timezone_string');
607
+		if ($blog_string === $this->_timezone_string) {
608
+			return false;
609
+		}
610
+		// now we need to calc the offset for the timezone string so we can compare with the blog offset.
611
+		$this_offset = $this->get_timezone_offset($this->_DateTimeZone);
612
+		$blog_offset = $this->get_timezone_offset($this->get_blog_DateTimeZone());
613
+		// now compare
614
+		return $blog_offset !== $this_offset;
615
+	}
616
+
617
+
618
+	/**
619
+	 * This method returns a php DateTime object for setting on the EE_Base_Class model.
620
+	 * EE passes around DateTime objects because they are MUCH easier to manipulate and deal
621
+	 * with.
622
+	 *
623
+	 * @param int|string|DateTime $date_string            This should be the incoming date string.  It's assumed to be
624
+	 *                                                    in the format that is set on the date_field (or DateTime
625
+	 *                                                    object)!
626
+	 * @return DateTime
627
+	 */
628
+	protected function _get_date_object($date_string)
629
+	{
630
+		// first if this is an empty date_string and nullable is allowed, just return null.
631
+		if ($this->_nullable && empty($date_string)) {
632
+			return null;
633
+		}
634
+
635
+		// if incoming date
636
+		if ($date_string instanceof DateTime) {
637
+			EEH_DTT_Helper::setTimezone($date_string, $this->_DateTimeZone);
638
+			return $date_string;
639
+		}
640
+		// if empty date_string and made it here.
641
+		// Return a datetime object for now in the given timezone.
642
+		if (empty($date_string)) {
643
+			return new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
644
+		}
645
+		// if $date_string is matches something that looks like a Unix timestamp let's just use it.
646
+		if (preg_match(EE_Datetime_Field::unix_timestamp_regex, $date_string)) {
647
+			try {
648
+				// This is operating under the assumption that the incoming Unix timestamp
649
+				// is an ACTUAL Unix timestamp and not the calculated one output by current_time('timestamp');
650
+				$DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
651
+				$DateTime->setTimestamp($date_string);
652
+
653
+				return $DateTime;
654
+			} catch (Exception $e) {
655
+				// should be rare, but if things got fooled then let's just continue
656
+			}
657
+		}
658
+		// not a unix timestamp.  So we will use the set format on this object and set timezone to
659
+		// create the DateTime object.
660
+		$format = $this->_date_format . ' ' . $this->_time_format;
661
+		try {
662
+			$DateTime = DbSafeDateTime::createFromFormat($format, $date_string, $this->_DateTimeZone);
663
+			if (! $DateTime instanceof DbSafeDateTime) {
664
+				throw new EE_Error(
665
+					sprintf(
666
+						__('"%1$s" does not represent a valid Date Time in the format "%2$s".', 'event_espresso'),
667
+						$date_string,
668
+						$format
669
+					)
670
+				);
671
+			}
672
+		} catch (Exception $e) {
673
+			// if we made it here then likely then something went really wrong.
674
+			// Instead of throwing an exception, let's just return a DateTime object for now, in the set timezone.
675
+			$DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->_DateTimeZone);
676
+		}
677
+
678
+		return $DateTime;
679
+	}
680
+
681
+
682
+
683
+	/**
684
+	 * get_timezone_transitions
685
+	 *
686
+	 * @param \DateTimeZone $DateTimeZone
687
+	 * @param int           $time
688
+	 * @param bool          $first_only
689
+	 * @return mixed
690
+	 */
691
+	public function get_timezone_transitions(DateTimeZone $DateTimeZone, $time = null, $first_only = true)
692
+	{
693
+		return EEH_DTT_Helper::get_timezone_transitions($DateTimeZone, $time, $first_only);
694
+	}
695
+
696
+
697
+
698
+	/**
699
+	 * get_timezone_offset
700
+	 *
701
+	 * @param \DateTimeZone $DateTimeZone
702
+	 * @param int           $time
703
+	 * @return mixed
704
+	 * @throws \DomainException
705
+	 */
706
+	public function get_timezone_offset(DateTimeZone $DateTimeZone, $time = null)
707
+	{
708
+		return EEH_DTT_Helper::get_timezone_offset($DateTimeZone, $time);
709
+	}
710
+
711
+
712
+	/**
713
+	 * This will take an incoming timezone string and return the abbreviation for that timezone
714
+	 *
715
+	 * @param  string $timezone_string
716
+	 * @return string           abbreviation
717
+	 * @throws \EE_Error
718
+	 */
719
+	public function get_timezone_abbrev($timezone_string)
720
+	{
721
+		$timezone_string = EEH_DTT_Helper::get_valid_timezone_string($timezone_string);
722
+		$dateTime        = new DateTime(\EE_Datetime_Field::now, new DateTimeZone($timezone_string));
723
+
724
+		return $dateTime->format('T');
725
+	}
726
+
727
+	/**
728
+	 * Overrides the parent to allow for having a dynamic "now" value
729
+	 *
730
+	 * @return mixed
731
+	 */
732
+	public function get_default_value()
733
+	{
734
+		if ($this->_default_value === EE_Datetime_Field::now) {
735
+			return time();
736
+		} else {
737
+			return parent::get_default_value();
738
+		}
739
+	}
740
+
741
+	/**
742
+	 * Gets the default datetime object from the field's default time
743
+	 * @since 4.9.66.p
744
+	 * @return DbSafeDateTime|null
745
+	 * @throws InvalidArgumentException
746
+	 * @throws InvalidDataTypeException
747
+	 * @throws InvalidInterfaceException
748
+	 */
749
+	public function getDefaultDateTimeObj()
750
+	{
751
+		$default_raw = $this->get_default_value();
752
+		if ($default_raw instanceof DateTime) {
753
+			return $default_raw;
754
+		} elseif (is_null($default_raw)) {
755
+			return $default_raw;
756
+		} else {
757
+			return new DbSafeDateTime(
758
+				$this->get_default_value(),
759
+				EEH_DTT_Helper::get_valid_timezone_string($this->get_timezone())
760
+			);
761
+		}
762
+	}
763
+
764
+	public function getSchemaDescription()
765
+	{
766
+		return sprintf(
767
+			esc_html__('%s - the value for this field is in the timezone of the site.', 'event_espresso'),
768
+			$this->get_nicename()
769
+		);
770
+	}
771 771
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -212,8 +212,8 @@  discard block
 block discarded – undo
212 212
 
213 213
             default:
214 214
                 return $pretty
215
-                    ? $this->_pretty_date_format . ' ' . $this->_pretty_time_format
216
-                    : $this->_date_format . ' ' . $this->_time_format;
215
+                    ? $this->_pretty_date_format.' '.$this->_pretty_time_format
216
+                    : $this->_date_format.' '.$this->_time_format;
217 217
         }
218 218
     }
219 219
 
@@ -467,7 +467,7 @@  discard block
 block discarded – undo
467 467
      */
468 468
     protected function _prepare_for_display($DateTime, $schema = false)
469 469
     {
470
-        if (! $DateTime instanceof DateTime) {
470
+        if ( ! $DateTime instanceof DateTime) {
471 471
             if ($this->_nullable) {
472 472
                 return '';
473 473
             } else {
@@ -501,15 +501,15 @@  discard block
 block discarded – undo
501 501
             if ($this->_display_timezone()) {
502 502
                 // must be explicit because schema could equal true.
503 503
                 if ($schema === 'no_html') {
504
-                    $timezone_string = ' (' . $DateTime->format('T') . ')';
504
+                    $timezone_string = ' ('.$DateTime->format('T').')';
505 505
                 } else {
506
-                    $timezone_string = ' <span class="ee_dtt_timezone_string">(' . $DateTime->format('T') . ')</span>';
506
+                    $timezone_string = ' <span class="ee_dtt_timezone_string">('.$DateTime->format('T').')</span>';
507 507
                 }
508 508
             } else {
509 509
                 $timezone_string = '';
510 510
             }
511 511
 
512
-            return $DateTime->format($format_string) . $timezone_string;
512
+            return $DateTime->format($format_string).$timezone_string;
513 513
         }
514 514
         return $DateTime->format($format_string);
515 515
     }
@@ -526,7 +526,7 @@  discard block
 block discarded – undo
526 526
     public function prepare_for_use_in_db($datetime_value)
527 527
     {
528 528
         // we allow an empty value or DateTime object, but nothing else.
529
-        if (! empty($datetime_value) && ! $datetime_value instanceof DateTime) {
529
+        if ( ! empty($datetime_value) && ! $datetime_value instanceof DateTime) {
530 530
             throw new EE_Error(
531 531
                 sprintf(
532 532
                     __(
@@ -541,7 +541,7 @@  discard block
 block discarded – undo
541 541
         }
542 542
 
543 543
         if ($datetime_value instanceof DateTime) {
544
-            if (! $datetime_value instanceof DbSafeDateTime) {
544
+            if ( ! $datetime_value instanceof DbSafeDateTime) {
545 545
                 $datetime_value = DbSafeDateTime::createFromDateTime($datetime_value);
546 546
             }
547 547
             EEH_DTT_Helper::setTimezone($datetime_value, $this->get_UTC_DateTimeZone());
@@ -580,7 +580,7 @@  discard block
 block discarded – undo
580 580
             );
581 581
         }
582 582
 
583
-        if (! $DateTime instanceof DbSafeDateTime) {
583
+        if ( ! $DateTime instanceof DbSafeDateTime) {
584 584
             // if still no datetime object, then let's just use now
585 585
             $DateTime = new DbSafeDateTime(\EE_Datetime_Field::now, $this->get_UTC_DateTimeZone());
586 586
         }
@@ -657,10 +657,10 @@  discard block
 block discarded – undo
657 657
         }
658 658
         // not a unix timestamp.  So we will use the set format on this object and set timezone to
659 659
         // create the DateTime object.
660
-        $format = $this->_date_format . ' ' . $this->_time_format;
660
+        $format = $this->_date_format.' '.$this->_time_format;
661 661
         try {
662 662
             $DateTime = DbSafeDateTime::createFromFormat($format, $date_string, $this->_DateTimeZone);
663
-            if (! $DateTime instanceof DbSafeDateTime) {
663
+            if ( ! $DateTime instanceof DbSafeDateTime) {
664 664
                 throw new EE_Error(
665 665
                     sprintf(
666 666
                         __('"%1$s" does not represent a valid Date Time in the format "%2$s".', 'event_espresso'),
Please login to merge, or discard this patch.
core/libraries/form_sections/inputs/EE_Country_Select_Input.php 2 patches
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -14,80 +14,80 @@
 block discarded – undo
14 14
  */
15 15
 class EE_Country_Select_Input extends EE_Select_Input
16 16
 {
17
-    /**
18
-     * $input_settings key used for detecting the "get" option
19
-     */
20
-    const OPTION_GET_KEY = 'get';
17
+	/**
18
+	 * $input_settings key used for detecting the "get" option
19
+	 */
20
+	const OPTION_GET_KEY = 'get';
21 21
 
22
-    /**
23
-     * indicates that ALL countries should be retrieved from the db for the input
24
-     */
25
-    const OPTION_GET_ALL = 'all';
22
+	/**
23
+	 * indicates that ALL countries should be retrieved from the db for the input
24
+	 */
25
+	const OPTION_GET_ALL = 'all';
26 26
 
27
-    /**
28
-     * indicates that only ACTIVE countries should be retrieved from the db for the input
29
-     */
30
-    const OPTION_GET_ACTIVE = 'active';
27
+	/**
28
+	 * indicates that only ACTIVE countries should be retrieved from the db for the input
29
+	 */
30
+	const OPTION_GET_ACTIVE = 'active';
31 31
 
32 32
 
33
-    /**
34
-     * @param array $country_options
35
-     * @param array $input_settings
36
-     * @throws EE_Error
37
-     * @throws InvalidArgumentException
38
-     * @throws InvalidDataTypeException
39
-     * @throws InvalidInterfaceException
40
-     * @throws ReflectionException
41
-     */
42
-    public function __construct($country_options = null, $input_settings = array())
43
-    {
44
-        $get = isset($input_settings[ self::OPTION_GET_KEY ])
45
-            ? $input_settings[ self::OPTION_GET_KEY ]
46
-            : self::OPTION_GET_ACTIVE;
47
-        $country_options = apply_filters(
48
-            'FHEE__EE_Country_Select_Input____construct__country_options',
49
-            $this->get_country_answer_options($country_options, $get),
50
-            $this,
51
-            $get
52
-        );
53
-        $input_settings['html_class'] = isset($input_settings['html_class'])
54
-            ? $input_settings['html_class'] . ' ee-country-select-js'
55
-            : 'ee-country-select-js';
56
-        parent::__construct($country_options, $input_settings);
57
-    }
33
+	/**
34
+	 * @param array $country_options
35
+	 * @param array $input_settings
36
+	 * @throws EE_Error
37
+	 * @throws InvalidArgumentException
38
+	 * @throws InvalidDataTypeException
39
+	 * @throws InvalidInterfaceException
40
+	 * @throws ReflectionException
41
+	 */
42
+	public function __construct($country_options = null, $input_settings = array())
43
+	{
44
+		$get = isset($input_settings[ self::OPTION_GET_KEY ])
45
+			? $input_settings[ self::OPTION_GET_KEY ]
46
+			: self::OPTION_GET_ACTIVE;
47
+		$country_options = apply_filters(
48
+			'FHEE__EE_Country_Select_Input____construct__country_options',
49
+			$this->get_country_answer_options($country_options, $get),
50
+			$this,
51
+			$get
52
+		);
53
+		$input_settings['html_class'] = isset($input_settings['html_class'])
54
+			? $input_settings['html_class'] . ' ee-country-select-js'
55
+			: 'ee-country-select-js';
56
+		parent::__construct($country_options, $input_settings);
57
+	}
58 58
 
59 59
 
60
-    /**
61
-     * get_country_answer_options
62
-     *
63
-     * @param array  $country_options
64
-     * @param string $get
65
-     * @return array
66
-     * @throws EE_Error
67
-     * @throws InvalidArgumentException
68
-     * @throws ReflectionException
69
-     * @throws InvalidDataTypeException
70
-     * @throws InvalidInterfaceException
71
-     */
72
-    public function get_country_answer_options($country_options = null, $get = self::OPTION_GET_ACTIVE)
73
-    {
74
-        // if passed something that is NOT an array
75
-        if (! is_array($country_options)) {
76
-            // get possibly cached list of countries
77
-            $countries = $get === self::OPTION_GET_ALL
78
-                ? EEM_Country::instance()->get_all_countries()
79
-                : EEM_Country::instance()->get_all_active_countries();
80
-            if (! empty($countries)) {
81
-                $country_options[''] = '';
82
-                foreach ($countries as $country) {
83
-                    if ($country instanceof EE_Country) {
84
-                        $country_options[ $country->ID() ] = $country->name();
85
-                    }
86
-                }
87
-            } else {
88
-                $country_options = array();
89
-            }
90
-        }
91
-        return $country_options;
92
-    }
60
+	/**
61
+	 * get_country_answer_options
62
+	 *
63
+	 * @param array  $country_options
64
+	 * @param string $get
65
+	 * @return array
66
+	 * @throws EE_Error
67
+	 * @throws InvalidArgumentException
68
+	 * @throws ReflectionException
69
+	 * @throws InvalidDataTypeException
70
+	 * @throws InvalidInterfaceException
71
+	 */
72
+	public function get_country_answer_options($country_options = null, $get = self::OPTION_GET_ACTIVE)
73
+	{
74
+		// if passed something that is NOT an array
75
+		if (! is_array($country_options)) {
76
+			// get possibly cached list of countries
77
+			$countries = $get === self::OPTION_GET_ALL
78
+				? EEM_Country::instance()->get_all_countries()
79
+				: EEM_Country::instance()->get_all_active_countries();
80
+			if (! empty($countries)) {
81
+				$country_options[''] = '';
82
+				foreach ($countries as $country) {
83
+					if ($country instanceof EE_Country) {
84
+						$country_options[ $country->ID() ] = $country->name();
85
+					}
86
+				}
87
+			} else {
88
+				$country_options = array();
89
+			}
90
+		}
91
+		return $country_options;
92
+	}
93 93
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -41,8 +41,8 @@  discard block
 block discarded – undo
41 41
      */
42 42
     public function __construct($country_options = null, $input_settings = array())
43 43
     {
44
-        $get = isset($input_settings[ self::OPTION_GET_KEY ])
45
-            ? $input_settings[ self::OPTION_GET_KEY ]
44
+        $get = isset($input_settings[self::OPTION_GET_KEY])
45
+            ? $input_settings[self::OPTION_GET_KEY]
46 46
             : self::OPTION_GET_ACTIVE;
47 47
         $country_options = apply_filters(
48 48
             'FHEE__EE_Country_Select_Input____construct__country_options',
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
             $get
52 52
         );
53 53
         $input_settings['html_class'] = isset($input_settings['html_class'])
54
-            ? $input_settings['html_class'] . ' ee-country-select-js'
54
+            ? $input_settings['html_class'].' ee-country-select-js'
55 55
             : 'ee-country-select-js';
56 56
         parent::__construct($country_options, $input_settings);
57 57
     }
@@ -72,16 +72,16 @@  discard block
 block discarded – undo
72 72
     public function get_country_answer_options($country_options = null, $get = self::OPTION_GET_ACTIVE)
73 73
     {
74 74
         // if passed something that is NOT an array
75
-        if (! is_array($country_options)) {
75
+        if ( ! is_array($country_options)) {
76 76
             // get possibly cached list of countries
77 77
             $countries = $get === self::OPTION_GET_ALL
78 78
                 ? EEM_Country::instance()->get_all_countries()
79 79
                 : EEM_Country::instance()->get_all_active_countries();
80
-            if (! empty($countries)) {
80
+            if ( ! empty($countries)) {
81 81
                 $country_options[''] = '';
82 82
                 foreach ($countries as $country) {
83 83
                     if ($country instanceof EE_Country) {
84
-                        $country_options[ $country->ID() ] = $country->name();
84
+                        $country_options[$country->ID()] = $country->name();
85 85
                     }
86 86
                 }
87 87
             } else {
Please login to merge, or discard this patch.
core/services/validators/JsonValidator.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -32,19 +32,19 @@  discard block
 block discarded – undo
32 32
      */
33 33
     public function isValid($file, $func, $line)
34 34
     {
35
-        if (! defined('JSON_ERROR_RECURSION')) {
35
+        if ( ! defined('JSON_ERROR_RECURSION')) {
36 36
             define('JSON_ERROR_RECURSION', 6);
37 37
         }
38
-        if (! defined('JSON_ERROR_INF_OR_NAN')) {
38
+        if ( ! defined('JSON_ERROR_INF_OR_NAN')) {
39 39
             define('JSON_ERROR_INF_OR_NAN', 7);
40 40
         }
41
-        if (! defined('JSON_ERROR_UNSUPPORTED_TYPE')) {
41
+        if ( ! defined('JSON_ERROR_UNSUPPORTED_TYPE')) {
42 42
             define('JSON_ERROR_UNSUPPORTED_TYPE', 8);
43 43
         }
44
-        if (! defined('JSON_ERROR_INVALID_PROPERTY_NAME')) {
44
+        if ( ! defined('JSON_ERROR_INVALID_PROPERTY_NAME')) {
45 45
             define('JSON_ERROR_INVALID_PROPERTY_NAME', 9);
46 46
         }
47
-        if (! defined('JSON_ERROR_UTF16')) {
47
+        if ( ! defined('JSON_ERROR_UTF16')) {
48 48
             define('JSON_ERROR_UTF16', 10);
49 49
         }
50 50
         switch (json_last_error()) {
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
                 $error = ': Unknown error';
85 85
                 break;
86 86
         }
87
-        EE_Error::add_error('JSON decoding failed' . $error, $file, $func, $line);
87
+        EE_Error::add_error('JSON decoding failed'.$error, $file, $func, $line);
88 88
         return false;
89 89
     }
90 90
 }
Please login to merge, or discard this patch.
Indentation   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -18,76 +18,76 @@
 block discarded – undo
18 18
 class JsonValidator
19 19
 {
20 20
 
21
-    /**
22
-     * Call this method IMMEDIATELY after json_decode() and
23
-     * it will will return true if the decoded JSON was valid,
24
-     * or return false after adding an error if not valid.
25
-     * The actual JSON file does not need to be supplied,
26
-     * but details re: code execution location are required.
27
-     * ex:
28
-     * JsonValidator::isValid(__FILE__, __METHOD__, __LINE__)
29
-     *
30
-     * @param string $file
31
-     * @param string $func
32
-     * @param string $line
33
-     * @return boolean
34
-     * @since 4.9.70.p
35
-     */
36
-    public function isValid($file, $func, $line)
37
-    {
38
-        if (! defined('JSON_ERROR_RECURSION')) {
39
-            define('JSON_ERROR_RECURSION', 6);
40
-        }
41
-        if (! defined('JSON_ERROR_INF_OR_NAN')) {
42
-            define('JSON_ERROR_INF_OR_NAN', 7);
43
-        }
44
-        if (! defined('JSON_ERROR_UNSUPPORTED_TYPE')) {
45
-            define('JSON_ERROR_UNSUPPORTED_TYPE', 8);
46
-        }
47
-        if (! defined('JSON_ERROR_INVALID_PROPERTY_NAME')) {
48
-            define('JSON_ERROR_INVALID_PROPERTY_NAME', 9);
49
-        }
50
-        if (! defined('JSON_ERROR_UTF16')) {
51
-            define('JSON_ERROR_UTF16', 10);
52
-        }
53
-        switch (json_last_error()) {
54
-            case JSON_ERROR_NONE:
55
-                return true;
56
-            case JSON_ERROR_DEPTH:
57
-                $error = ': Maximum stack depth exceeded';
58
-                break;
59
-            case JSON_ERROR_STATE_MISMATCH:
60
-                $error = ': Invalid or malformed JSON';
61
-                break;
62
-            case JSON_ERROR_CTRL_CHAR:
63
-                $error = ': Control character error, possible malformed JSON';
64
-                break;
65
-            case JSON_ERROR_SYNTAX:
66
-                $error = ': Syntax error, malformed JSON';
67
-                break;
68
-            case JSON_ERROR_UTF8:
69
-                $error = ': Malformed UTF-8 characters, possible malformed JSON';
70
-                break;
71
-            case JSON_ERROR_RECURSION:
72
-                $error = ': One or more recursive references in the value to be encoded';
73
-                break;
74
-            case JSON_ERROR_INF_OR_NAN:
75
-                $error = ': One or more NAN or INF values in the value to be encoded';
76
-                break;
77
-            case JSON_ERROR_UNSUPPORTED_TYPE:
78
-                $error = ': A value of a type that cannot be encoded was given';
79
-                break;
80
-            case JSON_ERROR_INVALID_PROPERTY_NAME:
81
-                $error = ': A property name that cannot be encoded was given';
82
-                break;
83
-            case JSON_ERROR_UTF16:
84
-                $error = ': Malformed UTF-16 characters, possibly incorrectly encoded';
85
-                break;
86
-            default:
87
-                $error = ': Unknown error';
88
-                break;
89
-        }
90
-        EE_Error::add_error('JSON decoding failed' . $error, $file, $func, $line);
91
-        return false;
92
-    }
21
+	/**
22
+	 * Call this method IMMEDIATELY after json_decode() and
23
+	 * it will will return true if the decoded JSON was valid,
24
+	 * or return false after adding an error if not valid.
25
+	 * The actual JSON file does not need to be supplied,
26
+	 * but details re: code execution location are required.
27
+	 * ex:
28
+	 * JsonValidator::isValid(__FILE__, __METHOD__, __LINE__)
29
+	 *
30
+	 * @param string $file
31
+	 * @param string $func
32
+	 * @param string $line
33
+	 * @return boolean
34
+	 * @since 4.9.70.p
35
+	 */
36
+	public function isValid($file, $func, $line)
37
+	{
38
+		if (! defined('JSON_ERROR_RECURSION')) {
39
+			define('JSON_ERROR_RECURSION', 6);
40
+		}
41
+		if (! defined('JSON_ERROR_INF_OR_NAN')) {
42
+			define('JSON_ERROR_INF_OR_NAN', 7);
43
+		}
44
+		if (! defined('JSON_ERROR_UNSUPPORTED_TYPE')) {
45
+			define('JSON_ERROR_UNSUPPORTED_TYPE', 8);
46
+		}
47
+		if (! defined('JSON_ERROR_INVALID_PROPERTY_NAME')) {
48
+			define('JSON_ERROR_INVALID_PROPERTY_NAME', 9);
49
+		}
50
+		if (! defined('JSON_ERROR_UTF16')) {
51
+			define('JSON_ERROR_UTF16', 10);
52
+		}
53
+		switch (json_last_error()) {
54
+			case JSON_ERROR_NONE:
55
+				return true;
56
+			case JSON_ERROR_DEPTH:
57
+				$error = ': Maximum stack depth exceeded';
58
+				break;
59
+			case JSON_ERROR_STATE_MISMATCH:
60
+				$error = ': Invalid or malformed JSON';
61
+				break;
62
+			case JSON_ERROR_CTRL_CHAR:
63
+				$error = ': Control character error, possible malformed JSON';
64
+				break;
65
+			case JSON_ERROR_SYNTAX:
66
+				$error = ': Syntax error, malformed JSON';
67
+				break;
68
+			case JSON_ERROR_UTF8:
69
+				$error = ': Malformed UTF-8 characters, possible malformed JSON';
70
+				break;
71
+			case JSON_ERROR_RECURSION:
72
+				$error = ': One or more recursive references in the value to be encoded';
73
+				break;
74
+			case JSON_ERROR_INF_OR_NAN:
75
+				$error = ': One or more NAN or INF values in the value to be encoded';
76
+				break;
77
+			case JSON_ERROR_UNSUPPORTED_TYPE:
78
+				$error = ': A value of a type that cannot be encoded was given';
79
+				break;
80
+			case JSON_ERROR_INVALID_PROPERTY_NAME:
81
+				$error = ': A property name that cannot be encoded was given';
82
+				break;
83
+			case JSON_ERROR_UTF16:
84
+				$error = ': Malformed UTF-16 characters, possibly incorrectly encoded';
85
+				break;
86
+			default:
87
+				$error = ': Unknown error';
88
+				break;
89
+		}
90
+		EE_Error::add_error('JSON decoding failed' . $error, $file, $func, $line);
91
+		return false;
92
+	}
93 93
 }
Please login to merge, or discard this patch.
core/domain/services/blocks/EventAttendeesBlockRenderer.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@
 block discarded – undo
46 46
         $template_args['attributes'] = $attributes;
47 47
         $template_args['attendees'] = $this->attendee_model->get_all($this->getQueryParams($attributes));
48 48
         return EEH_Template::display_template(
49
-            $this->templateRootPath() . 'event-attendees.php',
49
+            $this->templateRootPath().'event-attendees.php',
50 50
             $template_args,
51 51
             true
52 52
         );
Please login to merge, or discard this patch.
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -20,133 +20,133 @@
 block discarded – undo
20 20
 class EventAttendeesBlockRenderer extends BlockRenderer
21 21
 {
22 22
 
23
-    /**
24
-     * @var EEM_Attendee
25
-     */
26
-    private $attendee_model;
23
+	/**
24
+	 * @var EEM_Attendee
25
+	 */
26
+	private $attendee_model;
27 27
 
28
-    public function __construct(DomainInterface $domain, EEM_Attendee $attendee_model)
29
-    {
30
-        $this->attendee_model = $attendee_model;
31
-        parent::__construct($domain);
32
-    }
28
+	public function __construct(DomainInterface $domain, EEM_Attendee $attendee_model)
29
+	{
30
+		$this->attendee_model = $attendee_model;
31
+		parent::__construct($domain);
32
+	}
33 33
 
34 34
 
35
-    /**
36
-     * Renders the block.
37
-     *
38
-     * @param array $attributes  Expect already validated and sanitized array of attributes for use in generating the
39
-     *                           query and the template output.
40
-     * @return string
41
-     * @throws DomainException
42
-     * @throws EE_Error
43
-     */
44
-    public function render(array $attributes)
45
-    {
46
-        $attributes = $this->parseGlobalIDs($attributes);
47
-        $template_args['attributes'] = $attributes;
48
-        $template_args['attendees'] = $this->attendee_model->get_all($this->getQueryParams($attributes));
49
-        return EEH_Template::display_template(
50
-            $this->templateRootPath() . 'event-attendees.php',
51
-            $template_args,
52
-            true
53
-        );
54
-    }
35
+	/**
36
+	 * Renders the block.
37
+	 *
38
+	 * @param array $attributes  Expect already validated and sanitized array of attributes for use in generating the
39
+	 *                           query and the template output.
40
+	 * @return string
41
+	 * @throws DomainException
42
+	 * @throws EE_Error
43
+	 */
44
+	public function render(array $attributes)
45
+	{
46
+		$attributes = $this->parseGlobalIDs($attributes);
47
+		$template_args['attributes'] = $attributes;
48
+		$template_args['attendees'] = $this->attendee_model->get_all($this->getQueryParams($attributes));
49
+		return EEH_Template::display_template(
50
+			$this->templateRootPath() . 'event-attendees.php',
51
+			$template_args,
52
+			true
53
+		);
54
+	}
55 55
 
56 56
 
57
-    /**
58
-     * Get query parameters for model query.
59
-     *
60
-     * @param array $attributes
61
-     * @return array
62
-     */
63
-    private function parseGlobalIDs(array $attributes)
64
-    {
65
-        // if ticket ID is set, then that's all we need to run the query
66
-        $ticket = isset($attributes['ticket']) ? $attributes['ticket'] : '';
67
-        $datetime = isset($attributes['datetime']) ? $attributes['datetime'] : '';
68
-        $event = isset($attributes['event']) ? $attributes['event'] : '';
69
-        if ($ticket !== '') {
70
-            $ticketId = $this->parseGUID($ticket);
71
-            $attributes['ticketId'] = $ticketId;
72
-        } elseif ($datetime !== '') {
73
-            $datetimeId = $this->parseGUID($datetime);
74
-            $attributes['datetimeId'] = $datetimeId;
75
-        } elseif ($event !== '') {
76
-            $eventId = $this->parseGUID($event);
77
-            $attributes['eventId'] = $eventId;
78
-        }
79
-        // remove unnecessary data so it doesn't get added to the query vars
80
-        unset($attributes['ticket'], $attributes['datetime'], $attributes['event']);
81
-        return $attributes;
82
-    }
57
+	/**
58
+	 * Get query parameters for model query.
59
+	 *
60
+	 * @param array $attributes
61
+	 * @return array
62
+	 */
63
+	private function parseGlobalIDs(array $attributes)
64
+	{
65
+		// if ticket ID is set, then that's all we need to run the query
66
+		$ticket = isset($attributes['ticket']) ? $attributes['ticket'] : '';
67
+		$datetime = isset($attributes['datetime']) ? $attributes['datetime'] : '';
68
+		$event = isset($attributes['event']) ? $attributes['event'] : '';
69
+		if ($ticket !== '') {
70
+			$ticketId = $this->parseGUID($ticket);
71
+			$attributes['ticketId'] = $ticketId;
72
+		} elseif ($datetime !== '') {
73
+			$datetimeId = $this->parseGUID($datetime);
74
+			$attributes['datetimeId'] = $datetimeId;
75
+		} elseif ($event !== '') {
76
+			$eventId = $this->parseGUID($event);
77
+			$attributes['eventId'] = $eventId;
78
+		}
79
+		// remove unnecessary data so it doesn't get added to the query vars
80
+		unset($attributes['ticket'], $attributes['datetime'], $attributes['event']);
81
+		return $attributes;
82
+	}
83 83
 
84 84
 
85
-    /**
86
-     * Get query parameters for model query.
87
-     *
88
-     * @param array $attributes
89
-     * @return array
90
-     */
91
-    private function getQueryParams(array $attributes)
92
-    {
93
-        return array(
94
-            0 => $this->getWhereQueryPart($attributes),
95
-            'default_where_conditions' => 'this_model_only',
96
-            'limit' => $attributes['limit'],
97
-            'group_by' => array('ATT_ID'),
98
-            'order_by' => $this->getOrderByQueryPart($attributes)
99
-        );
100
-    }
85
+	/**
86
+	 * Get query parameters for model query.
87
+	 *
88
+	 * @param array $attributes
89
+	 * @return array
90
+	 */
91
+	private function getQueryParams(array $attributes)
92
+	{
93
+		return array(
94
+			0 => $this->getWhereQueryPart($attributes),
95
+			'default_where_conditions' => 'this_model_only',
96
+			'limit' => $attributes['limit'],
97
+			'group_by' => array('ATT_ID'),
98
+			'order_by' => $this->getOrderByQueryPart($attributes)
99
+		);
100
+	}
101 101
 
102 102
 
103
-    /**
104
-     * Get where query part for query parameters for model query.
105
-     *
106
-     * @param array $attributes
107
-     * @return array
108
-     */
109
-    private function getWhereQueryPart(array $attributes)
110
-    {
111
-        $where = array();
112
-        if ($attributes['ticketId'] > 0) {
113
-            $where['Registration.TKT_ID'] = $attributes['ticketId'];
114
-        } elseif ($attributes['datetimeId'] > 0) {
115
-            $where['Registration.Ticket.Datetime.DTT_ID'] = $attributes['datetimeId'];
116
-        } else {
117
-            $where['Registration.EVT_ID'] = $attributes['eventId'];
118
-        }
119
-        $where['Registration.STS_ID'] = $attributes['status'];
120
-        return $where;
121
-    }
103
+	/**
104
+	 * Get where query part for query parameters for model query.
105
+	 *
106
+	 * @param array $attributes
107
+	 * @return array
108
+	 */
109
+	private function getWhereQueryPart(array $attributes)
110
+	{
111
+		$where = array();
112
+		if ($attributes['ticketId'] > 0) {
113
+			$where['Registration.TKT_ID'] = $attributes['ticketId'];
114
+		} elseif ($attributes['datetimeId'] > 0) {
115
+			$where['Registration.Ticket.Datetime.DTT_ID'] = $attributes['datetimeId'];
116
+		} else {
117
+			$where['Registration.EVT_ID'] = $attributes['eventId'];
118
+		}
119
+		$where['Registration.STS_ID'] = $attributes['status'];
120
+		return $where;
121
+	}
122 122
 
123 123
 
124
-    /**
125
-     * Get order by query part for query parameters for model query.
126
-     *
127
-     * @param array $attributes
128
-     * @return array
129
-     */
130
-    private function getOrderByQueryPart(array $attributes)
131
-    {
132
-        $order = $attributes['order'];
133
-        switch ($attributes['orderBy']) {
134
-            case 'id':
135
-                $order_by = array('ATT_ID' => $order);
136
-                break;
137
-            case 'lastNameOnly':
138
-                $order_by = array('ATT_lname' => $order);
139
-                break;
140
-            case 'firstNameOnly':
141
-                $order_by = array('ATT_fname' => $order);
142
-                break;
143
-            case 'firstThenLastName':
144
-                $order_by = array('ATT_fname' => $order, 'ATT_lname' => $order);
145
-                break;
146
-            default:
147
-                $order_by = array('ATT_lname' => $order, 'ATT_fname' => $order);
148
-                break;
149
-        }
150
-        return $order_by;
151
-    }
124
+	/**
125
+	 * Get order by query part for query parameters for model query.
126
+	 *
127
+	 * @param array $attributes
128
+	 * @return array
129
+	 */
130
+	private function getOrderByQueryPart(array $attributes)
131
+	{
132
+		$order = $attributes['order'];
133
+		switch ($attributes['orderBy']) {
134
+			case 'id':
135
+				$order_by = array('ATT_ID' => $order);
136
+				break;
137
+			case 'lastNameOnly':
138
+				$order_by = array('ATT_lname' => $order);
139
+				break;
140
+			case 'firstNameOnly':
141
+				$order_by = array('ATT_fname' => $order);
142
+				break;
143
+			case 'firstThenLastName':
144
+				$order_by = array('ATT_fname' => $order, 'ATT_lname' => $order);
145
+				break;
146
+			default:
147
+				$order_by = array('ATT_lname' => $order, 'ATT_fname' => $order);
148
+				break;
149
+		}
150
+		return $order_by;
151
+	}
152 152
 }
Please login to merge, or discard this patch.
core/services/blocks/BlockRendererInterface.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -14,11 +14,11 @@
 block discarded – undo
14 14
 interface BlockRendererInterface
15 15
 {
16 16
 
17
-    /**
18
-     * This receives an array of attributes and returns rendered content for the block using those attributes.
19
-     *
20
-     * @param array $attributes
21
-     * @return string Rendered Content
22
-     */
23
-    public function render(array $attributes);
17
+	/**
18
+	 * This receives an array of attributes and returns rendered content for the block using those attributes.
19
+	 *
20
+	 * @param array $attributes
21
+	 * @return string Rendered Content
22
+	 */
23
+	public function render(array $attributes);
24 24
 }
Please login to merge, or discard this patch.
core/services/blocks/BlockRenderer.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@
 block discarded – undo
42 42
      */
43 43
     private function setTemplateRootPath()
44 44
     {
45
-        $this->template_root_path = $this->domain->pluginPath() . 'ui/blocks/';
45
+        $this->template_root_path = $this->domain->pluginPath().'ui/blocks/';
46 46
     }
47 47
 
48 48
 
Please login to merge, or discard this patch.
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -15,57 +15,57 @@
 block discarded – undo
15 15
 abstract class BlockRenderer implements BlockRendererInterface
16 16
 {
17 17
 
18
-    /**
19
-     * @var DomainInterface
20
-     */
21
-    protected $domain;
18
+	/**
19
+	 * @var DomainInterface
20
+	 */
21
+	protected $domain;
22 22
 
23
-    /**
24
-     * @var string
25
-     */
26
-    private $template_root_path;
23
+	/**
24
+	 * @var string
25
+	 */
26
+	private $template_root_path;
27 27
 
28 28
 
29
-    /**
30
-     * BlockRenderer constructor.
31
-     *
32
-     * @param DomainInterface $domain
33
-     */
34
-    public function __construct(DomainInterface $domain)
35
-    {
36
-        $this->domain = $domain;
37
-        $this->setTemplateRootPath();
38
-    }
29
+	/**
30
+	 * BlockRenderer constructor.
31
+	 *
32
+	 * @param DomainInterface $domain
33
+	 */
34
+	public function __construct(DomainInterface $domain)
35
+	{
36
+		$this->domain = $domain;
37
+		$this->setTemplateRootPath();
38
+	}
39 39
 
40 40
 
41
-    /**
42
-     * Sets the root path to the main block template.
43
-     */
44
-    private function setTemplateRootPath()
45
-    {
46
-        $this->template_root_path = $this->domain->pluginPath() . 'ui/blocks/';
47
-    }
41
+	/**
42
+	 * Sets the root path to the main block template.
43
+	 */
44
+	private function setTemplateRootPath()
45
+	{
46
+		$this->template_root_path = $this->domain->pluginPath() . 'ui/blocks/';
47
+	}
48 48
 
49 49
 
50
-    /**
51
-     * Exposes the root path for the main block template.
52
-     * @return string
53
-     */
54
-    public function templateRootPath()
55
-    {
56
-        return $this->template_root_path;
57
-    }
50
+	/**
51
+	 * Exposes the root path for the main block template.
52
+	 * @return string
53
+	 */
54
+	public function templateRootPath()
55
+	{
56
+		return $this->template_root_path;
57
+	}
58 58
 
59 59
 
60
-    /**
61
-     * converts GraphQL GUID into EE DB ID
62
-     *
63
-     * @param string $GUID
64
-     * @return int
65
-     */
66
-    protected function parseGUID($GUID)
67
-    {
68
-        $parts = Relay::fromGlobalId($GUID);
69
-        return ! empty($parts['id']) ? $parts['id'] : 0;
70
-    }
60
+	/**
61
+	 * converts GraphQL GUID into EE DB ID
62
+	 *
63
+	 * @param string $GUID
64
+	 * @return int
65
+	 */
66
+	protected function parseGUID($GUID)
67
+	{
68
+		$parts = Relay::fromGlobalId($GUID);
69
+		return ! empty($parts['id']) ? $parts['id'] : 0;
70
+	}
71 71
 }
Please login to merge, or discard this patch.
ui/blocks/event-attendees.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -23,14 +23,14 @@
 block discarded – undo
23 23
                 )
24 24
                 : '';
25 25
             $gravatar_class = $attributes['avatarClass']
26
-                ? $attributes['avatarClass'] . ' contact-avatar-img avatar'
26
+                ? $attributes['avatarClass'].' contact-avatar-img avatar'
27 27
                 : 'contact-avatar-img avatar';
28 28
             $gravatar = $gravatar !== ''
29 29
                 ? '<div class="contact-image-wrap-div">'
30
-                    . '<img class="' . $gravatar_class . '"'
31
-                    . ' width="' . $attributes['avatarSize'] . '"'
32
-                    . ' height="' . $attributes['avatarSize'] . '"'
33
-                    . ' src="' . $gravatar . '" alt="contact avatar">'
30
+                    . '<img class="'.$gravatar_class.'"'
31
+                    . ' width="'.$attributes['avatarSize'].'"'
32
+                    . ' height="'.$attributes['avatarSize'].'"'
33
+                    . ' src="'.$gravatar.'" alt="contact avatar">'
34 34
                     . '</div>'
35 35
                 : '';
36 36
             echo "<li>{$gravatar}<span>{$attendee->full_name()}</span>";
Please login to merge, or discard this patch.
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -11,29 +11,29 @@
 block discarded – undo
11 11
 <div id="ee-block-event-attendees" class="ee-core-blocks event-espresso-blocks event-attendees">
12 12
     <ul>
13 13
         <?php
14
-        foreach ($attendees as $attendee) {
15
-            $gravatar = $attributes['showGravatar']
16
-                ? get_avatar_url(
17
-                    $attendee->email(),
18
-                    array(
19
-                        'width'   => $attributes['avatarSize'],
20
-                        'height'  => $attributes['avatarSize']
21
-                    )
22
-                )
23
-                : '';
24
-            $gravatar_class = $attributes['avatarClass']
25
-                ? $attributes['avatarClass'] . ' contact-avatar-img avatar'
26
-                : 'contact-avatar-img avatar';
27
-            $gravatar = $gravatar !== ''
28
-                ? '<div class="contact-image-wrap-div">'
29
-                    . '<img class="' . $gravatar_class . '"'
30
-                    . ' width="' . $attributes['avatarSize'] . '"'
31
-                    . ' height="' . $attributes['avatarSize'] . '"'
32
-                    . ' src="' . $gravatar . '" alt="contact avatar">'
33
-                    . '</div>'
34
-                : '';
35
-            echo "<li>{$gravatar}<span>{$attendee->full_name()}</span>";
36
-        }
37
-        ?>
14
+		foreach ($attendees as $attendee) {
15
+			$gravatar = $attributes['showGravatar']
16
+				? get_avatar_url(
17
+					$attendee->email(),
18
+					array(
19
+						'width'   => $attributes['avatarSize'],
20
+						'height'  => $attributes['avatarSize']
21
+					)
22
+				)
23
+				: '';
24
+			$gravatar_class = $attributes['avatarClass']
25
+				? $attributes['avatarClass'] . ' contact-avatar-img avatar'
26
+				: 'contact-avatar-img avatar';
27
+			$gravatar = $gravatar !== ''
28
+				? '<div class="contact-image-wrap-div">'
29
+					. '<img class="' . $gravatar_class . '"'
30
+					. ' width="' . $attributes['avatarSize'] . '"'
31
+					. ' height="' . $attributes['avatarSize'] . '"'
32
+					. ' src="' . $gravatar . '" alt="contact avatar">'
33
+					. '</div>'
34
+				: '';
35
+			echo "<li>{$gravatar}<span>{$attendee->full_name()}</span>";
36
+		}
37
+		?>
38 38
     </ul>
39 39
 </div>
Please login to merge, or discard this patch.