Completed
Branch ENH/contextual-event-check-in-... (d32e27)
by
unknown
06:40 queued 03:25
created
core/domain/services/admin/privacy/export/ExportRegistration.php 1 patch
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -18,133 +18,133 @@
 block discarded – undo
18 18
  */
19 19
 class ExportRegistration implements PersonalDataExporterInterface
20 20
 {
21
-    /**
22
-     * @var EEM_Registration
23
-     */
24
-    protected $registration_model;
21
+	/**
22
+	 * @var EEM_Registration
23
+	 */
24
+	protected $registration_model;
25 25
 
26
-    /**
27
-     * ExportRegistration constructor.
28
-     *
29
-     * @param EEM_Registration $registration_model
30
-     */
31
-    public function __construct(EEM_Registration $registration_model)
32
-    {
33
-        $this->registration_model = $registration_model;
34
-    }
26
+	/**
27
+	 * ExportRegistration constructor.
28
+	 *
29
+	 * @param EEM_Registration $registration_model
30
+	 */
31
+	public function __construct(EEM_Registration $registration_model)
32
+	{
33
+		$this->registration_model = $registration_model;
34
+	}
35 35
 
36 36
 
37
-    /**
38
-     * Returns data for export.
39
-     *
40
-     * @param string    $email_address ,
41
-     * @param int       $page          starts at 1, not 0
42
-     * @return array {
43
-     * @type array      $data          {
44
-     * @type array {
45
-     * @type string     $group_id      (not translated, same for all exports)
46
-     * @type string     $group_label   (translated string)
47
-     * @type string|int $item_id
48
-     * @type array      $data          {
49
-     * @type array {
50
-     * @type string     $name          what's shown in the left-column of the export row
51
-     * @type string     $value         what's showin the right-column of the export row
52
-     *                                 }
53
-     *                                 }
54
-     *                                 }
55
-     *                                 }
56
-     *                                 }
57
-     */
58
-    public function export($email_address, $page = 1)
59
-    {
60
-        $page_size = 10;
61
-        $registrations = $this->registration_model->get_all(
62
-            array(
63
-                array(
64
-                    'Attendee.ATT_email' => $email_address,
65
-                ),
66
-                'limit' => array(
67
-                    ($page - 1) * $page_size,
68
-                    $page_size,
69
-                ),
70
-            )
71
-        );
72
-        $export_fields = array_intersect_key(
73
-            $this->registration_model->field_settings(),
74
-            array_flip(
75
-                array(
76
-                    'REG_code',
77
-                    'REG_date',
78
-                    'REG_final_price',
79
-                    'REG_paid',
80
-                    'REG_url_link',
81
-                    'REG_count',
82
-                    'REG_group_size',
83
-                    'REG_att_is_going',
84
-                )
85
-            )
86
-        );
87
-        $export_items = array();
88
-        $found_something = false;
89
-        foreach ($registrations as $registration) {
90
-            /**
91
-             * @var $registration EE_Registration
92
-             */
93
-            $found_something = true;
94
-            $data = array();
95
-            foreach ($export_fields as $field_name => $field_obj) {
96
-                $data[] = array(
97
-                    'name'  => $field_obj->get_nicename(),
98
-                    'value' => $registration->get_pretty($field_name),
99
-                );
100
-            }
101
-            $answers = $registration->answers(
102
-                array(
103
-                    'force_join' => array(
104
-                        'Question',
105
-                    ),
106
-                )
107
-            );
108
-            foreach ($answers as $answer) {
109
-                $data[] = array(
110
-                    'name'  => $answer->question()->display_text(),
111
-                    'value' => $answer->pretty_value(),
112
-                );
113
-            }
114
-            $ticket = $registration->ticket();
115
-            if ($ticket instanceof EE_Ticket) {
116
-                $data[] = array(
117
-                    'name'  => esc_html__('Ticket', 'event_espresso'),
118
-                    'value' => $ticket->name_and_info(),
119
-                );
120
-                $data[] = array(
121
-                    'name'  => esc_html__('Event', 'event_espresso'),
122
-                    'value' => $ticket->get_event_name(),
123
-                );
124
-            }
37
+	/**
38
+	 * Returns data for export.
39
+	 *
40
+	 * @param string    $email_address ,
41
+	 * @param int       $page          starts at 1, not 0
42
+	 * @return array {
43
+	 * @type array      $data          {
44
+	 * @type array {
45
+	 * @type string     $group_id      (not translated, same for all exports)
46
+	 * @type string     $group_label   (translated string)
47
+	 * @type string|int $item_id
48
+	 * @type array      $data          {
49
+	 * @type array {
50
+	 * @type string     $name          what's shown in the left-column of the export row
51
+	 * @type string     $value         what's showin the right-column of the export row
52
+	 *                                 }
53
+	 *                                 }
54
+	 *                                 }
55
+	 *                                 }
56
+	 *                                 }
57
+	 */
58
+	public function export($email_address, $page = 1)
59
+	{
60
+		$page_size = 10;
61
+		$registrations = $this->registration_model->get_all(
62
+			array(
63
+				array(
64
+					'Attendee.ATT_email' => $email_address,
65
+				),
66
+				'limit' => array(
67
+					($page - 1) * $page_size,
68
+					$page_size,
69
+				),
70
+			)
71
+		);
72
+		$export_fields = array_intersect_key(
73
+			$this->registration_model->field_settings(),
74
+			array_flip(
75
+				array(
76
+					'REG_code',
77
+					'REG_date',
78
+					'REG_final_price',
79
+					'REG_paid',
80
+					'REG_url_link',
81
+					'REG_count',
82
+					'REG_group_size',
83
+					'REG_att_is_going',
84
+				)
85
+			)
86
+		);
87
+		$export_items = array();
88
+		$found_something = false;
89
+		foreach ($registrations as $registration) {
90
+			/**
91
+			 * @var $registration EE_Registration
92
+			 */
93
+			$found_something = true;
94
+			$data = array();
95
+			foreach ($export_fields as $field_name => $field_obj) {
96
+				$data[] = array(
97
+					'name'  => $field_obj->get_nicename(),
98
+					'value' => $registration->get_pretty($field_name),
99
+				);
100
+			}
101
+			$answers = $registration->answers(
102
+				array(
103
+					'force_join' => array(
104
+						'Question',
105
+					),
106
+				)
107
+			);
108
+			foreach ($answers as $answer) {
109
+				$data[] = array(
110
+					'name'  => $answer->question()->display_text(),
111
+					'value' => $answer->pretty_value(),
112
+				);
113
+			}
114
+			$ticket = $registration->ticket();
115
+			if ($ticket instanceof EE_Ticket) {
116
+				$data[] = array(
117
+					'name'  => esc_html__('Ticket', 'event_espresso'),
118
+					'value' => $ticket->name_and_info(),
119
+				);
120
+				$data[] = array(
121
+					'name'  => esc_html__('Event', 'event_espresso'),
122
+					'value' => $ticket->get_event_name(),
123
+				);
124
+			}
125 125
 
126
-            $export_items[] = array(
127
-                'group_id'    => 'registration',
128
-                'group_label' => esc_html__('Event Registrations', 'event_espresso'),
129
-                'item_id'     => $registration->ID(),
130
-                'data'        => $data,
131
-            );
132
-        }
133
-        return array(
134
-            'data' => $export_items,
135
-            'done' => ! $found_something,
136
-        );
137
-    }
126
+			$export_items[] = array(
127
+				'group_id'    => 'registration',
128
+				'group_label' => esc_html__('Event Registrations', 'event_espresso'),
129
+				'item_id'     => $registration->ID(),
130
+				'data'        => $data,
131
+			);
132
+		}
133
+		return array(
134
+			'data' => $export_items,
135
+			'done' => ! $found_something,
136
+		);
137
+	}
138 138
 
139
-    /**
140
-     * Gets the Translated name of this exporter
141
-     *
142
-     * @return string
143
-     */
144
-    public function name()
145
-    {
146
-        return esc_html__('Event Espresso Registration Data Exporter', 'event_espresso');
147
-    }
139
+	/**
140
+	 * Gets the Translated name of this exporter
141
+	 *
142
+	 * @return string
143
+	 */
144
+	public function name()
145
+	{
146
+		return esc_html__('Event Espresso Registration Data Exporter', 'event_espresso');
147
+	}
148 148
 }
149 149
 // End of file ExportRegistration.php
150 150
 // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportRegistration.php
Please login to merge, or discard this patch.
modules/single_page_checkout/inc/EE_SPCO_JSON_Response.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
             $JSON_response['success'] = $this->success();
123 123
         }
124 124
         // but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
125
-        if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
125
+        if ( ! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
126 126
             $JSON_response['success'] = null;
127 127
         }
128 128
         // set redirect_url, IF it exists
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
         // and finally, add return_data array to main JSON response array, IF it contains anything
163 163
         // why did we add some of the above properties to the return data array?
164 164
         // because it is easier and cleaner in the Javascript to deal with this way
