Completed
Branch RELEASE (416965)
by
unknown
11:06 queued 12s
created
core/db_classes/EE_Message_Template_Group.class.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
      */
49 49
     public function set_message_type($message_type = false)
50 50
     {
51
-        if (! $message_type) {
51
+        if ( ! $message_type) {
52 52
             throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
53 53
         }
54 54
         $this->set('MTP_message_type', $message_type);
@@ -61,7 +61,7 @@  discard block
 block discarded – undo
61 61
      */
62 62
     public function set_messenger($messenger = false)
63 63
     {
64
-        if (! $messenger) {
64
+        if ( ! $messenger) {
65 65
             throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
66 66
         }
67 67
         $this->set('MTP_messenger', $messenger);
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
      */
75 75
     public function set_group_template_id($GRP_ID = false)
76 76
     {
77
-        if (! $GRP_ID) {
77
+        if ( ! $GRP_ID) {
78 78
             throw new EE_Error(
79 79
                 esc_html__(
80 80
                     'Missing required value for the message template group id',
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
         }
291 291
         // note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
292 292
         foreach ($mtps as $mtp) {
293
-            $mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
+            $mtps_arr[$mtp->get('MTP_context')][$mtp->get('MTP_template_field')] = $mtp;
294 294
         }
295 295
         return $mtps_arr;
296 296
     }
@@ -430,7 +430,7 @@  discard block
 block discarded – undo
430 430
     public function deactivate_context($context)
431 431
     {
432 432
         $this->validate_context($context);
433
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
+        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, false);
434 434
     }
435 435
 
436 436
 
@@ -445,7 +445,7 @@  discard block
 block discarded – undo
445 445
     public function activate_context($context)
446 446
     {
447 447
         $this->validate_context($context);
448
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
+        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, true);
449 449
     }
450 450
 
451 451
 
@@ -465,7 +465,7 @@  discard block
 block discarded – undo
465 465
     {
466 466
         $this->validate_context($context);
467 467
         return filter_var(
468
-            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
+            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, true, true),
469 469
             FILTER_VALIDATE_BOOLEAN
470 470
         );
471 471
     }
@@ -481,7 +481,7 @@  discard block
 block discarded – undo
481 481
     public function validate_context($context)
482 482
     {
483 483
         $contexts = $this->contexts_config();
484
-        if (! isset($contexts[ $context ])) {
484
+        if ( ! isset($contexts[$context])) {
485 485
             throw new InvalidIdentifierException(
486 486
                 '',
487 487
                 '',
Please login to merge, or discard this patch.
Indentation   +483 added lines, -483 removed lines patch added patch discarded remove patch
@@ -14,487 +14,487 @@
 block discarded – undo
14 14
  */
15 15
 class EE_Message_Template_Group extends EE_Soft_Delete_Base_Class
16 16
 {
17
-    /**
18
-     * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
19
-     */
20
-    const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
21
-
22
-    /**
23
-     * @param array  $props_n_values
24
-     * @param string $timezone
25
-     * @return EE_Message_Template_Group|mixed
26
-     * @throws EE_Error
27
-     */
28
-    public static function new_instance($props_n_values = array(), $timezone = '')
29
-    {
30
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
31
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone);
32
-    }
33
-
34
-
35
-    /**
36
-     * @param array  $props_n_values
37
-     * @param string $timezone
38
-     * @return EE_Message_Template_Group
39
-     */
40
-    public static function new_instance_from_db($props_n_values = array(), $timezone = '')
41
-    {
42
-        return new self($props_n_values, true, $timezone);
43
-    }
44
-
45
-
46
-    /**
47
-     * @param bool $message_type
48
-     * @throws EE_Error
49
-     */
50
-    public function set_message_type($message_type = false)
51
-    {
52
-        if (! $message_type) {
53
-            throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
54
-        }
55
-        $this->set('MTP_message_type', $message_type);
56
-    }
57
-
58
-
59
-    /**
60
-     * @param bool $messenger
61
-     * @throws EE_Error
62
-     */
63
-    public function set_messenger($messenger = false)
64
-    {
65
-        if (! $messenger) {
66
-            throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
67
-        }
68
-        $this->set('MTP_messenger', $messenger);
69
-    }
70
-
71
-
72
-    /**
73
-     * @param bool $GRP_ID
74
-     * @throws EE_Error
75
-     */
76
-    public function set_group_template_id($GRP_ID = false)
77
-    {
78
-        if (! $GRP_ID) {
79
-            throw new EE_Error(
80
-                esc_html__(
81
-                    'Missing required value for the message template group id',
82
-                    'event_espresso'
83
-                )
84
-            );
85
-        }
86
-        $this->set('GRP_ID', $GRP_ID);
87
-    }
88
-
89
-
90
-    /**
91
-     * get Group ID
92
-     *
93
-     * @access public
94
-     * @return int
95
-     * @throws EE_Error
96
-     */
97
-    public function GRP_ID()
98
-    {
99
-        return $this->get('GRP_ID');
100
-    }
101
-
102
-
103
-    /**
104
-     * get User ID
105
-     *
106
-     * @access public
107
-     * @return int
108
-     * @throws EE_Error
109
-     */
110
-    public function user()
111
-    {
112
-        $user_id = $this->get('MTP_user_id');
113
-        return empty($user_id) ? get_current_user_id() : $user_id;
114
-    }
115
-
116
-
117
-    /**
118
-     * Wrapper for the user function() (preserve backward compat)
119
-     *
120
-     * @since  4.5.0
121
-     * @return int
122
-     * @throws EE_Error
123
-     */
124
-    public function wp_user()
125
-    {
126
-        return $this->user();
127
-    }
128
-
129
-
130
-    /**
131
-     * This simply returns a count of all related events to this message template group
132
-     *
133
-     * @return int
134
-     */
135
-    public function count_events()
136
-    {
137
-        return $this->count_related('Event');
138
-    }
139
-
140
-
141
-    /**
142
-     * returns the name saved in the db for this template
143
-     *
144
-     * @return string
145
-     * @throws EE_Error
146
-     */
147
-    public function name()
148
-    {
149
-        return $this->get('MTP_name');
150
-    }
151
-
152
-
153
-    /**
154
-     * Returns the description saved in the db for this template group
155
-     *
156
-     * @return string
157
-     * @throws EE_Error
158
-     */
159
-    public function description()
160
-    {
161
-        return $this->get('MTP_description');
162
-    }
163
-
164
-
165
-    /**
166
-     * returns all related EE_Message_Template objects
167
-     *
168
-     * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
169
-     * @return EE_Message_Template[]
170
-     * @throws EE_Error
171
-     */
172
-    public function message_templates($query_params = array())
173
-    {
174
-        return $this->get_many_related('Message_Template', $query_params);
175
-    }
176
-
177
-
178
-    /**
179
-     * get Message Messenger
180
-     *
181
-     * @access public
182
-     * @return string
183
-     * @throws EE_Error
184
-     */
185
-    public function messenger()
186
-    {
187
-        return $this->get('MTP_messenger');
188
-    }
189
-
190
-
191
-    /**
192
-     * get Message Messenger OBJECT
193
-     * If an attempt to get the corresponding messenger object fails, then we set this message
194
-     * template group to inactive, and save to db.  Then return null so client code can handle
195
-     * appropriately.
196
-     *
197
-     * @return EE_messenger
198
-     * @throws EE_Error
199
-     */
200
-    public function messenger_obj()
201
-    {
202
-        $messenger = $this->messenger();
203
-        try {
204
-            $messenger = EEH_MSG_Template::messenger_obj($messenger);
205
-        } catch (EE_Error $e) {
206
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
207
-            // class for this messenger in this group.
208
-            $this->set('MTP_is_active', false);
209
-            $this->save();
210
-            return null;
211
-        }
212
-        return $messenger;
213
-    }
214
-
215
-
216
-    /**
217
-     * get Message Type
218
-     *
219
-     * @access public
220
-     * @return string
221
-     * @throws EE_Error
222
-     */
223
-    public function message_type()
224
-    {
225
-        return $this->get('MTP_message_type');
226
-    }
227
-
228
-
229
-    /**
230
-     * get Message type OBJECT
231
-     * If an attempt to get the corresponding message type object fails, then we set this message
232
-     * template group to inactive, and save to db.  Then return null so client code can handle
233
-     * appropriately.
234
-     *
235
-     * @throws EE_Error
236
-     * @return EE_message_type|false if exception thrown.
237
-     */
238
-    public function message_type_obj()
239
-    {
240
-        $message_type = $this->message_type();
241
-        try {
242
-            $message_type = EEH_MSG_Template::message_type_obj($message_type);
243
-        } catch (EE_Error $e) {
244
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
245
-            // class for the message type in this group.
246
-            $this->set('MTP_is_active', false);
247
-            $this->save();
248
-            return null;
249
-        }
250
-        return $message_type;
251
-    }
252
-
253
-
254
-    /**
255
-     * @return array
256
-     * @throws EE_Error
257
-     */
258
-    public function contexts_config()
259
-    {
260
-        return $this->message_type_obj()->get_contexts();
261
-    }
262
-
263
-
264
-    /**
265
-     * This returns the context_label for contexts as set in the message type object
266
-     * Note this is an array with singular and plural keys
267
-     *
268
-     * @access public
269
-     * @return array labels for "context"
270
-     * @throws EE_Error
271
-     */
272
-    public function context_label()
273
-    {
274
-        $obj = $this->message_type_obj();
275
-        return $obj->get_context_label();
276
-    }
277
-
278
-
279
-    /**
280
-     * This returns an array of EE_Message_Template objects indexed by context and field.
281
-     *
282
-     * @return array ()
283
-     * @throws EE_Error
284
-     */
285
-    public function context_templates()
286
-    {
287
-        $mtps_arr = array();
288
-        $mtps = $this->get_many_related('Message_Template');
289
-        if (empty($mtps)) {
290
-            return array();
291
-        }
292
-        // note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
293
-        foreach ($mtps as $mtp) {
294
-            $mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
295
-        }
296
-        return $mtps_arr;
297
-    }
298
-
299
-
300
-    /**
301
-     * this returns if the template group this template belongs to is global
302
-     *
303
-     * @return bool true if it is, false if it isn't
304
-     * @throws EE_Error
305
-     */
306
-    public function is_global()
307
-    {
308
-        return $this->get('MTP_is_global');
309
-    }
310
-
311
-
312
-    /**
313
-     * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
314
-     *
315
-     * @return bool true if it is, false if it isn't
316
-     * @throws EE_Error
317
-     */
318
-    public function is_active()
319
-    {
320
-        return $this->get('MTP_is_active');
321
-    }
322
-
323
-
324
-    /**
325
-     * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
326
-     * this template.
327
-     *
328
-     * @since 4.3.0
329
-     * @uses  EEH_MSG_Template::get_shortcodes()
330
-     * @param string $context what context we're going to return shortcodes for
331
-     * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
332
-     *                        to be returned.
333
-     * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
334
-     *                        unique shortcodes for all the given (or all) fields.
335
-     * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
336
-     *                        shortcodes found.
337
-     * @throws EE_Error
338
-     */
339
-    public function get_shortcodes($context, $fields = array(), $merged = false)
340
-    {
341
-        $messenger = $this->messenger();
342
-        $message_type = $this->message_type();
343
-        return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
344
-    }
345
-
346
-
347
-    /**
348
-     * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
349
-     * use the default template pack.
350
-     *
351
-     * @since 4.5.0
352
-     * @return string
353
-     * @throws EE_Error
354
-     */
355
-    public function get_template_pack_name()
356
-    {
357
-        return $this->get_extra_meta('MTP_template_pack', true, 'default');
358
-    }
359
-
360
-
361
-    /**
362
-     * This returns the specific template pack object referenced by the template pack name attached to this message
363
-     * template group.  If no template pack is assigned then the default template pack is retrieved.
364
-     *
365
-     * @since 4.5.0
366
-     * @return EE_Messages_Template_Pack
367
-     * @throws EE_Error
368
-     * @throws InvalidArgumentException
369
-     * @throws ReflectionException
370
-     * @throws InvalidDataTypeException
371
-     * @throws InvalidInterfaceException
372
-     */
373
-    public function get_template_pack()
374
-    {
375
-        $pack_name = $this->get_template_pack_name();
376
-        EE_Registry::instance()->load_helper('MSG_Template');
377
-        return EEH_MSG_Template::get_template_pack($pack_name);
378
-    }
379
-
380
-
381
-    /**
382
-     * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
383
-     * use the default template variation.
384
-     *
385
-     * @since 4.5.0
386
-     * @return string
387
-     * @throws EE_Error
388
-     */
389
-    public function get_template_pack_variation()
390
-    {
391
-        return $this->get_extra_meta('MTP_variation', true, 'default');
392
-    }
393
-
394
-
395
-    /**
396
-     * This just sets the template pack name attached to this message template group.
397
-     *
398
-     * @since 4.5.0
399
-     * @param string $template_pack_name What message template pack is assigned.
400
-     * @return int
401
-     * @throws EE_Error
402
-     */
403
-    public function set_template_pack_name($template_pack_name)
404
-    {
405
-        return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
406
-    }
407
-
408
-
409
-    /**
410
-     * This just sets the template pack variation attached to this message template group.
411
-     *
412
-     * @since 4.5.0
413
-     * @param string $variation What variation is being set on the message template group.
414
-     * @return int
415
-     * @throws EE_Error
416
-     */
417
-    public function set_template_pack_variation($variation)
418
-    {
419
-        return $this->update_extra_meta('MTP_variation', $variation);
420
-    }
421
-
422
-
423
-    /**
424
-     * Deactivates the given context.
425
-     *
426
-     * @param $context
427
-     * @return bool|int
428
-     * @throws EE_Error
429
-     * @throws InvalidIdentifierException
430
-     */
431
-    public function deactivate_context($context)
432
-    {
433
-        $this->validate_context($context);
434
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
435
-    }
436
-
437
-
438
-    /**
439
-     * Activates the given context.
440
-     *
441
-     * @param $context
442
-     * @return bool|int
443
-     * @throws EE_Error
444
-     * @throws InvalidIdentifierException
445
-     */
446
-    public function activate_context($context)
447
-    {
448
-        $this->validate_context($context);
449
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
450
-    }
451
-
452
-
453
-    /**
454
-     * Returns whether the context is active or not.
455
-     * Note, this will default to true if the extra meta record doesn't exist.
456
-     * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
457
-     * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
458
-     * whether a context is "active" or not.
459
-     *
460
-     * @param $context
461
-     * @return bool
462
-     * @throws EE_Error
463
-     * @throws InvalidIdentifierException
464
-     */
465
-    public function is_context_active($context)
466
-    {
467
-        $this->validate_context($context);
468
-        return filter_var(
469
-            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
470
-            FILTER_VALIDATE_BOOLEAN
471
-        );
472
-    }
473
-
474
-
475
-    /**
476
-     * Validates the incoming context to verify it matches a registered context for the related message type.
477
-     *
478
-     * @param string $context
479
-     * @throws EE_Error
480
-     * @throws InvalidIdentifierException
481
-     */
482
-    public function validate_context($context)
483
-    {
484
-        $contexts = $this->contexts_config();
485
-        if (! isset($contexts[ $context ])) {
486
-            throw new InvalidIdentifierException(
487
-                '',
488
-                '',
489
-                sprintf(
490
-                    esc_html__(
491
-                        'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
492
-                        'event_espresso'
493
-                    ),
494
-                    $context,
495
-                    implode(',', array_keys($contexts))
496
-                )
497
-            );
498
-        }
499
-    }
17
+	/**
18
+	 * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
19
+	 */
20
+	const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
21
+
22
+	/**
23
+	 * @param array  $props_n_values
24
+	 * @param string $timezone
25
+	 * @return EE_Message_Template_Group|mixed
26
+	 * @throws EE_Error
27
+	 */
28
+	public static function new_instance($props_n_values = array(), $timezone = '')
29
+	{
30
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
31
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone);
32
+	}
33
+
34
+
35
+	/**
36
+	 * @param array  $props_n_values
37
+	 * @param string $timezone
38
+	 * @return EE_Message_Template_Group
39
+	 */
40
+	public static function new_instance_from_db($props_n_values = array(), $timezone = '')
41
+	{
42
+		return new self($props_n_values, true, $timezone);
43
+	}
44
+
45
+
46
+	/**
47
+	 * @param bool $message_type
48
+	 * @throws EE_Error
49
+	 */
50
+	public function set_message_type($message_type = false)
51
+	{
52
+		if (! $message_type) {
53
+			throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
54
+		}
55
+		$this->set('MTP_message_type', $message_type);
56
+	}
57
+
58
+
59
+	/**
60
+	 * @param bool $messenger
61
+	 * @throws EE_Error
62
+	 */
63
+	public function set_messenger($messenger = false)
64
+	{
65
+		if (! $messenger) {
66
+			throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
67
+		}
68
+		$this->set('MTP_messenger', $messenger);
69
+	}
70
+
71
+
72
+	/**
73
+	 * @param bool $GRP_ID
74
+	 * @throws EE_Error
75
+	 */
76
+	public function set_group_template_id($GRP_ID = false)
77
+	{
78
+		if (! $GRP_ID) {
79
+			throw new EE_Error(
80
+				esc_html__(
81
+					'Missing required value for the message template group id',
82
+					'event_espresso'
83
+				)
84
+			);
85
+		}
86
+		$this->set('GRP_ID', $GRP_ID);
87
+	}
88
+
89
+
90
+	/**
91
+	 * get Group ID
92
+	 *
93
+	 * @access public
94
+	 * @return int
95
+	 * @throws EE_Error
96
+	 */
97
+	public function GRP_ID()
98
+	{
99
+		return $this->get('GRP_ID');
100
+	}
101
+
102
+
103
+	/**
104
+	 * get User ID
105
+	 *
106
+	 * @access public
107
+	 * @return int
108
+	 * @throws EE_Error
109
+	 */
110
+	public function user()
111
+	{
112
+		$user_id = $this->get('MTP_user_id');
113
+		return empty($user_id) ? get_current_user_id() : $user_id;
114
+	}
115
+
116
+
117
+	/**
118
+	 * Wrapper for the user function() (preserve backward compat)
119
+	 *
120
+	 * @since  4.5.0
121
+	 * @return int
122
+	 * @throws EE_Error
123
+	 */
124
+	public function wp_user()
125
+	{
126
+		return $this->user();
127
+	}
128
+
129
+
130
+	/**
131
+	 * This simply returns a count of all related events to this message template group
132
+	 *
133
+	 * @return int
134
+	 */
135
+	public function count_events()
136
+	{
137
+		return $this->count_related('Event');
138
+	}
139
+
140
+
141
+	/**
142
+	 * returns the name saved in the db for this template
143
+	 *
144
+	 * @return string
145
+	 * @throws EE_Error
146
+	 */
147
+	public function name()
148
+	{
149
+		return $this->get('MTP_name');
150
+	}
151
+
152
+
153
+	/**
154
+	 * Returns the description saved in the db for this template group
155
+	 *
156
+	 * @return string
157
+	 * @throws EE_Error
158
+	 */
159
+	public function description()
160
+	{
161
+		return $this->get('MTP_description');
162
+	}
163
+
164
+
165
+	/**
166
+	 * returns all related EE_Message_Template objects
167
+	 *
168
+	 * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
169
+	 * @return EE_Message_Template[]
170
+	 * @throws EE_Error
171
+	 */
172
+	public function message_templates($query_params = array())
173
+	{
174
+		return $this->get_many_related('Message_Template', $query_params);
175
+	}
176
+
177
+
178
+	/**
179
+	 * get Message Messenger
180
+	 *
181
+	 * @access public
182
+	 * @return string
183
+	 * @throws EE_Error
184
+	 */
185
+	public function messenger()
186
+	{
187
+		return $this->get('MTP_messenger');
188
+	}
189
+
190
+
191
+	/**
192
+	 * get Message Messenger OBJECT
193
+	 * If an attempt to get the corresponding messenger object fails, then we set this message
194
+	 * template group to inactive, and save to db.  Then return null so client code can handle
195
+	 * appropriately.
196
+	 *
197
+	 * @return EE_messenger
198
+	 * @throws EE_Error
199
+	 */
200
+	public function messenger_obj()
201
+	{
202
+		$messenger = $this->messenger();
203
+		try {
204
+			$messenger = EEH_MSG_Template::messenger_obj($messenger);
205
+		} catch (EE_Error $e) {
206
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
207
+			// class for this messenger in this group.
208
+			$this->set('MTP_is_active', false);
209
+			$this->save();
210
+			return null;
211
+		}
212
+		return $messenger;
213
+	}
214
+
215
+
216
+	/**
217
+	 * get Message Type
218
+	 *
219
+	 * @access public
220
+	 * @return string
221
+	 * @throws EE_Error
222
+	 */
223
+	public function message_type()
224
+	{
225
+		return $this->get('MTP_message_type');
226
+	}
227
+
228
+
229
+	/**
230
+	 * get Message type OBJECT
231
+	 * If an attempt to get the corresponding message type object fails, then we set this message
232
+	 * template group to inactive, and save to db.  Then return null so client code can handle
233
+	 * appropriately.
234
+	 *
235
+	 * @throws EE_Error
236
+	 * @return EE_message_type|false if exception thrown.
237
+	 */
238
+	public function message_type_obj()
239
+	{
240
+		$message_type = $this->message_type();
241
+		try {
242
+			$message_type = EEH_MSG_Template::message_type_obj($message_type);
243
+		} catch (EE_Error $e) {
244
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
245
+			// class for the message type in this group.
246
+			$this->set('MTP_is_active', false);
247
+			$this->save();
248
+			return null;
249
+		}
250
+		return $message_type;
251
+	}
252
+
253
+
254
+	/**
255
+	 * @return array
256
+	 * @throws EE_Error
257
+	 */
258
+	public function contexts_config()
259
+	{
260
+		return $this->message_type_obj()->get_contexts();
261
+	}
262
+
263
+
264
+	/**
265
+	 * This returns the context_label for contexts as set in the message type object
266
+	 * Note this is an array with singular and plural keys
267
+	 *
268
+	 * @access public
269
+	 * @return array labels for "context"
270
+	 * @throws EE_Error
271
+	 */
272
+	public function context_label()
273
+	{
274
+		$obj = $this->message_type_obj();
275
+		return $obj->get_context_label();
276
+	}
277
+
278
+
279
+	/**
280
+	 * This returns an array of EE_Message_Template objects indexed by context and field.
281
+	 *
282
+	 * @return array ()
283
+	 * @throws EE_Error
284
+	 */
285
+	public function context_templates()
286
+	{
287
+		$mtps_arr = array();
288
+		$mtps = $this->get_many_related('Message_Template');
289
+		if (empty($mtps)) {
290
+			return array();
291
+		}
292
+		// note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
293
+		foreach ($mtps as $mtp) {
294
+			$mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
295
+		}
296
+		return $mtps_arr;
297
+	}
298
+
299
+
300
+	/**
301
+	 * this returns if the template group this template belongs to is global
302
+	 *
303
+	 * @return bool true if it is, false if it isn't
304
+	 * @throws EE_Error
305
+	 */
306
+	public function is_global()
307
+	{
308
+		return $this->get('MTP_is_global');
309
+	}
310
+
311
+
312
+	/**
313
+	 * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
314
+	 *
315
+	 * @return bool true if it is, false if it isn't
316
+	 * @throws EE_Error
317
+	 */
318
+	public function is_active()
319
+	{
320
+		return $this->get('MTP_is_active');
321
+	}
322
+
323
+
324
+	/**
325
+	 * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
326
+	 * this template.
327
+	 *
328
+	 * @since 4.3.0
329
+	 * @uses  EEH_MSG_Template::get_shortcodes()
330
+	 * @param string $context what context we're going to return shortcodes for
331
+	 * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
332
+	 *                        to be returned.
333
+	 * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
334
+	 *                        unique shortcodes for all the given (or all) fields.
335
+	 * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
336
+	 *                        shortcodes found.
337
+	 * @throws EE_Error
338
+	 */
339
+	public function get_shortcodes($context, $fields = array(), $merged = false)
340
+	{
341
+		$messenger = $this->messenger();
342
+		$message_type = $this->message_type();
343
+		return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
344
+	}
345
+
346
+
347
+	/**
348
+	 * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
349
+	 * use the default template pack.
350
+	 *
351
+	 * @since 4.5.0
352
+	 * @return string
353
+	 * @throws EE_Error
354
+	 */
355
+	public function get_template_pack_name()
356
+	{
357
+		return $this->get_extra_meta('MTP_template_pack', true, 'default');
358
+	}
359
+
360
+
361
+	/**
362
+	 * This returns the specific template pack object referenced by the template pack name attached to this message
363
+	 * template group.  If no template pack is assigned then the default template pack is retrieved.
364
+	 *
365
+	 * @since 4.5.0
366
+	 * @return EE_Messages_Template_Pack
367
+	 * @throws EE_Error
368
+	 * @throws InvalidArgumentException
369
+	 * @throws ReflectionException
370
+	 * @throws InvalidDataTypeException
371
+	 * @throws InvalidInterfaceException
372
+	 */
373
+	public function get_template_pack()
374
+	{
375
+		$pack_name = $this->get_template_pack_name();
376
+		EE_Registry::instance()->load_helper('MSG_Template');
377
+		return EEH_MSG_Template::get_template_pack($pack_name);
378
+	}
379
+
380
+
381
+	/**
382
+	 * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
383
+	 * use the default template variation.
384
+	 *
385
+	 * @since 4.5.0
386
+	 * @return string
387
+	 * @throws EE_Error
388
+	 */
389
+	public function get_template_pack_variation()
390
+	{
391
+		return $this->get_extra_meta('MTP_variation', true, 'default');
392
+	}
393
+
394
+
395
+	/**
396
+	 * This just sets the template pack name attached to this message template group.
397
+	 *
398
+	 * @since 4.5.0
399
+	 * @param string $template_pack_name What message template pack is assigned.
400
+	 * @return int
401
+	 * @throws EE_Error
402
+	 */
403
+	public function set_template_pack_name($template_pack_name)
404
+	{
405
+		return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
406
+	}
407
+
408
+
409
+	/**
410
+	 * This just sets the template pack variation attached to this message template group.
411
+	 *
412
+	 * @since 4.5.0
413
+	 * @param string $variation What variation is being set on the message template group.
414
+	 * @return int
415
+	 * @throws EE_Error
416
+	 */
417
+	public function set_template_pack_variation($variation)
418
+	{
419
+		return $this->update_extra_meta('MTP_variation', $variation);
420
+	}
421
+
422
+
423
+	/**
424
+	 * Deactivates the given context.
425
+	 *
426
+	 * @param $context
427
+	 * @return bool|int
428
+	 * @throws EE_Error
429
+	 * @throws InvalidIdentifierException
430
+	 */
431
+	public function deactivate_context($context)
432
+	{
433
+		$this->validate_context($context);
434
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
435
+	}
436
+
437
+
438
+	/**
439
+	 * Activates the given context.
440
+	 *
441
+	 * @param $context
442
+	 * @return bool|int
443
+	 * @throws EE_Error
444
+	 * @throws InvalidIdentifierException
445
+	 */
446
+	public function activate_context($context)
447
+	{
448
+		$this->validate_context($context);
449
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
450
+	}
451
+
452
+
453
+	/**
454
+	 * Returns whether the context is active or not.
455
+	 * Note, this will default to true if the extra meta record doesn't exist.
456
+	 * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
457
+	 * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
458
+	 * whether a context is "active" or not.
459
+	 *
460
+	 * @param $context
461
+	 * @return bool
462
+	 * @throws EE_Error
463
+	 * @throws InvalidIdentifierException
464
+	 */
465
+	public function is_context_active($context)
466
+	{
467
+		$this->validate_context($context);
468
+		return filter_var(
469
+			$this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
470
+			FILTER_VALIDATE_BOOLEAN
471
+		);
472
+	}
473
+
474
+
475
+	/**
476
+	 * Validates the incoming context to verify it matches a registered context for the related message type.
477
+	 *
478
+	 * @param string $context
479
+	 * @throws EE_Error
480
+	 * @throws InvalidIdentifierException
481
+	 */
482
+	public function validate_context($context)
483
+	{
484
+		$contexts = $this->contexts_config();
485
+		if (! isset($contexts[ $context ])) {
486
+			throw new InvalidIdentifierException(
487
+				'',
488
+				'',
489
+				sprintf(
490
+					esc_html__(
491
+						'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
492
+						'event_espresso'
493
+					),
494
+					$context,
495
+					implode(',', array_keys($contexts))
496
+				)
497
+			);
498
+		}
499
+	}
500 500
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Question.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -335,7 +335,7 @@  discard block
 block discarded – undo
335 335
      */
336 336
     public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
337 337
     {
338
-        if (! $this->ID()) {
338
+        if ( ! $this->ID()) {
339 339
             return array();
340 340
         }
341 341
         $query_params = array();
@@ -509,7 +509,7 @@  discard block
 block discarded – undo
509 509
             ),
510 510
             $input_constructor_args
511 511
         );
512
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
512
+        if ( ! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
513 513
             $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
514 514
         }
515 515
         // has this question been answered ?
@@ -647,7 +647,7 @@  discard block
 block discarded – undo
647 647
                     $this,
648 648
                     $input_constructor_args
649 649
                 );
650
-                if (! $default_input) {
650
+                if ( ! $default_input) {
651 651
                     $default_input = new EE_Text_Input($input_constructor_args);
652 652
                 }
653 653
                 $result = $default_input;
Please login to merge, or discard this patch.
Indentation   +664 added lines, -664 removed lines patch added patch discarded remove patch
@@ -13,668 +13,668 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Question extends EE_Soft_Delete_Base_Class implements EEI_Duplicatable
15 15
 {
16
-    /**
17
-     *
18
-     * @param array  $props_n_values          incoming values
19
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
20
-     *                                        used.)
21
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
22
-     *                                        date_format and the second value is the time format
23
-     * @return EE_Question
24
-     */
25
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
26
-    {
27
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
28
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
29
-    }
30
-
31
-
32
-    /**
33
-     * @param array  $props_n_values  incoming values from the database
34
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
35
-     *                                the website will be used.
36
-     * @return EE_Question
37
-     */
38
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
39
-    {
40
-        return new self($props_n_values, true, $timezone);
41
-    }
42
-
43
-
44
-    /**
45
-     *        Set    Question display text
46
-     *
47
-     * @access        public
48
-     * @param string $QST_display_text
49
-     */
50
-    public function set_display_text($QST_display_text = '')
51
-    {
52
-        $this->set('QST_display_text', $QST_display_text);
53
-    }
54
-
55
-
56
-    /**
57
-     *        Set    Question admin text
58
-     *
59
-     * @access        public
60
-     * @param        string $QST_admin_label
61
-     */
62
-    public function set_admin_label($QST_admin_label = '')
63
-    {
64
-        $this->set('QST_admin_label', $QST_admin_label);
65
-    }
66
-
67
-
68
-    /**
69
-     *        Set    system name
70
-     *
71
-     * @access        public
72
-     * @param        mixed $QST_system
73
-     */
74
-    public function set_system_ID($QST_system = '')
75
-    {
76
-        $this->set('QST_system', $QST_system);
77
-    }
78
-
79
-
80
-    /**
81
-     *        Set    question's type
82
-     *
83
-     * @access        public
84
-     * @param        string $QST_type
85
-     */
86
-    public function set_question_type($QST_type = '')
87
-    {
88
-        $this->set('QST_type', $QST_type);
89
-    }
90
-
91
-
92
-    /**
93
-     *        Sets whether this question must be answered when presented in a form
94
-     *
95
-     * @access        public
96
-     * @param        bool $QST_required
97
-     */
98
-    public function set_required($QST_required = false)
99
-    {
100
-        $this->set('QST_required', $QST_required);
101
-    }
102
-
103
-
104
-    /**
105
-     *        Set    Question display text
106
-     *
107
-     * @access        public
108
-     * @param        string $QST_required_text
109
-     */
110
-    public function set_required_text($QST_required_text = '')
111
-    {
112
-        $this->set('QST_required_text', $QST_required_text);
113
-    }
114
-
115
-
116
-    /**
117
-     *        Sets the order of this question when placed in a sequence of questions
118
-     *
119
-     * @access        public
120
-     * @param        int $QST_order
121
-     */
122
-    public function set_order($QST_order = 0)
123
-    {
124
-        $this->set('QST_order', $QST_order);
125
-    }
126
-
127
-
128
-    /**
129
-     *        Sets whether the question is admin-only
130
-     *
131
-     * @access        public
132
-     * @param        bool $QST_admin_only
133
-     */
134
-    public function set_admin_only($QST_admin_only = false)
135
-    {
136
-        $this->set('QST_admin_only', $QST_admin_only);
137
-    }
138
-
139
-
140
-    /**
141
-     *        Sets the wordpress user ID on the question
142
-     *
143
-     * @access        public
144
-     * @param        int $QST_wp_user
145
-     */
146
-    public function set_wp_user($QST_wp_user = 1)
147
-    {
148
-        $this->set('QST_wp_user', $QST_wp_user);
149
-    }
150
-
151
-
152
-    /**
153
-     *        Sets whether the question has been deleted
154
-     *        (we use this boolean instead of actually
155
-     *        deleting it because when users delete this question
156
-     *        they really want to remove the question from future
157
-     *        forms, BUT keep their old answers which depend
158
-     *        on this record actually existing.
159
-     *
160
-     * @access        public
161
-     * @param    bool $QST_deleted
162
-     */
163
-    public function set_deleted($QST_deleted = false)
164
-    {
165
-        $this->set('QST_deleted', $QST_deleted);
166
-    }
167
-
168
-
169
-    /**
170
-     * returns the text for displaying the question to users
171
-     *
172
-     * @access public
173
-     * @return string
174
-     */
175
-    public function display_text()
176
-    {
177
-        return $this->get('QST_display_text');
178
-    }
179
-
180
-
181
-    /**
182
-     * returns the text for the administrative label
183
-     *
184
-     * @access public
185
-     * @return string
186
-     */
187
-    public function admin_label()
188
-    {
189
-        return $this->get('QST_admin_label');
190
-    }
191
-
192
-
193
-    /**
194
-     * returns the attendee column name for this question
195
-     *
196
-     * @access public
197
-     * @return string
198
-     */
199
-    public function system_ID()
200
-    {
201
-        return $this->get('QST_system');
202
-    }
203
-
204
-
205
-    /**
206
-     * returns either a string of 'text', 'textfield', etc.
207
-     *
208
-     * @access public
209
-     * @return boolean
210
-     */
211
-    public function required()
212
-    {
213
-        return $this->get('QST_required');
214
-    }
215
-
216
-
217
-    /**
218
-     * returns the text which should be displayed when a user
219
-     * doesn't answer this question in a form
220
-     *
221
-     * @access public
222
-     * @return string
223
-     */
224
-    public function required_text()
225
-    {
226
-        return $this->get('QST_required_text');
227
-    }
228
-
229
-
230
-    /**
231
-     * returns the type of this question
232
-     *
233
-     * @access public
234
-     * @return string
235
-     */
236
-    public function type()
237
-    {
238
-        return $this->get('QST_type');
239
-    }
240
-
241
-
242
-    /**
243
-     * returns an integer showing where this question should
244
-     * be placed in a sequence of questions
245
-     *
246
-     * @access public
247
-     * @return int
248
-     */
249
-    public function order()
250
-    {
251
-        return $this->get('QST_order');
252
-    }
253
-
254
-
255
-    /**
256
-     * returns whether this question should only appears to admins,
257
-     * or to everyone
258
-     *
259
-     * @access public
260
-     * @return boolean
261
-     */
262
-    public function admin_only()
263
-    {
264
-        return $this->get('QST_admin_only');
265
-    }
266
-
267
-
268
-    /**
269
-     * returns the id the wordpress user who created this question
270
-     *
271
-     * @access public
272
-     * @return int
273
-     */
274
-    public function wp_user()
275
-    {
276
-        return $this->get('QST_wp_user');
277
-    }
278
-
279
-
280
-    /**
281
-     * returns whether this question has been marked as 'deleted'
282
-     *
283
-     * @access public
284
-     * @return boolean
285
-     */
286
-    public function deleted()
287
-    {
288
-        return $this->get('QST_deleted');
289
-    }
290
-
291
-
292
-    /**
293
-     * Gets an array of related EE_Answer  to this EE_Question
294
-     *
295
-     * @return EE_Answer[]
296
-     */
297
-    public function answers()
298
-    {
299
-        return $this->get_many_related('Answer');
300
-    }
301
-
302
-
303
-    /**
304
-     * Boolean check for if there are answers on this question in th db
305
-     *
306
-     * @return boolean true = has answers, false = no answers.
307
-     */
308
-    public function has_answers()
309
-    {
310
-        return $this->count_related('Answer') > 0 ? true : false;
311
-    }
312
-
313
-
314
-    /**
315
-     * gets an array of EE_Question_Group which relate to this question
316
-     *
317
-     * @return EE_Question_Group[]
318
-     */
319
-    public function question_groups()
320
-    {
321
-        return $this->get_many_related('Question_Group');
322
-    }
323
-
324
-
325
-    /**
326
-     * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
327
-     *
328
-     * @param boolean      $notDeletedOptionsOnly            1
329
-     *                                                       whether to return ALL options, or only the ones which have
330
-     *                                                       not yet been deleleted
331
-     * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
332
-     *                                                       we want to usually only show non-deleted options AND the
333
-     *                                                       value that was selected for the answer, whether it was
334
-     *                                                       trashed or not.
335
-     * @return EE_Question_Option[]
336
-     */
337
-    public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
338
-    {
339
-        if (! $this->ID()) {
340
-            return array();
341
-        }
342
-        $query_params = array();
343
-        if ($selected_value_to_always_include) {
344
-            if (is_array($selected_value_to_always_include)) {
345
-                $query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
346
-            } else {
347
-                $query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
348
-            }
349
-        }
350
-        if ($notDeletedOptionsOnly) {
351
-            $query_params[0]['OR*options-query']['QSO_deleted'] = false;
352
-        }
353
-        // order by QSO_order
354
-        $query_params['order_by'] = array('QSO_order' => 'ASC');
355
-        return $this->get_many_related('Question_Option', $query_params);
356
-    }
357
-
358
-
359
-    /**
360
-     * returns an array of EE_Question_Options which relate to this question
361
-     *
362
-     * @return EE_Question_Option[]
363
-     */
364
-    public function temp_options()
365
-    {
366
-        return $this->_model_relations['Question_Option'];
367
-    }
368
-
369
-
370
-    /**
371
-     * Adds an option for this question. Note: if the option were previously associated with a different
372
-     * Question, that relationship will be overwritten.
373
-     *
374
-     * @param EE_Question_Option $option
375
-     * @return boolean success
376
-     */
377
-    public function add_option($option)
378
-    {
379
-        return $this->_add_relation_to($option, 'Question_Option');
380
-    }
381
-
382
-
383
-    /**
384
-     * Adds an option directly to this question without saving to the db
385
-     *
386
-     * @param EE_Question_Option $option
387
-     * @return boolean success
388
-     */
389
-    public function add_temp_option($option)
390
-    {
391
-        $this->_model_relations['Question_Option'][] = $option;
392
-        return true;
393
-    }
394
-
395
-
396
-    /**
397
-     * Marks the option as deleted.
398
-     *
399
-     * @param EE_Question_Option $option
400
-     * @return boolean success
401
-     */
402
-    public function remove_option($option)
403
-    {
404
-        return $this->_remove_relation_to($option, 'Question_Option');
405
-    }
406
-
407
-
408
-    /**
409
-     * @return bool
410
-     */
411
-    public function is_system_question()
412
-    {
413
-        $system_ID = $this->get('QST_system');
414
-        return ! empty($system_ID) ? true : false;
415
-    }
416
-
417
-
418
-    /**
419
-     * The purpose of this method is set the question order this question order to be the max out of all questions
420
-     *
421
-     * @access public
422
-     * @return void
423
-     */
424
-    public function set_order_to_latest()
425
-    {
426
-        $latest_order = $this->get_model()->get_latest_question_order();
427
-        $latest_order++;
428
-        $this->set('QST_order', $latest_order);
429
-    }
430
-
431
-
432
-    /**
433
-     * Retrieves the list of allowed question types from the model.
434
-     *
435
-     * @return string[]
436
-     */
437
-    private function _allowed_question_types()
438
-    {
439
-        $questionModel = $this->get_model();
440
-        /* @var $questionModel EEM_Question */
441
-        return $questionModel->allowed_question_types();
442
-    }
443
-
444
-    /**
445
-     * Duplicates this question and its question options
446
-     *
447
-     * @return EE_Question
448
-     */
449
-    public function duplicate($options = array())
450
-    {
451
-        $new_question = clone $this;
452
-        $new_question->set('QST_ID', null);
453
-        $new_question->set_display_text(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
454
-        $new_question->set_admin_label(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
455
-        $new_question->set_system_ID(null);
456
-        $new_question->set_wp_user(get_current_user_id());
457
-        // if we're duplicating a trashed question, assume we don't want the new one to be trashed
458
-        $new_question->set_deleted(false);
459
-        $success = $new_question->save();
460
-        if ($success) {
461
-            // we don't totally want to duplicate the question options, because we want them to be for the NEW question
462
-            foreach ($this->options() as $question_option) {
463
-                $question_option->duplicate(array('QST_ID' => $new_question->ID()));
464
-            }
465
-            return $new_question;
466
-        } else {
467
-            return null;
468
-        }
469
-    }
470
-
471
-    /**
472
-     * Returns the question's maximum allowed response size
473
-     *
474
-     * @return int|float
475
-     */
476
-    public function max()
477
-    {
478
-        return $this->get('QST_max');
479
-    }
480
-
481
-    /**
482
-     * Sets the question's maximum allowed response size
483
-     *
484
-     * @param int|float $new_max
485
-     * @return void
486
-     */
487
-    public function set_max($new_max)
488
-    {
489
-        $this->set('QST_max', $new_max);
490
-    }
491
-
492
-
493
-    /**
494
-     * Creates a form input from this question which can be used in HTML forms
495
-     *
496
-     * @param EE_Registration $registration
497
-     * @param EE_Answer       $answer
498
-     * @param array           $input_constructor_args
499
-     * @return EE_Form_Input_Base
500
-     */
501
-    public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
502
-    {
503
-        $identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
504
-
505
-        $input_constructor_args = array_merge(
506
-            array(
507
-                'required'                          => $this->required() ? true : false,
508
-                'html_label_text'                   => $this->display_text(),
509
-                'required_validation_error_message' => $this->required_text(),
510
-            ),
511
-            $input_constructor_args
512
-        );
513
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
514
-            $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
515
-        }
516
-        // has this question been answered ?
517
-        if (
518
-            $answer instanceof EE_Answer
519
-            && $answer->value() !== ''
520
-        ) {
521
-            // answer gets htmlspecialchars called on it, undo that please
522
-            // because the form input's display strategy may call esc_attr too
523
-            // which also does html special characters
524
-            $values_with_html_special_chars = $answer->value();
525
-            if (is_array($values_with_html_special_chars)) {
526
-                $default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
527
-            } else {
528
-                $default_value = htmlspecialchars_decode($values_with_html_special_chars);
529
-            }
530
-            $input_constructor_args['default'] = $default_value;
531
-        }
532
-        $max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
533
-        if (
534
-            in_array(
535
-                $this->type(),
536
-                EEM_Question::instance()->questionTypesWithMaxLength(),
537
-                true
538
-            )
539
-        ) {
540
-            $input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
541
-                null,
542
-                min($max_max_for_question, $this->max())
543
-            );
544
-        }
545
-        $input_constructor_args = apply_filters(
546
-            'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
547
-            $input_constructor_args,
548
-            $registration,
549
-            $this,
550
-            $answer
551
-        );
552
-
553
-        $result = null;
554
-        switch ($this->type()) {
555
-            // Text
556
-            case EEM_Question::QST_type_text:
557
-                $result = new EE_Text_Input($input_constructor_args);
558
-                break;
559
-            // Textarea
560
-            case EEM_Question::QST_type_textarea:
561
-                $result = new EE_Text_Area_Input($input_constructor_args);
562
-                break;
563
-            // Radio Buttons
564
-            case EEM_Question::QST_type_radio:
565
-                $result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
566
-                break;
567
-            // Dropdown
568
-            case EEM_Question::QST_type_dropdown:
569
-                $result = new EE_Select_Input($this->options(), $input_constructor_args);
570
-                break;
571
-            // State Dropdown
572
-            case EEM_Question::QST_type_state:
573
-                $state_options = apply_filters(
574
-                    'FHEE__EE_Question__generate_form_input__state_options',
575
-                    null,
576
-                    $this,
577
-                    $registration,
578
-                    $answer
579
-                );
580
-                $result = new EE_State_Select_Input($state_options, $input_constructor_args);
581
-                break;
582
-            // Country Dropdown
583
-            case EEM_Question::QST_type_country:
584
-                $country_options = apply_filters(
585
-                    'FHEE__EE_Question__generate_form_input__country_options',
586
-                    null,
587
-                    $this,
588
-                    $registration,
589
-                    $answer
590
-                );
591
-                $result = new EE_Country_Select_Input($country_options, $input_constructor_args);
592
-                break;
593
-            // Checkboxes
594
-            case EEM_Question::QST_type_checkbox:
595
-                $result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
596
-                break;
597
-            // Date
598
-            case EEM_Question::QST_type_date:
599
-                $result = new EE_Datepicker_Input($input_constructor_args);
600
-                break;
601
-            case EEM_Question::QST_type_html_textarea:
602
-                $input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
603
-                $result = new EE_Text_Area_Input($input_constructor_args);
604
-                $result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
605
-                break;
606
-            case EEM_Question::QST_type_email:
607
-                    $result = new EE_Email_Input($input_constructor_args);
608
-                break;
609
-            // Email confirm
610
-            case EEM_Question::QST_type_email_confirm:
611
-                $result = new EE_Email_Confirm_Input($input_constructor_args);
612
-                break;
613
-            case EEM_Question::QST_type_us_phone:
614
-                $result = new EE_Phone_Input($input_constructor_args);
615
-                break;
616
-            case EEM_Question::QST_type_int:
617
-                $result = new EE_Integer_Input($input_constructor_args);
618
-                break;
619
-            case EEM_Question::QST_type_decimal:
620
-                $result = new EE_Float_Input($input_constructor_args);
621
-                break;
622
-            case EEM_Question::QST_type_url:
623
-                $input_constructor_args['validation_strategies'][] = LoaderFactory::getLoader()->getNew('EE_URL_Validation_Strategy');
624
-                $result = new EE_Text_Input($input_constructor_args);
625
-                break;
626
-            case EEM_Question::QST_type_year:
627
-                $result = new EE_Year_Input(
628
-                    $input_constructor_args,
629
-                    apply_filters(
630
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
631
-                        true,
632
-                        $this
633
-                    ),
634
-                    apply_filters(
635
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
636
-                        100,
637
-                        $this
638
-                    ),
639
-                    apply_filters(
640
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
641
-                        100,
642
-                        $this
643
-                    )
644
-                );
645
-                break;
646
-            case EEM_Question::QST_type_multi_select:
647
-                $result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
648
-                break;
649
-            // fallback
650
-            default:
651
-                $default_input = apply_filters(
652
-                    'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
653
-                    null,
654
-                    $this->type(),
655
-                    $this,
656
-                    $input_constructor_args
657
-                );
658
-                if (! $default_input) {
659
-                    $default_input = new EE_Text_Input($input_constructor_args);
660
-                }
661
-                $result = $default_input;
662
-        }
663
-        return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
664
-    }
665
-
666
-
667
-    /**
668
-     * Returns whether or not this question type should have question option entries
669
-     *
670
-     * @return bool
671
-     */
672
-    public function should_have_question_options()
673
-    {
674
-        return in_array(
675
-            $this->type(),
676
-            $this->_model->question_types_with_options(),
677
-            true
678
-        );
679
-    }
16
+	/**
17
+	 *
18
+	 * @param array  $props_n_values          incoming values
19
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
20
+	 *                                        used.)
21
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
22
+	 *                                        date_format and the second value is the time format
23
+	 * @return EE_Question
24
+	 */
25
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
26
+	{
27
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
28
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
29
+	}
30
+
31
+
32
+	/**
33
+	 * @param array  $props_n_values  incoming values from the database
34
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
35
+	 *                                the website will be used.
36
+	 * @return EE_Question
37
+	 */
38
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
39
+	{
40
+		return new self($props_n_values, true, $timezone);
41
+	}
42
+
43
+
44
+	/**
45
+	 *        Set    Question display text
46
+	 *
47
+	 * @access        public
48
+	 * @param string $QST_display_text
49
+	 */
50
+	public function set_display_text($QST_display_text = '')
51
+	{
52
+		$this->set('QST_display_text', $QST_display_text);
53
+	}
54
+
55
+
56
+	/**
57
+	 *        Set    Question admin text
58
+	 *
59
+	 * @access        public
60
+	 * @param        string $QST_admin_label
61
+	 */
62
+	public function set_admin_label($QST_admin_label = '')
63
+	{
64
+		$this->set('QST_admin_label', $QST_admin_label);
65
+	}
66
+
67
+
68
+	/**
69
+	 *        Set    system name
70
+	 *
71
+	 * @access        public
72
+	 * @param        mixed $QST_system
73
+	 */
74
+	public function set_system_ID($QST_system = '')
75
+	{
76
+		$this->set('QST_system', $QST_system);
77
+	}
78
+
79
+
80
+	/**
81
+	 *        Set    question's type
82
+	 *
83
+	 * @access        public
84
+	 * @param        string $QST_type
85
+	 */
86
+	public function set_question_type($QST_type = '')
87
+	{
88
+		$this->set('QST_type', $QST_type);
89
+	}
90
+
91
+
92
+	/**
93
+	 *        Sets whether this question must be answered when presented in a form
94
+	 *
95
+	 * @access        public
96
+	 * @param        bool $QST_required
97
+	 */
98
+	public function set_required($QST_required = false)
99
+	{
100
+		$this->set('QST_required', $QST_required);
101
+	}
102
+
103
+
104
+	/**
105
+	 *        Set    Question display text
106
+	 *
107
+	 * @access        public
108
+	 * @param        string $QST_required_text
109
+	 */
110
+	public function set_required_text($QST_required_text = '')
111
+	{
112
+		$this->set('QST_required_text', $QST_required_text);
113
+	}
114
+
115
+
116
+	/**
117
+	 *        Sets the order of this question when placed in a sequence of questions
118
+	 *
119
+	 * @access        public
120
+	 * @param        int $QST_order
121
+	 */
122
+	public function set_order($QST_order = 0)
123
+	{
124
+		$this->set('QST_order', $QST_order);
125
+	}
126
+
127
+
128
+	/**
129
+	 *        Sets whether the question is admin-only
130
+	 *
131
+	 * @access        public
132
+	 * @param        bool $QST_admin_only
133
+	 */
134
+	public function set_admin_only($QST_admin_only = false)
135
+	{
136
+		$this->set('QST_admin_only', $QST_admin_only);
137
+	}
138
+
139
+
140
+	/**
141
+	 *        Sets the wordpress user ID on the question
142
+	 *
143
+	 * @access        public
144
+	 * @param        int $QST_wp_user
145
+	 */
146
+	public function set_wp_user($QST_wp_user = 1)
147
+	{
148
+		$this->set('QST_wp_user', $QST_wp_user);
149
+	}
150
+
151
+
152
+	/**
153
+	 *        Sets whether the question has been deleted
154
+	 *        (we use this boolean instead of actually
155
+	 *        deleting it because when users delete this question
156
+	 *        they really want to remove the question from future
157
+	 *        forms, BUT keep their old answers which depend
158
+	 *        on this record actually existing.
159
+	 *
160
+	 * @access        public
161
+	 * @param    bool $QST_deleted
162
+	 */
163
+	public function set_deleted($QST_deleted = false)
164
+	{
165
+		$this->set('QST_deleted', $QST_deleted);
166
+	}
167
+
168
+
169
+	/**
170
+	 * returns the text for displaying the question to users
171
+	 *
172
+	 * @access public
173
+	 * @return string
174
+	 */
175
+	public function display_text()
176
+	{
177
+		return $this->get('QST_display_text');
178
+	}
179
+
180
+
181
+	/**
182
+	 * returns the text for the administrative label
183
+	 *
184
+	 * @access public
185
+	 * @return string
186
+	 */
187
+	public function admin_label()
188
+	{
189
+		return $this->get('QST_admin_label');
190
+	}
191
+
192
+
193
+	/**
194
+	 * returns the attendee column name for this question
195
+	 *
196
+	 * @access public
197
+	 * @return string
198
+	 */
199
+	public function system_ID()
200
+	{
201
+		return $this->get('QST_system');
202
+	}
203
+
204
+
205
+	/**
206
+	 * returns either a string of 'text', 'textfield', etc.
207
+	 *
208
+	 * @access public
209
+	 * @return boolean
210
+	 */
211
+	public function required()
212
+	{
213
+		return $this->get('QST_required');
214
+	}
215
+
216
+
217
+	/**
218
+	 * returns the text which should be displayed when a user
219
+	 * doesn't answer this question in a form
220
+	 *
221
+	 * @access public
222
+	 * @return string
223
+	 */
224
+	public function required_text()
225
+	{
226
+		return $this->get('QST_required_text');
227
+	}
228
+
229
+
230
+	/**
231
+	 * returns the type of this question
232
+	 *
233
+	 * @access public
234
+	 * @return string
235
+	 */
236
+	public function type()
237
+	{
238
+		return $this->get('QST_type');
239
+	}
240
+
241
+
242
+	/**
243
+	 * returns an integer showing where this question should
244
+	 * be placed in a sequence of questions
245
+	 *
246
+	 * @access public
247
+	 * @return int
248
+	 */
249
+	public function order()
250
+	{
251
+		return $this->get('QST_order');
252
+	}
253
+
254
+
255
+	/**
256
+	 * returns whether this question should only appears to admins,
257
+	 * or to everyone
258
+	 *
259
+	 * @access public
260
+	 * @return boolean
261
+	 */
262
+	public function admin_only()
263
+	{
264
+		return $this->get('QST_admin_only');
265
+	}
266
+
267
+
268
+	/**
269
+	 * returns the id the wordpress user who created this question
270
+	 *
271
+	 * @access public
272
+	 * @return int
273
+	 */
274
+	public function wp_user()
275
+	{
276
+		return $this->get('QST_wp_user');
277
+	}
278
+
279
+
280
+	/**
281
+	 * returns whether this question has been marked as 'deleted'
282
+	 *
283
+	 * @access public
284
+	 * @return boolean
285
+	 */
286
+	public function deleted()
287
+	{
288
+		return $this->get('QST_deleted');
289
+	}
290
+
291
+
292
+	/**
293
+	 * Gets an array of related EE_Answer  to this EE_Question
294
+	 *
295
+	 * @return EE_Answer[]
296
+	 */
297
+	public function answers()
298
+	{
299
+		return $this->get_many_related('Answer');
300
+	}
301
+
302
+
303
+	/**
304
+	 * Boolean check for if there are answers on this question in th db
305
+	 *
306
+	 * @return boolean true = has answers, false = no answers.
307
+	 */
308
+	public function has_answers()
309
+	{
310
+		return $this->count_related('Answer') > 0 ? true : false;
311
+	}
312
+
313
+
314
+	/**
315
+	 * gets an array of EE_Question_Group which relate to this question
316
+	 *
317
+	 * @return EE_Question_Group[]
318
+	 */
319
+	public function question_groups()
320
+	{
321
+		return $this->get_many_related('Question_Group');
322
+	}
323
+
324
+
325
+	/**
326
+	 * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
327
+	 *
328
+	 * @param boolean      $notDeletedOptionsOnly            1
329
+	 *                                                       whether to return ALL options, or only the ones which have
330
+	 *                                                       not yet been deleleted
331
+	 * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
332
+	 *                                                       we want to usually only show non-deleted options AND the
333
+	 *                                                       value that was selected for the answer, whether it was
334
+	 *                                                       trashed or not.
335
+	 * @return EE_Question_Option[]
336
+	 */
337
+	public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
338
+	{
339
+		if (! $this->ID()) {
340
+			return array();
341
+		}
342
+		$query_params = array();
343
+		if ($selected_value_to_always_include) {
344
+			if (is_array($selected_value_to_always_include)) {
345
+				$query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
346
+			} else {
347
+				$query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
348
+			}
349
+		}
350
+		if ($notDeletedOptionsOnly) {
351
+			$query_params[0]['OR*options-query']['QSO_deleted'] = false;
352
+		}
353
+		// order by QSO_order
354
+		$query_params['order_by'] = array('QSO_order' => 'ASC');
355
+		return $this->get_many_related('Question_Option', $query_params);
356
+	}
357
+
358
+
359
+	/**
360
+	 * returns an array of EE_Question_Options which relate to this question
361
+	 *
362
+	 * @return EE_Question_Option[]
363
+	 */
364
+	public function temp_options()
365
+	{
366
+		return $this->_model_relations['Question_Option'];
367
+	}
368
+
369
+
370
+	/**
371
+	 * Adds an option for this question. Note: if the option were previously associated with a different
372
+	 * Question, that relationship will be overwritten.
373
+	 *
374
+	 * @param EE_Question_Option $option
375
+	 * @return boolean success
376
+	 */
377
+	public function add_option($option)
378
+	{
379
+		return $this->_add_relation_to($option, 'Question_Option');
380
+	}
381
+
382
+
383
+	/**
384
+	 * Adds an option directly to this question without saving to the db
385
+	 *
386
+	 * @param EE_Question_Option $option
387
+	 * @return boolean success
388
+	 */
389
+	public function add_temp_option($option)
390
+	{
391
+		$this->_model_relations['Question_Option'][] = $option;
392
+		return true;
393
+	}
394
+
395
+
396
+	/**
397
+	 * Marks the option as deleted.
398
+	 *
399
+	 * @param EE_Question_Option $option
400
+	 * @return boolean success
401
+	 */
402
+	public function remove_option($option)
403
+	{
404
+		return $this->_remove_relation_to($option, 'Question_Option');
405
+	}
406
+
407
+
408
+	/**
409
+	 * @return bool
410
+	 */
411
+	public function is_system_question()
412
+	{
413
+		$system_ID = $this->get('QST_system');
414
+		return ! empty($system_ID) ? true : false;
415
+	}
416
+
417
+
418
+	/**
419
+	 * The purpose of this method is set the question order this question order to be the max out of all questions
420
+	 *
421
+	 * @access public
422
+	 * @return void
423
+	 */
424
+	public function set_order_to_latest()
425
+	{
426
+		$latest_order = $this->get_model()->get_latest_question_order();
427
+		$latest_order++;
428
+		$this->set('QST_order', $latest_order);
429
+	}
430
+
431
+
432
+	/**
433
+	 * Retrieves the list of allowed question types from the model.
434
+	 *
435
+	 * @return string[]
436
+	 */
437
+	private function _allowed_question_types()
438
+	{
439
+		$questionModel = $this->get_model();
440
+		/* @var $questionModel EEM_Question */
441
+		return $questionModel->allowed_question_types();
442
+	}
443
+
444
+	/**
445
+	 * Duplicates this question and its question options
446
+	 *
447
+	 * @return EE_Question
448
+	 */
449
+	public function duplicate($options = array())
450
+	{
451
+		$new_question = clone $this;
452
+		$new_question->set('QST_ID', null);
453
+		$new_question->set_display_text(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
454
+		$new_question->set_admin_label(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
455
+		$new_question->set_system_ID(null);
456
+		$new_question->set_wp_user(get_current_user_id());
457
+		// if we're duplicating a trashed question, assume we don't want the new one to be trashed
458
+		$new_question->set_deleted(false);
459
+		$success = $new_question->save();
460
+		if ($success) {
461
+			// we don't totally want to duplicate the question options, because we want them to be for the NEW question
462
+			foreach ($this->options() as $question_option) {
463
+				$question_option->duplicate(array('QST_ID' => $new_question->ID()));
464
+			}
465
+			return $new_question;
466
+		} else {
467
+			return null;
468
+		}
469
+	}
470
+
471
+	/**
472
+	 * Returns the question's maximum allowed response size
473
+	 *
474
+	 * @return int|float
475
+	 */
476
+	public function max()
477
+	{
478
+		return $this->get('QST_max');
479
+	}
480
+
481
+	/**
482
+	 * Sets the question's maximum allowed response size
483
+	 *
484
+	 * @param int|float $new_max
485
+	 * @return void
486
+	 */
487
+	public function set_max($new_max)
488
+	{
489
+		$this->set('QST_max', $new_max);
490
+	}
491
+
492
+
493
+	/**
494
+	 * Creates a form input from this question which can be used in HTML forms
495
+	 *
496
+	 * @param EE_Registration $registration
497
+	 * @param EE_Answer       $answer
498
+	 * @param array           $input_constructor_args
499
+	 * @return EE_Form_Input_Base
500
+	 */
501
+	public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
502
+	{
503
+		$identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
504
+
505
+		$input_constructor_args = array_merge(
506
+			array(
507
+				'required'                          => $this->required() ? true : false,
508
+				'html_label_text'                   => $this->display_text(),
509
+				'required_validation_error_message' => $this->required_text(),
510
+			),
511
+			$input_constructor_args
512
+		);
513
+		if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
514
+			$answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
515
+		}
516
+		// has this question been answered ?
517
+		if (
518
+			$answer instanceof EE_Answer
519
+			&& $answer->value() !== ''
520
+		) {
521
+			// answer gets htmlspecialchars called on it, undo that please
522
+			// because the form input's display strategy may call esc_attr too
523
+			// which also does html special characters
524
+			$values_with_html_special_chars = $answer->value();
525
+			if (is_array($values_with_html_special_chars)) {
526
+				$default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
527
+			} else {
528
+				$default_value = htmlspecialchars_decode($values_with_html_special_chars);
529
+			}
530
+			$input_constructor_args['default'] = $default_value;
531
+		}
532
+		$max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
533
+		if (
534
+			in_array(
535
+				$this->type(),
536
+				EEM_Question::instance()->questionTypesWithMaxLength(),
537
+				true
538
+			)
539
+		) {
540
+			$input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
541
+				null,
542
+				min($max_max_for_question, $this->max())
543
+			);
544
+		}
545
+		$input_constructor_args = apply_filters(
546
+			'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
547
+			$input_constructor_args,
548
+			$registration,
549
+			$this,
550
+			$answer
551
+		);
552
+
553
+		$result = null;
554
+		switch ($this->type()) {
555
+			// Text
556
+			case EEM_Question::QST_type_text:
557
+				$result = new EE_Text_Input($input_constructor_args);
558
+				break;
559
+			// Textarea
560
+			case EEM_Question::QST_type_textarea:
561
+				$result = new EE_Text_Area_Input($input_constructor_args);
562
+				break;
563
+			// Radio Buttons
564
+			case EEM_Question::QST_type_radio:
565
+				$result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
566
+				break;
567
+			// Dropdown
568
+			case EEM_Question::QST_type_dropdown:
569
+				$result = new EE_Select_Input($this->options(), $input_constructor_args);
570
+				break;
571
+			// State Dropdown
572
+			case EEM_Question::QST_type_state:
573
+				$state_options = apply_filters(
574
+					'FHEE__EE_Question__generate_form_input__state_options',
575
+					null,
576
+					$this,
577
+					$registration,
578
+					$answer
579
+				);
580
+				$result = new EE_State_Select_Input($state_options, $input_constructor_args);
581
+				break;
582
+			// Country Dropdown
583
+			case EEM_Question::QST_type_country:
584
+				$country_options = apply_filters(
585
+					'FHEE__EE_Question__generate_form_input__country_options',
586
+					null,
587
+					$this,
588
+					$registration,
589
+					$answer
590
+				);
591
+				$result = new EE_Country_Select_Input($country_options, $input_constructor_args);
592
+				break;
593
+			// Checkboxes
594
+			case EEM_Question::QST_type_checkbox:
595
+				$result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
596
+				break;
597
+			// Date
598
+			case EEM_Question::QST_type_date:
599
+				$result = new EE_Datepicker_Input($input_constructor_args);
600
+				break;
601
+			case EEM_Question::QST_type_html_textarea:
602
+				$input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
603
+				$result = new EE_Text_Area_Input($input_constructor_args);
604
+				$result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
605
+				break;
606
+			case EEM_Question::QST_type_email:
607
+					$result = new EE_Email_Input($input_constructor_args);
608
+				break;
609
+			// Email confirm
610
+			case EEM_Question::QST_type_email_confirm:
611
+				$result = new EE_Email_Confirm_Input($input_constructor_args);
612
+				break;
613
+			case EEM_Question::QST_type_us_phone:
614
+				$result = new EE_Phone_Input($input_constructor_args);
615
+				break;
616
+			case EEM_Question::QST_type_int:
617
+				$result = new EE_Integer_Input($input_constructor_args);
618
+				break;
619
+			case EEM_Question::QST_type_decimal:
620
+				$result = new EE_Float_Input($input_constructor_args);
621
+				break;
622
+			case EEM_Question::QST_type_url:
623
+				$input_constructor_args['validation_strategies'][] = LoaderFactory::getLoader()->getNew('EE_URL_Validation_Strategy');
624
+				$result = new EE_Text_Input($input_constructor_args);
625
+				break;
626
+			case EEM_Question::QST_type_year:
627
+				$result = new EE_Year_Input(
628
+					$input_constructor_args,
629
+					apply_filters(
630
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
631
+						true,
632
+						$this
633
+					),
634
+					apply_filters(
635
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
636
+						100,
637
+						$this
638
+					),
639
+					apply_filters(
640
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
641
+						100,
642
+						$this
643
+					)
644
+				);
645
+				break;
646
+			case EEM_Question::QST_type_multi_select:
647
+				$result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
648
+				break;
649
+			// fallback
650
+			default:
651
+				$default_input = apply_filters(
652
+					'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
653
+					null,
654
+					$this->type(),
655
+					$this,
656
+					$input_constructor_args
657
+				);
658
+				if (! $default_input) {
659
+					$default_input = new EE_Text_Input($input_constructor_args);
660
+				}
661
+				$result = $default_input;
662
+		}
663
+		return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
664
+	}
665
+
666
+
667
+	/**
668
+	 * Returns whether or not this question type should have question option entries
669
+	 *
670
+	 * @return bool
671
+	 */
672
+	public function should_have_question_options()
673
+	{
674
+		return in_array(
675
+			$this->type(),
676
+			$this->_model->question_types_with_options(),
677
+			true
678
+		);
679
+	}
680 680
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Status.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@
 block discarded – undo
44 44
     {
45 45
         $id = $this->get('STS_ID');
46 46
         $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
47
-        return $code[ $id ];
47
+        return $code[$id];
48 48
     }
49 49
 
50 50
 
Please login to merge, or discard this patch.
Indentation   +138 added lines, -138 removed lines patch added patch discarded remove patch
@@ -11,142 +11,142 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Status extends EE_Base_Class
13 13
 {
14
-    /**
15
-     * @param array $props_n_values
16
-     * @return EE_Status
17
-     */
18
-    public static function new_instance($props_n_values = array())
19
-    {
20
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
-        return $has_object ? $has_object : new self($props_n_values);
22
-    }
23
-
24
-
25
-    /**
26
-     * @param array $props_n_values
27
-     * @return EE_Status
28
-     */
29
-    public static function new_instance_from_db($props_n_values = array())
30
-    {
31
-        return new self($props_n_values, true);
32
-    }
33
-
34
-
35
-    /**
36
-     * Gets code
37
-     *
38
-     * @param bool   $plural
39
-     * @param string $schema
40
-     * @return string
41
-     */
42
-    public function code($plural = false, $schema = 'upper')
43
-    {
44
-        $id = $this->get('STS_ID');
45
-        $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
46
-        return $code[ $id ];
47
-    }
48
-
49
-
50
-    /**
51
-     * Sets code
52
-     *
53
-     * @param string $code
54
-     * @return boolean
55
-     */
56
-    public function set_code($code)
57
-    {
58
-        $this->set('STS_code', $code);
59
-    }
60
-
61
-
62
-    /**
63
-     * Gets desc
64
-     *
65
-     * @return string
66
-     */
67
-    public function desc()
68
-    {
69
-        return $this->get('STS_desc');
70
-    }
71
-
72
-
73
-    /**
74
-     * Sets desc
75
-     *
76
-     * @param string $desc
77
-     * @return boolean
78
-     */
79
-    public function set_desc($desc)
80
-    {
81
-        $this->set('STS_desc', $desc);
82
-    }
83
-
84
-
85
-    /**
86
-     * Gets type
87
-     *
88
-     * @return string
89
-     */
90
-    public function type()
91
-    {
92
-        return $this->get('STS_type');
93
-    }
94
-
95
-
96
-    /**
97
-     * Sets type
98
-     *
99
-     * @param string $type
100
-     * @return boolean
101
-     */
102
-    public function set_type($type)
103
-    {
104
-        $this->set('STS_type', $type);
105
-    }
106
-
107
-
108
-    /**
109
-     * Gets can_edit
110
-     *
111
-     * @return boolean
112
-     */
113
-    public function can_edit()
114
-    {
115
-        return $this->get('STS_can_edit');
116
-    }
117
-
118
-
119
-    /**
120
-     * Sets can_edit
121
-     *
122
-     * @param boolean $can_edit
123
-     * @return boolean
124
-     */
125
-    public function set_can_edit($can_edit)
126
-    {
127
-        $this->set('STS_can_edit', $can_edit);
128
-    }
129
-
130
-
131
-    /**
132
-     * Gets open
133
-     *
134
-     * @return boolean
135
-     */
136
-    public function open()
137
-    {
138
-        return $this->get('STS_open');
139
-    }
140
-
141
-
142
-    /**
143
-     * Sets open
144
-     *
145
-     * @param boolean $open
146
-     * @return boolean
147
-     */
148
-    public function set_open($open)
149
-    {
150
-        $this->set('STS_open', $open);
151
-    }
14
+	/**
15
+	 * @param array $props_n_values
16
+	 * @return EE_Status
17
+	 */
18
+	public static function new_instance($props_n_values = array())
19
+	{
20
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
+		return $has_object ? $has_object : new self($props_n_values);
22
+	}
23
+
24
+
25
+	/**
26
+	 * @param array $props_n_values
27
+	 * @return EE_Status
28
+	 */
29
+	public static function new_instance_from_db($props_n_values = array())
30
+	{
31
+		return new self($props_n_values, true);
32
+	}
33
+
34
+
35
+	/**
36
+	 * Gets code
37
+	 *
38
+	 * @param bool   $plural
39
+	 * @param string $schema
40
+	 * @return string
41
+	 */
42
+	public function code($plural = false, $schema = 'upper')
43
+	{
44
+		$id = $this->get('STS_ID');
45
+		$code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
46
+		return $code[ $id ];
47
+	}
48
+
49
+
50
+	/**
51
+	 * Sets code
52
+	 *
53
+	 * @param string $code
54
+	 * @return boolean
55
+	 */
56
+	public function set_code($code)
57
+	{
58
+		$this->set('STS_code', $code);
59
+	}
60
+
61
+
62
+	/**
63
+	 * Gets desc
64
+	 *
65
+	 * @return string
66
+	 */
67
+	public function desc()
68
+	{
69
+		return $this->get('STS_desc');
70
+	}
71
+
72
+
73
+	/**
74
+	 * Sets desc
75
+	 *
76
+	 * @param string $desc
77
+	 * @return boolean
78
+	 */
79
+	public function set_desc($desc)
80
+	{
81
+		$this->set('STS_desc', $desc);
82
+	}
83
+
84
+
85
+	/**
86
+	 * Gets type
87
+	 *
88
+	 * @return string
89
+	 */
90
+	public function type()
91
+	{
92
+		return $this->get('STS_type');
93
+	}
94
+
95
+
96
+	/**
97
+	 * Sets type
98
+	 *
99
+	 * @param string $type
100
+	 * @return boolean
101
+	 */
102
+	public function set_type($type)
103
+	{
104
+		$this->set('STS_type', $type);
105
+	}
106
+
107
+
108
+	/**
109
+	 * Gets can_edit
110
+	 *
111
+	 * @return boolean
112
+	 */
113
+	public function can_edit()
114
+	{
115
+		return $this->get('STS_can_edit');
116
+	}
117
+
118
+
119
+	/**
120
+	 * Sets can_edit
121
+	 *
122
+	 * @param boolean $can_edit
123
+	 * @return boolean
124
+	 */
125
+	public function set_can_edit($can_edit)
126
+	{
127
+		$this->set('STS_can_edit', $can_edit);
128
+	}
129
+
130
+
131
+	/**
132
+	 * Gets open
133
+	 *
134
+	 * @return boolean
135
+	 */
136
+	public function open()
137
+	{
138
+		return $this->get('STS_open');
139
+	}
140
+
141
+
142
+	/**
143
+	 * Sets open
144
+	 *
145
+	 * @param boolean $open
146
+	 * @return boolean
147
+	 */
148
+	public function set_open($open)
149
+	{
150
+		$this->set('STS_open', $open);
151
+	}
152 152
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Term.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@
 block discarded – undo
23 23
      */
24 24
     protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
25 25
     {
26
-        if (! isset($fieldValues['slug'])) {
26
+        if ( ! isset($fieldValues['slug'])) {
27 27
             $fieldValues['slug'] = $fieldValues['name'];
28 28
         }
29 29
         parent::__construct($fieldValues, $bydb, $timezone);
Please login to merge, or discard this patch.
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -11,87 +11,87 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Term extends EE_Base_Class
13 13
 {
14
-    public $post_type;
14
+	public $post_type;
15 15
 
16
-    /**
17
-     * Sets some dynamic defaults
18
-     *
19
-     * @param array  $fieldValues
20
-     * @param bool   $bydb
21
-     * @param string $timezone
22
-     */
23
-    protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
24
-    {
25
-        if (! isset($fieldValues['slug'])) {
26
-            $fieldValues['slug'] = $fieldValues['name'];
27
-        }
28
-        parent::__construct($fieldValues, $bydb, $timezone);
29
-    }
16
+	/**
17
+	 * Sets some dynamic defaults
18
+	 *
19
+	 * @param array  $fieldValues
20
+	 * @param bool   $bydb
21
+	 * @param string $timezone
22
+	 */
23
+	protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
24
+	{
25
+		if (! isset($fieldValues['slug'])) {
26
+			$fieldValues['slug'] = $fieldValues['name'];
27
+		}
28
+		parent::__construct($fieldValues, $bydb, $timezone);
29
+	}
30 30
 
31 31
 
32
-    /**
33
-     * @param array $props_n_values
34
-     * @return EE_Term|mixed
35
-     */
36
-    public static function new_instance($props_n_values = array())
37
-    {
38
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
39
-        return $has_object ? $has_object : new self($props_n_values);
40
-    }
32
+	/**
33
+	 * @param array $props_n_values
34
+	 * @return EE_Term|mixed
35
+	 */
36
+	public static function new_instance($props_n_values = array())
37
+	{
38
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
39
+		return $has_object ? $has_object : new self($props_n_values);
40
+	}
41 41
 
42 42
 
43
-    /**
44
-     * @param array $props_n_values
45
-     * @return EE_Term
46
-     */
47
-    public static function new_instance_from_db($props_n_values = array())
48
-    {
49
-        return new self($props_n_values, true);
50
-    }
43
+	/**
44
+	 * @param array $props_n_values
45
+	 * @return EE_Term
46
+	 */
47
+	public static function new_instance_from_db($props_n_values = array())
48
+	{
49
+		return new self($props_n_values, true);
50
+	}
51 51
 
52 52
 
53
-    /**
54
-     * Gets name
55
-     *
56
-     * @return string
57
-     */
58
-    public function name()
59
-    {
60
-        return $this->get('name');
61
-    }
53
+	/**
54
+	 * Gets name
55
+	 *
56
+	 * @return string
57
+	 */
58
+	public function name()
59
+	{
60
+		return $this->get('name');
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * Sets name
66
-     *
67
-     * @param string $name
68
-     * @return boolean
69
-     */
70
-    public function set_name($name)
71
-    {
72
-        $this->set('name', $name);
73
-    }
64
+	/**
65
+	 * Sets name
66
+	 *
67
+	 * @param string $name
68
+	 * @return boolean
69
+	 */
70
+	public function set_name($name)
71
+	{
72
+		$this->set('name', $name);
73
+	}
74 74
 
75 75
 
76
-    /**
77
-     * Gets slug
78
-     *
79
-     * @return string
80
-     */
81
-    public function slug()
82
-    {
83
-        return $this->get('slug');
84
-    }
76
+	/**
77
+	 * Gets slug
78
+	 *
79
+	 * @return string
80
+	 */
81
+	public function slug()
82
+	{
83
+		return $this->get('slug');
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * Sets slug
89
-     *
90
-     * @param string $slug
91
-     * @return boolean
92
-     */
93
-    public function set_slug($slug)
94
-    {
95
-        $this->set('slug', $slug);
96
-    }
87
+	/**
88
+	 * Sets slug
89
+	 *
90
+	 * @param string $slug
91
+	 * @return boolean
92
+	 */
93
+	public function set_slug($slug)
94
+	{
95
+		$this->set('slug', $slug);
96
+	}
97 97
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Change_Log.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -192,7 +192,7 @@
 block discarded – undo
192 192
     {
193 193
         $model_name_of_related_obj = $this->OBJ_type();
194 194
         $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
195
-        if (! $is_model_name) {
195
+        if ( ! $is_model_name) {
196 196
             return null;
197 197
         } else {
198 198
             return $this->get_first_related($model_name_of_related_obj);
Please login to merge, or discard this patch.
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -10,217 +10,217 @@
 block discarded – undo
10 10
  */
11 11
 class EE_Change_Log extends EE_Base_Class
12 12
 {
13
-    /**
14
-     * @param array  $props_n_values          incoming values
15
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
16
-     *                                        used.)
17
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
18
-     *                                        date_format and the second value is the time format
19
-     * @return EE_Change_Log
20
-     * @throws EE_Error
21
-     */
22
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
-    {
24
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
-    }
27
-
28
-
29
-    /**
30
-     * @param array  $props_n_values  incoming values from the database
31
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
-     *                                the website will be used.
33
-     * @return EE_Change_Log
34
-     */
35
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
-    {
37
-        return new self($props_n_values, true, $timezone);
38
-    }
39
-
40
-    /**
41
-     * Gets message
42
-     *
43
-     * @return mixed
44
-     * @throws EE_Error
45
-     */
46
-    public function message()
47
-    {
48
-        return $this->get('LOG_message');
49
-    }
50
-
51
-    /**
52
-     * Sets message
53
-     *
54
-     * @param mixed $message
55
-     * @throws EE_Error
56
-     */
57
-    public function set_message($message)
58
-    {
59
-        $this->set('LOG_message', $message);
60
-    }
61
-
62
-    /**
63
-     * Gets time
64
-     *
65
-     * @return string
66
-     * @throws EE_Error
67
-     */
68
-    public function time()
69
-    {
70
-        return $this->get('LOG_time');
71
-    }
72
-
73
-    /**
74
-     * Sets time
75
-     *
76
-     * @param string $time
77
-     * @throws EE_Error
78
-     */
79
-    public function set_time($time)
80
-    {
81
-        $this->set('LOG_time', $time);
82
-    }
83
-
84
-    /**
85
-     * Gets log_type
86
-     *
87
-     * @return string
88
-     * @throws EE_Error
89
-     */
90
-    public function log_type()
91
-    {
92
-        return $this->get('LOG_type');
93
-    }
94
-
95
-
96
-    /**
97
-     * Return the localized log type label.
98
-     *
99
-     * @return string
100
-     * @throws EE_Error
101
-     */
102
-    public function log_type_label()
103
-    {
104
-        return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
105
-    }
106
-
107
-    /**
108
-     * Sets log_type
109
-     *
110
-     * @param string $log_type
111
-     * @throws EE_Error
112
-     */
113
-    public function set_log_type($log_type)
114
-    {
115
-        $this->set('LOG_type', $log_type);
116
-    }
117
-
118
-    /**
119
-     * Gets type of the model object related to this log
120
-     *
121
-     * @return string
122
-     * @throws EE_Error
123
-     */
124
-    public function OBJ_type()
125
-    {
126
-        return $this->get('OBJ_type');
127
-    }
128
-
129
-    /**
130
-     * Sets type
131
-     *
132
-     * @param string $type
133
-     * @throws EE_Error
134
-     */
135
-    public function set_OBJ_type($type)
136
-    {
137
-        $this->set('OBJ_type', $type);
138
-    }
139
-
140
-    /**
141
-     * Gets OBJ_ID (the ID of the item related to this log)
142
-     *
143
-     * @return mixed
144
-     * @throws EE_Error
145
-     */
146
-    public function OBJ_ID()
147
-    {
148
-        return $this->get('OBJ_ID');
149
-    }
150
-
151
-    /**
152
-     * Sets OBJ_ID
153
-     *
154
-     * @param mixed $OBJ_ID
155
-     * @throws EE_Error
156
-     */
157
-    public function set_OBJ_ID($OBJ_ID)
158
-    {
159
-        $this->set('OBJ_ID', $OBJ_ID);
160
-    }
161
-
162
-    /**
163
-     * Gets wp_user
164
-     *
165
-     * @return int
166
-     * @throws EE_Error
167
-     */
168
-    public function wp_user()
169
-    {
170
-        return $this->get('LOG_wp_user');
171
-    }
172
-
173
-    /**
174
-     * Sets wp_user
175
-     *
176
-     * @param int $wp_user_id
177
-     * @throws EE_Error
178
-     */
179
-    public function set_wp_user($wp_user_id)
180
-    {
181
-        $this->set('LOG_wp_user', $wp_user_id);
182
-    }
183
-
184
-    /**
185
-     * Gets the model object attached to this log
186
-     *
187
-     * @return EE_Base_Class
188
-     * @throws EE_Error
189
-     */
190
-    public function object()
191
-    {
192
-        $model_name_of_related_obj = $this->OBJ_type();
193
-        $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
194
-        if (! $is_model_name) {
195
-            return null;
196
-        } else {
197
-            return $this->get_first_related($model_name_of_related_obj);
198
-        }
199
-    }
200
-
201
-    /**
202
-     * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
203
-     * _add_relation_to because you don't have to specify what type of model you're
204
-     * associating it with
205
-     *
206
-     * @param EE_Base_Class $object
207
-     * @param boolean       $save
208
-     * @return bool if $save=true, NULL is $save=false
209
-     * @throws EE_Error
210
-     */
211
-    public function set_object($object, $save = true)
212
-    {
213
-        if ($object instanceof EE_Base_Class) {
214
-            $this->set_OBJ_type($object->get_model()->get_this_model_name());
215
-            $this->set_OBJ_ID($object->ID());
216
-        } else {
217
-            $this->set_OBJ_type(null);
218
-            $this->set_OBJ_ID(null);
219
-        }
220
-        if ($save) {
221
-            return $this->save();
222
-        } else {
223
-            return null;
224
-        }
225
-    }
13
+	/**
14
+	 * @param array  $props_n_values          incoming values
15
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
16
+	 *                                        used.)
17
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
18
+	 *                                        date_format and the second value is the time format
19
+	 * @return EE_Change_Log
20
+	 * @throws EE_Error
21
+	 */
22
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
+	{
24
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
+	}
27
+
28
+
29
+	/**
30
+	 * @param array  $props_n_values  incoming values from the database
31
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
+	 *                                the website will be used.
33
+	 * @return EE_Change_Log
34
+	 */
35
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
+	{
37
+		return new self($props_n_values, true, $timezone);
38
+	}
39
+
40
+	/**
41
+	 * Gets message
42
+	 *
43
+	 * @return mixed
44
+	 * @throws EE_Error
45
+	 */
46
+	public function message()
47
+	{
48
+		return $this->get('LOG_message');
49
+	}
50
+
51
+	/**
52
+	 * Sets message
53
+	 *
54
+	 * @param mixed $message
55
+	 * @throws EE_Error
56
+	 */
57
+	public function set_message($message)
58
+	{
59
+		$this->set('LOG_message', $message);
60
+	}
61
+
62
+	/**
63
+	 * Gets time
64
+	 *
65
+	 * @return string
66
+	 * @throws EE_Error
67
+	 */
68
+	public function time()
69
+	{
70
+		return $this->get('LOG_time');
71
+	}
72
+
73
+	/**
74
+	 * Sets time
75
+	 *
76
+	 * @param string $time
77
+	 * @throws EE_Error
78
+	 */
79
+	public function set_time($time)
80
+	{
81
+		$this->set('LOG_time', $time);
82
+	}
83
+
84
+	/**
85
+	 * Gets log_type
86
+	 *
87
+	 * @return string
88
+	 * @throws EE_Error
89
+	 */
90
+	public function log_type()
91
+	{
92
+		return $this->get('LOG_type');
93
+	}
94
+
95
+
96
+	/**
97
+	 * Return the localized log type label.
98
+	 *
99
+	 * @return string
100
+	 * @throws EE_Error
101
+	 */
102
+	public function log_type_label()
103
+	{
104
+		return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
105
+	}
106
+
107
+	/**
108
+	 * Sets log_type
109
+	 *
110
+	 * @param string $log_type
111
+	 * @throws EE_Error
112
+	 */
113
+	public function set_log_type($log_type)
114
+	{
115
+		$this->set('LOG_type', $log_type);
116
+	}
117
+
118
+	/**
119
+	 * Gets type of the model object related to this log
120
+	 *
121
+	 * @return string
122
+	 * @throws EE_Error
123
+	 */
124
+	public function OBJ_type()
125
+	{
126
+		return $this->get('OBJ_type');
127
+	}
128
+
129
+	/**
130
+	 * Sets type
131
+	 *
132
+	 * @param string $type
133
+	 * @throws EE_Error
134
+	 */
135
+	public function set_OBJ_type($type)
136
+	{
137
+		$this->set('OBJ_type', $type);
138
+	}
139
+
140
+	/**
141
+	 * Gets OBJ_ID (the ID of the item related to this log)
142
+	 *
143
+	 * @return mixed
144
+	 * @throws EE_Error
145
+	 */
146
+	public function OBJ_ID()
147
+	{
148
+		return $this->get('OBJ_ID');
149
+	}
150
+
151
+	/**
152
+	 * Sets OBJ_ID
153
+	 *
154
+	 * @param mixed $OBJ_ID
155
+	 * @throws EE_Error
156
+	 */
157
+	public function set_OBJ_ID($OBJ_ID)
158
+	{
159
+		$this->set('OBJ_ID', $OBJ_ID);
160
+	}
161
+
162
+	/**
163
+	 * Gets wp_user
164
+	 *
165
+	 * @return int
166
+	 * @throws EE_Error
167
+	 */
168
+	public function wp_user()
169
+	{
170
+		return $this->get('LOG_wp_user');
171
+	}
172
+
173
+	/**
174
+	 * Sets wp_user
175
+	 *
176
+	 * @param int $wp_user_id
177
+	 * @throws EE_Error
178
+	 */
179
+	public function set_wp_user($wp_user_id)
180
+	{
181
+		$this->set('LOG_wp_user', $wp_user_id);
182
+	}
183
+
184
+	/**
185
+	 * Gets the model object attached to this log
186
+	 *
187
+	 * @return EE_Base_Class
188
+	 * @throws EE_Error
189
+	 */
190
+	public function object()
191
+	{
192
+		$model_name_of_related_obj = $this->OBJ_type();
193
+		$is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
194
+		if (! $is_model_name) {
195
+			return null;
196
+		} else {
197
+			return $this->get_first_related($model_name_of_related_obj);
198
+		}
199
+	}
200
+
201
+	/**
202
+	 * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
203
+	 * _add_relation_to because you don't have to specify what type of model you're
204
+	 * associating it with
205
+	 *
206
+	 * @param EE_Base_Class $object
207
+	 * @param boolean       $save
208
+	 * @return bool if $save=true, NULL is $save=false
209
+	 * @throws EE_Error
210
+	 */
211
+	public function set_object($object, $save = true)
212
+	{
213
+		if ($object instanceof EE_Base_Class) {
214
+			$this->set_OBJ_type($object->get_model()->get_this_model_name());
215
+			$this->set_OBJ_ID($object->ID());
216
+		} else {
217
+			$this->set_OBJ_type(null);
218
+			$this->set_OBJ_ID(null);
219
+		}
220
+		if ($save) {
221
+			return $this->save();
222
+		} else {
223
+			return null;
224
+		}
225
+	}
226 226
 }
Please login to merge, or discard this patch.
core/libraries/template_parts/EE_Template_Part_Manager.class.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -69,13 +69,13 @@  discard block
 block discarded – undo
69 69
         // SplPriorityQueue doesn't play nice with multiple items having the same priority
70 70
         // so if the incoming priority is already occupied, then let's increment it by one,
71 71
         // and then pass everything back into this method and try again with the new priority
72
-        if (isset($this->priorities[ $priority ])) {
72
+        if (isset($this->priorities[$priority])) {
73 73
             $priority++;
74 74
             $this->add_template_part($name, $label, $template, $priority);
75 75
             return;
76 76
         }
77 77
         // kk now we can mark this priority as being occupied
78
-        $this->priorities[ $priority ] = true;
78
+        $this->priorities[$priority] = true;
79 79
         // create the template part and add to the queue
80 80
         $this->template_parts->insert(
81 81
             new EE_Template_Part($name, $label, $template, $priority),
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
             $this->template_parts->next();
111 111
         }
112 112
         // now simply add our three strings of content together
113
-        return $this->before_event_content . $this->event_content . $this->after_event_content;
113
+        return $this->before_event_content.$this->event_content.$this->after_event_content;
114 114
     }
115 115
 
116 116
 
@@ -169,10 +169,10 @@  discard block
 block discarded – undo
169 169
         // loop through template parts and add template content
170 170
         while ($this->template_parts->valid()) {
171 171
             $event_archive_display_order .= EEH_HTML::li(
172
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
173
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
172
+                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2').
173
+                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2').
174 174
                 $this->template_parts->current()->label(),
175
-                $list_item_css_id_prefix . $this->template_parts->current()->name(),
175
+                $list_item_css_id_prefix.$this->template_parts->current()->name(),
176 176
                 $list_item_css_class
177 177
             );
178 178
             $this->template_parts->next();
Please login to merge, or discard this patch.
Indentation   +191 added lines, -191 removed lines patch added patch discarded remove patch
@@ -13,195 +13,195 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Template_Part_Manager
15 15
 {
16
-    /**
17
-     * @param EE_Template_Part_PriorityQueue $template_parts
18
-     */
19
-    protected $template_parts;
20
-
21
-    /**
22
-     * @param array $priorities
23
-     */
24
-    protected $priorities = array();
25
-
26
-    /**
27
-     * @param int $event_desc_priority
28
-     */
29
-    protected $event_desc_priority;
30
-
31
-    /**
32
-     * @param string $before_event_content
33
-     */
34
-    protected $before_event_content;
35
-
36
-    /**
37
-     * @param string $event_content
38
-     */
39
-    protected $event_content;
40
-
41
-    /**
42
-     * @param string $after_event_content
43
-     */
44
-    protected $after_event_content;
45
-
46
-
47
-    /**
48
-     *    class constructor
49
-     */
50
-    public function __construct()
51
-    {
52
-        $this->template_parts = new EE_Template_Part_PriorityQueue();
53
-    }
54
-
55
-
56
-    /**
57
-     *    add_template_part
58
-     *
59
-     *    used for setting the details about a particular template part
60
-     *
61
-     * @param string $name     - just a simple string identifier - do NOT use 'event'
62
-     * @param string $label    - template part label displayed in admin
63
-     * @param string $template - name or path of template to be used by EEH_Template::locate_template()
64
-     * @param int    $priority - order in which template parts should be applied
65
-     */
66
-    public function add_template_part($name, $label, $template, $priority)
67
-    {
68
-        // SplPriorityQueue doesn't play nice with multiple items having the same priority
69
-        // so if the incoming priority is already occupied, then let's increment it by one,
70
-        // and then pass everything back into this method and try again with the new priority
71
-        if (isset($this->priorities[ $priority ])) {
72
-            $priority++;
73
-            $this->add_template_part($name, $label, $template, $priority);
74
-            return;
75
-        }
76
-        // kk now we can mark this priority as being occupied
77
-        $this->priorities[ $priority ] = true;
78
-        // create the template part and add to the queue
79
-        $this->template_parts->insert(
80
-            new EE_Template_Part($name, $label, $template, $priority),
81
-            $priority
82
-        );
83
-        if ($name === 'event') {
84
-            $this->event_desc_priority = $priority;
85
-        }
86
-    }
87
-
88
-
89
-    /**
90
-     *    apply_template_part_filters
91
-     *
92
-     *    adds template parts to the supplied content
93
-     *    according to the details set when the template parts were added
94
-     *
95
-     * @access public
96
-     * @param string $content
97
-     * @return string
98
-     */
99
-    public function apply_template_part_filters($content = '')
100
-    {
101
-        $this->template_parts->rewind();
102
-        // loop through template parts and position content
103
-        while ($this->template_parts->valid()) {
104
-            $this->_position_template_part(
105
-                $content,
106
-                $this->template_parts->current()->template(),
107
-                $this->template_parts->current()->priority()
108
-            );
109
-            $this->template_parts->next();
110
-        }
111
-        // now simply add our three strings of content together
112
-        return $this->before_event_content . $this->event_content . $this->after_event_content;
113
-    }
114
-
115
-
116
-    /**
117
-     *    position_template_part
118
-     *
119
-     * based on the priority of the incoming template part
120
-     * relative to the known event description template part priority,
121
-     * this method will assign template parts to one of the following:
122
-     *        $this->before_event_content
123
-     *        $this->event_content
124
-     *        $this->after_event_content
125
-     *
126
-     * @access protected
127
-     * @param string $content
128
-     * @param string $template
129
-     * @param int    $priority
130
-     * @return void
131
-     */
132
-    protected function _position_template_part($content, $template, $priority)
133
-    {
134
-        // Event Description content is the actual incoming content itself
135
-        if ($priority === $this->event_desc_priority) {
136
-            $this->event_content = $content;
137
-        } elseif ($priority < $this->event_desc_priority) {
138
-            // everything BEFORE the Event Description
139
-            $this->before_event_content .= EEH_Template::locate_template($template);
140
-        } elseif ($priority > $this->event_desc_priority) {
141
-            // everything AFTER the Event Description
142
-            $this->after_event_content .= EEH_Template::locate_template($template);
143
-        }
144
-    }
145
-
146
-
147
-    /**
148
-     *    generate_sortable_list_of_template_parts
149
-     *
150
-     *    creates an HTML list (<ul>) with list items (<li>) for each template part,
151
-     *    in a format that can be used as a sortable list in the admin
152
-     *
153
-     * @access public
154
-     * @param string $list_css_id
155
-     * @param string $list_css_class
156
-     * @param string $list_item_css_class
157
-     * @param string $list_item_css_id_prefix
158
-     * @return string
159
-     */
160
-    public function generate_sortable_list_of_template_parts(
161
-        $list_css_id = '',
162
-        $list_css_class = '',
163
-        $list_item_css_class = '',
164
-        $list_item_css_id_prefix = ''
165
-    ) {
166
-        $event_archive_display_order = EEH_HTML::ul($list_css_id, $list_css_class);
167
-        $this->template_parts->rewind();
168
-        // loop through template parts and add template content
169
-        while ($this->template_parts->valid()) {
170
-            $event_archive_display_order .= EEH_HTML::li(
171
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
172
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
173
-                $this->template_parts->current()->label(),
174
-                $list_item_css_id_prefix . $this->template_parts->current()->name(),
175
-                $list_item_css_class
176
-            );
177
-            $this->template_parts->next();
178
-        }
179
-        $event_archive_display_order .= EEH_HTML::ulx();
180
-        return $event_archive_display_order;
181
-    }
182
-
183
-
184
-    /**
185
-     *    display_template_parts
186
-     *
187
-     * just for debugging purposes
188
-     *
189
-     * @access    public
190
-     * @return void
191
-     */
192
-    public function display_template_parts()
193
-    {
194
-        if (WP_DEBUG) {
195
-            $this->template_parts->rewind();
196
-            while ($this->template_parts->valid()) {
197
-                EEH_Debug_Tools::printr(
198
-                    $this->template_parts->current(),
199
-                    'template_part',
200
-                    __FILE__,
201
-                    __LINE__
202
-                );
203
-                $this->template_parts->next();
204
-            }
205
-        }
206
-    }
16
+	/**
17
+	 * @param EE_Template_Part_PriorityQueue $template_parts
18
+	 */
19
+	protected $template_parts;
20
+
21
+	/**
22
+	 * @param array $priorities
23
+	 */
24
+	protected $priorities = array();
25
+
26
+	/**
27
+	 * @param int $event_desc_priority
28
+	 */
29
+	protected $event_desc_priority;
30
+
31
+	/**
32
+	 * @param string $before_event_content
33
+	 */
34
+	protected $before_event_content;
35
+
36
+	/**
37
+	 * @param string $event_content
38
+	 */
39
+	protected $event_content;
40
+
41
+	/**
42
+	 * @param string $after_event_content
43
+	 */
44
+	protected $after_event_content;
45
+
46
+
47
+	/**
48
+	 *    class constructor
49
+	 */
50
+	public function __construct()
51
+	{
52
+		$this->template_parts = new EE_Template_Part_PriorityQueue();
53
+	}
54
+
55
+
56
+	/**
57
+	 *    add_template_part
58
+	 *
59
+	 *    used for setting the details about a particular template part
60
+	 *
61
+	 * @param string $name     - just a simple string identifier - do NOT use 'event'
62
+	 * @param string $label    - template part label displayed in admin
63
+	 * @param string $template - name or path of template to be used by EEH_Template::locate_template()
64
+	 * @param int    $priority - order in which template parts should be applied
65
+	 */
66
+	public function add_template_part($name, $label, $template, $priority)
67
+	{
68
+		// SplPriorityQueue doesn't play nice with multiple items having the same priority
69
+		// so if the incoming priority is already occupied, then let's increment it by one,
70
+		// and then pass everything back into this method and try again with the new priority
71
+		if (isset($this->priorities[ $priority ])) {
72
+			$priority++;
73
+			$this->add_template_part($name, $label, $template, $priority);
74
+			return;
75
+		}
76
+		// kk now we can mark this priority as being occupied
77
+		$this->priorities[ $priority ] = true;
78
+		// create the template part and add to the queue
79
+		$this->template_parts->insert(
80
+			new EE_Template_Part($name, $label, $template, $priority),
81
+			$priority
82
+		);
83
+		if ($name === 'event') {
84
+			$this->event_desc_priority = $priority;
85
+		}
86
+	}
87
+
88
+
89
+	/**
90
+	 *    apply_template_part_filters
91
+	 *
92
+	 *    adds template parts to the supplied content
93
+	 *    according to the details set when the template parts were added
94
+	 *
95
+	 * @access public
96
+	 * @param string $content
97
+	 * @return string
98
+	 */
99
+	public function apply_template_part_filters($content = '')
100
+	{
101
+		$this->template_parts->rewind();
102
+		// loop through template parts and position content
103
+		while ($this->template_parts->valid()) {
104
+			$this->_position_template_part(
105
+				$content,
106
+				$this->template_parts->current()->template(),
107
+				$this->template_parts->current()->priority()
108
+			);
109
+			$this->template_parts->next();
110
+		}
111
+		// now simply add our three strings of content together
112
+		return $this->before_event_content . $this->event_content . $this->after_event_content;
113
+	}
114
+
115
+
116
+	/**
117
+	 *    position_template_part
118
+	 *
119
+	 * based on the priority of the incoming template part
120
+	 * relative to the known event description template part priority,
121
+	 * this method will assign template parts to one of the following:
122
+	 *        $this->before_event_content
123
+	 *        $this->event_content
124
+	 *        $this->after_event_content
125
+	 *
126
+	 * @access protected
127
+	 * @param string $content
128
+	 * @param string $template
129
+	 * @param int    $priority
130
+	 * @return void
131
+	 */
132
+	protected function _position_template_part($content, $template, $priority)
133
+	{
134
+		// Event Description content is the actual incoming content itself
135
+		if ($priority === $this->event_desc_priority) {
136
+			$this->event_content = $content;
137
+		} elseif ($priority < $this->event_desc_priority) {
138
+			// everything BEFORE the Event Description
139
+			$this->before_event_content .= EEH_Template::locate_template($template);
140
+		} elseif ($priority > $this->event_desc_priority) {
141
+			// everything AFTER the Event Description
142
+			$this->after_event_content .= EEH_Template::locate_template($template);
143
+		}
144
+	}
145
+
146
+
147
+	/**
148
+	 *    generate_sortable_list_of_template_parts
149
+	 *
150
+	 *    creates an HTML list (<ul>) with list items (<li>) for each template part,
151
+	 *    in a format that can be used as a sortable list in the admin
152
+	 *
153
+	 * @access public
154
+	 * @param string $list_css_id
155
+	 * @param string $list_css_class
156
+	 * @param string $list_item_css_class
157
+	 * @param string $list_item_css_id_prefix
158
+	 * @return string
159
+	 */
160
+	public function generate_sortable_list_of_template_parts(
161
+		$list_css_id = '',
162
+		$list_css_class = '',
163
+		$list_item_css_class = '',
164
+		$list_item_css_id_prefix = ''
165
+	) {
166
+		$event_archive_display_order = EEH_HTML::ul($list_css_id, $list_css_class);
167
+		$this->template_parts->rewind();
168
+		// loop through template parts and add template content
169
+		while ($this->template_parts->valid()) {
170
+			$event_archive_display_order .= EEH_HTML::li(
171
+				EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
172
+				EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
173
+				$this->template_parts->current()->label(),
174
+				$list_item_css_id_prefix . $this->template_parts->current()->name(),
175
+				$list_item_css_class
176
+			);
177
+			$this->template_parts->next();
178
+		}
179
+		$event_archive_display_order .= EEH_HTML::ulx();
180
+		return $event_archive_display_order;
181
+	}
182
+
183
+
184
+	/**
185
+	 *    display_template_parts
186
+	 *
187
+	 * just for debugging purposes
188
+	 *
189
+	 * @access    public
190
+	 * @return void
191
+	 */
192
+	public function display_template_parts()
193
+	{
194
+		if (WP_DEBUG) {
195
+			$this->template_parts->rewind();
196
+			while ($this->template_parts->valid()) {
197
+				EEH_Debug_Tools::printr(
198
+					$this->template_parts->current(),
199
+					'template_part',
200
+					__FILE__,
201
+					__LINE__
202
+				);
203
+				$this->template_parts->next();
204
+			}
205
+		}
206
+	}
207 207
 }
Please login to merge, or discard this patch.
core/admin/EE_Help_Tour_final_stop.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
                        'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
58 58
                        'event_espresso'
59 59
                    ),
60
-                   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
60
+                   '<a href="'.EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')).'">',
61 61
                    '</a>'
62 62
                )
63 63
                . '</p>';
Please login to merge, or discard this patch.
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -14,51 +14,51 @@
 block discarded – undo
14 14
  */
15 15
 class EE_Help_Tour_final_stop extends EE_Help_Tour
16 16
 {
17
-    protected function _set_tour_properties()
18
-    {
19
-        $this->_label = esc_html__('Final Stop Tour', 'event_espresso');
20
-        $this->_slug = 'final-stop-tour';
21
-    }
17
+	protected function _set_tour_properties()
18
+	{
19
+		$this->_label = esc_html__('Final Stop Tour', 'event_espresso');
20
+		$this->_slug = 'final-stop-tour';
21
+	}
22 22
 
23 23
 
24
-    protected function _set_tour_stops()
25
-    {
26
-        $this->_stops = array(
27
-            10 => array(
28
-                'id'          => 'contextual-help-link',
29
-                'content'     => $this->_end(),
30
-                'button_text' => esc_html__('Quit', 'event_espresso'),
31
-                'options'     => array(
32
-                    'tipLocation'    => 'left',
33
-                    'tipAdjustmentY' => -20,
34
-                    'tipAdjustmentX' => 10,
35
-                ),
36
-            ),
37
-        );
38
-    }
24
+	protected function _set_tour_stops()
25
+	{
26
+		$this->_stops = array(
27
+			10 => array(
28
+				'id'          => 'contextual-help-link',
29
+				'content'     => $this->_end(),
30
+				'button_text' => esc_html__('Quit', 'event_espresso'),
31
+				'options'     => array(
32
+					'tipLocation'    => 'left',
33
+					'tipAdjustmentY' => -20,
34
+					'tipAdjustmentX' => 10,
35
+				),
36
+			),
37
+		);
38
+	}
39 39
 
40 40
 
41
-    /**
42
-     * This is the default last stop for all tours that is displayed at the end of a tour OR when a tour is exited for
43
-     * the first time.
44
-     *
45
-     * @return string
46
-     */
47
-    protected function _end()
48
-    {
49
-        $query_args = array(
50
-            'action' => 'admin_option_settings',
51
-            'page'   => 'espresso_general_settings',
52
-        );
53
-        return '<p>'
54
-               . sprintf(
55
-                   esc_html__(
56
-                       'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
57
-                       'event_espresso'
58
-                   ),
59
-                   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
60
-                   '</a>'
61
-               )
62
-               . '</p>';
63
-    }
41
+	/**
42
+	 * This is the default last stop for all tours that is displayed at the end of a tour OR when a tour is exited for
43
+	 * the first time.
44
+	 *
45
+	 * @return string
46
+	 */
47
+	protected function _end()
48
+	{
49
+		$query_args = array(
50
+			'action' => 'admin_option_settings',
51
+			'page'   => 'espresso_general_settings',
52
+		);
53
+		return '<p>'
54
+			   . sprintf(
55
+				   esc_html__(
56
+					   'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
57
+					   'event_espresso'
58
+				   ),
59
+				   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
60
+				   '</a>'
61
+			   )
62
+			   . '</p>';
63
+	}
64 64
 }
Please login to merge, or discard this patch.
admin_pages/about/About_Admin_Page.core.php 2 patches
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -169,8 +169,8 @@  discard block
 block discarded – undo
169 169
         $this->_template_args['admin_page_subtitle'] = esc_html__(
170 170
             'Thank you for choosing Event Espresso, the most powerful, and free, Event Management plugin for WordPress.',
171 171
             'event_espresso'
172
-        ) . $settings_message;
173
-        $template = EE_ABOUT_TEMPLATE_PATH . 'ee4-overview.template.php';
172
+        ).$settings_message;
173
+        $template = EE_ABOUT_TEMPLATE_PATH.'ee4-overview.template.php';
174 174
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
175 175
             $template,
176 176
             $this->_template_args,
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
 
183 183
     protected function _get_started_steps()
184 184
     {
185
-        $steps = '<h2>' . esc_html__('Getting Started', 'event_espresso') . '</h2>';
185
+        $steps = '<h2>'.esc_html__('Getting Started', 'event_espresso').'</h2>';
186 186
         $step_one = '<p>'
187 187
                     . sprintf(
188 188
                         esc_html__(
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
                         '</strong>',
194 194
                         '<a href="admin.php?page=espresso_general_settings">',
195 195
                         '</a>'
196
-                    ) . '</strong></p>';
196
+                    ).'</strong></p>';
197 197
         $step_two = '<p>'
198 198
                     . sprintf(
199 199
                         esc_html__('%sStep 2%s: Setup your %sPayment Methods%s.', 'event_espresso'),
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
                         '</strong>',
202 202
                         '<a href="admin.php?page=espresso_payment_settings">',
203 203
                         '</a>'
204
-                    ) . '</strong></p>';
204
+                    ).'</strong></p>';
205 205
         $step_three = '<p>'
206 206
                       . sprintf(
207 207
                           esc_html__('%sStep 3%s: Create your %sFirst Event%s.', 'event_espresso'),
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
                           '</strong>',
210 210
                           '<a href="admin.php?page=espresso_events&action=create_new">',
211 211
                           '</a>'
212
-                      ) . '</strong></p>';
212
+                      ).'</strong></p>';
213 213
 
214 214
         // done?
215 215
         $done_step_one = EE_Registry::instance()->CFG->organization->address_1 == '123 Onna Road' ? false : true;
@@ -238,10 +238,10 @@  discard block
 block discarded – undo
238 238
         }
239 239
 
240 240
         // now let's put it together
241
-        $steps .= sprintf('%s' . $step_one . '%s', $done_step_one ? '<strike>' : '', $done_step_one ? '</strike>' : '');
242
-        $steps .= sprintf('%s' . $step_two . '%s', $done_step_two ? '<strike>' : '', $done_step_two ? '</strike>' : '');
241
+        $steps .= sprintf('%s'.$step_one.'%s', $done_step_one ? '<strike>' : '', $done_step_one ? '</strike>' : '');
242
+        $steps .= sprintf('%s'.$step_two.'%s', $done_step_two ? '<strike>' : '', $done_step_two ? '</strike>' : '');
243 243
         $steps .= sprintf(
244
-            '%s' . $step_three . '%s',
244
+            '%s'.$step_three.'%s',
245 245
             $done_step_three ? '<strike>' : '',
246 246
             $done_step_three ? '</strike>' : ''
247 247
         );
@@ -260,7 +260,7 @@  discard block
 block discarded – undo
260 260
             'Thank you for choosing Event Espresso Decaf, the most powerful, and free, Event Management plugin for WordPress.',
261 261
             'event_espresso'
262 262
         );
263
-        $template = EE_ABOUT_TEMPLATE_PATH . 'credits.template.php';
263
+        $template = EE_ABOUT_TEMPLATE_PATH.'credits.template.php';
264 264
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
265 265
             $template,
266 266
             $this->_template_args,
@@ -286,7 +286,7 @@  discard block
 block discarded – undo
286 286
             '<strong>',
287 287
             '</strong>'
288 288
         );
289
-        $template = EE_ABOUT_TEMPLATE_PATH . 'decafvpro.template.php';
289
+        $template = EE_ABOUT_TEMPLATE_PATH.'decafvpro.template.php';
290 290
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
291 291
             $template,
292 292
             $this->_template_args,
@@ -302,7 +302,7 @@  discard block
 block discarded – undo
302 302
             'At Event Espresso, customer satisfaction is our ultimate goal.',
303 303
             'event_espresso'
304 304
         );
305
-        $template = EE_ABOUT_TEMPLATE_PATH . 'reviews.template.php';
305
+        $template = EE_ABOUT_TEMPLATE_PATH.'reviews.template.php';
306 306
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
307 307
             $template,
308 308
             $this->_template_args,
Please login to merge, or discard this patch.
Indentation   +278 added lines, -278 removed lines patch added patch discarded remove patch
@@ -15,132 +15,132 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class About_Admin_Page extends EE_Admin_Page
17 17
 {
18
-    protected function _init_page_props()
19
-    {
20
-        $this->page_slug = EE_ABOUT_PG_SLUG;
21
-        $this->page_label = esc_html__('About Event Espresso', 'event_espresso');
22
-        $this->_admin_base_url = EE_ABOUT_ADMIN_URL;
23
-        $this->_admin_base_path = EE_ABOUT_ADMIN;
24
-    }
25
-
26
-
27
-    protected function _ajax_hooks()
28
-    {
29
-        // todo: all hooks for ajax goes here.
30
-    }
31
-
32
-
33
-    protected function _define_page_props()
34
-    {
35
-        $this->_labels = array();
36
-        $this->_admin_page_title = $this->page_label;
37
-    }
38
-
39
-
40
-    protected function _set_page_routes()
41
-    {
42
-        $this->_page_routes = array(
43
-            'default' => array(
44
-                'func'       => '_overview',
45
-                'capability' => 'manage_options',
46
-            ),
47
-            // 'overview' => '_overview',
48
-            // 'func' => '_overview',
49
-            // 'capability' => 'ee_read_ee'
50
-            // ),
51
-            'credits' => array(
52
-                'func'       => '_credits',
53
-                'capability' => 'manage_options',
54
-            ),
55
-
56
-            'decafvpro' => array(
57
-                'func'       => '_decafvpro',
58
-                'capability' => 'manage_options',
59
-            ),
60
-            'reviews'   => array(
61
-                'func'       => '_reviews',
62
-                'capability' => 'manage_options',
63
-            ),
64
-        );
65
-    }
66
-
67
-
68
-    protected function _set_page_config()
69
-    {
70
-        $this->_page_config = array(
71
-            /*'default' => array(
18
+	protected function _init_page_props()
19
+	{
20
+		$this->page_slug = EE_ABOUT_PG_SLUG;
21
+		$this->page_label = esc_html__('About Event Espresso', 'event_espresso');
22
+		$this->_admin_base_url = EE_ABOUT_ADMIN_URL;
23
+		$this->_admin_base_path = EE_ABOUT_ADMIN;
24
+	}
25
+
26
+
27
+	protected function _ajax_hooks()
28
+	{
29
+		// todo: all hooks for ajax goes here.
30
+	}
31
+
32
+
33
+	protected function _define_page_props()
34
+	{
35
+		$this->_labels = array();
36
+		$this->_admin_page_title = $this->page_label;
37
+	}
38
+
39
+
40
+	protected function _set_page_routes()
41
+	{
42
+		$this->_page_routes = array(
43
+			'default' => array(
44
+				'func'       => '_overview',
45
+				'capability' => 'manage_options',
46
+			),
47
+			// 'overview' => '_overview',
48
+			// 'func' => '_overview',
49
+			// 'capability' => 'ee_read_ee'
50
+			// ),
51
+			'credits' => array(
52
+				'func'       => '_credits',
53
+				'capability' => 'manage_options',
54
+			),
55
+
56
+			'decafvpro' => array(
57
+				'func'       => '_decafvpro',
58
+				'capability' => 'manage_options',
59
+			),
60
+			'reviews'   => array(
61
+				'func'       => '_reviews',
62
+				'capability' => 'manage_options',
63
+			),
64
+		);
65
+	}
66
+
67
+
68
+	protected function _set_page_config()
69
+	{
70
+		$this->_page_config = array(
71
+			/*'default' => array(
72 72
                 'nav' => array(
73 73
                     'label' => esc_html__('What\'s New', 'event_espresso'),
74 74
                     'order' => 10),
75 75
                 'require_nonce' => FALSE
76 76
                 ),*/
77
-            // 'overview' => array(
78
-            'default' => array(
79
-                'nav'           => array(
80
-                    'label' => esc_html__('About', 'event_espresso'),
81
-                    'icon' => 'dashicons-welcome-learn-more',
82
-                    'order' => 20,
83
-                ),
84
-                'require_nonce' => false,
85
-            ),
86
-            'credits' => array(
87
-                'nav'           => array(
88
-                    'label' => esc_html__('Credits', 'event_espresso'),
89
-                    'icon' => 'dashicons-thumbs-up',
90
-                    'order' => 30,
91
-                ),
92
-                'require_nonce' => false,
93
-            ),
94
-
95
-            'decafvpro' => array(
96
-                'nav'           => array(
97
-                    'label' => esc_html__('Decaf vs Regular', 'event_espresso'),
98
-                    'icon' => 'dashicons-editor-code',
99
-                    'order' => 40,
100
-                ),
101
-                'require_nonce' => false,
102
-            ),
103
-            'reviews'   => array(
104
-                'nav'           => array(
105
-                    'label' => esc_html__('Reviews', 'event_espresso'),
106
-                    'icon' => 'dashicons-star-filled',
107
-                    'order' => 50,
108
-                ),
109
-                'require_nonce' => false,
110
-            ),
111
-        );
112
-    }
113
-
114
-
115
-    // none of the below group are currently used for Support pages
116
-    protected function _add_screen_options()
117
-    {
118
-    }
119
-
120
-    protected function _add_feature_pointers()
121
-    {
122
-    }
123
-
124
-    public function admin_init()
125
-    {
126
-    }
127
-
128
-    public function admin_notices()
129
-    {
130
-    }
131
-
132
-    public function admin_footer_scripts()
133
-    {
134
-    }
135
-
136
-    public function load_scripts_styles()
137
-    {
138
-    }
139
-
140
-
141
-    protected function _whats_new()
142
-    {
143
-        /*$steps = EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance ? $this->_get_started_steps() : FALSE;
77
+			// 'overview' => array(
78
+			'default' => array(
79
+				'nav'           => array(
80
+					'label' => esc_html__('About', 'event_espresso'),
81
+					'icon' => 'dashicons-welcome-learn-more',
82
+					'order' => 20,
83
+				),
84
+				'require_nonce' => false,
85
+			),
86
+			'credits' => array(
87
+				'nav'           => array(
88
+					'label' => esc_html__('Credits', 'event_espresso'),
89
+					'icon' => 'dashicons-thumbs-up',
90
+					'order' => 30,
91
+				),
92
+				'require_nonce' => false,
93
+			),
94
+
95
+			'decafvpro' => array(
96
+				'nav'           => array(
97
+					'label' => esc_html__('Decaf vs Regular', 'event_espresso'),
98
+					'icon' => 'dashicons-editor-code',
99
+					'order' => 40,
100
+				),
101
+				'require_nonce' => false,
102
+			),
103
+			'reviews'   => array(
104
+				'nav'           => array(
105
+					'label' => esc_html__('Reviews', 'event_espresso'),
106
+					'icon' => 'dashicons-star-filled',
107
+					'order' => 50,
108
+				),
109
+				'require_nonce' => false,
110
+			),
111
+		);
112
+	}
113
+
114
+
115
+	// none of the below group are currently used for Support pages
116
+	protected function _add_screen_options()
117
+	{
118
+	}
119
+
120
+	protected function _add_feature_pointers()
121
+	{
122
+	}
123
+
124
+	public function admin_init()
125
+	{
126
+	}
127
+
128
+	public function admin_notices()
129
+	{
130
+	}
131
+
132
+	public function admin_footer_scripts()
133
+	{
134
+	}
135
+
136
+	public function load_scripts_styles()
137
+	{
138
+	}
139
+
140
+
141
+	protected function _whats_new()
142
+	{
143
+		/*$steps = EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance ? $this->_get_started_steps() : FALSE;
144 144
         $steps = $steps !== FALSE ? $steps : '';
145 145
         $this->_admin_page_title = sprintf( esc_html__('Welcome to Event Espresso %s', 'event_espresso'), EVENT_ESPRESSO_VERSION );
146 146
         $settings_message = $steps;
@@ -148,168 +148,168 @@  discard block
 block discarded – undo
148 148
         $template = EE_ABOUT_TEMPLATE_PATH . 'whats_new.template.php';
149 149
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template( $template, $this->_template_args, TRUE );
150 150
         $this->display_about_admin_page();*/
151
-    }
151
+	}
152 152
 
153 153
 
154
-    protected function _overview()
155
-    {
156
-        /*$this->_template_args['admin_page_title'] = esc_html__('About Event Espresso', 'event_espresso');
154
+	protected function _overview()
155
+	{
156
+		/*$this->_template_args['admin_page_title'] = esc_html__('About Event Espresso', 'event_espresso');
157 157
         $this->_template_args['admin_page_subtitle'] = esc_html__('Thank you for choosing Event Espresso Decaf, the most powerful, and free, Event Management plugin for WordPress.', 'event_espresso');
158 158
         $template = EE_ABOUT_TEMPLATE_PATH . 'ee4-overview.template.php';
159 159
         $this->_template_args['about_admin_page_content'] = EEH_Template::display_template( $template, $this->_template_args, TRUE );
160 160
         $this->display_about_admin_page();*/
161 161
 
162
-        // Copied from _whats_new()
163
-        $steps = EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance
164
-            ? $this->_get_started_steps() : false;
165
-        $steps = $steps !== false ? $steps : '';
166
-        $this->_admin_page_title = sprintf(
167
-            esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
168
-            EVENT_ESPRESSO_VERSION
169
-        );
170
-        $settings_message = $steps;
171
-        $this->_template_args['admin_page_subtitle'] = esc_html__(
172
-            'Thank you for choosing Event Espresso, the most powerful, and free, Event Management plugin for WordPress.',
173
-            'event_espresso'
174
-        ) . $settings_message;
175
-        $template = EE_ABOUT_TEMPLATE_PATH . 'ee4-overview.template.php';
176
-        $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
177
-            $template,
178
-            $this->_template_args,
179
-            true
180
-        );
181
-        $this->display_about_admin_page();
182
-    }
183
-
184
-
185
-    protected function _get_started_steps()
186
-    {
187
-        $steps = '<h2>' . esc_html__('Getting Started', 'event_espresso') . '</h2>';
188
-        $step_one = '<p>'
189
-                    . sprintf(
190
-                        esc_html__(
191
-                            '%sStep 1%s: Visit your %sOrganization Settings%s and add/update your details.',
192
-                            'event_espresso'
193
-                        ),
194
-                        '<strong>',
195
-                        '</strong>',
196
-                        '<a href="admin.php?page=espresso_general_settings">',
197
-                        '</a>'
198
-                    ) . '</strong></p>';
199
-        $step_two = '<p>'
200
-                    . sprintf(
201
-                        esc_html__('%sStep 2%s: Setup your %sPayment Methods%s.', 'event_espresso'),
202
-                        '<strong>',
203
-                        '</strong>',
204
-                        '<a href="admin.php?page=espresso_payment_settings">',
205
-                        '</a>'
206
-                    ) . '</strong></p>';
207
-        $step_three = '<p>'
208
-                      . sprintf(
209
-                          esc_html__('%sStep 3%s: Create your %sFirst Event%s.', 'event_espresso'),
210
-                          '<strong>',
211
-                          '</strong>',
212
-                          '<a href="admin.php?page=espresso_events&action=create_new">',
213
-                          '</a>'
214
-                      ) . '</strong></p>';
215
-
216
-        // done?
217
-        $done_step_one = EE_Registry::instance()->CFG->organization->address_1 == '123 Onna Road' ? false : true;
218
-        $active_invoice_pm = EEM_Payment_Method::instance()->get_one_active(
219
-            EEM_Payment_Method::scope_cart,
220
-            array(array('PMD_type' => 'Invoice'))
221
-        );
222
-        $active_pms_count = EEM_Payment_Method::instance()->count_active(EEM_Payment_Method::scope_cart);
223
-        // done step two if a non-invoice paymetn method is active; or there is more than one PM active, or
224
-        // if only the invoice is active but it's clearly been updated
225
-        $done_step_two = $active_pms_count > 1 ||
226
-                         ($active_pms_count === 1 && ! $active_invoice_pm) ||
227
-                         ($active_invoice_pm instanceof EE_Payment_Method && (
228
-                                 $active_invoice_pm->get_extra_meta('pdf_payee_name', true, '') ||
229
-                                 $active_invoice_pm->get_extra_meta('pdf_payee_email', true, '') ||
230
-                                 $active_invoice_pm->get_extra_meta('pdf_payee_tax_number', true, '') ||
231
-                                 $active_invoice_pm->get_extra_meta('pdf_payee_address', true, '') ||
232
-                                 $active_invoice_pm->get_extra_meta('page_extra_info', true, '')
233
-                             )
234
-                         );
235
-        $done_step_three = EE_Registry::instance()->load_model('Event')->count() > 0 ? true : false;
236
-
237
-        // if ALL steps are done, let's just return FALSE so we don't display anything
238
-        if ($done_step_one && $done_step_two && $done_step_three) {
239
-            return false;
240
-        }
241
-
242
-        // now let's put it together
243
-        $steps .= sprintf('%s' . $step_one . '%s', $done_step_one ? '<strike>' : '', $done_step_one ? '</strike>' : '');
244
-        $steps .= sprintf('%s' . $step_two . '%s', $done_step_two ? '<strike>' : '', $done_step_two ? '</strike>' : '');
245
-        $steps .= sprintf(
246
-            '%s' . $step_three . '%s',
247
-            $done_step_three ? '<strike>' : '',
248
-            $done_step_three ? '</strike>' : ''
249
-        );
250
-
251
-        return $steps;
252
-    }
253
-
254
-
255
-    protected function _credits()
256
-    {
257
-        $this->_template_args['admin_page_title'] = sprintf(
258
-            esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
259
-            EVENT_ESPRESSO_VERSION
260
-        );
261
-        $this->_template_args['admin_page_subtitle'] = esc_html__(
262
-            'Thank you for choosing Event Espresso Decaf, the most powerful, and free, Event Management plugin for WordPress.',
263
-            'event_espresso'
264
-        );
265
-        $template = EE_ABOUT_TEMPLATE_PATH . 'credits.template.php';
266
-        $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
267
-            $template,
268
-            $this->_template_args,
269
-            true
270
-        );
271
-        $this->display_about_admin_page();
272
-    }
273
-
274
-
275
-    protected function _decafvpro()
276
-    {
277
-        $this->_template_args['admin_page_title'] = sprintf(
278
-            esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
279
-            EVENT_ESPRESSO_VERSION
280
-        );
281
-        $this->_template_args['admin_page_subtitle'] = sprintf(
282
-            esc_html__(
283
-                'Event Espresso lets you focus on doing %swhat you love%s — %sorganizing your events%s',
284
-                'event_espresso'
285
-            ),
286
-            '<em>',
287
-            '</em>',
288
-            '<strong>',
289
-            '</strong>'
290
-        );
291
-        $template = EE_ABOUT_TEMPLATE_PATH . 'decafvpro.template.php';
292
-        $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
293
-            $template,
294
-            $this->_template_args,
295
-            true
296
-        );
297
-        $this->display_about_admin_page();
298
-    }
299
-
300
-    protected function _reviews()
301
-    {
302
-        $this->_template_args['admin_page_title'] = esc_html__('Rave Reviews About Event Espresso 4', 'event_espresso');
303
-        $this->_template_args['admin_page_subtitle'] = esc_html__(
304
-            'At Event Espresso, customer satisfaction is our ultimate goal.',
305
-            'event_espresso'
306
-        );
307
-        $template = EE_ABOUT_TEMPLATE_PATH . 'reviews.template.php';
308
-        $this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
309
-            $template,
310
-            $this->_template_args,
311
-            true
312
-        );
313
-        $this->display_about_admin_page();
314
-    }
162
+		// Copied from _whats_new()
163
+		$steps = EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance
164
+			? $this->_get_started_steps() : false;
165
+		$steps = $steps !== false ? $steps : '';
166
+		$this->_admin_page_title = sprintf(
167
+			esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
168
+			EVENT_ESPRESSO_VERSION
169
+		);
170
+		$settings_message = $steps;
171
+		$this->_template_args['admin_page_subtitle'] = esc_html__(
172
+			'Thank you for choosing Event Espresso, the most powerful, and free, Event Management plugin for WordPress.',
173
+			'event_espresso'
174
+		) . $settings_message;
175
+		$template = EE_ABOUT_TEMPLATE_PATH . 'ee4-overview.template.php';
176
+		$this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
177
+			$template,
178
+			$this->_template_args,
179
+			true
180
+		);
181
+		$this->display_about_admin_page();
182
+	}
183
+
184
+
185
+	protected function _get_started_steps()
186
+	{
187
+		$steps = '<h2>' . esc_html__('Getting Started', 'event_espresso') . '</h2>';
188
+		$step_one = '<p>'
189
+					. sprintf(
190
+						esc_html__(
191
+							'%sStep 1%s: Visit your %sOrganization Settings%s and add/update your details.',
192
+							'event_espresso'
193
+						),
194
+						'<strong>',
195
+						'</strong>',
196
+						'<a href="admin.php?page=espresso_general_settings">',
197
+						'</a>'
198
+					) . '</strong></p>';
199
+		$step_two = '<p>'
200
+					. sprintf(
201
+						esc_html__('%sStep 2%s: Setup your %sPayment Methods%s.', 'event_espresso'),
202
+						'<strong>',
203
+						'</strong>',
204
+						'<a href="admin.php?page=espresso_payment_settings">',
205
+						'</a>'
206
+					) . '</strong></p>';
207
+		$step_three = '<p>'
208
+					  . sprintf(
209
+						  esc_html__('%sStep 3%s: Create your %sFirst Event%s.', 'event_espresso'),
210
+						  '<strong>',
211
+						  '</strong>',
212
+						  '<a href="admin.php?page=espresso_events&action=create_new">',
213
+						  '</a>'
214
+					  ) . '</strong></p>';
215
+
216
+		// done?
217
+		$done_step_one = EE_Registry::instance()->CFG->organization->address_1 == '123 Onna Road' ? false : true;
218
+		$active_invoice_pm = EEM_Payment_Method::instance()->get_one_active(
219
+			EEM_Payment_Method::scope_cart,
220
+			array(array('PMD_type' => 'Invoice'))
221
+		);
222
+		$active_pms_count = EEM_Payment_Method::instance()->count_active(EEM_Payment_Method::scope_cart);
223
+		// done step two if a non-invoice paymetn method is active; or there is more than one PM active, or
224
+		// if only the invoice is active but it's clearly been updated
225
+		$done_step_two = $active_pms_count > 1 ||
226
+						 ($active_pms_count === 1 && ! $active_invoice_pm) ||
227
+						 ($active_invoice_pm instanceof EE_Payment_Method && (
228
+								 $active_invoice_pm->get_extra_meta('pdf_payee_name', true, '') ||
229
+								 $active_invoice_pm->get_extra_meta('pdf_payee_email', true, '') ||
230
+								 $active_invoice_pm->get_extra_meta('pdf_payee_tax_number', true, '') ||
231
+								 $active_invoice_pm->get_extra_meta('pdf_payee_address', true, '') ||
232
+								 $active_invoice_pm->get_extra_meta('page_extra_info', true, '')
233
+							 )
234
+						 );
235
+		$done_step_three = EE_Registry::instance()->load_model('Event')->count() > 0 ? true : false;
236
+
237
+		// if ALL steps are done, let's just return FALSE so we don't display anything
238
+		if ($done_step_one && $done_step_two && $done_step_three) {
239
+			return false;
240
+		}
241
+
242
+		// now let's put it together
243
+		$steps .= sprintf('%s' . $step_one . '%s', $done_step_one ? '<strike>' : '', $done_step_one ? '</strike>' : '');
244
+		$steps .= sprintf('%s' . $step_two . '%s', $done_step_two ? '<strike>' : '', $done_step_two ? '</strike>' : '');
245
+		$steps .= sprintf(
246
+			'%s' . $step_three . '%s',
247
+			$done_step_three ? '<strike>' : '',
248
+			$done_step_three ? '</strike>' : ''
249
+		);
250
+
251
+		return $steps;
252
+	}
253
+
254
+
255
+	protected function _credits()
256
+	{
257
+		$this->_template_args['admin_page_title'] = sprintf(
258
+			esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
259
+			EVENT_ESPRESSO_VERSION
260
+		);
261
+		$this->_template_args['admin_page_subtitle'] = esc_html__(
262
+			'Thank you for choosing Event Espresso Decaf, the most powerful, and free, Event Management plugin for WordPress.',
263
+			'event_espresso'
264
+		);
265
+		$template = EE_ABOUT_TEMPLATE_PATH . 'credits.template.php';
266
+		$this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
267
+			$template,
268
+			$this->_template_args,
269
+			true
270
+		);
271
+		$this->display_about_admin_page();
272
+	}
273
+
274
+
275
+	protected function _decafvpro()
276
+	{
277
+		$this->_template_args['admin_page_title'] = sprintf(
278
+			esc_html__('Welcome to Event Espresso %s', 'event_espresso'),
279
+			EVENT_ESPRESSO_VERSION
280
+		);
281
+		$this->_template_args['admin_page_subtitle'] = sprintf(
282
+			esc_html__(
283
+				'Event Espresso lets you focus on doing %swhat you love%s — %sorganizing your events%s',
284
+				'event_espresso'
285
+			),
286
+			'<em>',
287
+			'</em>',
288
+			'<strong>',
289
+			'</strong>'
290
+		);
291
+		$template = EE_ABOUT_TEMPLATE_PATH . 'decafvpro.template.php';
292
+		$this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
293
+			$template,
294
+			$this->_template_args,
295
+			true
296
+		);
297
+		$this->display_about_admin_page();
298
+	}
299
+
300
+	protected function _reviews()
301
+	{
302
+		$this->_template_args['admin_page_title'] = esc_html__('Rave Reviews About Event Espresso 4', 'event_espresso');
303
+		$this->_template_args['admin_page_subtitle'] = esc_html__(
304
+			'At Event Espresso, customer satisfaction is our ultimate goal.',
305
+			'event_espresso'
306
+		);
307
+		$template = EE_ABOUT_TEMPLATE_PATH . 'reviews.template.php';
308
+		$this->_template_args['about_admin_page_content'] = EEH_Template::display_template(
309
+			$template,
310
+			$this->_template_args,
311
+			true
312
+		);
313
+		$this->display_about_admin_page();
314
+	}
315 315
 }
Please login to merge, or discard this patch.
admin_pages/messages/qtips/EE_Message_List_Table_Tips.lib.php 2 patches
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -19,8 +19,8 @@  discard block
 block discarded – undo
19 19
     {
20 20
         $this->_qtipsa = array(
21 21
             0 => array(
22
-                'content_id' => 'message_status-' . EEM_Message::status_sent,
23
-                'target'     => '.msg-status-' . EEM_Message::status_sent,
22
+                'content_id' => 'message_status-'.EEM_Message::status_sent,
23
+                'target'     => '.msg-status-'.EEM_Message::status_sent,
24 24
                 'content'    => $this->_message_status_legend(EEM_Message::status_sent),
25 25
                 'options'    => array(
26 26
                     'position' => array(
@@ -29,8 +29,8 @@  discard block
 block discarded – undo
29 29
                 ),
30 30
             ),
31 31
             1 => array(
32
-                'content_id' => 'message_status-' . EEM_Message::status_idle,
33
-                'target'     => '.msg-status-' . EEM_Message::status_idle,
32
+                'content_id' => 'message_status-'.EEM_Message::status_idle,
33
+                'target'     => '.msg-status-'.EEM_Message::status_idle,
34 34
                 'content'    => $this->_message_status_legend(EEM_Message::status_idle),
35 35
                 'options'    => array(
36 36
                     'position' => array(
@@ -39,8 +39,8 @@  discard block
 block discarded – undo
39 39
                 ),
40 40
             ),
41 41
             2 => array(
42
-                'content_id' => 'message_status-' . EEM_Message::status_failed,
43
-                'target'     => '.msg-status-' . EEM_Message::status_failed,
42
+                'content_id' => 'message_status-'.EEM_Message::status_failed,
43
+                'target'     => '.msg-status-'.EEM_Message::status_failed,
44 44
                 'content'    => $this->_message_status_legend(EEM_Message::status_failed),
45 45
                 'options'    => array(
46 46
                     'position' => array(
@@ -49,8 +49,8 @@  discard block
 block discarded – undo
49 49
                 ),
50 50
             ),
51 51
             3 => array(
52
-                'content_id' => 'message_status-' . EEM_Message::status_resend,
53
-                'target'     => '.msg-status-' . EEM_Message::status_resend,
52
+                'content_id' => 'message_status-'.EEM_Message::status_resend,
53
+                'target'     => '.msg-status-'.EEM_Message::status_resend,
54 54
                 'content'    => $this->_message_status_legend(EEM_Message::status_resend),
55 55
                 'options'    => array(
56 56
                     'position' => array(
@@ -59,8 +59,8 @@  discard block
 block discarded – undo
59 59
                 ),
60 60
             ),
61 61
             4 => array(
62
-                'content_id' => 'message_status-' . EEM_Message::status_incomplete,
63
-                'target'     => '.msg-status-' . EEM_Message::status_incomplete,
62
+                'content_id' => 'message_status-'.EEM_Message::status_incomplete,
63
+                'target'     => '.msg-status-'.EEM_Message::status_incomplete,
64 64
                 'content'    => $this->_message_status_legend(EEM_Message::status_incomplete),
65 65
                 'options'    => array(
66 66
                     'position' => array(
@@ -69,8 +69,8 @@  discard block
 block discarded – undo
69 69
                 ),
70 70
             ),
71 71
             5 => array(
72
-                'content_id' => 'message_status-' . EEM_Message::status_retry,
73
-                'target'     => '.msg-status-' . EEM_Message::status_retry,
72
+                'content_id' => 'message_status-'.EEM_Message::status_retry,
73
+                'target'     => '.msg-status-'.EEM_Message::status_retry,
74 74
                 'content'    => $this->_message_status_legend(EEM_Message::status_retry),
75 75
                 'options'    => array(
76 76
                     'position' => array(
@@ -79,8 +79,8 @@  discard block
 block discarded – undo
79 79
                 ),
80 80
             ),
81 81
             6 => array(
82
-                'content_id' => 'message_status-' . EEM_Message::status_debug_only,
83
-                'target'     => '.msg-status-' . EEM_Message::status_debug_only,
82
+                'content_id' => 'message_status-'.EEM_Message::status_debug_only,
83
+                'target'     => '.msg-status-'.EEM_Message::status_debug_only,
84 84
                 'content'    => $this->_message_status_legend(EEM_Message::status_debug_only),
85 85
                 'options'    => array(
86 86
                     'position' => array(
Please login to merge, or discard this patch.
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -13,105 +13,105 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Message_List_Table_Tips extends EE_Qtip_Config
15 15
 {
16
-    protected function _set_tips_array()
17
-    {
18
-        $this->_qtipsa = array(
19
-            0 => array(
20
-                'content_id' => 'message_status-' . EEM_Message::status_sent,
21
-                'target'     => '.msg-status-' . EEM_Message::status_sent,
22
-                'content'    => $this->_message_status_legend(EEM_Message::status_sent),
23
-                'options'    => array(
24
-                    'position' => array(
25
-                        'target' => 'mouse',
26
-                    ),
27
-                ),
28
-            ),
29
-            1 => array(
30
-                'content_id' => 'message_status-' . EEM_Message::status_idle,
31
-                'target'     => '.msg-status-' . EEM_Message::status_idle,
32
-                'content'    => $this->_message_status_legend(EEM_Message::status_idle),
33
-                'options'    => array(
34
-                    'position' => array(
35
-                        'target' => 'mouse',
36
-                    ),
37
-                ),
38
-            ),
39
-            2 => array(
40
-                'content_id' => 'message_status-' . EEM_Message::status_failed,
41
-                'target'     => '.msg-status-' . EEM_Message::status_failed,
42
-                'content'    => $this->_message_status_legend(EEM_Message::status_failed),
43
-                'options'    => array(
44
-                    'position' => array(
45
-                        'target' => 'mouse',
46
-                    ),
47
-                ),
48
-            ),
49
-            3 => array(
50
-                'content_id' => 'message_status-' . EEM_Message::status_resend,
51
-                'target'     => '.msg-status-' . EEM_Message::status_resend,
52
-                'content'    => $this->_message_status_legend(EEM_Message::status_resend),
53
-                'options'    => array(
54
-                    'position' => array(
55
-                        'target' => 'mouse',
56
-                    ),
57
-                ),
58
-            ),
59
-            4 => array(
60
-                'content_id' => 'message_status-' . EEM_Message::status_incomplete,
61
-                'target'     => '.msg-status-' . EEM_Message::status_incomplete,
62
-                'content'    => $this->_message_status_legend(EEM_Message::status_incomplete),
63
-                'options'    => array(
64
-                    'position' => array(
65
-                        'target' => 'mouse',
66
-                    ),
67
-                ),
68
-            ),
69
-            5 => array(
70
-                'content_id' => 'message_status-' . EEM_Message::status_retry,
71
-                'target'     => '.msg-status-' . EEM_Message::status_retry,
72
-                'content'    => $this->_message_status_legend(EEM_Message::status_retry),
73
-                'options'    => array(
74
-                    'position' => array(
75
-                        'target' => 'mouse',
76
-                    ),
77
-                ),
78
-            ),
79
-            6 => array(
80
-                'content_id' => 'message_status-' . EEM_Message::status_debug_only,
81
-                'target'     => '.msg-status-' . EEM_Message::status_debug_only,
82
-                'content'    => $this->_message_status_legend(EEM_Message::status_debug_only),
83
-                'options'    => array(
84
-                    'position' => array(
85
-                        'target' => 'mouse',
86
-                    ),
87
-                ),
88
-            ),
89
-        );
90
-    }
16
+	protected function _set_tips_array()
17
+	{
18
+		$this->_qtipsa = array(
19
+			0 => array(
20
+				'content_id' => 'message_status-' . EEM_Message::status_sent,
21
+				'target'     => '.msg-status-' . EEM_Message::status_sent,
22
+				'content'    => $this->_message_status_legend(EEM_Message::status_sent),
23
+				'options'    => array(
24
+					'position' => array(
25
+						'target' => 'mouse',
26
+					),
27
+				),
28
+			),
29
+			1 => array(
30
+				'content_id' => 'message_status-' . EEM_Message::status_idle,
31
+				'target'     => '.msg-status-' . EEM_Message::status_idle,
32
+				'content'    => $this->_message_status_legend(EEM_Message::status_idle),
33
+				'options'    => array(
34
+					'position' => array(
35
+						'target' => 'mouse',
36
+					),
37
+				),
38
+			),
39
+			2 => array(
40
+				'content_id' => 'message_status-' . EEM_Message::status_failed,
41
+				'target'     => '.msg-status-' . EEM_Message::status_failed,
42
+				'content'    => $this->_message_status_legend(EEM_Message::status_failed),
43
+				'options'    => array(
44
+					'position' => array(
45
+						'target' => 'mouse',
46
+					),
47
+				),
48
+			),
49
+			3 => array(
50
+				'content_id' => 'message_status-' . EEM_Message::status_resend,
51
+				'target'     => '.msg-status-' . EEM_Message::status_resend,
52
+				'content'    => $this->_message_status_legend(EEM_Message::status_resend),
53
+				'options'    => array(
54
+					'position' => array(
55
+						'target' => 'mouse',
56
+					),
57
+				),
58
+			),
59
+			4 => array(
60
+				'content_id' => 'message_status-' . EEM_Message::status_incomplete,
61
+				'target'     => '.msg-status-' . EEM_Message::status_incomplete,
62
+				'content'    => $this->_message_status_legend(EEM_Message::status_incomplete),
63
+				'options'    => array(
64
+					'position' => array(
65
+						'target' => 'mouse',
66
+					),
67
+				),
68
+			),
69
+			5 => array(
70
+				'content_id' => 'message_status-' . EEM_Message::status_retry,
71
+				'target'     => '.msg-status-' . EEM_Message::status_retry,
72
+				'content'    => $this->_message_status_legend(EEM_Message::status_retry),
73
+				'options'    => array(
74
+					'position' => array(
75
+						'target' => 'mouse',
76
+					),
77
+				),
78
+			),
79
+			6 => array(
80
+				'content_id' => 'message_status-' . EEM_Message::status_debug_only,
81
+				'target'     => '.msg-status-' . EEM_Message::status_debug_only,
82
+				'content'    => $this->_message_status_legend(EEM_Message::status_debug_only),
83
+				'options'    => array(
84
+					'position' => array(
85
+						'target' => 'mouse',
86
+					),
87
+				),
88
+			),
89
+		);
90
+	}
91 91
 
92 92
 
93
-    /**
94
-     * output the relevant ee-status-legend with the designated status highlighted.
95
-     *
96
-     * @param  EEM_Message constant $status What status is set (by class)
97
-     * @return string         The status legend with the related status highlighted
98
-     */
99
-    private function _message_status_legend($status)
100
-    {
93
+	/**
94
+	 * output the relevant ee-status-legend with the designated status highlighted.
95
+	 *
96
+	 * @param  EEM_Message constant $status What status is set (by class)
97
+	 * @return string         The status legend with the related status highlighted
98
+	 */
99
+	private function _message_status_legend($status)
100
+	{
101 101
 
102
-        $status_array = array(
103
-            'sent_status'       => EEM_Message::status_sent,
104
-            'idle_status'       => EEM_Message::status_idle,
105
-            'failed_status'     => EEM_Message::status_failed,
106
-            'resend_status'     => EEM_Message::status_resend,
107
-            'incomplete_status' => EEM_Message::status_incomplete,
108
-            'retry_status'      => EEM_Message::status_retry,
109
-        );
102
+		$status_array = array(
103
+			'sent_status'       => EEM_Message::status_sent,
104
+			'idle_status'       => EEM_Message::status_idle,
105
+			'failed_status'     => EEM_Message::status_failed,
106
+			'resend_status'     => EEM_Message::status_resend,
107
+			'incomplete_status' => EEM_Message::status_incomplete,
108
+			'retry_status'      => EEM_Message::status_retry,
109
+		);
110 110
 
111
-        if (defined('WP_DEBUG') && WP_DEBUG) {
112
-            $status_array['debug_only_status'] = EEM_Message::status_debug_only;
113
-        }
111
+		if (defined('WP_DEBUG') && WP_DEBUG) {
112
+			$status_array['debug_only_status'] = EEM_Message::status_debug_only;
113
+		}
114 114
 
115
-        return EEH_Template::status_legend($status_array, $status);
116
-    }
115
+		return EEH_Template::status_legend($status_array, $status);
116
+	}
117 117
 }
Please login to merge, or discard this patch.