165
-        if (! empty($return_data)) {
165
+        if ( ! empty($return_data)) {
166 166
             $JSON_response['return_data'] = $return_data;
167 167
         }
168 168
         // filter final array
Please login to merge, or discard this patch.
Indentation   +397 added lines, -397 removed lines patch added patch discarded remove patch
@@ -14,401 +14,401 @@
 block discarded – undo
14 14
  */
15 15
 class EE_SPCO_JSON_Response
16 16
 {
17
-    /**
18
-     * @var string
19
-     */
20
-    protected $_errors = '';
21
-
22
-    /**
23
-     * @var string
24
-     */
25
-    protected $_unexpected_errors = '';
26
-
27
-    /**
28
-     * @var string
29
-     */
30
-    protected $_attention = '';
31
-
32
-    /**
33
-     * @var string
34
-     */
35
-    protected $_success = '';
36
-
37
-    /**
38
-     * @var string
39
-     */
40
-    protected $_plz_select_method_of_payment = '';
41
-
42
-    /**
43
-     * @var string
44
-     */
45
-    protected $_redirect_url = '';
46
-
47
-    /**
48
-     * @var string
49
-     */
50
-    protected $_registration_time_limit = '';
51
-
52
-    /**
53
-     * @var string
54
-     */
55
-    protected $_redirect_form = '';
56
-
57
-    /**
58
-     * @var string
59
-     */
60
-    protected $_reg_step_html = '';
61
-
62
-    /**
63
-     * @var string
64
-     */
65
-    protected $_method_of_payment = '';
66
-
67
-    /**
68
-     * @var float
69
-     */
70
-    protected $_payment_amount;
71
-
72
-    /**
73
-     * @var array
74
-     */
75
-    protected $_return_data = array();
76
-
77
-
78
-    /**
79
-     * @var array
80
-     */
81
-    protected $_validation_rules = array();
82
-
83
-
84
-    /**
85
-     *    class constructor
86
-     */
87
-    public function __construct()
88
-    {
89
-    }
90
-
91
-
92
-    /**
93
-     *    __toString
94
-     *
95
-     *        allows you to simply echo or print an EE_SPCO_JSON_Response object to produce a  JSON encoded string
96
-     *
97
-     * @access    public
98
-     * @return    string
99
-     */
100
-    public function __toString()
101
-    {
102
-        $JSON_response = array();
103
-        // grab notices
104
-        $notices = EE_Error::get_notices(false);
105
-        $this->set_attention(isset($notices['attention']) ? $notices['attention'] : '');
106
-        $this->set_errors(isset($notices['errors']) ? $notices['errors'] : '');
107
-        $this->set_success(isset($notices['success']) ? $notices['success'] : '');
108
-        // add notices to JSON response, but only if they exist
109
-        if ($this->attention()) {
110
-            $JSON_response['attention'] = $this->attention();
111
-        }
112
-        if ($this->errors()) {
113
-            $JSON_response['errors'] = $this->errors();
114
-        }
115
-        if ($this->unexpected_errors()) {
116
-            $JSON_response['unexpected_errors'] = $this->unexpected_errors();
117
-        }
118
-        if ($this->success()) {
119
-            $JSON_response['success'] = $this->success();
120
-        }
121
-        // but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
122
-        if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
123
-            $JSON_response['success'] = null;
124
-        }
125
-        // set redirect_url, IF it exists
126
-        if ($this->redirect_url()) {
127
-            $JSON_response['redirect_url'] = $this->redirect_url();
128
-        }
129
-        // set registration_time_limit, IF it exists
130
-        if ($this->registration_time_limit()) {
131
-            $JSON_response['registration_time_limit'] = $this->registration_time_limit();
132
-        }
133
-        // set payment_amount, IF it exists
134
-        if ($this->payment_amount() !== null) {
135
-            $JSON_response['payment_amount'] = $this->payment_amount();
136
-        }
137
-        // grab generic return data
138
-        $return_data = $this->return_data();
139
-        // add billing form validation rules
140
-        if ($this->validation_rules()) {
141
-            $return_data['validation_rules'] = $this->validation_rules();
142
-        }
143
-        // set reg_step_html, IF it exists
144
-        if ($this->reg_step_html()) {
145
-            $return_data['reg_step_html'] = $this->reg_step_html();
146
-        }
147
-        // set method of payment, IF it exists
148
-        if ($this->method_of_payment()) {
149
-            $return_data['method_of_payment'] = $this->method_of_payment();
150
-        }
151
-        // set "plz_select_method_of_payment" message, IF it exists
152
-        if ($this->plz_select_method_of_payment()) {
153
-            $return_data['plz_select_method_of_payment'] = $this->plz_select_method_of_payment();
154
-        }
155
-        // set redirect_form, IF it exists
156
-        if ($this->redirect_form()) {
157
-            $return_data['redirect_form'] = $this->redirect_form();
158
-        }
159
-        // and finally, add return_data array to main JSON response array, IF it contains anything
160
-        // why did we add some of the above properties to the return data array?
161
-        // because it is easier and cleaner in the Javascript to deal with this way
162
-        if (! empty($return_data)) {
163
-            $JSON_response['return_data'] = $return_data;
164
-        }
165
-        // filter final array
166
-        $JSON_response = apply_filters('FHEE__EE_SPCO_JSON_Response___toString__JSON_response', $JSON_response);
167
-        // return encoded array
168
-        return (string) wp_json_encode($JSON_response);
169
-    }
170
-
171
-
172
-    /**
173
-     * @param string $attention
174
-     */
175
-    public function set_attention($attention)
176
-    {
177
-        $this->_attention = $attention;
178
-    }
179
-
180
-
181
-    /**
182
-     * @return string
183
-     */
184
-    public function attention()
185
-    {
186
-        return $this->_attention;
187
-    }
188
-
189
-
190
-    /**
191
-     * @param string $errors
192
-     */
193
-    public function set_errors($errors)
194
-    {
195
-        $this->_errors = $errors;
196
-    }
197
-
198
-
199
-    /**
200
-     * @return string
201
-     */
202
-    public function errors()
203
-    {
204
-        return $this->_errors;
205
-    }
206
-
207
-
208
-    /**
209
-     * @return string
210
-     */
211
-    public function unexpected_errors()
212
-    {
213
-        return $this->_unexpected_errors;
214
-    }
215
-
216
-
217
-    /**
218
-     * @param string $unexpected_errors
219
-     */
220
-    public function set_unexpected_errors($unexpected_errors)
221
-    {
222
-        $this->_unexpected_errors = $unexpected_errors;
223
-    }
224
-
225
-
226
-    /**
227
-     * @param string $success
228
-     */
229
-    public function set_success($success)
230
-    {
231
-        $this->_success = $success;
232
-    }
233
-
234
-
235
-    /**
236
-     * @return string
237
-     */
238
-    public function success()
239
-    {
240
-        return $this->_success;
241
-    }
242
-
243
-
244
-    /**
245
-     * @param string $method_of_payment
246
-     */
247
-    public function set_method_of_payment($method_of_payment)
248
-    {
249
-        $this->_method_of_payment = $method_of_payment;
250
-    }
251
-
252
-
253
-    /**
254
-     * @return string
255
-     */
256
-    public function method_of_payment()
257
-    {
258
-        return $this->_method_of_payment;
259
-    }
260
-
261
-
262
-    /**
263
-     * @return float
264
-     */
265
-    public function payment_amount()
266
-    {
267
-        return $this->_payment_amount;
268
-    }
269
-
270
-
271
-    /**
272
-     * @param float $payment_amount
273
-     * @throws EE_Error
274
-     */
275
-    public function set_payment_amount($payment_amount)
276
-    {
277
-        $this->_payment_amount = (float) $payment_amount;
278
-    }
279
-
280
-
281
-    /**
282
-     * @param string $next_step_html
283
-     */
284
-    public function set_reg_step_html($next_step_html)
285
-    {
286
-        $this->_reg_step_html = $next_step_html;
287
-    }
288
-
289
-
290
-    /**
291
-     * @return string
292
-     */
293
-    public function reg_step_html()
294
-    {
295
-        return $this->_reg_step_html;
296
-    }
297
-
298
-
299
-    /**
300
-     * @param string $redirect_form
301
-     */
302
-    public function set_redirect_form($redirect_form)
303
-    {
304
-        $this->_redirect_form = $redirect_form;
305
-    }
306
-
307
-
308
-    /**
309
-     * @return string
310
-     */
311
-    public function redirect_form()
312
-    {
313
-        return ! empty($this->_redirect_form) ? $this->_redirect_form : false;
314
-    }
315
-
316
-
317
-    /**
318
-     * @param string $plz_select_method_of_payment
319
-     */
320
-    public function set_plz_select_method_of_payment($plz_select_method_of_payment)
321
-    {
322
-        $this->_plz_select_method_of_payment = $plz_select_method_of_payment;
323
-    }
324
-
325
-
326
-    /**
327
-     * @return string
328
-     */
329
-    public function plz_select_method_of_payment()
330
-    {
331
-        return $this->_plz_select_method_of_payment;
332
-    }
333
-
334
-
335
-    /**
336
-     * @param string $redirect_url
337
-     */
338
-    public function set_redirect_url($redirect_url)
339
-    {
340
-        $this->_redirect_url = $redirect_url;
341
-    }
342
-
343
-
344
-    /**
345
-     * @return string
346
-     */
347
-    public function redirect_url()
348
-    {
349
-        return $this->_redirect_url;
350
-    }
351
-
352
-
353
-    /**
354
-     * @return string
355
-     */
356
-    public function registration_time_limit()
357
-    {
358
-        return $this->_registration_time_limit;
359
-    }
360
-
361
-
362
-    /**
363
-     * @param string $registration_time_limit
364
-     */
365
-    public function set_registration_time_limit($registration_time_limit)
366
-    {
367
-        $this->_registration_time_limit = $registration_time_limit;
368
-    }
369
-
370
-
371
-    /**
372
-     * @param array $return_data
373
-     */
374
-    public function set_return_data($return_data)
375
-    {
376
-        $this->_return_data = array_merge($this->_return_data, $return_data);
377
-    }
378
-
379
-
380
-    /**
381
-     * @return array
382
-     */
383
-    public function return_data()
384
-    {
385
-        return $this->_return_data;
386
-    }
387
-
388
-
389
-    /**
390
-     * @param array $validation_rules
391
-     */
392
-    public function add_validation_rules(array $validation_rules = array())
393
-    {
394
-        if (is_array($validation_rules) && ! empty($validation_rules)) {
395
-            $this->_validation_rules = array_merge($this->_validation_rules, $validation_rules);
396
-        }
397
-    }
398
-
399
-
400
-    /**
401
-     * @return array | bool
402
-     */
403
-    public function validation_rules()
404
-    {
405
-        return ! empty($this->_validation_rules) ? $this->_validation_rules : false;
406
-    }
407
-
408
-
409
-    public function echoAndExit()
410
-    {
411
-        echo ($this);
412
-        exit();
413
-    }
17
+	/**
18
+	 * @var string
19
+	 */
20
+	protected $_errors = '';
21
+
22
+	/**
23
+	 * @var string
24
+	 */
25
+	protected $_unexpected_errors = '';
26
+
27
+	/**
28
+	 * @var string
29
+	 */
30
+	protected $_attention = '';
31
+
32
+	/**
33
+	 * @var string
34
+	 */
35
+	protected $_success = '';
36
+
37
+	/**
38
+	 * @var string
39
+	 */
40
+	protected $_plz_select_method_of_payment = '';
41
+
42
+	/**
43
+	 * @var string
44
+	 */
45
+	protected $_redirect_url = '';
46
+
47
+	/**
48
+	 * @var string
49
+	 */
50
+	protected $_registration_time_limit = '';
51
+
52
+	/**
53
+	 * @var string
54
+	 */
55
+	protected $_redirect_form = '';
56
+
57
+	/**
58
+	 * @var string
59
+	 */
60
+	protected $_reg_step_html = '';
61
+
62
+	/**
63
+	 * @var string
64
+	 */
65
+	protected $_method_of_payment = '';
66
+
67
+	/**
68
+	 * @var float
69
+	 */
70
+	protected $_payment_amount;
71
+
72
+	/**
73
+	 * @var array
74
+	 */
75
+	protected $_return_data = array();
76
+
77
+
78
+	/**
79
+	 * @var array
80
+	 */
81
+	protected $_validation_rules = array();
82
+
83
+
84
+	/**
85
+	 *    class constructor
86
+	 */
87
+	public function __construct()
88
+	{
89
+	}
90
+
91
+
92
+	/**
93
+	 *    __toString
94
+	 *
95
+	 *        allows you to simply echo or print an EE_SPCO_JSON_Response object to produce a  JSON encoded string
96
+	 *
97
+	 * @access    public
98
+	 * @return    string
99
+	 */
100
+	public function __toString()
101
+	{
102
+		$JSON_response = array();
103
+		// grab notices
104
+		$notices = EE_Error::get_notices(false);
105
+		$this->set_attention(isset($notices['attention']) ? $notices['attention'] : '');
106
+		$this->set_errors(isset($notices['errors']) ? $notices['errors'] : '');
107
+		$this->set_success(isset($notices['success']) ? $notices['success'] : '');
108
+		// add notices to JSON response, but only if they exist
109
+		if ($this->attention()) {
110
+			$JSON_response['attention'] = $this->attention();
111
+		}
112
+		if ($this->errors()) {
113
+			$JSON_response['errors'] = $this->errors();
114
+		}
115
+		if ($this->unexpected_errors()) {
116
+			$JSON_response['unexpected_errors'] = $this->unexpected_errors();
117
+		}
118
+		if ($this->success()) {
119
+			$JSON_response['success'] = $this->success();
120
+		}
121
+		// but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
122
+		if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
123
+			$JSON_response['success'] = null;
124
+		}
125
+		// set redirect_url, IF it exists
126
+		if ($this->redirect_url()) {
127
+			$JSON_response['redirect_url'] = $this->redirect_url();
128
+		}
129
+		// set registration_time_limit, IF it exists
130
+		if ($this->registration_time_limit()) {
131
+			$JSON_response['registration_time_limit'] = $this->registration_time_limit();
132
+		}
133
+		// set payment_amount, IF it exists
134
+		if ($this->payment_amount() !== null) {
135
+			$JSON_response['payment_amount'] = $this->payment_amount();
136
+		}
137
+		// grab generic return data
138
+		$return_data = $this->return_data();
139
+		// add billing form validation rules
140
+		if ($this->validation_rules()) {
141
+			$return_data['validation_rules'] = $this->validation_rules();
142
+		}
143
+		// set reg_step_html, IF it exists
144
+		if ($this->reg_step_html()) {
145
+			$return_data['reg_step_html'] = $this->reg_step_html();
146
+		}
147
+		// set method of payment, IF it exists
148
+		if ($this->method_of_payment()) {
149
+			$return_data['method_of_payment'] = $this->method_of_payment();
150
+		}
151
+		// set "plz_select_method_of_payment" message, IF it exists
152
+		if ($this->plz_select_method_of_payment()) {
153
+			$return_data['plz_select_method_of_payment'] = $this->plz_select_method_of_payment();
154
+		}
155
+		// set redirect_form, IF it exists
156
+		if ($this->redirect_form()) {
157
+			$return_data['redirect_form'] = $this->redirect_form();
158
+		}
159
+		// and finally, add return_data array to main JSON response array, IF it contains anything
160
+		// why did we add some of the above properties to the return data array?
161
+		// because it is easier and cleaner in the Javascript to deal with this way
162
+		if (! empty($return_data)) {
163
+			$JSON_response['return_data'] = $return_data;
164
+		}
165
+		// filter final array
166
+		$JSON_response = apply_filters('FHEE__EE_SPCO_JSON_Response___toString__JSON_response', $JSON_response);
167
+		// return encoded array
168
+		return (string) wp_json_encode($JSON_response);
169
+	}
170
+
171
+
172
+	/**
173
+	 * @param string $attention
174
+	 */
175
+	public function set_attention($attention)
176
+	{
177
+		$this->_attention = $attention;
178
+	}
179
+
180
+
181
+	/**
182
+	 * @return string
183
+	 */
184
+	public function attention()
185
+	{
186
+		return $this->_attention;
187
+	}
188
+
189
+
190
+	/**
191
+	 * @param string $errors
192
+	 */
193
+	public function set_errors($errors)
194
+	{
195
+		$this->_errors = $errors;
196
+	}
197
+
198
+
199
+	/**
200
+	 * @return string
201
+	 */
202
+	public function errors()
203
+	{
204
+		return $this->_errors;
205
+	}
206
+
207
+
208
+	/**
209
+	 * @return string
210
+	 */
211
+	public function unexpected_errors()
212
+	{
213
+		return $this->_unexpected_errors;
214
+	}
215
+
216
+
217
+	/**
218
+	 * @param string $unexpected_errors
219
+	 */
220
+	public function set_unexpected_errors($unexpected_errors)
221
+	{
222
+		$this->_unexpected_errors = $unexpected_errors;
223
+	}
224
+
225
+
226
+	/**
227
+	 * @param string $success
228
+	 */
229
+	public function set_success($success)
230
+	{
231
+		$this->_success = $success;
232
+	}
233
+
234
+
235
+	/**
236
+	 * @return string
237
+	 */
238
+	public function success()
239
+	{
240
+		return $this->_success;
241
+	}
242
+
243
+
244
+	/**
245
+	 * @param string $method_of_payment
246
+	 */
247
+	public function set_method_of_payment($method_of_payment)
248
+	{
249
+		$this->_method_of_payment = $method_of_payment;
250
+	}
251
+
252
+
253
+	/**
254
+	 * @return string
255
+	 */
256
+	public function method_of_payment()
257
+	{
258
+		return $this->_method_of_payment;
259
+	}
260
+
261
+
262
+	/**
263
+	 * @return float
264
+	 */
265
+	public function payment_amount()
266
+	{
267
+		return $this->_payment_amount;
268
+	}
269
+
270
+
271
+	/**
272
+	 * @param float $payment_amount
273
+	 * @throws EE_Error
274
+	 */
275
+	public function set_payment_amount($payment_amount)
276
+	{
277
+		$this->_payment_amount = (float) $payment_amount;
278
+	}
279
+
280
+
281
+	/**
282
+	 * @param string $next_step_html
283
+	 */
284
+	public function set_reg_step_html($next_step_html)
285
+	{
286
+		$this->_reg_step_html = $next_step_html;
287
+	}
288
+
289
+
290
+	/**
291
+	 * @return string
292
+	 */
293
+	public function reg_step_html()
294
+	{
295
+		return $this->_reg_step_html;
296
+	}
297
+
298
+
299
+	/**
300
+	 * @param string $redirect_form
301
+	 */
302
+	public function set_redirect_form($redirect_form)
303
+	{
304
+		$this->_redirect_form = $redirect_form;
305
+	}
306
+
307
+
308
+	/**
309
+	 * @return string
310
+	 */
311
+	public function redirect_form()
312
+	{
313
+		return ! empty($this->_redirect_form) ? $this->_redirect_form : false;
314
+	}
315
+
316
+
317
+	/**
318
+	 * @param string $plz_select_method_of_payment
319
+	 */
320
+	public function set_plz_select_method_of_payment($plz_select_method_of_payment)
321
+	{
322
+		$this->_plz_select_method_of_payment = $plz_select_method_of_payment;
323
+	}
324
+
325
+
326
+	/**
327
+	 * @return string
328
+	 */
329
+	public function plz_select_method_of_payment()
330
+	{
331
+		return $this->_plz_select_method_of_payment;
332
+	}
333
+
334
+
335
+	/**
336
+	 * @param string $redirect_url
337
+	 */
338
+	public function set_redirect_url($redirect_url)
339
+	{
340
+		$this->_redirect_url = $redirect_url;
341
+	}
342
+
343
+
344
+	/**
345
+	 * @return string
346
+	 */
347
+	public function redirect_url()
348
+	{
349
+		return $this->_redirect_url;
350
+	}
351
+
352
+
353
+	/**
354
+	 * @return string
355
+	 */
356
+	public function registration_time_limit()
357
+	{
358
+		return $this->_registration_time_limit;
359
+	}
360
+
361
+
362
+	/**
363
+	 * @param string $registration_time_limit
364
+	 */
365
+	public function set_registration_time_limit($registration_time_limit)
366
+	{
367
+		$this->_registration_time_limit = $registration_time_limit;
368
+	}
369
+
370
+
371
+	/**
372
+	 * @param array $return_data
373
+	 */
374
+	public function set_return_data($return_data)
375
+	{
376
+		$this->_return_data = array_merge($this->_return_data, $return_data);
377
+	}
378
+
379
+
380
+	/**
381
+	 * @return array
382
+	 */
383
+	public function return_data()
384
+	{
385
+		return $this->_return_data;
386
+	}
387
+
388
+
389
+	/**
390
+	 * @param array $validation_rules
391
+	 */
392
+	public function add_validation_rules(array $validation_rules = array())
393
+	{
394
+		if (is_array($validation_rules) && ! empty($validation_rules)) {
395
+			$this->_validation_rules = array_merge($this->_validation_rules, $validation_rules);
396
+		}
397
+	}
398
+
399
+
400
+	/**
401
+	 * @return array | bool
402
+	 */
403
+	public function validation_rules()
404
+	{
405
+		return ! empty($this->_validation_rules) ? $this->_validation_rules : false;
406
+	}
407
+
408
+
409
+	public function echoAndExit()
410
+	{
411
+		echo ($this);
412
+		exit();
413
+	}
414 414
 }
Please login to merge, or discard this patch.
admin/extend/registrations/Extend_EE_Registrations_List_Table.class.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -39,12 +39,12 @@  discard block
 block discarded – undo
39 39
             'ee_read_checkins',
40 40
             'espresso_registrations_registration_checkins'
41 41
         )
42
-            ? '<a href="' . $check_in_url . '"'
43
-              . ' title="' . esc_attr__(
42
+            ? '<a href="'.$check_in_url.'"'
43
+              . ' title="'.esc_attr__(
44 44
                   'The Check-In List allows you to easily toggle check-in status for this event',
45 45
                   'event_espresso'
46 46
               )
47
-              . '">' . esc_html__('View Check-ins', 'event_espresso') . '</a>'
47
+              . '">'.esc_html__('View Check-ins', 'event_espresso').'</a>'
48 48
             : esc_html__('View Check-ins', 'event_espresso');
49 49
 
50 50
         return sprintf('%1$s %2$s', $date_linked, $this->row_actions($actions));
@@ -105,17 +105,17 @@  discard block
 block discarded – undo
105 105
             // add a "View Registrations" link that filters list by event AND datetime
106 106
             $datetime_string .= $this->row_actions(
107 107
                 array(
108
-                    'event_datetime_filter' => '<a href="' . EE_Admin_Page::add_query_args_and_nonce(
108
+                    'event_datetime_filter' => '<a href="'.EE_Admin_Page::add_query_args_and_nonce(
109 109
                         array('event_id' => $EVT_ID, 'datetime_id' => $datetime->ID()),
110 110
                         REG_ADMIN_URL
111 111
                     )
112
-                                               . '" title="' . sprintf(
112
+                                               . '" title="'.sprintf(
113 113
                                                    esc_attr__(
114 114
                                                        'Filter this list to only show registrations for this datetime %s',
115 115
                                                        'event_espresso'
116 116
                                                    ),
117 117
                                                    $datetime->name()
118
-                                               ) . '">'
118
+                                               ).'">'
119 119
                                                . esc_html__('View Registrations', 'event_espresso')
120 120
                                                . '</a>',
121 121
                 )
Please login to merge, or discard this patch.
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -12,117 +12,117 @@
 block discarded – undo
12 12
  */
13 13
 class Extend_EE_Registrations_List_Table extends EE_Registrations_List_Table
14 14
 {
15
-    /**
16
-     * @param EE_Registration $item
17
-     * @return string
18
-     * @throws EE_Error
19
-     * @throws InvalidArgumentException
20
-     * @throws ReflectionException
21
-     * @throws InvalidDataTypeException
22
-     * @throws InvalidInterfaceException
23
-     */
24
-    public function column__REG_date(EE_Registration $item)
25
-    {
26
-        $date_linked = parent::column__REG_date($item);
27
-        $actions = array();
28
-        // Build row actions
29
-        $check_in_url = EE_Admin_Page::add_query_args_and_nonce(array(
30
-            'action'   => 'event_registrations',
31
-            'event_id' => $item->event_ID(),
32
-        ), REG_ADMIN_URL);
33
-        $actions['check_in'] = EE_Registry::instance()->CAP->current_user_can(
34
-            'ee_read_registration',
35
-            'espresso_registrations_registration_checkins',
36
-            $item->ID()
37
-        ) && EE_Registry::instance()->CAP->current_user_can(
38
-            'ee_read_checkins',
39
-            'espresso_registrations_registration_checkins'
40
-        )
41
-            ? '<a href="' . $check_in_url . '"'
42
-              . ' title="' . esc_attr__(
43
-                  'The Check-In List allows you to easily toggle check-in status for this event',
44
-                  'event_espresso'
45
-              )
46
-              . '">' . esc_html__('View Check-ins', 'event_espresso') . '</a>'
47
-            : esc_html__('View Check-ins', 'event_espresso');
15
+	/**
16
+	 * @param EE_Registration $item
17
+	 * @return string
18
+	 * @throws EE_Error
19
+	 * @throws InvalidArgumentException
20
+	 * @throws ReflectionException
21
+	 * @throws InvalidDataTypeException
22
+	 * @throws InvalidInterfaceException
23
+	 */
24
+	public function column__REG_date(EE_Registration $item)
25
+	{
26
+		$date_linked = parent::column__REG_date($item);
27
+		$actions = array();
28
+		// Build row actions
29
+		$check_in_url = EE_Admin_Page::add_query_args_and_nonce(array(
30
+			'action'   => 'event_registrations',
31
+			'event_id' => $item->event_ID(),
32
+		), REG_ADMIN_URL);
33
+		$actions['check_in'] = EE_Registry::instance()->CAP->current_user_can(
34
+			'ee_read_registration',
35
+			'espresso_registrations_registration_checkins',
36
+			$item->ID()
37
+		) && EE_Registry::instance()->CAP->current_user_can(
38
+			'ee_read_checkins',
39
+			'espresso_registrations_registration_checkins'
40
+		)
41
+			? '<a href="' . $check_in_url . '"'
42
+			  . ' title="' . esc_attr__(
43
+				  'The Check-In List allows you to easily toggle check-in status for this event',
44
+				  'event_espresso'
45
+			  )
46
+			  . '">' . esc_html__('View Check-ins', 'event_espresso') . '</a>'
47
+			: esc_html__('View Check-ins', 'event_espresso');
48 48
 
49
-        return sprintf('%1$s %2$s', $date_linked, $this->row_actions($actions));
50
-    }
49
+		return sprintf('%1$s %2$s', $date_linked, $this->row_actions($actions));
50
+	}
51 51
 
52 52
 
53
-    /**
54
-     *        column_default
55
-     *
56
-     * @param \EE_Registration $item
57
-     * @return string
58
-     * @throws EE_Error
59
-     * @throws InvalidArgumentException
60
-     * @throws InvalidDataTypeException
61
-     * @throws InvalidInterfaceException
62
-     * @throws ReflectionException
63
-     */
64
-    public function column_DTT_EVT_start(EE_Registration $item)
65
-    {
66
-        $remove_defaults = array('default_where_conditions' => 'none');
67
-        $ticket = $item->ticket();
68
-        $datetimes = $ticket instanceof EE_Ticket ? $ticket->datetimes($remove_defaults) : array();
69
-        $EVT_ID = $item->event_ID();
70
-        $datetimes_for_display = array();
71
-        foreach ($datetimes as $datetime) {
72
-            $datetime_string = '';
73
-            if (
74
-                EE_Registry::instance()->CAP->current_user_can(
75
-                    'ee_read_checkin',
76
-                    'espresso_registrations_registration_checkins',
77
-                    $item->ID()
78
-                )
79
-            ) {
80
-                // open "a" tag and "href"
81
-                $datetime_string .= '<a href="';
82
-                // checkin URL
83
-                $datetime_string .= EE_Admin_Page::add_query_args_and_nonce(
84
-                    array(
85
-                        'action'   => 'event_registrations',
86
-                        'event_id' => $EVT_ID,
87
-                        'DTT_ID'   => $datetime->ID(),
88
-                    ),
89
-                    REG_ADMIN_URL
90
-                );
91
-                // close "href"
92
-                $datetime_string .= '"';
93
-                // open "title" tag
94
-                $datetime_string .= ' title="';
95
-                // link title text
96
-                $datetime_string .= esc_attr__('View Checkins for this Event', 'event_espresso');
97
-                // close "title" tag and end of "a" tag opening
98
-                $datetime_string .= '">';
99
-                // link text
100
-                $datetime_string .= $datetime->get_i18n_datetime('DTT_EVT_start');
101
-                // close "a" tag
102
-                $datetime_string .= '</a>';
103
-            } else {
104
-                $datetime_string .= $datetime->get_i18n_datetime('DTT_EVT_start');
105
-            }
106
-            // add a "View Registrations" link that filters list by event AND datetime
107
-            $datetime_string .= $this->row_actions(
108
-                array(
109
-                    'event_datetime_filter' => '<a href="' . EE_Admin_Page::add_query_args_and_nonce(
110
-                        array('event_id' => $EVT_ID, 'datetime_id' => $datetime->ID()),
111
-                        REG_ADMIN_URL
112
-                    )
113
-                                               . '" title="' . sprintf(
114
-                                                   esc_attr__(
115
-                                                       'Filter this list to only show registrations for this datetime %s',
116
-                                                       'event_espresso'
117
-                                                   ),
118
-                                                   $datetime->name()
119
-                                               ) . '">'
120
-                                               . esc_html__('View Registrations', 'event_espresso')
121
-                                               . '</a>',
122
-                )
123
-            );
124
-            $datetimes_for_display[] = $datetime_string;
125
-        }
126
-        return $this->generateDisplayForDateTimes($datetimes_for_display);
127
-    }
53
+	/**
54
+	 *        column_default
55
+	 *
56
+	 * @param \EE_Registration $item
57
+	 * @return string
58
+	 * @throws EE_Error
59
+	 * @throws InvalidArgumentException
60
+	 * @throws InvalidDataTypeException
61
+	 * @throws InvalidInterfaceException
62
+	 * @throws ReflectionException
63
+	 */
64
+	public function column_DTT_EVT_start(EE_Registration $item)
65
+	{
66
+		$remove_defaults = array('default_where_conditions' => 'none');
67
+		$ticket = $item->ticket();
68
+		$datetimes = $ticket instanceof EE_Ticket ? $ticket->datetimes($remove_defaults) : array();
69
+		$EVT_ID = $item->event_ID();
70
+		$datetimes_for_display = array();
71
+		foreach ($datetimes as $datetime) {
72
+			$datetime_string = '';
73
+			if (
74
+				EE_Registry::instance()->CAP->current_user_can(
75
+					'ee_read_checkin',
76
+					'espresso_registrations_registration_checkins',
77
+					$item->ID()
78
+				)
79
+			) {
80
+				// open "a" tag and "href"
81
+				$datetime_string .= '<a href="';
82
+				// checkin URL
83
+				$datetime_string .= EE_Admin_Page::add_query_args_and_nonce(
84
+					array(
85
+						'action'   => 'event_registrations',
86
+						'event_id' => $EVT_ID,
87
+						'DTT_ID'   => $datetime->ID(),
88
+					),
89
+					REG_ADMIN_URL
90
+				);
91
+				// close "href"
92
+				$datetime_string .= '"';
93
+				// open "title" tag
94
+				$datetime_string .= ' title="';
95
+				// link title text
96
+				$datetime_string .= esc_attr__('View Checkins for this Event', 'event_espresso');
97
+				// close "title" tag and end of "a" tag opening
98
+				$datetime_string .= '">';
99
+				// link text
100
+				$datetime_string .= $datetime->get_i18n_datetime('DTT_EVT_start');
101
+				// close "a" tag
102
+				$datetime_string .= '</a>';
103
+			} else {
104
+				$datetime_string .= $datetime->get_i18n_datetime('DTT_EVT_start');
105
+			}
106
+			// add a "View Registrations" link that filters list by event AND datetime
107
+			$datetime_string .= $this->row_actions(
108
+				array(
109
+					'event_datetime_filter' => '<a href="' . EE_Admin_Page::add_query_args_and_nonce(
110
+						array('event_id' => $EVT_ID, 'datetime_id' => $datetime->ID()),
111
+						REG_ADMIN_URL
112
+					)
113
+											   . '" title="' . sprintf(
114
+												   esc_attr__(
115
+													   'Filter this list to only show registrations for this datetime %s',
116
+													   'event_espresso'
117
+												   ),
118
+												   $datetime->name()
119
+											   ) . '">'
120
+											   . esc_html__('View Registrations', 'event_espresso')
121
+											   . '</a>',
122
+				)
123
+			);
124
+			$datetimes_for_display[] = $datetime_string;
125
+		}
126
+		return $this->generateDisplayForDateTimes($datetimes_for_display);
127
+	}
128 128
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Taxes.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
         $tax = 0;
40 40
         $total_tax = 0;
41 41
         // This first checks to see if the given ticket is taxable.
42
-        if (! $ticket->get('TKT_taxable')) {
42
+        if ( ! $ticket->get('TKT_taxable')) {
43 43
             return $tax;
44 44
         }
45 45
         // get subtotal (notice we're only retrieving a subtotal if there isn't one given)
@@ -80,8 +80,8 @@  discard block
 block discarded – undo
80 80
     public static function get_subtotal_for_admin(EE_Ticket $ticket)
81 81
     {
82 82
         $TKT_ID = $ticket->ID();
83
-        return isset(self::$_subtotal[ $TKT_ID ])
84
-            ? self::$_subtotal[ $TKT_ID ]
83
+        return isset(self::$_subtotal[$TKT_ID])
84
+            ? self::$_subtotal[$TKT_ID]
85 85
             : self::_get_subtotal_for_admin($ticket);
86 86
     }
87 87
 
Please login to merge, or discard this patch.
Indentation   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -9,138 +9,138 @@
 block discarded – undo
9 9
  */
10 10
 class EE_Taxes extends EE_Base
11 11
 {
12
-    /**
13
-     * This is used for when EE_Taxes is used statically by the admin
14
-     *
15
-     * @var array
16
-     */
17
-    private static $_subtotal = array();
12
+	/**
13
+	 * This is used for when EE_Taxes is used statically by the admin
14
+	 *
15
+	 * @var array
16
+	 */
17
+	private static $_subtotal = array();
18 18
 
19
-    /**
20
-     * This holds an array of EE_Price objects that are of PRT_ID == 4 (tax price types)
21
-     *
22
-     * @var EE_Price[]
23
-     */
24
-    private static $_default_taxes = array();
19
+	/**
20
+	 * This holds an array of EE_Price objects that are of PRT_ID == 4 (tax price types)
21
+	 *
22
+	 * @var EE_Price[]
23
+	 */
24
+	private static $_default_taxes = array();
25 25
 
26 26
 
27
-    /**
28
-     * This method simply calculates the total taxes for a given ticket (by pulling the prices attached to the ticket
29
-     * and applying default taxes to it). Note: this is just an intermediary helper method added to facilitate quick
30
-     * calc of taxes for tickets listed in the event editor.
31
-     *
32
-     * @param  EE_Ticket $ticket incoming EE_Ticket
33
-     * @return float             total taxes to apply to ticket.
34
-     * @throws \EE_Error
35
-     */
36
-    public static function get_total_taxes_for_admin(EE_Ticket $ticket)
37
-    {
38
-        $tax = 0;
39
-        $total_tax = 0;
40
-        // This first checks to see if the given ticket is taxable.
41
-        if (! $ticket->get('TKT_taxable')) {
42
-            return $tax;
43
-        }
44
-        // get subtotal (notice we're only retrieving a subtotal if there isn't one given)
45
-        $subtotal = self::get_subtotal_for_admin($ticket);
46
-        // get taxes
47
-        $taxes = self::get_taxes_for_admin();
48
-        // apply taxes to subtotal
49
-        foreach ($taxes as $tax) {
50
-            // assuming taxes are not cumulative
51
-            $total_tax += $subtotal * $tax->get('PRC_amount') / 100;
52
-        }
53
-        return $total_tax;
54
-    }
27
+	/**
28
+	 * This method simply calculates the total taxes for a given ticket (by pulling the prices attached to the ticket
29
+	 * and applying default taxes to it). Note: this is just an intermediary helper method added to facilitate quick
30
+	 * calc of taxes for tickets listed in the event editor.
31
+	 *
32
+	 * @param  EE_Ticket $ticket incoming EE_Ticket
33
+	 * @return float             total taxes to apply to ticket.
34
+	 * @throws \EE_Error
35
+	 */
36
+	public static function get_total_taxes_for_admin(EE_Ticket $ticket)
37
+	{
38
+		$tax = 0;
39
+		$total_tax = 0;
40
+		// This first checks to see if the given ticket is taxable.
41
+		if (! $ticket->get('TKT_taxable')) {
42
+			return $tax;
43
+		}
44
+		// get subtotal (notice we're only retrieving a subtotal if there isn't one given)
45
+		$subtotal = self::get_subtotal_for_admin($ticket);
46
+		// get taxes
47
+		$taxes = self::get_taxes_for_admin();
48
+		// apply taxes to subtotal
49
+		foreach ($taxes as $tax) {
50
+			// assuming taxes are not cumulative
51
+			$total_tax += $subtotal * $tax->get('PRC_amount') / 100;
52
+		}
53
+		return $total_tax;
54
+	}
55 55
 
56 56
 
57
-    /**
58
-     * Gets the total percentage of tax that should be applied to taxable line items
59
-     *
60
-     * @return float the percentage of tax that should be added to taxable items
61
-     * @throws \EE_Error
62
-     * eg 20 for %20 tax (NOT 0.20, which
63
-     */
64
-    public static function get_total_taxes_percentage()
65
-    {
66
-        $total_tax_percent = 0;
67
-        foreach (self::get_taxes_for_admin() as $tax_price) {
68
-            $total_tax_percent += $tax_price->get('PRC_amount');
69
-        }
70
-        return $total_tax_percent;
71
-    }
57
+	/**
58
+	 * Gets the total percentage of tax that should be applied to taxable line items
59
+	 *
60
+	 * @return float the percentage of tax that should be added to taxable items
61
+	 * @throws \EE_Error
62
+	 * eg 20 for %20 tax (NOT 0.20, which
63
+	 */
64
+	public static function get_total_taxes_percentage()
65
+	{
66
+		$total_tax_percent = 0;
67
+		foreach (self::get_taxes_for_admin() as $tax_price) {
68
+			$total_tax_percent += $tax_price->get('PRC_amount');
69
+		}
70
+		return $total_tax_percent;
71
+	}
72 72
 
73 73
 
74
-    /**
75
-     * @param EE_Ticket $ticket
76
-     * @return float
77
-     * @throws \EE_Error
78
-     */
79
-    public static function get_subtotal_for_admin(EE_Ticket $ticket)
80
-    {
81
-        $TKT_ID = $ticket->ID();
82
-        return isset(self::$_subtotal[ $TKT_ID ])
83
-            ? self::$_subtotal[ $TKT_ID ]
84
-            : self::_get_subtotal_for_admin($ticket);
85
-    }
74
+	/**
75
+	 * @param EE_Ticket $ticket
76
+	 * @return float
77
+	 * @throws \EE_Error
78
+	 */
79
+	public static function get_subtotal_for_admin(EE_Ticket $ticket)
80
+	{
81
+		$TKT_ID = $ticket->ID();
82
+		return isset(self::$_subtotal[ $TKT_ID ])
83
+			? self::$_subtotal[ $TKT_ID ]
84
+			: self::_get_subtotal_for_admin($ticket);
85
+	}
86 86
 
87 87
 
88
-    /**
89
-     * simply take an incoming ticket and calculate the subtotal for the ticket
90
-     *
91
-     * @param  EE_Ticket $ticket
92
-     * @return float     subtotal calculated from all EE_Price[] on Ticket.
93
-     * @throws \EE_Error
94
-     */
95
-    private static function _get_subtotal_for_admin(EE_Ticket $ticket)
96
-    {
97
-        $subtotal = 0;
98
-        // get all prices
99
-        $prices = $ticket->get_many_related(
100
-            'Price',
101
-            array(
102
-                'default_where_conditions' => 'none',
103
-                'order_by'                 => array('PRC_order' => 'ASC'),
104
-            )
105
-        );
106
-        // let's loop through them (base price is always the first item)
107
-        foreach ($prices as $price) {
108
-            if ($price instanceof EE_Price) {
109
-                $price_type = $price->type_obj();
110
-                if ($price_type instanceof EE_Price_Type) {
111
-                    switch ($price->type_obj()->base_type()) {
112
-                        case 1: // base price
113
-                        case 3: // surcharges
114
-                            $subtotal += $price->is_percent() ? $subtotal * $price->get('PRC_amount') / 100
115
-                                : $price->get('PRC_amount');
116
-                            break;
117
-                        case 2: // discounts
118
-                            $subtotal -= $price->is_percent() ? $subtotal * $price->get('PRC_amount') / 100
119
-                                : $price->get('PRC_amount');
120
-                            break;
121
-                    }
122
-                }
123
-            }
124
-        }
125
-        $TKT_ID = $ticket->ID();
126
-        self::$_subtotal = array($TKT_ID => $subtotal);
127
-        return $subtotal;
128
-    }
88
+	/**
89
+	 * simply take an incoming ticket and calculate the subtotal for the ticket
90
+	 *
91
+	 * @param  EE_Ticket $ticket
92
+	 * @return float     subtotal calculated from all EE_Price[] on Ticket.
93
+	 * @throws \EE_Error
94
+	 */
95
+	private static function _get_subtotal_for_admin(EE_Ticket $ticket)
96
+	{
97
+		$subtotal = 0;
98
+		// get all prices
99
+		$prices = $ticket->get_many_related(
100
+			'Price',
101
+			array(
102
+				'default_where_conditions' => 'none',
103
+				'order_by'                 => array('PRC_order' => 'ASC'),
104
+			)
105
+		);
106
+		// let's loop through them (base price is always the first item)
107
+		foreach ($prices as $price) {
108
+			if ($price instanceof EE_Price) {
109
+				$price_type = $price->type_obj();
110
+				if ($price_type instanceof EE_Price_Type) {
111
+					switch ($price->type_obj()->base_type()) {
112
+						case 1: // base price
113
+						case 3: // surcharges
114
+							$subtotal += $price->is_percent() ? $subtotal * $price->get('PRC_amount') / 100
115
+								: $price->get('PRC_amount');
116
+							break;
117
+						case 2: // discounts
118
+							$subtotal -= $price->is_percent() ? $subtotal * $price->get('PRC_amount') / 100
119
+								: $price->get('PRC_amount');
120
+							break;
121
+					}
122
+				}
123
+			}
124
+		}
125
+		$TKT_ID = $ticket->ID();
126
+		self::$_subtotal = array($TKT_ID => $subtotal);
127
+		return $subtotal;
128
+	}
129 129
 
130 130
 
131
-    /**
132
-     * get all default prices that are a Tax price type (PRT_ID = 4) and return
133
-     *
134
-     * @return EE_Price[] EE_Price objects that have PRT_ID == 4
135
-     * @throws \EE_Error
136
-     */
137
-    public static function get_taxes_for_admin()
138
-    {
139
-        if (empty(self::$_default_taxes)) {
140
-            self::$_default_taxes = EE_Registry::instance()->load_model('Price')->get_all(
141
-                array(array('Price_Type.PBT_ID' => 4))
142
-            );
143
-        }
144
-        return self::$_default_taxes;
145
-    }
131
+	/**
132
+	 * get all default prices that are a Tax price type (PRT_ID = 4) and return
133
+	 *
134
+	 * @return EE_Price[] EE_Price objects that have PRT_ID == 4
135
+	 * @throws \EE_Error
136
+	 */
137
+	public static function get_taxes_for_admin()
138
+	{
139
+		if (empty(self::$_default_taxes)) {
140
+			self::$_default_taxes = EE_Registry::instance()->load_model('Price')->get_all(
141
+				array(array('Price_Type.PBT_ID' => 4))
142
+			);
143
+		}
144
+		return self::$_default_taxes;
145
+	}
146 146
 }
Please login to merge, or discard this patch.
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
@@ -12,487 +12,487 @@
 block discarded – undo
12 12
  */
13 13
 class EE_Message_Template_Group extends EE_Soft_Delete_Base_Class
14 14
 {
15
-    /**
16
-     * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
17
-     */
18
-    const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
19
-
20
-    /**
21
-     * @param array  $props_n_values
22
-     * @param string $timezone
23
-     * @return EE_Message_Template_Group|mixed
24
-     * @throws EE_Error
25
-     */
26
-    public static function new_instance($props_n_values = array(), $timezone = '')
27
-    {
28
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
29
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone);
30
-    }
31
-
32
-
33
-    /**
34
-     * @param array  $props_n_values
35
-     * @param string $timezone
36
-     * @return EE_Message_Template_Group
37
-     */
38
-    public static function new_instance_from_db($props_n_values = array(), $timezone = '')
39
-    {
40
-        return new self($props_n_values, true, $timezone);
41
-    }
42
-
43
-
44
-    /**
45
-     * @param bool $message_type
46
-     * @throws EE_Error
47
-     */
48
-    public function set_message_type($message_type = false)
49
-    {
50
-        if (! $message_type) {
51
-            throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
52
-        }
53
-        $this->set('MTP_message_type', $message_type);
54
-    }
55
-
56
-
57
-    /**
58
-     * @param bool $messenger
59
-     * @throws EE_Error
60
-     */
61
-    public function set_messenger($messenger = false)
62
-    {
63
-        if (! $messenger) {
64
-            throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
65
-        }
66
-        $this->set('MTP_messenger', $messenger);
67
-    }
68
-
69
-
70
-    /**
71
-     * @param bool $GRP_ID
72
-     * @throws EE_Error
73
-     */
74
-    public function set_group_template_id($GRP_ID = false)
75
-    {
76
-        if (! $GRP_ID) {
77
-            throw new EE_Error(
78
-                esc_html__(
79
-                    'Missing required value for the message template group id',
80
-                    'event_espresso'
81
-                )
82
-            );
83
-        }
84
-        $this->set('GRP_ID', $GRP_ID);
85
-    }
86
-
87
-
88
-    /**
89
-     * get Group ID
90
-     *
91
-     * @access public
92
-     * @return int
93
-     * @throws EE_Error
94
-     */
95
-    public function GRP_ID()
96
-    {
97
-        return $this->get('GRP_ID');
98
-    }
99
-
100
-
101
-    /**
102
-     * get User ID
103
-     *
104
-     * @access public
105
-     * @return int
106
-     * @throws EE_Error
107
-     */
108
-    public function user()
109
-    {
110
-        $user_id = $this->get('MTP_user_id');
111
-        return empty($user_id) ? get_current_user_id() : $user_id;
112
-    }
113
-
114
-
115
-    /**
116
-     * Wrapper for the user function() (preserve backward compat)
117
-     *
118
-     * @since  4.5.0
119
-     * @return int
120
-     * @throws EE_Error
121
-     */
122
-    public function wp_user()
123
-    {
124
-        return $this->user();
125
-    }
126
-
127
-
128
-    /**
129
-     * This simply returns a count of all related events to this message template group
130
-     *
131
-     * @return int
132
-     */
133
-    public function count_events()
134
-    {
135
-        return $this->count_related('Event');
136
-    }
137
-
138
-
139
-    /**
140
-     * returns the name saved in the db for this template
141
-     *
142
-     * @return string
143
-     * @throws EE_Error
144
-     */
145
-    public function name()
146
-    {
147
-        return $this->get('MTP_name');
148
-    }
149
-
150
-
151
-    /**
152
-     * Returns the description saved in the db for this template group
153
-     *
154
-     * @return string
155
-     * @throws EE_Error
156
-     */
157
-    public function description()
158
-    {
159
-        return $this->get('MTP_description');
160
-    }
161
-
162
-
163
-    /**
164
-     * returns all related EE_Message_Template objects
165
-     *
166
-     * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
167
-     * @return EE_Message_Template[]
168
-     * @throws EE_Error
169
-     */
170
-    public function message_templates($query_params = array())
171
-    {
172
-        return $this->get_many_related('Message_Template', $query_params);
173
-    }
174
-
175
-
176
-    /**
177
-     * get Message Messenger
178
-     *
179
-     * @access public
180
-     * @return string
181
-     * @throws EE_Error
182
-     */
183
-    public function messenger()
184
-    {
185
-        return $this->get('MTP_messenger');
186
-    }
187
-
188
-
189
-    /**
190
-     * get Message Messenger OBJECT
191
-     * If an attempt to get the corresponding messenger object fails, then we set this message
192
-     * template group to inactive, and save to db.  Then return null so client code can handle
193
-     * appropriately.
194
-     *
195
-     * @return EE_messenger
196
-     * @throws EE_Error
197
-     */
198
-    public function messenger_obj()
199
-    {
200
-        $messenger = $this->messenger();
201
-        try {
202
-            $messenger = EEH_MSG_Template::messenger_obj($messenger);
203
-        } catch (EE_Error $e) {
204
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
205
-            // class for this messenger in this group.
206
-            $this->set('MTP_is_active', false);
207
-            $this->save();
208
-            return null;
209
-        }
210
-        return $messenger;
211
-    }
212
-
213
-
214
-    /**
215
-     * get Message Type
216
-     *
217
-     * @access public
218
-     * @return string
219
-     * @throws EE_Error
220
-     */
221
-    public function message_type()
222
-    {
223
-        return $this->get('MTP_message_type');
224
-    }
225
-
226
-
227
-    /**
228
-     * get Message type OBJECT
229
-     * If an attempt to get the corresponding message type object fails, then we set this message
230
-     * template group to inactive, and save to db.  Then return null so client code can handle
231
-     * appropriately.
232
-     *
233
-     * @throws EE_Error
234
-     * @return EE_message_type|false if exception thrown.
235
-     */
236
-    public function message_type_obj()
237
-    {
238
-        $message_type = $this->message_type();
239
-        try {
240
-            $message_type = EEH_MSG_Template::message_type_obj($message_type);
241
-        } catch (EE_Error $e) {
242
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
243
-            // class for the message type in this group.
244
-            $this->set('MTP_is_active', false);
245
-            $this->save();
246
-            return null;
247
-        }
248
-        return $message_type;
249
-    }
250
-
251
-
252
-    /**
253
-     * @return array
254
-     * @throws EE_Error
255
-     */
256
-    public function contexts_config()
257
-    {
258
-        return $this->message_type_obj()->get_contexts();
259
-    }
260
-
261
-
262
-    /**
263
-     * This returns the context_label for contexts as set in the message type object
264
-     * Note this is an array with singular and plural keys
265
-     *
266
-     * @access public
267
-     * @return array labels for "context"
268
-     * @throws EE_Error
269
-     */
270
-    public function context_label()
271
-    {
272
-        $obj = $this->message_type_obj();
273
-        return $obj->get_context_label();
274
-    }
275
-
276
-
277
-    /**
278
-     * This returns an array of EE_Message_Template objects indexed by context and field.
279
-     *
280
-     * @return array ()
281
-     * @throws EE_Error
282
-     */
283
-    public function context_templates()
284
-    {
285
-        $mtps_arr = array();
286
-        $mtps = $this->get_many_related('Message_Template');
287
-        if (empty($mtps)) {
288
-            return array();
289
-        }
290
-        // note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
291
-        foreach ($mtps as $mtp) {
292
-            $mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
-        }
294
-        return $mtps_arr;
295
-    }
296
-
297
-
298
-    /**
299
-     * this returns if the template group this template belongs to is global
300
-     *
301
-     * @return bool true if it is, false if it isn't
302
-     * @throws EE_Error
303
-     */
304
-    public function is_global()
305
-    {
306
-        return $this->get('MTP_is_global');
307
-    }
308
-
309
-
310
-    /**
311
-     * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
312
-     *
313
-     * @return bool true if it is, false if it isn't
314
-     * @throws EE_Error
315
-     */
316
-    public function is_active()
317
-    {
318
-        return $this->get('MTP_is_active');
319
-    }
320
-
321
-
322
-    /**
323
-     * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
324
-     * this template.
325
-     *
326
-     * @since 4.3.0
327
-     * @uses  EEH_MSG_Template::get_shortcodes()
328
-     * @param string $context what context we're going to return shortcodes for
329
-     * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
330
-     *                        to be returned.
331
-     * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
332
-     *                        unique shortcodes for all the given (or all) fields.
333
-     * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
334
-     *                        shortcodes found.
335
-     * @throws EE_Error
336
-     */
337
-    public function get_shortcodes($context, $fields = array(), $merged = false)
338
-    {
339
-        $messenger = $this->messenger();
340
-        $message_type = $this->message_type();
341
-        return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
342
-    }
343
-
344
-
345
-    /**
346
-     * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
347
-     * use the default template pack.
348
-     *
349
-     * @since 4.5.0
350
-     * @return string
351
-     * @throws EE_Error
352
-     */
353
-    public function get_template_pack_name()
354
-    {
355
-        return $this->get_extra_meta('MTP_template_pack', true, 'default');
356
-    }
357
-
358
-
359
-    /**
360
-     * This returns the specific template pack object referenced by the template pack name attached to this message
361
-     * template group.  If no template pack is assigned then the default template pack is retrieved.
362
-     *
363
-     * @since 4.5.0
364
-     * @return EE_Messages_Template_Pack
365
-     * @throws EE_Error
366
-     * @throws InvalidArgumentException
367
-     * @throws ReflectionException
368
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
369
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
370
-     */
371
-    public function get_template_pack()
372
-    {
373
-        $pack_name = $this->get_template_pack_name();
374
-        EE_Registry::instance()->load_helper('MSG_Template');
375
-        return EEH_MSG_Template::get_template_pack($pack_name);
376
-    }
377
-
378
-
379
-    /**
380
-     * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
381
-     * use the default template variation.
382
-     *
383
-     * @since 4.5.0
384
-     * @return string
385
-     * @throws EE_Error
386
-     */
387
-    public function get_template_pack_variation()
388
-    {
389
-        return $this->get_extra_meta('MTP_variation', true, 'default');
390
-    }
391
-
392
-
393
-    /**
394
-     * This just sets the template pack name attached to this message template group.
395
-     *
396
-     * @since 4.5.0
397
-     * @param string $template_pack_name What message template pack is assigned.
398
-     * @return int
399
-     * @throws EE_Error
400
-     */
401
-    public function set_template_pack_name($template_pack_name)
402
-    {
403
-        return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
404
-    }
405
-
406
-
407
-    /**
408
-     * This just sets the template pack variation attached to this message template group.
409
-     *
410
-     * @since 4.5.0
411
-     * @param string $variation What variation is being set on the message template group.
412
-     * @return int
413
-     * @throws EE_Error
414
-     */
415
-    public function set_template_pack_variation($variation)
416
-    {
417
-        return $this->update_extra_meta('MTP_variation', $variation);
418
-    }
419
-
420
-
421
-    /**
422
-     * Deactivates the given context.
423
-     *
424
-     * @param $context
425
-     * @return bool|int
426
-     * @throws EE_Error
427
-     * @throws InvalidIdentifierException
428
-     */
429
-    public function deactivate_context($context)
430
-    {
431
-        $this->validate_context($context);
432
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
-    }
434
-
435
-
436
-    /**
437
-     * Activates the given context.
438
-     *
439
-     * @param $context
440
-     * @return bool|int
441
-     * @throws EE_Error
442
-     * @throws InvalidIdentifierException
443
-     */
444
-    public function activate_context($context)
445
-    {
446
-        $this->validate_context($context);
447
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
-    }
449
-
450
-
451
-    /**
452
-     * Returns whether the context is active or not.
453
-     * Note, this will default to true if the extra meta record doesn't exist.
454
-     * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
455
-     * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
456
-     * whether a context is "active" or not.
457
-     *
458
-     * @param $context
459
-     * @return bool
460
-     * @throws EE_Error
461
-     * @throws InvalidIdentifierException
462
-     */
463
-    public function is_context_active($context)
464
-    {
465
-        $this->validate_context($context);
466
-        return filter_var(
467
-            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
-            FILTER_VALIDATE_BOOLEAN
469
-        );
470
-    }
471
-
472
-
473
-    /**
474
-     * Validates the incoming context to verify it matches a registered context for the related message type.
475
-     *
476
-     * @param string $context
477
-     * @throws EE_Error
478
-     * @throws InvalidIdentifierException
479
-     */
480
-    public function validate_context($context)
481
-    {
482
-        $contexts = $this->contexts_config();
483
-        if (! isset($contexts[ $context ])) {
484
-            throw new InvalidIdentifierException(
485
-                '',
486
-                '',
487
-                sprintf(
488
-                    esc_html__(
489
-                        'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
490
-                        'event_espresso'
491
-                    ),
492
-                    $context,
493
-                    implode(',', array_keys($contexts))
494
-                )
495
-            );
496
-        }
497
-    }
15
+	/**
16
+	 * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
17
+	 */
18
+	const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
19
+
20
+	/**
21
+	 * @param array  $props_n_values
22
+	 * @param string $timezone
23
+	 * @return EE_Message_Template_Group|mixed
24
+	 * @throws EE_Error
25
+	 */
26
+	public static function new_instance($props_n_values = array(), $timezone = '')
27
+	{
28
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
29
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone);
30
+	}
31
+
32
+
33
+	/**
34
+	 * @param array  $props_n_values
35
+	 * @param string $timezone
36
+	 * @return EE_Message_Template_Group
37
+	 */
38
+	public static function new_instance_from_db($props_n_values = array(), $timezone = '')
39
+	{
40
+		return new self($props_n_values, true, $timezone);
41
+	}
42
+
43
+
44
+	/**
45
+	 * @param bool $message_type
46
+	 * @throws EE_Error
47
+	 */
48
+	public function set_message_type($message_type = false)
49
+	{
50
+		if (! $message_type) {
51
+			throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
52
+		}
53
+		$this->set('MTP_message_type', $message_type);
54
+	}
55
+
56
+
57
+	/**
58
+	 * @param bool $messenger
59
+	 * @throws EE_Error
60
+	 */
61
+	public function set_messenger($messenger = false)
62
+	{
63
+		if (! $messenger) {
64
+			throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
65
+		}
66
+		$this->set('MTP_messenger', $messenger);
67
+	}
68
+
69
+
70
+	/**
71
+	 * @param bool $GRP_ID
72
+	 * @throws EE_Error
73
+	 */
74
+	public function set_group_template_id($GRP_ID = false)
75
+	{
76
+		if (! $GRP_ID) {
77
+			throw new EE_Error(
78
+				esc_html__(
79
+					'Missing required value for the message template group id',
80
+					'event_espresso'
81
+				)
82
+			);
83
+		}
84
+		$this->set('GRP_ID', $GRP_ID);
85
+	}
86
+
87
+
88
+	/**
89
+	 * get Group ID
90
+	 *
91
+	 * @access public
92
+	 * @return int
93
+	 * @throws EE_Error
94
+	 */
95
+	public function GRP_ID()
96
+	{
97
+		return $this->get('GRP_ID');
98
+	}
99
+
100
+
101
+	/**
102
+	 * get User ID
103
+	 *
104
+	 * @access public
105
+	 * @return int
106
+	 * @throws EE_Error
107
+	 */
108
+	public function user()
109
+	{
110
+		$user_id = $this->get('MTP_user_id');
111
+		return empty($user_id) ? get_current_user_id() : $user_id;
112
+	}
113
+
114
+
115
+	/**
116
+	 * Wrapper for the user function() (preserve backward compat)
117
+	 *
118
+	 * @since  4.5.0
119
+	 * @return int
120
+	 * @throws EE_Error
121
+	 */
122
+	public function wp_user()
123
+	{
124
+		return $this->user();
125
+	}
126
+
127
+
128
+	/**
129
+	 * This simply returns a count of all related events to this message template group
130
+	 *
131
+	 * @return int
132
+	 */
133
+	public function count_events()
134
+	{
135
+		return $this->count_related('Event');
136
+	}
137
+
138
+
139
+	/**
140
+	 * returns the name saved in the db for this template
141
+	 *
142
+	 * @return string
143
+	 * @throws EE_Error
144
+	 */
145
+	public function name()
146
+	{
147
+		return $this->get('MTP_name');
148
+	}
149
+
150
+
151
+	/**
152
+	 * Returns the description saved in the db for this template group
153
+	 *
154
+	 * @return string
155
+	 * @throws EE_Error
156
+	 */
157
+	public function description()
158
+	{
159
+		return $this->get('MTP_description');
160
+	}
161
+
162
+
163
+	/**
164
+	 * returns all related EE_Message_Template objects
165
+	 *
166
+	 * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
167
+	 * @return EE_Message_Template[]
168
+	 * @throws EE_Error
169
+	 */
170
+	public function message_templates($query_params = array())
171
+	{
172
+		return $this->get_many_related('Message_Template', $query_params);
173
+	}
174
+
175
+
176
+	/**
177
+	 * get Message Messenger
178
+	 *
179
+	 * @access public
180
+	 * @return string
181
+	 * @throws EE_Error
182
+	 */
183
+	public function messenger()
184
+	{
185
+		return $this->get('MTP_messenger');
186
+	}
187
+
188
+
189
+	/**
190
+	 * get Message Messenger OBJECT
191
+	 * If an attempt to get the corresponding messenger object fails, then we set this message
192
+	 * template group to inactive, and save to db.  Then return null so client code can handle
193
+	 * appropriately.
194
+	 *
195
+	 * @return EE_messenger
196
+	 * @throws EE_Error
197
+	 */
198
+	public function messenger_obj()
199
+	{
200
+		$messenger = $this->messenger();
201
+		try {
202
+			$messenger = EEH_MSG_Template::messenger_obj($messenger);
203
+		} catch (EE_Error $e) {
204
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
205
+			// class for this messenger in this group.
206
+			$this->set('MTP_is_active', false);
207
+			$this->save();
208
+			return null;
209
+		}
210
+		return $messenger;
211
+	}
212
+
213
+
214
+	/**
215
+	 * get Message Type
216
+	 *
217
+	 * @access public
218
+	 * @return string
219
+	 * @throws EE_Error
220
+	 */
221
+	public function message_type()
222
+	{
223
+		return $this->get('MTP_message_type');
224
+	}
225
+
226
+
227
+	/**
228
+	 * get Message type OBJECT
229
+	 * If an attempt to get the corresponding message type object fails, then we set this message
230
+	 * template group to inactive, and save to db.  Then return null so client code can handle
231
+	 * appropriately.
232
+	 *
233
+	 * @throws EE_Error
234
+	 * @return EE_message_type|false if exception thrown.
235
+	 */
236
+	public function message_type_obj()
237
+	{
238
+		$message_type = $this->message_type();
239
+		try {
240
+			$message_type = EEH_MSG_Template::message_type_obj($message_type);
241
+		} catch (EE_Error $e) {
242
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
243
+			// class for the message type in this group.
244
+			$this->set('MTP_is_active', false);
245
+			$this->save();
246
+			return null;
247
+		}
248
+		return $message_type;
249
+	}
250
+
251
+
252
+	/**
253
+	 * @return array
254
+	 * @throws EE_Error
255
+	 */
256
+	public function contexts_config()
257
+	{
258
+		return $this->message_type_obj()->get_contexts();
259
+	}
260
+
261
+
262
+	/**
263
+	 * This returns the context_label for contexts as set in the message type object
264
+	 * Note this is an array with singular and plural keys
265
+	 *
266
+	 * @access public
267
+	 * @return array labels for "context"
268
+	 * @throws EE_Error
269
+	 */
270
+	public function context_label()
271
+	{
272
+		$obj = $this->message_type_obj();
273
+		return $obj->get_context_label();
274
+	}
275
+
276
+
277
+	/**
278
+	 * This returns an array of EE_Message_Template objects indexed by context and field.
279
+	 *
280
+	 * @return array ()
281
+	 * @throws EE_Error
282
+	 */
283
+	public function context_templates()
284
+	{
285
+		$mtps_arr = array();
286
+		$mtps = $this->get_many_related('Message_Template');
287
+		if (empty($mtps)) {
288
+			return array();
289
+		}
290
+		// note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
291
+		foreach ($mtps as $mtp) {
292
+			$mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
+		}
294
+		return $mtps_arr;
295
+	}
296
+
297
+
298
+	/**
299
+	 * this returns if the template group this template belongs to is global
300
+	 *
301
+	 * @return bool true if it is, false if it isn't
302
+	 * @throws EE_Error
303
+	 */
304
+	public function is_global()
305
+	{
306
+		return $this->get('MTP_is_global');
307
+	}
308
+
309
+
310
+	/**
311
+	 * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
312
+	 *
313
+	 * @return bool true if it is, false if it isn't
314
+	 * @throws EE_Error
315
+	 */
316
+	public function is_active()
317
+	{
318
+		return $this->get('MTP_is_active');
319
+	}
320
+
321
+
322
+	/**
323
+	 * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
324
+	 * this template.
325
+	 *
326
+	 * @since 4.3.0
327
+	 * @uses  EEH_MSG_Template::get_shortcodes()
328
+	 * @param string $context what context we're going to return shortcodes for
329
+	 * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
330
+	 *                        to be returned.
331
+	 * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
332
+	 *                        unique shortcodes for all the given (or all) fields.
333
+	 * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
334
+	 *                        shortcodes found.
335
+	 * @throws EE_Error
336
+	 */
337
+	public function get_shortcodes($context, $fields = array(), $merged = false)
338
+	{
339
+		$messenger = $this->messenger();
340
+		$message_type = $this->message_type();
341
+		return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
342
+	}
343
+
344
+
345
+	/**
346
+	 * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
347
+	 * use the default template pack.
348
+	 *
349
+	 * @since 4.5.0
350
+	 * @return string
351
+	 * @throws EE_Error
352
+	 */
353
+	public function get_template_pack_name()
354
+	{
355
+		return $this->get_extra_meta('MTP_template_pack', true, 'default');
356
+	}
357
+
358
+
359
+	/**
360
+	 * This returns the specific template pack object referenced by the template pack name attached to this message
361
+	 * template group.  If no template pack is assigned then the default template pack is retrieved.
362
+	 *
363
+	 * @since 4.5.0
364
+	 * @return EE_Messages_Template_Pack
365
+	 * @throws EE_Error
366
+	 * @throws InvalidArgumentException
367
+	 * @throws ReflectionException
368
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
369
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
370
+	 */
371
+	public function get_template_pack()
372
+	{
373
+		$pack_name = $this->get_template_pack_name();
374
+		EE_Registry::instance()->load_helper('MSG_Template');
375
+		return EEH_MSG_Template::get_template_pack($pack_name);
376
+	}
377
+
378
+
379
+	/**
380
+	 * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
381
+	 * use the default template variation.
382
+	 *
383
+	 * @since 4.5.0
384
+	 * @return string
385
+	 * @throws EE_Error
386
+	 */
387
+	public function get_template_pack_variation()
388
+	{
389
+		return $this->get_extra_meta('MTP_variation', true, 'default');
390
+	}
391
+
392
+
393
+	/**
394
+	 * This just sets the template pack name attached to this message template group.
395
+	 *
396
+	 * @since 4.5.0
397
+	 * @param string $template_pack_name What message template pack is assigned.
398
+	 * @return int
399
+	 * @throws EE_Error
400
+	 */
401
+	public function set_template_pack_name($template_pack_name)
402
+	{
403
+		return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
404
+	}
405
+
406
+
407
+	/**
408
+	 * This just sets the template pack variation attached to this message template group.
409
+	 *
410
+	 * @since 4.5.0
411
+	 * @param string $variation What variation is being set on the message template group.
412
+	 * @return int
413
+	 * @throws EE_Error
414
+	 */
415
+	public function set_template_pack_variation($variation)
416
+	{
417
+		return $this->update_extra_meta('MTP_variation', $variation);
418
+	}
419
+
420
+
421
+	/**
422
+	 * Deactivates the given context.
423
+	 *
424
+	 * @param $context
425
+	 * @return bool|int
426
+	 * @throws EE_Error
427
+	 * @throws InvalidIdentifierException
428
+	 */
429
+	public function deactivate_context($context)
430
+	{
431
+		$this->validate_context($context);
432
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
+	}
434
+
435
+
436
+	/**
437
+	 * Activates the given context.
438
+	 *
439
+	 * @param $context
440
+	 * @return bool|int
441
+	 * @throws EE_Error
442
+	 * @throws InvalidIdentifierException
443
+	 */
444
+	public function activate_context($context)
445
+	{
446
+		$this->validate_context($context);
447
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
+	}
449
+
450
+
451
+	/**
452
+	 * Returns whether the context is active or not.
453
+	 * Note, this will default to true if the extra meta record doesn't exist.
454
+	 * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
455
+	 * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
456
+	 * whether a context is "active" or not.
457
+	 *
458
+	 * @param $context
459
+	 * @return bool
460
+	 * @throws EE_Error
461
+	 * @throws InvalidIdentifierException
462
+	 */
463
+	public function is_context_active($context)
464
+	{
465
+		$this->validate_context($context);
466
+		return filter_var(
467
+			$this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
+			FILTER_VALIDATE_BOOLEAN
469
+		);
470
+	}
471
+
472
+
473
+	/**
474
+	 * Validates the incoming context to verify it matches a registered context for the related message type.
475
+	 *
476
+	 * @param string $context
477
+	 * @throws EE_Error
478
+	 * @throws InvalidIdentifierException
479
+	 */
480
+	public function validate_context($context)
481
+	{
482
+		$contexts = $this->contexts_config();
483
+		if (! isset($contexts[ $context ])) {
484
+			throw new InvalidIdentifierException(
485
+				'',
486
+				'',
487
+				sprintf(
488
+					esc_html__(
489
+						'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
490
+						'event_espresso'
491
+					),
492
+					$context,
493
+					implode(',', array_keys($contexts))
494
+				)
495
+			);
496
+		}
497
+	}
498 498
 }
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(EE_Question_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(EE_Question_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(EE_Question_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(EE_Question_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(EE_Question_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(EE_Question_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_Price.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -285,7 +285,7 @@
 block discarded – undo
285 285
      */
286 286
     public function pretty_price()
287 287
     {
288
-        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
288
+        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount').'%';
289 289
     }
290 290
 
291 291
 
Please login to merge, or discard this patch.
Indentation   +285 added lines, -285 removed lines patch added patch discarded remove patch
@@ -9,289 +9,289 @@
 block discarded – undo
9 9
  */
10 10
 class EE_Price extends EE_Soft_Delete_Base_Class
11 11
 {
12
-    /**
13
-     * @param array  $props_n_values          incoming values
14
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
15
-     *                                        used.)
16
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
17
-     *                                        date_format and the second value is the time format
18
-     * @return EE_Price
19
-     */
20
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
21
-    {
22
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
23
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
24
-    }
25
-
26
-
27
-    /**
28
-     * @param array  $props_n_values  incoming values from the database
29
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
30
-     *                                the website will be used.
31
-     * @return EE_Price
32
-     */
33
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
34
-    {
35
-        return new self($props_n_values, true, $timezone);
36
-    }
37
-
38
-
39
-    /**
40
-     *        Set Price type ID
41
-     *
42
-     * @access        public
43
-     * @param        int $PRT_ID
44
-     */
45
-    public function set_type($PRT_ID = 0)
46
-    {
47
-        $this->set('PRT_ID', $PRT_ID);
48
-    }
49
-
50
-
51
-    /**
52
-     *        Set Price Amount
53
-     *
54
-     * @access        public
55
-     * @param        float $PRC_amount
56
-     */
57
-    public function set_amount($PRC_amount = 0.00)
58
-    {
59
-        $this->set('PRC_amount', $PRC_amount);
60
-    }
61
-
62
-
63
-    /**
64
-     *        Set Price Name
65
-     *
66
-     * @access        public
67
-     * @param        string $PRC_name
68
-     */
69
-    public function set_name($PRC_name = '')
70
-    {
71
-        $this->set('PRC_name', $PRC_name);
72
-    }
73
-
74
-
75
-    /**
76
-     *        Set Price Description
77
-     *
78
-     * @access        public
79
-     * @param        string $PRC_desc
80
-     */
81
-    public function set_description($PRC_desc = '')
82
-    {
83
-        $this->Set('PRC_desc', $PRC_desc);
84
-    }
85
-
86
-
87
-    /**
88
-     *        set is_default
89
-     *
90
-     * @access        public
91
-     * @param        bool $PRC_is_default
92
-     */
93
-    public function set_is_default($PRC_is_default = false)
94
-    {
95
-        $this->set('PRC_is_default', $PRC_is_default);
96
-    }
97
-
98
-
99
-    /**
100
-     *        set deleted
101
-     *
102
-     * @access        public
103
-     * @param        bool $PRC_deleted
104
-     */
105
-    public function set_deleted($PRC_deleted = null)
106
-    {
107
-        $this->set('PRC_deleted', $PRC_deleted);
108
-    }
109
-
110
-
111
-    /**
112
-     *    get Price type
113
-     *
114
-     * @access        public
115
-     * @return        int
116
-     */
117
-    public function type()
118
-    {
119
-        return $this->get('PRT_ID');
120
-    }
121
-
122
-
123
-    /**
124
-     *    get Price Amount
125
-     *
126
-     * @access        public
127
-     * @return        float
128
-     */
129
-    public function amount()
130
-    {
131
-        return $this->get('PRC_amount');
132
-    }
133
-
134
-
135
-    /**
136
-     *    get Price Name
137
-     *
138
-     * @access        public
139
-     * @return        string
140
-     */
141
-    public function name()
142
-    {
143
-        return $this->get('PRC_name');
144
-    }
145
-
146
-
147
-    /**
148
-     *    get Price description
149
-     *
150
-     * @access        public
151
-     * @return        string
152
-     */
153
-    public function desc()
154
-    {
155
-        return $this->get('PRC_desc');
156
-    }
157
-
158
-
159
-    /**
160
-     *    get overrides
161
-     *
162
-     * @access        public
163
-     * @return        int
164
-     */
165
-    public function overrides()
166
-    {
167
-        return $this->get('PRC_overrides');
168
-    }
169
-
170
-
171
-    /**
172
-     *    get order
173
-     *
174
-     * @access        public
175
-     * @return        int
176
-     */
177
-    public function order()
178
-    {
179
-        return $this->get('PRC_order');
180
-    }
181
-
182
-
183
-    /**
184
-     * get the author of the price
185
-     *
186
-     * @since 4.5.0
187
-     *
188
-     * @return int
189
-     */
190
-    public function wp_user()
191
-    {
192
-        return $this->get('PRC_wp_user');
193
-    }
194
-
195
-
196
-    /**
197
-     *    get is_default
198
-     *
199
-     * @access        public
200
-     * @return        bool
201
-     */
202
-    public function is_default()
203
-    {
204
-        return $this->get('PRC_is_default');
205
-    }
206
-
207
-
208
-    /**
209
-     *    get deleted
210
-     *
211
-     * @access        public
212
-     * @return        bool
213
-     */
214
-    public function deleted()
215
-    {
216
-        return $this->get('PRC_deleted');
217
-    }
218
-
219
-
220
-    /**
221
-     * @return bool
222
-     */
223
-    public function parent()
224
-    {
225
-        return $this->get('PRC_parent');
226
-    }
227
-
228
-
229
-    // some helper methods for getting info on the price_type for this price
230
-
231
-    /**
232
-     * return whether the price is a base price or not
233
-     *
234
-     * @return boolean
235
-     */
236
-    public function is_base_price()
237
-    {
238
-        $price_type = $this->type_obj();
239
-        return $price_type->base_type() === 1;
240
-    }
241
-
242
-
243
-    /**
244
-     *
245
-     * @return EE_Price_Type
246
-     */
247
-    public function type_obj()
248
-    {
249
-        return $this->get_first_related('Price_Type');
250
-    }
251
-
252
-
253
-    /**
254
-     * Simply indicates whether this price increases or decreases the total
255
-     *
256
-     * @return boolean true = discount, otherwise adds to the total
257
-     */
258
-    public function is_discount()
259
-    {
260
-        $price_type = $this->type_obj();
261
-        return $price_type->is_discount();
262
-    }
263
-
264
-
265
-    /**
266
-     * whether the price is a percentage or not
267
-     *
268
-     * @return boolean
269
-     */
270
-    public function is_percent()
271
-    {
272
-        $price_type = $this->type_obj();
273
-        return $price_type->get('PRT_is_percent');
274
-    }
275
-
276
-
277
-    /**
278
-     * return pretty price dependant on whether its a dollar or percent.
279
-     *
280
-     * @since 4.4.0
281
-     *
282
-     * @return string
283
-     */
284
-    public function pretty_price()
285
-    {
286
-        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
287
-    }
288
-
289
-
290
-    /**
291
-     * @return mixed
292
-     */
293
-    public function get_price_without_currency_symbol()
294
-    {
295
-        return str_replace(EE_Registry::instance()->CFG->currency->sign, '', $this->get_pretty('PRC_amount'));
296
-    }
12
+	/**
13
+	 * @param array  $props_n_values          incoming values
14
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
15
+	 *                                        used.)
16
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
17
+	 *                                        date_format and the second value is the time format
18
+	 * @return EE_Price
19
+	 */
20
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
21
+	{
22
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
23
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
24
+	}
25
+
26
+
27
+	/**
28
+	 * @param array  $props_n_values  incoming values from the database
29
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
30
+	 *                                the website will be used.
31
+	 * @return EE_Price
32
+	 */
33
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
34
+	{
35
+		return new self($props_n_values, true, $timezone);
36
+	}
37
+
38
+
39
+	/**
40
+	 *        Set Price type ID
41
+	 *
42
+	 * @access        public
43
+	 * @param        int $PRT_ID
44
+	 */
45
+	public function set_type($PRT_ID = 0)
46
+	{
47
+		$this->set('PRT_ID', $PRT_ID);
48
+	}
49
+
50
+
51
+	/**
52
+	 *        Set Price Amount
53
+	 *
54
+	 * @access        public
55
+	 * @param        float $PRC_amount
56
+	 */
57
+	public function set_amount($PRC_amount = 0.00)
58
+	{
59
+		$this->set('PRC_amount', $PRC_amount);
60
+	}
61
+
62
+
63
+	/**
64
+	 *        Set Price Name
65
+	 *
66
+	 * @access        public
67
+	 * @param        string $PRC_name
68
+	 */
69
+	public function set_name($PRC_name = '')
70
+	{
71
+		$this->set('PRC_name', $PRC_name);
72
+	}
73
+
74
+
75
+	/**
76
+	 *        Set Price Description
77
+	 *
78
+	 * @access        public
79
+	 * @param        string $PRC_desc
80
+	 */
81
+	public function set_description($PRC_desc = '')
82
+	{
83
+		$this->Set('PRC_desc', $PRC_desc);
84
+	}
85
+
86
+
87
+	/**
88
+	 *        set is_default
89
+	 *
90
+	 * @access        public
91
+	 * @param        bool $PRC_is_default
92
+	 */
93
+	public function set_is_default($PRC_is_default = false)
94
+	{
95
+		$this->set('PRC_is_default', $PRC_is_default);
96
+	}
97
+
98
+
99
+	/**
100
+	 *        set deleted
101
+	 *
102
+	 * @access        public
103
+	 * @param        bool $PRC_deleted
104
+	 */
105
+	public function set_deleted($PRC_deleted = null)
106
+	{
107
+		$this->set('PRC_deleted', $PRC_deleted);
108
+	}
109
+
110
+
111
+	/**
112
+	 *    get Price type
113
+	 *
114
+	 * @access        public
115
+	 * @return        int
116
+	 */
117
+	public function type()
118
+	{
119
+		return $this->get('PRT_ID');
120
+	}
121
+
122
+
123
+	/**
124
+	 *    get Price Amount
125
+	 *
126
+	 * @access        public
127
+	 * @return        float
128
+	 */
129
+	public function amount()
130
+	{
131
+		return $this->get('PRC_amount');
132
+	}
133
+
134
+
135
+	/**
136
+	 *    get Price Name
137
+	 *
138
+	 * @access        public
139
+	 * @return        string
140
+	 */
141
+	public function name()
142
+	{
143
+		return $this->get('PRC_name');
144
+	}
145
+
146
+
147
+	/**
148
+	 *    get Price description
149
+	 *
150
+	 * @access        public
151
+	 * @return        string
152
+	 */
153
+	public function desc()
154
+	{
155
+		return $this->get('PRC_desc');
156
+	}
157
+
158
+
159
+	/**
160
+	 *    get overrides
161
+	 *
162
+	 * @access        public
163
+	 * @return        int
164
+	 */
165
+	public function overrides()
166
+	{
167
+		return $this->get('PRC_overrides');
168
+	}
169
+
170
+
171
+	/**
172
+	 *    get order
173
+	 *
174
+	 * @access        public
175
+	 * @return        int
176
+	 */
177
+	public function order()
178
+	{
179
+		return $this->get('PRC_order');
180
+	}
181
+
182
+
183
+	/**
184
+	 * get the author of the price
185
+	 *
186
+	 * @since 4.5.0
187
+	 *
188
+	 * @return int
189
+	 */
190
+	public function wp_user()
191
+	{
192
+		return $this->get('PRC_wp_user');
193
+	}
194
+
195
+
196
+	/**
197
+	 *    get is_default
198
+	 *
199
+	 * @access        public
200
+	 * @return        bool
201
+	 */
202
+	public function is_default()
203
+	{
204
+		return $this->get('PRC_is_default');
205
+	}
206
+
207
+
208
+	/**
209
+	 *    get deleted
210
+	 *
211
+	 * @access        public
212
+	 * @return        bool
213
+	 */
214
+	public function deleted()
215
+	{
216
+		return $this->get('PRC_deleted');
217
+	}
218
+
219
+
220
+	/**
221
+	 * @return bool
222
+	 */
223
+	public function parent()
224
+	{
225
+		return $this->get('PRC_parent');
226
+	}
227
+
228
+
229
+	// some helper methods for getting info on the price_type for this price
230
+
231
+	/**
232
+	 * return whether the price is a base price or not
233
+	 *
234
+	 * @return boolean
235
+	 */
236
+	public function is_base_price()
237
+	{
238
+		$price_type = $this->type_obj();
239
+		return $price_type->base_type() === 1;
240
+	}
241
+
242
+
243
+	/**
244
+	 *
245
+	 * @return EE_Price_Type
246
+	 */
247
+	public function type_obj()
248
+	{
249
+		return $this->get_first_related('Price_Type');
250
+	}
251
+
252
+
253
+	/**
254
+	 * Simply indicates whether this price increases or decreases the total
255
+	 *
256
+	 * @return boolean true = discount, otherwise adds to the total
257
+	 */
258
+	public function is_discount()
259
+	{
260
+		$price_type = $this->type_obj();
261
+		return $price_type->is_discount();
262
+	}
263
+
264
+
265
+	/**
266
+	 * whether the price is a percentage or not
267
+	 *
268
+	 * @return boolean
269
+	 */
270
+	public function is_percent()
271
+	{
272
+		$price_type = $this->type_obj();
273
+		return $price_type->get('PRT_is_percent');
274
+	}
275
+
276
+
277
+	/**
278
+	 * return pretty price dependant on whether its a dollar or percent.
279
+	 *
280
+	 * @since 4.4.0
281
+	 *
282
+	 * @return string
283
+	 */
284
+	public function pretty_price()
285
+	{
286
+		return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
287
+	}
288
+
289
+
290
+	/**
291
+	 * @return mixed
292
+	 */
293
+	public function get_price_without_currency_symbol()
294
+	{
295
+		return str_replace(EE_Registry::instance()->CFG->currency->sign, '', $this->get_pretty('PRC_amount'));
296
+	}
297 297
 }
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.