Completed
Branch 973/fix-visible-recaptcha (0580c7)
by
unknown
03:03 queued 30s
created
core/db_models/EEM_Question_Group.model.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -45,10 +45,10 @@  discard block
 block discarded – undo
45 45
             'WP_User' => new EE_Belongs_To_Relation(),
46 46
         );
47 47
         // this model is generally available for reading
48
-        $this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
49
-        $this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
50
-        $this->_cap_restriction_generators[ EEM_Base::caps_edit ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
51
-        $this->_cap_restriction_generators[ EEM_Base::caps_delete ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
48
+        $this->_cap_restriction_generators[EEM_Base::caps_read] = new EE_Restriction_Generator_Public();
49
+        $this->_cap_restriction_generators[EEM_Base::caps_read_admin] = new EE_Restriction_Generator_Reg_Form('QSG_system');
50
+        $this->_cap_restriction_generators[EEM_Base::caps_edit] = new EE_Restriction_Generator_Reg_Form('QSG_system');
51
+        $this->_cap_restriction_generators[EEM_Base::caps_delete] = new EE_Restriction_Generator_Reg_Form('QSG_system');
52 52
         parent::__construct($timezone);
53 53
     }
54 54
     /**
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
     public function get_latest_question_group_order()
60 60
     {
61 61
         $columns_to_select = array(
62
-            'max_order' => array("MAX(QSG_order)","%d")
62
+            'max_order' => array("MAX(QSG_order)", "%d")
63 63
             );
64 64
         $max = $this->_get_all_wpdb_results(array(), ARRAY_A, $columns_to_select);
65 65
         return $max[0]['max_order'];
Please login to merge, or discard this patch.
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -11,58 +11,58 @@
 block discarded – undo
11 11
  */
12 12
 class EEM_Question_Group extends EEM_Soft_Delete_Base
13 13
 {
14
-    const system_personal = 1;
15
-    const system_address = 2;
16
-    // private instance of the Attendee object
17
-    protected static $_instance = null;
14
+	const system_personal = 1;
15
+	const system_address = 2;
16
+	// private instance of the Attendee object
17
+	protected static $_instance = null;
18 18
 
19 19
 
20
-    protected function __construct($timezone = null)
21
-    {
22
-        $this->singular_item = esc_html__('Question Group', 'event_espresso');
23
-        $this->plural_item = esc_html__('Question Groups', 'event_espresso');
20
+	protected function __construct($timezone = null)
21
+	{
22
+		$this->singular_item = esc_html__('Question Group', 'event_espresso');
23
+		$this->plural_item = esc_html__('Question Groups', 'event_espresso');
24 24
 
25
-        $this->_tables = array(
26
-            'Question_Group' => new EE_Primary_Table('esp_question_group', 'QSG_ID')
27
-        );
28
-        $this->_fields = array(
29
-            'Question_Group' => array(
30
-                'QSG_ID' => new EE_Primary_Key_Int_Field('QSG_ID', esc_html__('Question Group ID', 'event_espresso')),
31
-                'QSG_name' => new EE_Plain_Text_Field('QSG_name', esc_html__('Question Group Name', 'event_espresso'), false, ''),
32
-                'QSG_identifier' => new EE_Plain_Text_Field('QSG_identifier', esc_html__('Text ID for question Group', 'event_espresso'), false, ''),
33
-                'QSG_desc' => new EE_Post_Content_Field('QSG_desc', esc_html__('Description of Question Group', 'event_espresso'), true, ''),
34
-                'QSG_order' => new EE_Integer_Field('QSG_order', esc_html__('Order in which to show the question group', 'event_espresso'), true, 0),
35
-                'QSG_show_group_name' => new EE_Boolean_Field('QSG_show_group_name', esc_html__('Flag indicating whether to show the group\'s name on the registration page', 'event_espresso'), false, true),
36
-                'QSG_show_group_desc' => new EE_Boolean_Field('QSG_show_group_desc', esc_html__('Flag indicating whether to show the group\s description on the registration page', 'event_espresso'), false, false),
37
-                'QSG_wp_user' => new EE_WP_User_Field('QSG_wp_user', esc_html__('Question Group Creator ID', 'event_espresso'), false),
38
-                'QSG_system' => new EE_Integer_Field('QSG_system', esc_html__('Indicate IF this is a system group and if it is what system group it corresponds to.', 'event_espresso'), false, 0),
39
-                'QSG_deleted' => new EE_Trashed_Flag_Field('QSG_deleted', esc_html__('Flag indicating this question group was deleted', 'event_espresso'), false, false)
40
-            )
41
-        );
42
-        $this->_model_relations = array(
43
-            'Question' => new EE_HABTM_Relation('Question_Group_Question'),
44
-            'Event' => new EE_HABTM_Relation('Event_Question_Group'),
45
-            'Event_Question_Group' => new EE_Has_Many_Relation(),
46
-            'WP_User' => new EE_Belongs_To_Relation(),
47
-        );
48
-        // this model is generally available for reading
49
-        $this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
50
-        $this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
51
-        $this->_cap_restriction_generators[ EEM_Base::caps_edit ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
52
-        $this->_cap_restriction_generators[ EEM_Base::caps_delete ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
53
-        parent::__construct($timezone);
54
-    }
55
-    /**
56
-     * searches the db for the question group with the latest question order and returns that value.
57
-     * @access public
58
-     * @return int
59
-     */
60
-    public function get_latest_question_group_order()
61
-    {
62
-        $columns_to_select = array(
63
-            'max_order' => array("MAX(QSG_order)","%d")
64
-            );
65
-        $max = $this->_get_all_wpdb_results(array(), ARRAY_A, $columns_to_select);
66
-        return $max[0]['max_order'];
67
-    }
25
+		$this->_tables = array(
26
+			'Question_Group' => new EE_Primary_Table('esp_question_group', 'QSG_ID')
27
+		);
28
+		$this->_fields = array(
29
+			'Question_Group' => array(
30
+				'QSG_ID' => new EE_Primary_Key_Int_Field('QSG_ID', esc_html__('Question Group ID', 'event_espresso')),
31
+				'QSG_name' => new EE_Plain_Text_Field('QSG_name', esc_html__('Question Group Name', 'event_espresso'), false, ''),
32
+				'QSG_identifier' => new EE_Plain_Text_Field('QSG_identifier', esc_html__('Text ID for question Group', 'event_espresso'), false, ''),
33
+				'QSG_desc' => new EE_Post_Content_Field('QSG_desc', esc_html__('Description of Question Group', 'event_espresso'), true, ''),
34
+				'QSG_order' => new EE_Integer_Field('QSG_order', esc_html__('Order in which to show the question group', 'event_espresso'), true, 0),
35
+				'QSG_show_group_name' => new EE_Boolean_Field('QSG_show_group_name', esc_html__('Flag indicating whether to show the group\'s name on the registration page', 'event_espresso'), false, true),
36
+				'QSG_show_group_desc' => new EE_Boolean_Field('QSG_show_group_desc', esc_html__('Flag indicating whether to show the group\s description on the registration page', 'event_espresso'), false, false),
37
+				'QSG_wp_user' => new EE_WP_User_Field('QSG_wp_user', esc_html__('Question Group Creator ID', 'event_espresso'), false),
38
+				'QSG_system' => new EE_Integer_Field('QSG_system', esc_html__('Indicate IF this is a system group and if it is what system group it corresponds to.', 'event_espresso'), false, 0),
39
+				'QSG_deleted' => new EE_Trashed_Flag_Field('QSG_deleted', esc_html__('Flag indicating this question group was deleted', 'event_espresso'), false, false)
40
+			)
41
+		);
42
+		$this->_model_relations = array(
43
+			'Question' => new EE_HABTM_Relation('Question_Group_Question'),
44
+			'Event' => new EE_HABTM_Relation('Event_Question_Group'),
45
+			'Event_Question_Group' => new EE_Has_Many_Relation(),
46
+			'WP_User' => new EE_Belongs_To_Relation(),
47
+		);
48
+		// this model is generally available for reading
49
+		$this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
50
+		$this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
51
+		$this->_cap_restriction_generators[ EEM_Base::caps_edit ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
52
+		$this->_cap_restriction_generators[ EEM_Base::caps_delete ] = new EE_Restriction_Generator_Reg_Form('QSG_system');
53
+		parent::__construct($timezone);
54
+	}
55
+	/**
56
+	 * searches the db for the question group with the latest question order and returns that value.
57
+	 * @access public
58
+	 * @return int
59
+	 */
60
+	public function get_latest_question_group_order()
61
+	{
62
+		$columns_to_select = array(
63
+			'max_order' => array("MAX(QSG_order)","%d")
64
+			);
65
+		$max = $this->_get_all_wpdb_results(array(), ARRAY_A, $columns_to_select);
66
+		return $max[0]['max_order'];
67
+	}
68 68
 }
Please login to merge, or discard this patch.
core/db_models/EEM_Attendee.model.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -284,8 +284,8 @@  discard block
 block discarded – undo
284 284
      */
285 285
     public function get_attendee_field_for_system_question($system_question_string)
286 286
     {
287
-        return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
288
-            ? $this->_system_question_to_attendee_field_name[ $system_question_string ]
287
+        return isset($this->_system_question_to_attendee_field_name[$system_question_string])
288
+            ? $this->_system_question_to_attendee_field_name[$system_question_string]
289 289
             : null;
290 290
     }
291 291
 
@@ -353,7 +353,7 @@  discard block
 block discarded – undo
353 353
             return false;
354 354
         }
355 355
         $attendee = $this->get_all(array($where_cols_n_values));
356
-        if (! empty($attendee)) {
356
+        if ( ! empty($attendee)) {
357 357
             return array_shift($attendee);
358 358
         }
359 359
         return false;
Please login to merge, or discard this patch.
Indentation   +419 added lines, -419 removed lines patch added patch discarded remove patch
@@ -13,432 +13,432 @@
 block discarded – undo
13 13
 class EEM_Attendee extends EEM_CPT_Base
14 14
 {
15 15
 
16
-    // private instance of the Attendee object
17
-    protected static $_instance = null;
16
+	// private instance of the Attendee object
17
+	protected static $_instance = null;
18 18
 
19
-    /**
20
-     * QST_system for questions are strings not integers now,
21
-     * so these constants are deprecated.
22
-     * Please instead use the EEM_Attendee::system_question_* constants
23
-     *
24
-     * @deprecated
25
-     */
26
-    const fname_question_id = 1;
19
+	/**
20
+	 * QST_system for questions are strings not integers now,
21
+	 * so these constants are deprecated.
22
+	 * Please instead use the EEM_Attendee::system_question_* constants
23
+	 *
24
+	 * @deprecated
25
+	 */
26
+	const fname_question_id = 1;
27 27
 
28
-    /**
29
-     * @deprecated
30
-     */
31
-    const lname_question_id = 2;
28
+	/**
29
+	 * @deprecated
30
+	 */
31
+	const lname_question_id = 2;
32 32
 
33 33
 
34
-    /**
35
-     * @deprecated
36
-     */
37
-    const email_question_id = 3;
34
+	/**
35
+	 * @deprecated
36
+	 */
37
+	const email_question_id = 3;
38 38
 
39 39
 
40
-    /**
41
-     * @deprecated
42
-     */
43
-    const address_question_id = 4;
40
+	/**
41
+	 * @deprecated
42
+	 */
43
+	const address_question_id = 4;
44 44
 
45 45
 
46
-    /**
47
-     * @deprecated
48
-     */
49
-    const address2_question_id = 5;
46
+	/**
47
+	 * @deprecated
48
+	 */
49
+	const address2_question_id = 5;
50 50
 
51
-
52
-    /**
53
-     * @deprecated
54
-     */
55
-    const city_question_id = 6;
56
-
57
-
58
-    /**
59
-     * @deprecated
60
-     */
61
-    const state_question_id = 7;
62
-
63
-
64
-    /**
65
-     * @deprecated
66
-     */
67
-    const country_question_id = 8;
68
-
69
-
70
-    /**
71
-     * @deprecated
72
-     */
73
-    const zip_question_id = 9;
74
-
75
-
76
-    /**
77
-     * @deprecated
78
-     */
79
-    const phone_question_id = 10;
80
-
81
-    /**
82
-     * When looking for questions that correspond to attendee fields,
83
-     * look for the question with this QST_system value.
84
-     * These replace the old constants like EEM_Attendee::*_question_id
85
-     */
86
-    const system_question_fname = 'fname';
87
-
88
-    const system_question_lname = 'lname';
89
-
90
-    const system_question_email = 'email';
91
-
92
-    const system_question_email_confirm = 'email_confirm';
93
-
94
-    const system_question_address = 'address';
95
-
96
-    const system_question_address2 = 'address2';
97
-
98
-    const system_question_city = 'city';
99
-
100
-    const system_question_state = 'state';
101
-
102
-    const system_question_country = 'country';
103
-
104
-    const system_question_zip = 'zip';
105
-
106
-    const system_question_phone = 'phone';
107
-
108
-    /**
109
-     * Keys are all the EEM_Attendee::system_question_* constants, which are
110
-     * also all the values of QST_system in the questions table, and values
111
-     * are their corresponding Attendee field names
112
-     *
113
-     * @var array
114
-     */
115
-    protected $_system_question_to_attendee_field_name = array(
116
-        EEM_Attendee::system_question_fname    => 'ATT_fname',
117
-        EEM_Attendee::system_question_lname    => 'ATT_lname',
118
-        EEM_Attendee::system_question_email    => 'ATT_email',
119
-        EEM_Attendee::system_question_address  => 'ATT_address',
120
-        EEM_Attendee::system_question_address2 => 'ATT_address2',
121
-        EEM_Attendee::system_question_city     => 'ATT_city',
122
-        EEM_Attendee::system_question_state    => 'STA_ID',
123
-        EEM_Attendee::system_question_country  => 'CNT_ISO',
124
-        EEM_Attendee::system_question_zip      => 'ATT_zip',
125
-        EEM_Attendee::system_question_phone    => 'ATT_phone',
126
-    );
127
-
128
-
129
-
130
-    /**
131
-     * EEM_Attendee constructor.
132
-     *
133
-     * @param null              $timezone
134
-     * @param ModelFieldFactory $model_field_factory
135
-     * @throws EE_Error
136
-     * @throws InvalidArgumentException
137
-     */
138
-    protected function __construct($timezone = null, ModelFieldFactory $model_field_factory)
139
-    {
140
-        $this->singular_item = esc_html__('Attendee', 'event_espresso');
141
-        $this->plural_item = esc_html__('Attendees', 'event_espresso');
142
-        $this->_tables = array(
143
-            'Attendee_CPT'  => new EE_Primary_Table('posts', 'ID'),
144
-            'Attendee_Meta' => new EE_Secondary_Table(
145
-                'esp_attendee_meta',
146
-                'ATTM_ID',
147
-                'ATT_ID'
148
-            ),
149
-        );
150
-        $this->_fields = array(
151
-            'Attendee_CPT'  => array(
152
-                'ATT_ID'        => $model_field_factory->createPrimaryKeyIntField(
153
-                    'ID',
154
-                    esc_html__('Attendee ID', 'event_espresso')
155
-                ),
156
-                'ATT_full_name' => $model_field_factory->createPlainTextField(
157
-                    'post_title',
158
-                    esc_html__('Attendee Full Name', 'event_espresso'),
159
-                    false,
160
-                    esc_html__('Unknown', 'event_espresso')
161
-                ),
162
-                'ATT_bio'       => $model_field_factory->createPostContentField(
163
-                    'post_content',
164
-                    esc_html__('Attendee Biography', 'event_espresso'),
165
-                    false,
166
-                    esc_html__('No Biography Provided', 'event_espresso')
167
-                ),
168
-                'ATT_slug'      => $model_field_factory->createSlugField(
169
-                    'post_name',
170
-                    esc_html__('Attendee URL Slug', 'event_espresso')
171
-                ),
172
-                'ATT_created'   => $model_field_factory->createDatetimeField(
173
-                    'post_date',
174
-                    esc_html__('Time Attendee Created', 'event_espresso')
175
-                ),
176
-                'ATT_short_bio' => $model_field_factory->createSimpleHtmlField(
177
-                    'post_excerpt',
178
-                    esc_html__('Attendee Short Biography', 'event_espresso'),
179
-                    true,
180
-                    esc_html__('No Biography Provided', 'event_espresso')
181
-                ),
182
-                'ATT_modified'  => $model_field_factory->createDatetimeField(
183
-                    'post_modified',
184
-                    esc_html__('Time Attendee Last Modified', 'event_espresso')
185
-                ),
186
-                'ATT_author'    => $model_field_factory->createWpUserField(
187
-                    'post_author',
188
-                    esc_html__('Creator ID of the first Event attended', 'event_espresso'),
189
-                    false
190
-                ),
191
-                'ATT_parent'    => $model_field_factory->createDbOnlyIntField(
192
-                    'post_parent',
193
-                    esc_html__('Parent Attendee (unused)', 'event_espresso'),
194
-                    false,
195
-                    0
196
-                ),
197
-                'post_type'     => $model_field_factory->createWpPostTypeField('espresso_attendees'),
198
-                'status'        => $model_field_factory->createWpPostStatusField(
199
-                    'post_status',
200
-                    esc_html__('Attendee Status', 'event_espresso'),
201
-                    false,
202
-                    'publish'
203
-                ),
204
-                'password' => new EE_Password_Field(
205
-                    'post_password',
206
-                    esc_html__('Password', 'event_espresso'),
207
-                    false,
208
-                    '',
209
-                    array(
210
-                        'ATT_bio',
211
-                        'ATT_short_bio',
212
-                        'ATT_address',
213
-                        'ATT_address2',
214
-                        'ATT_city',
215
-                        'STA_ID',
216
-                        'CNT_ISO',
217
-                        'ATT_zip',
218
-                        'ATT_email',
219
-                        'ATT_phone'
220
-                    )
221
-                )
222
-            ),
223
-            'Attendee_Meta' => array(
224
-                'ATTM_ID'      => $model_field_factory->createDbOnlyIntField(
225
-                    'ATTM_ID',
226
-                    esc_html__('Attendee Meta Row ID', 'event_espresso'),
227
-                    false
228
-                ),
229
-                'ATT_ID_fk'    => $model_field_factory->createDbOnlyIntField(
230
-                    'ATT_ID',
231
-                    esc_html__('Foreign Key to Attendee in Post Table', 'event_espresso'),
232
-                    false
233
-                ),
234
-                'ATT_fname'    => $model_field_factory->createPlainTextField(
235
-                    'ATT_fname',
236
-                    esc_html__('First Name', 'event_espresso')
237
-                ),
238
-                'ATT_lname'    => $model_field_factory->createPlainTextField(
239
-                    'ATT_lname',
240
-                    esc_html__('Last Name', 'event_espresso')
241
-                ),
242
-                'ATT_address'  => $model_field_factory->createPlainTextField(
243
-                    'ATT_address',
244
-                    esc_html__('Address Part 1', 'event_espresso')
245
-                ),
246
-                'ATT_address2' => $model_field_factory->createPlainTextField(
247
-                    'ATT_address2',
248
-                    esc_html__('Address Part 2', 'event_espresso')
249
-                ),
250
-                'ATT_city'     => $model_field_factory->createPlainTextField(
251
-                    'ATT_city',
252
-                    esc_html__('City', 'event_espresso')
253
-                ),
254
-                'STA_ID'       => $model_field_factory->createForeignKeyIntField(
255
-                    'STA_ID',
256
-                    esc_html__('State', 'event_espresso'),
257
-                    true,
258
-                    0,
259
-                    'State'
260
-                ),
261
-                'CNT_ISO'      => $model_field_factory->createForeignKeyStringField(
262
-                    'CNT_ISO',
263
-                    esc_html__('Country', 'event_espresso'),
264
-                    true,
265
-                    '',
266
-                    'Country'
267
-                ),
268
-                'ATT_zip'      => $model_field_factory->createPlainTextField(
269
-                    'ATT_zip',
270
-                    esc_html__('ZIP/Postal Code', 'event_espresso')
271
-                ),
272
-                'ATT_email'    => $model_field_factory->createEmailField(
273
-                    'ATT_email',
274
-                    esc_html__('Email Address', 'event_espresso')
275
-                ),
276
-                'ATT_phone'    => $model_field_factory->createPlainTextField(
277
-                    'ATT_phone',
278
-                    esc_html__('Phone', 'event_espresso')
279
-                ),
280
-            ),
281
-        );
282
-        $this->_model_relations = array(
283
-            'Registration'      => new EE_Has_Many_Relation(),
284
-            'State'             => new EE_Belongs_To_Relation(),
285
-            'Country'           => new EE_Belongs_To_Relation(),
286
-            'Event'             => new EE_HABTM_Relation('Registration', false),
287
-            'WP_User'           => new EE_Belongs_To_Relation(),
288
-            'Message'           => new EE_Has_Many_Any_Relation(false),
289
-            // allow deletion of attendees even if they have messages in the queue for them.
290
-            'Term_Relationship' => new EE_Has_Many_Relation(),
291
-            'Term_Taxonomy'     => new EE_HABTM_Relation('Term_Relationship'),
292
-        );
293
-        $this->_caps_slug = 'contacts';
294
-        $this->model_chain_to_password = '';
295
-        parent::__construct($timezone);
296
-    }
297
-
298
-
299
-
300
-    /**
301
-     * Gets the name of the field on the attendee model corresponding to the system question string
302
-     * which should be one of the keys from EEM_Attendee::_system_question_to_attendee_field_name
303
-     *
304
-     * @param string $system_question_string
305
-     * @return string|null if not found
306
-     */
307
-    public function get_attendee_field_for_system_question($system_question_string)
308
-    {
309
-        return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
310
-            ? $this->_system_question_to_attendee_field_name[ $system_question_string ]
311
-            : null;
312
-    }
313
-
314
-
315
-
316
-    /**
317
-     * Gets mapping from esp_question.QST_system values to their corresponding attendee field names
318
-     *
319
-     * @return array
320
-     */
321
-    public function system_question_to_attendee_field_mapping()
322
-    {
323
-        return $this->_system_question_to_attendee_field_name;
324
-    }
325
-
326
-
327
-
328
-    /**
329
-     * Gets all the attendees for a transaction (by using the esp_registration as a join table)
330
-     *
331
-     * @param EE_Transaction /int $transaction_id_or_obj EE_Transaction or its ID
332
-     * @return EE_Attendee[]|EE_Base_Class[]
333
-     * @throws EE_Error
334
-     */
335
-    public function get_attendees_for_transaction($transaction_id_or_obj)
336
-    {
337
-        return $this->get_all(
338
-            array(
339
-                array(
340
-                    'Registration.Transaction.TXN_ID' => $transaction_id_or_obj instanceof EE_Transaction
341
-                        ? $transaction_id_or_obj->ID()
342
-                        : $transaction_id_or_obj,
343
-                ),
344
-            )
345
-        );
346
-    }
347
-
348
-
349
-
350
-    /**
351
-     * retrieve  a single attendee from db via their ID
352
-     *
353
-     * @param $ATT_ID
354
-     * @return mixed array on success, FALSE on fail
355
-     * @deprecated
356
-     */
357
-    public function get_attendee_by_ID($ATT_ID = false)
358
-    {
359
-        // retrieve a particular EE_Attendee
360
-        return $this->get_one_by_ID($ATT_ID);
361
-    }
362
-
363
-
364
-
365
-    /**
366
-     * retrieve  a single attendee from db via their ID
367
-     *
368
-     * @param array $where_cols_n_values
369
-     * @return mixed array on success, FALSE on fail
370
-     * @throws EE_Error
371
-     */
372
-    public function get_attendee($where_cols_n_values = array())
373
-    {
374
-        if (empty($where_cols_n_values)) {
375
-            return false;
376
-        }
377
-        $attendee = $this->get_all(array($where_cols_n_values));
378
-        if (! empty($attendee)) {
379
-            return array_shift($attendee);
380
-        }
381
-        return false;
382
-    }
383
-
384
-
385
-
386
-    /**
387
-     * Search for an existing Attendee record in the DB
388
-     *
389
-     * @param array $where_cols_n_values
390
-     * @return bool|mixed
391
-     * @throws EE_Error
392
-     */
393
-    public function find_existing_attendee($where_cols_n_values = null)
394
-    {
395
-        // search by combo of first and last names plus the email address
396
-        $attendee_data_keys = array(
397
-            'ATT_fname' => $this->_ATT_fname,
398
-            'ATT_lname' => $this->_ATT_lname,
399
-            'ATT_email' => $this->_ATT_email,
400
-        );
401
-        // no search params means attendee object already exists.
402
-        $where_cols_n_values = is_array($where_cols_n_values) && ! empty($where_cols_n_values)
403
-            ? $where_cols_n_values
404
-            : $attendee_data_keys;
405
-        $valid_data = true;
406
-        // check for required values
407
-        $valid_data = isset($where_cols_n_values['ATT_fname']) && ! empty($where_cols_n_values['ATT_fname'])
408
-            ? $valid_data
409
-            : false;
410
-        $valid_data = isset($where_cols_n_values['ATT_lname']) && ! empty($where_cols_n_values['ATT_lname'])
411
-            ? $valid_data
412
-            : false;
413
-        $valid_data = isset($where_cols_n_values['ATT_email']) && ! empty($where_cols_n_values['ATT_email'])
414
-            ? $valid_data
415
-            : false;
416
-        if ($valid_data) {
417
-            $attendee = $this->get_attendee($where_cols_n_values);
418
-            if ($attendee instanceof EE_Attendee) {
419
-                return $attendee;
420
-            }
421
-        }
422
-        return false;
423
-    }
424
-
425
-
426
-
427
-    /**
428
-     * Takes an incoming array of EE_Registration ids
429
-     * and sends back a list of corresponding non duplicate EE_Attendee objects.
430
-     *
431
-     * @since  4.3.0
432
-     * @param  array $ids array of EE_Registration ids
433
-     * @return EE_Attendee[]|EE_Base_Class[]
434
-     * @throws EE_Error
435
-     */
436
-    public function get_array_of_contacts_from_reg_ids($ids)
437
-    {
438
-        $ids = (array) $ids;
439
-        $_where = array(
440
-            'Registration.REG_ID' => array('in', $ids),
441
-        );
442
-        return $this->get_all(array($_where));
443
-    }
51
+
52
+	/**
53
+	 * @deprecated
54
+	 */
55
+	const city_question_id = 6;
56
+
57
+
58
+	/**
59
+	 * @deprecated
60
+	 */
61
+	const state_question_id = 7;
62
+
63
+
64
+	/**
65
+	 * @deprecated
66
+	 */
67
+	const country_question_id = 8;
68
+
69
+
70
+	/**
71
+	 * @deprecated
72
+	 */
73
+	const zip_question_id = 9;
74
+
75
+
76
+	/**
77
+	 * @deprecated
78
+	 */
79
+	const phone_question_id = 10;
80
+
81
+	/**
82
+	 * When looking for questions that correspond to attendee fields,
83
+	 * look for the question with this QST_system value.
84
+	 * These replace the old constants like EEM_Attendee::*_question_id
85
+	 */
86
+	const system_question_fname = 'fname';
87
+
88
+	const system_question_lname = 'lname';
89
+
90
+	const system_question_email = 'email';
91
+
92
+	const system_question_email_confirm = 'email_confirm';
93
+
94
+	const system_question_address = 'address';
95
+
96
+	const system_question_address2 = 'address2';
97
+
98
+	const system_question_city = 'city';
99
+
100
+	const system_question_state = 'state';
101
+
102
+	const system_question_country = 'country';
103
+
104
+	const system_question_zip = 'zip';
105
+
106
+	const system_question_phone = 'phone';
107
+
108
+	/**
109
+	 * Keys are all the EEM_Attendee::system_question_* constants, which are
110
+	 * also all the values of QST_system in the questions table, and values
111
+	 * are their corresponding Attendee field names
112
+	 *
113
+	 * @var array
114
+	 */
115
+	protected $_system_question_to_attendee_field_name = array(
116
+		EEM_Attendee::system_question_fname    => 'ATT_fname',
117
+		EEM_Attendee::system_question_lname    => 'ATT_lname',
118
+		EEM_Attendee::system_question_email    => 'ATT_email',
119
+		EEM_Attendee::system_question_address  => 'ATT_address',
120
+		EEM_Attendee::system_question_address2 => 'ATT_address2',
121
+		EEM_Attendee::system_question_city     => 'ATT_city',
122
+		EEM_Attendee::system_question_state    => 'STA_ID',
123
+		EEM_Attendee::system_question_country  => 'CNT_ISO',
124
+		EEM_Attendee::system_question_zip      => 'ATT_zip',
125
+		EEM_Attendee::system_question_phone    => 'ATT_phone',
126
+	);
127
+
128
+
129
+
130
+	/**
131
+	 * EEM_Attendee constructor.
132
+	 *
133
+	 * @param null              $timezone
134
+	 * @param ModelFieldFactory $model_field_factory
135
+	 * @throws EE_Error
136
+	 * @throws InvalidArgumentException
137
+	 */
138
+	protected function __construct($timezone = null, ModelFieldFactory $model_field_factory)
139
+	{
140
+		$this->singular_item = esc_html__('Attendee', 'event_espresso');
141
+		$this->plural_item = esc_html__('Attendees', 'event_espresso');
142
+		$this->_tables = array(
143
+			'Attendee_CPT'  => new EE_Primary_Table('posts', 'ID'),
144
+			'Attendee_Meta' => new EE_Secondary_Table(
145
+				'esp_attendee_meta',
146
+				'ATTM_ID',
147
+				'ATT_ID'
148
+			),
149
+		);
150
+		$this->_fields = array(
151
+			'Attendee_CPT'  => array(
152
+				'ATT_ID'        => $model_field_factory->createPrimaryKeyIntField(
153
+					'ID',
154
+					esc_html__('Attendee ID', 'event_espresso')
155
+				),
156
+				'ATT_full_name' => $model_field_factory->createPlainTextField(
157
+					'post_title',
158
+					esc_html__('Attendee Full Name', 'event_espresso'),
159
+					false,
160
+					esc_html__('Unknown', 'event_espresso')
161
+				),
162
+				'ATT_bio'       => $model_field_factory->createPostContentField(
163
+					'post_content',
164
+					esc_html__('Attendee Biography', 'event_espresso'),
165
+					false,
166
+					esc_html__('No Biography Provided', 'event_espresso')
167
+				),
168
+				'ATT_slug'      => $model_field_factory->createSlugField(
169
+					'post_name',
170
+					esc_html__('Attendee URL Slug', 'event_espresso')
171
+				),
172
+				'ATT_created'   => $model_field_factory->createDatetimeField(
173
+					'post_date',
174
+					esc_html__('Time Attendee Created', 'event_espresso')
175
+				),
176
+				'ATT_short_bio' => $model_field_factory->createSimpleHtmlField(
177
+					'post_excerpt',
178
+					esc_html__('Attendee Short Biography', 'event_espresso'),
179
+					true,
180
+					esc_html__('No Biography Provided', 'event_espresso')
181
+				),
182
+				'ATT_modified'  => $model_field_factory->createDatetimeField(
183
+					'post_modified',
184
+					esc_html__('Time Attendee Last Modified', 'event_espresso')
185
+				),
186
+				'ATT_author'    => $model_field_factory->createWpUserField(
187
+					'post_author',
188
+					esc_html__('Creator ID of the first Event attended', 'event_espresso'),
189
+					false
190
+				),
191
+				'ATT_parent'    => $model_field_factory->createDbOnlyIntField(
192
+					'post_parent',
193
+					esc_html__('Parent Attendee (unused)', 'event_espresso'),
194
+					false,
195
+					0
196
+				),
197
+				'post_type'     => $model_field_factory->createWpPostTypeField('espresso_attendees'),
198
+				'status'        => $model_field_factory->createWpPostStatusField(
199
+					'post_status',
200
+					esc_html__('Attendee Status', 'event_espresso'),
201
+					false,
202
+					'publish'
203
+				),
204
+				'password' => new EE_Password_Field(
205
+					'post_password',
206
+					esc_html__('Password', 'event_espresso'),
207
+					false,
208
+					'',
209
+					array(
210
+						'ATT_bio',
211
+						'ATT_short_bio',
212
+						'ATT_address',
213
+						'ATT_address2',
214
+						'ATT_city',
215
+						'STA_ID',
216
+						'CNT_ISO',
217
+						'ATT_zip',
218
+						'ATT_email',
219
+						'ATT_phone'
220
+					)
221
+				)
222
+			),
223
+			'Attendee_Meta' => array(
224
+				'ATTM_ID'      => $model_field_factory->createDbOnlyIntField(
225
+					'ATTM_ID',
226
+					esc_html__('Attendee Meta Row ID', 'event_espresso'),
227
+					false
228
+				),
229
+				'ATT_ID_fk'    => $model_field_factory->createDbOnlyIntField(
230
+					'ATT_ID',
231
+					esc_html__('Foreign Key to Attendee in Post Table', 'event_espresso'),
232
+					false
233
+				),
234
+				'ATT_fname'    => $model_field_factory->createPlainTextField(
235
+					'ATT_fname',
236
+					esc_html__('First Name', 'event_espresso')
237
+				),
238
+				'ATT_lname'    => $model_field_factory->createPlainTextField(
239
+					'ATT_lname',
240
+					esc_html__('Last Name', 'event_espresso')
241
+				),
242
+				'ATT_address'  => $model_field_factory->createPlainTextField(
243
+					'ATT_address',
244
+					esc_html__('Address Part 1', 'event_espresso')
245
+				),
246
+				'ATT_address2' => $model_field_factory->createPlainTextField(
247
+					'ATT_address2',
248
+					esc_html__('Address Part 2', 'event_espresso')
249
+				),
250
+				'ATT_city'     => $model_field_factory->createPlainTextField(
251
+					'ATT_city',
252
+					esc_html__('City', 'event_espresso')
253
+				),
254
+				'STA_ID'       => $model_field_factory->createForeignKeyIntField(
255
+					'STA_ID',
256
+					esc_html__('State', 'event_espresso'),
257
+					true,
258
+					0,
259
+					'State'
260
+				),
261
+				'CNT_ISO'      => $model_field_factory->createForeignKeyStringField(
262
+					'CNT_ISO',
263
+					esc_html__('Country', 'event_espresso'),
264
+					true,
265
+					'',
266
+					'Country'
267
+				),
268
+				'ATT_zip'      => $model_field_factory->createPlainTextField(
269
+					'ATT_zip',
270
+					esc_html__('ZIP/Postal Code', 'event_espresso')
271
+				),
272
+				'ATT_email'    => $model_field_factory->createEmailField(
273
+					'ATT_email',
274
+					esc_html__('Email Address', 'event_espresso')
275
+				),
276
+				'ATT_phone'    => $model_field_factory->createPlainTextField(
277
+					'ATT_phone',
278
+					esc_html__('Phone', 'event_espresso')
279
+				),
280
+			),
281
+		);
282
+		$this->_model_relations = array(
283
+			'Registration'      => new EE_Has_Many_Relation(),
284
+			'State'             => new EE_Belongs_To_Relation(),
285
+			'Country'           => new EE_Belongs_To_Relation(),
286
+			'Event'             => new EE_HABTM_Relation('Registration', false),
287
+			'WP_User'           => new EE_Belongs_To_Relation(),
288
+			'Message'           => new EE_Has_Many_Any_Relation(false),
289
+			// allow deletion of attendees even if they have messages in the queue for them.
290
+			'Term_Relationship' => new EE_Has_Many_Relation(),
291
+			'Term_Taxonomy'     => new EE_HABTM_Relation('Term_Relationship'),
292
+		);
293
+		$this->_caps_slug = 'contacts';
294
+		$this->model_chain_to_password = '';
295
+		parent::__construct($timezone);
296
+	}
297
+
298
+
299
+
300
+	/**
301
+	 * Gets the name of the field on the attendee model corresponding to the system question string
302
+	 * which should be one of the keys from EEM_Attendee::_system_question_to_attendee_field_name
303
+	 *
304
+	 * @param string $system_question_string
305
+	 * @return string|null if not found
306
+	 */
307
+	public function get_attendee_field_for_system_question($system_question_string)
308
+	{
309
+		return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
310
+			? $this->_system_question_to_attendee_field_name[ $system_question_string ]
311
+			: null;
312
+	}
313
+
314
+
315
+
316
+	/**
317
+	 * Gets mapping from esp_question.QST_system values to their corresponding attendee field names
318
+	 *
319
+	 * @return array
320
+	 */
321
+	public function system_question_to_attendee_field_mapping()
322
+	{
323
+		return $this->_system_question_to_attendee_field_name;
324
+	}
325
+
326
+
327
+
328
+	/**
329
+	 * Gets all the attendees for a transaction (by using the esp_registration as a join table)
330
+	 *
331
+	 * @param EE_Transaction /int $transaction_id_or_obj EE_Transaction or its ID
332
+	 * @return EE_Attendee[]|EE_Base_Class[]
333
+	 * @throws EE_Error
334
+	 */
335
+	public function get_attendees_for_transaction($transaction_id_or_obj)
336
+	{
337
+		return $this->get_all(
338
+			array(
339
+				array(
340
+					'Registration.Transaction.TXN_ID' => $transaction_id_or_obj instanceof EE_Transaction
341
+						? $transaction_id_or_obj->ID()
342
+						: $transaction_id_or_obj,
343
+				),
344
+			)
345
+		);
346
+	}
347
+
348
+
349
+
350
+	/**
351
+	 * retrieve  a single attendee from db via their ID
352
+	 *
353
+	 * @param $ATT_ID
354
+	 * @return mixed array on success, FALSE on fail
355
+	 * @deprecated
356
+	 */
357
+	public function get_attendee_by_ID($ATT_ID = false)
358
+	{
359
+		// retrieve a particular EE_Attendee
360
+		return $this->get_one_by_ID($ATT_ID);
361
+	}
362
+
363
+
364
+
365
+	/**
366
+	 * retrieve  a single attendee from db via their ID
367
+	 *
368
+	 * @param array $where_cols_n_values
369
+	 * @return mixed array on success, FALSE on fail
370
+	 * @throws EE_Error
371
+	 */
372
+	public function get_attendee($where_cols_n_values = array())
373
+	{
374
+		if (empty($where_cols_n_values)) {
375
+			return false;
376
+		}
377
+		$attendee = $this->get_all(array($where_cols_n_values));
378
+		if (! empty($attendee)) {
379
+			return array_shift($attendee);
380
+		}
381
+		return false;
382
+	}
383
+
384
+
385
+
386
+	/**
387
+	 * Search for an existing Attendee record in the DB
388
+	 *
389
+	 * @param array $where_cols_n_values
390
+	 * @return bool|mixed
391
+	 * @throws EE_Error
392
+	 */
393
+	public function find_existing_attendee($where_cols_n_values = null)
394
+	{
395
+		// search by combo of first and last names plus the email address
396
+		$attendee_data_keys = array(
397
+			'ATT_fname' => $this->_ATT_fname,
398
+			'ATT_lname' => $this->_ATT_lname,
399
+			'ATT_email' => $this->_ATT_email,
400
+		);
401
+		// no search params means attendee object already exists.
402
+		$where_cols_n_values = is_array($where_cols_n_values) && ! empty($where_cols_n_values)
403
+			? $where_cols_n_values
404
+			: $attendee_data_keys;
405
+		$valid_data = true;
406
+		// check for required values
407
+		$valid_data = isset($where_cols_n_values['ATT_fname']) && ! empty($where_cols_n_values['ATT_fname'])
408
+			? $valid_data
409
+			: false;
410
+		$valid_data = isset($where_cols_n_values['ATT_lname']) && ! empty($where_cols_n_values['ATT_lname'])
411
+			? $valid_data
412
+			: false;
413
+		$valid_data = isset($where_cols_n_values['ATT_email']) && ! empty($where_cols_n_values['ATT_email'])
414
+			? $valid_data
415
+			: false;
416
+		if ($valid_data) {
417
+			$attendee = $this->get_attendee($where_cols_n_values);
418
+			if ($attendee instanceof EE_Attendee) {
419
+				return $attendee;
420
+			}
421
+		}
422
+		return false;
423
+	}
424
+
425
+
426
+
427
+	/**
428
+	 * Takes an incoming array of EE_Registration ids
429
+	 * and sends back a list of corresponding non duplicate EE_Attendee objects.
430
+	 *
431
+	 * @since  4.3.0
432
+	 * @param  array $ids array of EE_Registration ids
433
+	 * @return EE_Attendee[]|EE_Base_Class[]
434
+	 * @throws EE_Error
435
+	 */
436
+	public function get_array_of_contacts_from_reg_ids($ids)
437
+	{
438
+		$ids = (array) $ids;
439
+		$_where = array(
440
+			'Registration.REG_ID' => array('in', $ids),
441
+		);
442
+		return $this->get_all(array($_where));
443
+	}
444 444
 }
Please login to merge, or discard this patch.
core/db_models/EEM_Post_Meta.model.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -59,11 +59,11 @@
 block discarded – undo
59 59
         );
60 60
         $this->_model_relations = array();
61 61
         foreach ($models_this_can_attach_to as $model) {
62
-            $this->_model_relations[ $model ] = new EE_Belongs_To_Relation();
62
+            $this->_model_relations[$model] = new EE_Belongs_To_Relation();
63 63
         }
64 64
         $this->_wp_core_model = true;
65 65
         foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
66
-            $this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta(
66
+            $this->_cap_restriction_generators[$cap_context] = new EE_Restriction_Generator_Meta(
67 67
                 'meta_key',
68 68
                 'meta_value'
69 69
             );
Please login to merge, or discard this patch.
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -19,56 +19,56 @@
 block discarded – undo
19 19
 class EEM_Post_Meta extends EEM_Base
20 20
 {
21 21
 
22
-    // private instance of the EE_Post_Meta object
23
-    protected static $_instance = null;
22
+	// private instance of the EE_Post_Meta object
23
+	protected static $_instance = null;
24 24
 
25 25
 
26 26
 
27
-    protected function __construct($timezone = null)
28
-    {
29
-        $this->singular_item = esc_html__('Post Meta', 'event_espresso');
30
-        $this->plural_item = esc_html__('Post Metas', 'event_espresso');
31
-        $this->_tables = array(
32
-            'Post_Meta' => new EE_Primary_Table('postmeta', 'meta_id'),
33
-        );
34
-        $models_this_can_attach_to = array_keys(EE_Registry::instance()->cpt_models());
35
-        $this->_fields = array(
36
-            'Post_Meta' => array(
37
-                'meta_id'    => new EE_Primary_Key_Int_Field(
38
-                    'meta_id',
39
-                    esc_html__("Meta ID", "event_espresso")
40
-                ),
41
-                'post_id'    => new EE_Foreign_Key_Int_Field(
42
-                    'post_id',
43
-                    esc_html__("Primary Key of Post", "event_espresso"),
44
-                    false,
45
-                    0,
46
-                    $models_this_can_attach_to
47
-                ),
48
-                'meta_key'   => new EE_Plain_Text_Field(
49
-                    'meta_key',
50
-                    esc_html__("Meta Key", "event_espresso"),
51
-                    false,
52
-                    ''
53
-                ),
54
-                'meta_value' => new EE_Maybe_Serialized_Text_Field(
55
-                    'meta_value',
56
-                    esc_html__("Meta Value", "event_espresso"),
57
-                    true
58
-                ),
59
-            ),
60
-        );
61
-        $this->_model_relations = array();
62
-        foreach ($models_this_can_attach_to as $model) {
63
-            $this->_model_relations[ $model ] = new EE_Belongs_To_Relation();
64
-        }
65
-        $this->_wp_core_model = true;
66
-        foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
67
-            $this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta(
68
-                'meta_key',
69
-                'meta_value'
70
-            );
71
-        }
72
-        parent::__construct($timezone);
73
-    }
27
+	protected function __construct($timezone = null)
28
+	{
29
+		$this->singular_item = esc_html__('Post Meta', 'event_espresso');
30
+		$this->plural_item = esc_html__('Post Metas', 'event_espresso');
31
+		$this->_tables = array(
32
+			'Post_Meta' => new EE_Primary_Table('postmeta', 'meta_id'),
33
+		);
34
+		$models_this_can_attach_to = array_keys(EE_Registry::instance()->cpt_models());
35
+		$this->_fields = array(
36
+			'Post_Meta' => array(
37
+				'meta_id'    => new EE_Primary_Key_Int_Field(
38
+					'meta_id',
39
+					esc_html__("Meta ID", "event_espresso")
40
+				),
41
+				'post_id'    => new EE_Foreign_Key_Int_Field(
42
+					'post_id',
43
+					esc_html__("Primary Key of Post", "event_espresso"),
44
+					false,
45
+					0,
46
+					$models_this_can_attach_to
47
+				),
48
+				'meta_key'   => new EE_Plain_Text_Field(
49
+					'meta_key',
50
+					esc_html__("Meta Key", "event_espresso"),
51
+					false,
52
+					''
53
+				),
54
+				'meta_value' => new EE_Maybe_Serialized_Text_Field(
55
+					'meta_value',
56
+					esc_html__("Meta Value", "event_espresso"),
57
+					true
58
+				),
59
+			),
60
+		);
61
+		$this->_model_relations = array();
62
+		foreach ($models_this_can_attach_to as $model) {
63
+			$this->_model_relations[ $model ] = new EE_Belongs_To_Relation();
64
+		}
65
+		$this->_wp_core_model = true;
66
+		foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
67
+			$this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta(
68
+				'meta_key',
69
+				'meta_value'
70
+			);
71
+		}
72
+		parent::__construct($timezone);
73
+	}
74 74
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_Float_Field.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -7,77 +7,77 @@
 block discarded – undo
7 7
 class EE_Float_Field extends EE_Model_Field_Base
8 8
 {
9 9
 
10
-    /**
11
-     * @param string $table_column
12
-     * @param string $nicename
13
-     * @param bool   $nullable
14
-     * @param null   $default_value
15
-     */
16
-    public function __construct($table_column, $nicename, $nullable, $default_value = null)
17
-    {
18
-        parent::__construct($table_column, $nicename, $nullable, $default_value);
19
-        $this->setSchemaType('number');
20
-    }
10
+	/**
11
+	 * @param string $table_column
12
+	 * @param string $nicename
13
+	 * @param bool   $nullable
14
+	 * @param null   $default_value
15
+	 */
16
+	public function __construct($table_column, $nicename, $nullable, $default_value = null)
17
+	{
18
+		parent::__construct($table_column, $nicename, $nullable, $default_value);
19
+		$this->setSchemaType('number');
20
+	}
21 21
 
22 22
 
23
-    /**
24
-     * If provided a string, strips out number-related formatting, like commas, periods, spaces, other junk, etc.
25
-     * However, treats commas and periods as thousand-separators ro decimal marks, as indicate by the config's currency.
26
-     * So if you want to pass in a string that NEEDS to interpret periods as decimal marks, call floatval() on it first.
27
-     * Returns a float
28
-     *
29
-     * @param type $value_inputted_for_field_on_model_object
30
-     * @return float
31
-     */
32
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
33
-    {
23
+	/**
24
+	 * If provided a string, strips out number-related formatting, like commas, periods, spaces, other junk, etc.
25
+	 * However, treats commas and periods as thousand-separators ro decimal marks, as indicate by the config's currency.
26
+	 * So if you want to pass in a string that NEEDS to interpret periods as decimal marks, call floatval() on it first.
27
+	 * Returns a float
28
+	 *
29
+	 * @param type $value_inputted_for_field_on_model_object
30
+	 * @return float
31
+	 */
32
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
33
+	{
34 34
 //      echo __LINE__."$value_inputted_for_field_on_model_object<br>";
35
-        // remove whitespaces and thousands separators
36
-        if (is_string($value_inputted_for_field_on_model_object)) {
37
-            $value_inputted_for_field_on_model_object = str_replace(
38
-                array(" ", EE_Config::instance()->currency->thsnds),
39
-                "",
40
-                $value_inputted_for_field_on_model_object
41
-            );
35
+		// remove whitespaces and thousands separators
36
+		if (is_string($value_inputted_for_field_on_model_object)) {
37
+			$value_inputted_for_field_on_model_object = str_replace(
38
+				array(" ", EE_Config::instance()->currency->thsnds),
39
+				"",
40
+				$value_inputted_for_field_on_model_object
41
+			);
42 42
 // echo __LINE__."$value_inputted_for_field_on_model_object<br>";
43 43
 // normalize it so periods are decimal marks (we don't care where you're from: we're talking PHP now)
44
-            $value_inputted_for_field_on_model_object = str_replace(
45
-                EE_Config::instance()->currency->dec_mrk,
46
-                ".",
47
-                $value_inputted_for_field_on_model_object
48
-            );
44
+			$value_inputted_for_field_on_model_object = str_replace(
45
+				EE_Config::instance()->currency->dec_mrk,
46
+				".",
47
+				$value_inputted_for_field_on_model_object
48
+			);
49 49
 // echo __LINE__."$value_inputted_for_field_on_model_object<br>";
50 50
 // double-check there's absolutely nothing left on this string besides numbers
51
-            $value_inputted_for_field_on_model_object = preg_replace(
52
-                "/[^0-9,.]/",
53
-                "",
54
-                $value_inputted_for_field_on_model_object
55
-            );
56
-        }
51
+			$value_inputted_for_field_on_model_object = preg_replace(
52
+				"/[^0-9,.]/",
53
+				"",
54
+				$value_inputted_for_field_on_model_object
55
+			);
56
+		}
57 57
 //      echo __LINE__."$value_inputted_for_field_on_model_object<br>";
58
-        return floatval($value_inputted_for_field_on_model_object);
59
-    }
58
+		return floatval($value_inputted_for_field_on_model_object);
59
+	}
60 60
 
61
-    /**
62
-     * Returns the number formatted according to local custom (set by the country of the blog).
63
-     *
64
-     * @param float $value_on_field_to_be_outputted
65
-     * @return string
66
-     */
67
-    public function prepare_for_pretty_echoing($value_on_field_to_be_outputted, $schema = null)
68
-    {
69
-        $EE = EE_Registry::instance();
70
-        return number_format(
71
-            $value_on_field_to_be_outputted,
72
-            $EE->CFG->currency->dec_plc,
73
-            $EE->CFG->currency->dec_mrk,
74
-            $EE->CFG->currency->thsnds
75
-        );
76
-    }
61
+	/**
62
+	 * Returns the number formatted according to local custom (set by the country of the blog).
63
+	 *
64
+	 * @param float $value_on_field_to_be_outputted
65
+	 * @return string
66
+	 */
67
+	public function prepare_for_pretty_echoing($value_on_field_to_be_outputted, $schema = null)
68
+	{
69
+		$EE = EE_Registry::instance();
70
+		return number_format(
71
+			$value_on_field_to_be_outputted,
72
+			$EE->CFG->currency->dec_plc,
73
+			$EE->CFG->currency->dec_mrk,
74
+			$EE->CFG->currency->thsnds
75
+		);
76
+	}
77 77
 
78
-    public function prepare_for_set_from_db($value_found_in_db_for_model_object)
79
-    {
78
+	public function prepare_for_set_from_db($value_found_in_db_for_model_object)
79
+	{
80 80
 //      echo "prepare for set from db of ";d($value_found_in_db_for_model_object);
81
-        return floatval($value_found_in_db_for_model_object);
82
-    }
81
+		return floatval($value_found_in_db_for_model_object);
82
+	}
83 83
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_All_Caps_Text_Field.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -6,14 +6,14 @@
 block discarded – undo
6 6
  */
7 7
 class EE_All_Caps_Text_Field extends EE_Text_Field_Base
8 8
 {
9
-    /**
10
-     * makes it all upper case, and key-like
11
-     *
12
-     * @param string $value_inputted_for_field_on_model_object
13
-     * @return string
14
-     */
15
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
16
-    {
17
-        return strtoupper(sanitize_key($value_inputted_for_field_on_model_object));
18
-    }
9
+	/**
10
+	 * makes it all upper case, and key-like
11
+	 *
12
+	 * @param string $value_inputted_for_field_on_model_object
13
+	 * @return string
14
+	 */
15
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
16
+	{
17
+		return strtoupper(sanitize_key($value_inputted_for_field_on_model_object));
18
+	}
19 19
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_Text_Field_Base.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -7,49 +7,49 @@
 block discarded – undo
7 7
 abstract class EE_Text_Field_Base extends EE_Model_Field_Base
8 8
 {
9 9
 
10
-    /**
11
-     * Gets the value in the format expected when being set.
12
-     * For display on the front-end, usually you would use prepare_for_pretty_echoing() instead.
13
-     * @param mixed $value_of_field_on_model_object
14
-     * @return mixed|string
15
-     */
16
-    public function prepare_for_get($value_of_field_on_model_object)
17
-    {
18
-        return $value_of_field_on_model_object;
19
-    }
10
+	/**
11
+	 * Gets the value in the format expected when being set.
12
+	 * For display on the front-end, usually you would use prepare_for_pretty_echoing() instead.
13
+	 * @param mixed $value_of_field_on_model_object
14
+	 * @return mixed|string
15
+	 */
16
+	public function prepare_for_get($value_of_field_on_model_object)
17
+	{
18
+		return $value_of_field_on_model_object;
19
+	}
20 20
 
21
-    /**
22
-     * Accepts schema of 'form_input' which formats the string for echoing in form input's value.
23
-     *
24
-     * @param string $value_on_field_to_be_outputted
25
-     * @param string $schema
26
-     * @return string
27
-     */
28
-    public function prepare_for_pretty_echoing($value_on_field_to_be_outputted, $schema = null)
29
-    {
30
-        if ($schema === 'form_input') {
31
-            $value_on_field_to_be_outputted = (string) htmlentities(
32
-                $value_on_field_to_be_outputted,
33
-                ENT_QUOTES,
34
-                'UTF-8'
35
-            );
36
-        }
37
-        return parent::prepare_for_pretty_echoing($value_on_field_to_be_outputted);
38
-    }
21
+	/**
22
+	 * Accepts schema of 'form_input' which formats the string for echoing in form input's value.
23
+	 *
24
+	 * @param string $value_on_field_to_be_outputted
25
+	 * @param string $schema
26
+	 * @return string
27
+	 */
28
+	public function prepare_for_pretty_echoing($value_on_field_to_be_outputted, $schema = null)
29
+	{
30
+		if ($schema === 'form_input') {
31
+			$value_on_field_to_be_outputted = (string) htmlentities(
32
+				$value_on_field_to_be_outputted,
33
+				ENT_QUOTES,
34
+				'UTF-8'
35
+			);
36
+		}
37
+		return parent::prepare_for_pretty_echoing($value_on_field_to_be_outputted);
38
+	}
39 39
 
40
-    /**
41
-     * Data received from the user should be exactly as they hope to save it in the DB, with the exception that
42
-     * quotes need to have slashes added to it. This method takes care of removing the slashes added by WP
43
-     * in magic-quotes fashion. We used to call html_entity_decode on the value here,
44
-     * because we called htmlentities when in EE_Text_Field_Base::prepare_for_pretty_echoing, but that's not necessary
45
-     * because web browsers always decode HTML entities in element attributes, like a form element's value attribute.
46
-     * So if we do it again here, we'll be removing HTML entities the user intended to have.)
47
-     *
48
-     * @param string $value_inputted_for_field_on_model_object
49
-     * @return string
50
-     */
51
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
52
-    {
53
-        return stripslashes(parent::prepare_for_set($value_inputted_for_field_on_model_object));
54
-    }
40
+	/**
41
+	 * Data received from the user should be exactly as they hope to save it in the DB, with the exception that
42
+	 * quotes need to have slashes added to it. This method takes care of removing the slashes added by WP
43
+	 * in magic-quotes fashion. We used to call html_entity_decode on the value here,
44
+	 * because we called htmlentities when in EE_Text_Field_Base::prepare_for_pretty_echoing, but that's not necessary
45
+	 * because web browsers always decode HTML entities in element attributes, like a form element's value attribute.
46
+	 * So if we do it again here, we'll be removing HTML entities the user intended to have.)
47
+	 *
48
+	 * @param string $value_inputted_for_field_on_model_object
49
+	 * @return string
50
+	 */
51
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
52
+	{
53
+		return stripslashes(parent::prepare_for_set($value_inputted_for_field_on_model_object));
54
+	}
55 55
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_Slug_Field.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -2,15 +2,15 @@
 block discarded – undo
2 2
 
3 3
 class EE_Slug_Field extends EE_Text_Field_Base
4 4
 {
5
-    /**
6
-     * ensures string is usable in URLs
7
-     *
8
-     * @param string $value_inputted_for_field_on_model_object
9
-     * @return string
10
-     */
11
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
12
-    {
13
-        // reminder: function prepares for use in URLs, not making human-readable.
14
-        return sanitize_title($value_inputted_for_field_on_model_object);
15
-    }
5
+	/**
6
+	 * ensures string is usable in URLs
7
+	 *
8
+	 * @param string $value_inputted_for_field_on_model_object
9
+	 * @return string
10
+	 */
11
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
12
+	{
13
+		// reminder: function prepares for use in URLs, not making human-readable.
14
+		return sanitize_title($value_inputted_for_field_on_model_object);
15
+	}
16 16
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_Primary_Key_Int_Field.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -3,27 +3,27 @@
 block discarded – undo
3 3
 class EE_Primary_Key_Int_Field extends EE_Primary_Key_Field_Base
4 4
 {
5 5
 
6
-    public function __construct($table_column, $nicename)
7
-    {
8
-        parent::__construct($table_column, $nicename, 0);
9
-        $this->setSchemaType('integer');
10
-    }
6
+	public function __construct($table_column, $nicename)
7
+	{
8
+		parent::__construct($table_column, $nicename, 0);
9
+		$this->setSchemaType('integer');
10
+	}
11 11
 
12
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
13
-    {
14
-        if ($this->is_model_obj_of_type_pointed_to($value_inputted_for_field_on_model_object)) {
15
-            $value_inputted_for_field_on_model_object = $value_inputted_for_field_on_model_object->ID();
16
-        }
17
-        return absint($value_inputted_for_field_on_model_object);
18
-    }
12
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
13
+	{
14
+		if ($this->is_model_obj_of_type_pointed_to($value_inputted_for_field_on_model_object)) {
15
+			$value_inputted_for_field_on_model_object = $value_inputted_for_field_on_model_object->ID();
16
+		}
17
+		return absint($value_inputted_for_field_on_model_object);
18
+	}
19 19
 
20
-    public function prepare_for_set_from_db($value_found_in_db_for_model_object)
21
-    {
22
-        return intval($value_found_in_db_for_model_object);
23
-    }
20
+	public function prepare_for_set_from_db($value_found_in_db_for_model_object)
21
+	{
22
+		return intval($value_found_in_db_for_model_object);
23
+	}
24 24
 
25
-    public function is_auto_increment()
26
-    {
27
-        return true;
28
-    }
25
+	public function is_auto_increment()
26
+	{
27
+		return true;
28
+	}
29 29
 }
Please login to merge, or discard this patch.
core/db_models/fields/EE_Model_Field_Base.php 2 patches
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
         /**
128 128
          * allow for changing the defaults
129 129
          */
130
-        $this->_nicename      = apply_filters(
130
+        $this->_nicename = apply_filters(
131 131
             'FHEE__EE_Model_Field_Base___construct_finalize___nicename',
132 132
             $this->_nicename,
133 133
             $this
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
      */
218 218
     public function get_qualified_column()
219 219
     {
220
-        return $this->get_table_alias() . "." . $this->get_table_column();
220
+        return $this->get_table_alias().".".$this->get_table_column();
221 221
     }
222 222
 
223 223
     /**
@@ -312,7 +312,7 @@  discard block
 block discarded – undo
312 312
     {
313 313
         if ($this->is_nullable()) {
314 314
             $this->_schema_type = (array) $this->_schema_type;
315
-            if (! in_array('null', $this->_schema_type)) {
315
+            if ( ! in_array('null', $this->_schema_type)) {
316 316
                 $this->_schema_type[] = 'null';
317 317
             };
318 318
         }
@@ -369,10 +369,10 @@  discard block
 block discarded – undo
369 369
                 switch ($property_key) {
370 370
                     case 'pretty':
371 371
                     case 'rendered':
372
-                        $value_to_return[ $property_key ] = $this->prepare_for_pretty_echoing($this->prepare_for_set($default_value));
372
+                        $value_to_return[$property_key] = $this->prepare_for_pretty_echoing($this->prepare_for_set($default_value));
373 373
                         break;
374 374
                     default:
375
-                        $value_to_return[ $property_key ] = $default_value;
375
+                        $value_to_return[$property_key] = $default_value;
376 376
                         break;
377 377
                 }
378 378
             }
@@ -437,7 +437,7 @@  discard block
 block discarded – undo
437 437
      */
438 438
     protected function setSchemaReadOnly($readonly)
439 439
     {
440
-        if (! is_bool($readonly)) {
440
+        if ( ! is_bool($readonly)) {
441 441
             throw new InvalidArgumentException(
442 442
                 sprintf(
443 443
                     esc_html__('The incoming argument (%s) must be a boolean.', 'event_espresso'),
@@ -584,7 +584,7 @@  discard block
 block discarded – undo
584 584
      */
585 585
     private function validateSchemaType($type)
586 586
     {
587
-        if (! (is_string($type) || is_array($type))) {
587
+        if ( ! (is_string($type) || is_array($type))) {
588 588
             throw new InvalidArgumentException(
589 589
                 sprintf(
590 590
                     esc_html__('The incoming argument (%s) must be a string or an array.', 'event_espresso'),
@@ -614,7 +614,7 @@  discard block
 block discarded – undo
614 614
             return;
615 615
         }
616 616
 
617
-        if (! isset($allowable_types[ $type ])) {
617
+        if ( ! isset($allowable_types[$type])) {
618 618
             throw new InvalidArgumentException(
619 619
                 sprintf(
620 620
                     esc_html__('The incoming argument (%1$s) must be one of the allowable types: %2$s', 'event_espresso'),
@@ -633,7 +633,7 @@  discard block
 block discarded – undo
633 633
      */
634 634
     private function validateSchemaFormat($format)
635 635
     {
636
-        if (! is_string($format)) {
636
+        if ( ! is_string($format)) {
637 637
             throw new InvalidArgumentException(
638 638
                 sprintf(
639 639
                     esc_html__('The incoming argument (%s) must be a string.', 'event_espresso'),
@@ -656,7 +656,7 @@  discard block
 block discarded – undo
656 656
             )
657 657
         );
658 658
 
659
-        if (! isset($allowable_formats[ $format ])) {
659
+        if ( ! isset($allowable_formats[$format])) {
660 660
             throw new InvalidArgumentException(
661 661
                 sprintf(
662 662
                     esc_html__('The incoming argument (%1$s) must be one of the allowable formats: %2$s', 'event_espresso'),
Please login to merge, or discard this patch.
Indentation   +646 added lines, -647 removed lines patch added patch discarded remove patch
@@ -20,651 +20,650 @@
 block discarded – undo
20 20
  */
21 21
 abstract class EE_Model_Field_Base implements HasSchemaInterface
22 22
 {
23
-    /**
24
-     * The alias for the table the column belongs to.
25
-     * @var string
26
-     */
27
-    protected $_table_alias;
28
-
29
-    /**
30
-     * The actual db column name for the table
31
-     * @var string
32
-     */
33
-    protected $_table_column;
34
-
35
-
36
-    /**
37
-     * The authoritative name for the table column (used by client code to reference the field).
38
-     * @var string
39
-     */
40
-    protected $_name;
41
-
42
-
43
-    /**
44
-     * A description for the field.
45
-     * @var string
46
-     */
47
-    protected $_nicename;
48
-
49
-
50
-    /**
51
-     * Whether the field is nullable or not
52
-     * @var bool
53
-     */
54
-    protected $_nullable;
55
-
56
-
57
-    /**
58
-     * What the default value for the field should be.
59
-     * @var mixed
60
-     */
61
-    protected $_default_value;
62
-
63
-
64
-    /**
65
-     * Other configuration for the field
66
-     * @var mixed
67
-     */
68
-    protected $_other_config;
69
-
70
-
71
-    /**
72
-     * The name of the model this field is instantiated for.
73
-     * @var string
74
-     */
75
-    protected $_model_name;
76
-
77
-
78
-    /**
79
-     * This should be a json-schema valid data type for the field.
80
-     * @link http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2
81
-     * @var string
82
-     */
83
-    private $_schema_type = 'string';
84
-
85
-
86
-    /**
87
-     * If the schema has a defined format then it should be defined via this property.
88
-     * @link http://json-schema.org/latest/json-schema-validation.html#rfc.section.7
89
-     * @var string
90
-     */
91
-    private $_schema_format = '';
92
-
93
-
94
-    /**
95
-     * Indicates that the value of the field is managed exclusively by the server/model and not something
96
-     * settable by client code.
97
-     * @link http://json-schema.org/latest/json-schema-hypermedia.html#rfc.section.4.4
98
-     * @var bool
99
-     */
100
-    private $_schema_readonly = false;
101
-
102
-
103
-    /**
104
-     * @param string $table_column
105
-     * @param string $nicename
106
-     * @param bool   $nullable
107
-     * @param null   $default_value
108
-     */
109
-    public function __construct($table_column, $nicename, $nullable, $default_value = null)
110
-    {
111
-        $this->_table_column  = $table_column;
112
-        $this->_nicename      = $nicename;
113
-        $this->_nullable      = $nullable;
114
-        $this->_default_value = $default_value;
115
-    }
116
-
117
-
118
-    /**
119
-     * @param $table_alias
120
-     * @param $name
121
-     * @param $model_name
122
-     */
123
-    public function _construct_finalize($table_alias, $name, $model_name)
124
-    {
125
-        $this->_table_alias = $table_alias;
126
-        $this->_name        = $name;
127
-        $this->_model_name  = $model_name;
128
-        /**
129
-         * allow for changing the defaults
130
-         */
131
-        $this->_nicename      = apply_filters(
132
-            'FHEE__EE_Model_Field_Base___construct_finalize___nicename',
133
-            $this->_nicename,
134
-            $this
135
-        );
136
-        $this->_default_value = apply_filters(
137
-            'FHEE__EE_Model_Field_Base___construct_finalize___default_value',
138
-            $this->_default_value,
139
-            $this
140
-        );
141
-    }
142
-
143
-    public function get_table_alias()
144
-    {
145
-        return $this->_table_alias;
146
-    }
147
-
148
-    public function get_table_column()
149
-    {
150
-        return $this->_table_column;
151
-    }
152
-
153
-    /**
154
-     * Returns the name of the model this field is on. Eg 'Event' or 'Ticket_Datetime'
155
-     *
156
-     * @return string
157
-     */
158
-    public function get_model_name()
159
-    {
160
-        return $this->_model_name;
161
-    }
162
-
163
-    /**
164
-     * @throws \EE_Error
165
-     * @return string
166
-     */
167
-    public function get_name()
168
-    {
169
-        if ($this->_name) {
170
-            return $this->_name;
171
-        } else {
172
-            throw new EE_Error(sprintf(esc_html__(
173
-                "Model field '%s' has no name set. Did you make a model and forget to call the parent model constructor?",
174
-                "event_espresso"
175
-            ), get_class($this)));
176
-        }
177
-    }
178
-
179
-    public function get_nicename()
180
-    {
181
-        return $this->_nicename;
182
-    }
183
-
184
-    public function is_nullable()
185
-    {
186
-        return $this->_nullable;
187
-    }
188
-
189
-    /**
190
-     * returns whether this field is an auto-increment field or not. If it is, then
191
-     * on insertion it can be null. However, on updates it must be present.
192
-     *
193
-     * @return boolean
194
-     */
195
-    public function is_auto_increment()
196
-    {
197
-        return false;
198
-    }
199
-
200
-    /**
201
-     * The default value in the model object's value domain. See lengthy comment about
202
-     * value domains at the top of EEM_Base
203
-     *
204
-     * @return mixed
205
-     */
206
-    public function get_default_value()
207
-    {
208
-        return $this->_default_value;
209
-    }
210
-
211
-    /**
212
-     * Returns the table alias joined to the table column, however this isn't the right
213
-     * table alias if the aliased table is being joined to. In that case, you can use
214
-     * EE_Model_Parser::extract_table_alias_model_relation_chain_prefix() to find the table's current alias
215
-     * in the current query
216
-     *
217
-     * @return string
218
-     */
219
-    public function get_qualified_column()
220
-    {
221
-        return $this->get_table_alias() . "." . $this->get_table_column();
222
-    }
223
-
224
-    /**
225
-     * When get() is called on a model object (eg EE_Event), before returning its value,
226
-     * call this function on it, allowing us to customize the returned value based on
227
-     * the field's type. Eg, we may want to unserialize it, strip tags, etc. By default,
228
-     * we simply return it.
229
-     *
230
-     * @param mixed $value_of_field_on_model_object
231
-     * @return mixed
232
-     */
233
-    public function prepare_for_get($value_of_field_on_model_object)
234
-    {
235
-        return $value_of_field_on_model_object;
236
-    }
237
-
238
-    /**
239
-     * When inserting or updating a field on a model object, run this function on each
240
-     * value to prepare it for insertion into the db. Generally this converts
241
-     * the validated input on the model object into the format used in the DB.
242
-     *
243
-     * @param mixed $value_of_field_on_model_object
244
-     * @return mixed
245
-     */
246
-    public function prepare_for_use_in_db($value_of_field_on_model_object)
247
-    {
248
-        return $value_of_field_on_model_object;
249
-    }
250
-
251
-    /**
252
-     * When creating a brand-new model object, or setting a particular value for one of its fields, this function
253
-     * is called before setting it on the model object. We may want to strip slashes, unserialize the value, etc.
254
-     * By default, we do nothing.
255
-     *
256
-     * If the model field is going to perform any validation on the input, this is where it should be done
257
-     * (once the value is on the model object, it may be used in other ways besides putting it into the DB
258
-     * so it's best to validate it right away).
259
-     *
260
-     * @param mixed $value_inputted_for_field_on_model_object
261
-     * @return mixed
262
-     */
263
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
264
-    {
265
-        return $value_inputted_for_field_on_model_object;
266
-    }
267
-
268
-
269
-    /**
270
-     * When instantiating a model object from DB results, this function is called before setting each field.
271
-     * We may want to serialize the value, etc. By default, we return the value using prepare_for_set() method as that
272
-     * is the one child classes will most often define.
273
-     *
274
-     * @param mixed $value_found_in_db_for_model_object
275
-     * @return mixed
276
-     */
277
-    public function prepare_for_set_from_db($value_found_in_db_for_model_object)
278
-    {
279
-        return $this->prepare_for_set($value_found_in_db_for_model_object);
280
-    }
281
-
282
-    /**
283
-     * When echoing a field's value on a model object, this function is run to prepare the value for presentation in a
284
-     * webpage. For example, we may want to output floats with 2 decimal places by default, dates as "Monday Jan 12,
285
-     * 2013, at 3:23pm" instead of
286
-     * "8765678632", or any other modifications to how the value should be displayed, but not modified itself.
287
-     *
288
-     * @param mixed $value_on_field_to_be_outputted
289
-     * @return mixed
290
-     */
291
-    public function prepare_for_pretty_echoing($value_on_field_to_be_outputted)
292
-    {
293
-        return $value_on_field_to_be_outputted;
294
-    }
295
-
296
-
297
-    /**
298
-     * Returns whatever is set as the nicename for the object.
299
-     * @return string
300
-     */
301
-    public function getSchemaDescription()
302
-    {
303
-        return $this->get_nicename();
304
-    }
305
-
306
-
307
-    /**
308
-     * Returns whatever is set as the $_schema_type property for the object.
309
-     * Note: this will automatically add 'null' to the schema if the object is_nullable()
310
-     * @return string|array
311
-     */
312
-    public function getSchemaType()
313
-    {
314
-        if ($this->is_nullable()) {
315
-            $this->_schema_type = (array) $this->_schema_type;
316
-            if (! in_array('null', $this->_schema_type)) {
317
-                $this->_schema_type[] = 'null';
318
-            };
319
-        }
320
-        return $this->_schema_type;
321
-    }
322
-
323
-
324
-    /**
325
-     * Sets the _schema_type property.  Child classes should call this in their constructors to override the default state
326
-     * for this property.
327
-     * @param string|array $type
328
-     * @throws InvalidArgumentException
329
-     */
330
-    protected function setSchemaType($type)
331
-    {
332
-        $this->validateSchemaType($type);
333
-        $this->_schema_type = $type;
334
-    }
335
-
336
-
337
-    /**
338
-     * This is usually present when the $_schema_type property is 'object'.  Any child classes will need to override
339
-     * this method and return the properties for the schema.
340
-     *
341
-     * The reason this is not a property on the class is because there may be filters set on the values for the property
342
-     * that won't be exposed on construct.  For example enum type schemas may have the enum values filtered.
343
-     *
344
-     * @return array
345
-     */
346
-    public function getSchemaProperties()
347
-    {
348
-        return array();
349
-    }
350
-
351
-
352
-
353
-    /**
354
-     * By default this returns the scalar default value that was sent in on the class prepped according to the class type
355
-     * as the default.  However, when there are schema properties, then the default property is setup to mirror the
356
-     * property keys and correctly prepare the default according to that expected property value.
357
-     * The getSchema method validates whether the schema for default is setup correctly or not according to the schema type
358
-     *
359
-     * @return mixed
360
-     */
361
-    public function getSchemaDefault()
362
-    {
363
-        $default_value = $this->prepare_for_use_in_db($this->prepare_for_set($this->get_default_value()));
364
-        $schema_properties = $this->getSchemaProperties();
365
-
366
-        // if this schema has properties than shape the default value to match the properties shape.
367
-        if ($schema_properties) {
368
-            $value_to_return = array();
369
-            foreach ($schema_properties as $property_key => $property_schema) {
370
-                switch ($property_key) {
371
-                    case 'pretty':
372
-                    case 'rendered':
373
-                        $value_to_return[ $property_key ] = $this->prepare_for_pretty_echoing($this->prepare_for_set($default_value));
374
-                        break;
375
-                    default:
376
-                        $value_to_return[ $property_key ] = $default_value;
377
-                        break;
378
-                }
379
-            }
380
-            $default_value = $value_to_return;
381
-        }
382
-        return $default_value;
383
-    }
384
-
385
-
386
-
387
-
388
-    /**
389
-     * If a child class has enum values, they should override this method and provide a simple array
390
-     * of the enum values.
391
-
392
-     * The reason this is not a property on the class is because there may be filterable enum values that
393
-     * are set on the instantiated object that could be filtered after construct.
394
-     *
395
-     * @return array
396
-     */
397
-    public function getSchemaEnum()
398
-    {
399
-        return array();
400
-    }
401
-
402
-
403
-    /**
404
-     * This returns the value of the $_schema_format property on the object.
405
-     * @return string
406
-     */
407
-    public function getSchemaFormat()
408
-    {
409
-        return $this->_schema_format;
410
-    }
411
-
412
-
413
-    /**
414
-     * Sets the schema format property.
415
-     * @throws InvalidArgumentException
416
-     * @param string $format
417
-     */
418
-    protected function setSchemaFormat($format)
419
-    {
420
-        $this->validateSchemaFormat($format);
421
-        $this->_schema_format = $format;
422
-    }
423
-
424
-
425
-    /**
426
-     * This returns the value of the $_schema_readonly property on the object.
427
-     * @return bool
428
-     */
429
-    public function getSchemaReadonly()
430
-    {
431
-        return $this->_schema_readonly;
432
-    }
433
-
434
-
435
-    /**
436
-     * This sets the value for the $_schema_readonly property.
437
-     * @param bool $readonly  (only explicit boolean values are accepted)
438
-     */
439
-    protected function setSchemaReadOnly($readonly)
440
-    {
441
-        if (! is_bool($readonly)) {
442
-            throw new InvalidArgumentException(
443
-                sprintf(
444
-                    esc_html__('The incoming argument (%s) must be a boolean.', 'event_espresso'),
445
-                    print_r($readonly, true)
446
-                )
447
-            );
448
-        }
449
-
450
-        $this->_schema_readonly = $readonly;
451
-    }
452
-
453
-
454
-
455
-
456
-    /**
457
-     * Return `%d`, `%s` or `%f` to indicate the data type for the field.
458
-     * @uses _get_wpdb_data_type()
459
-     *
460
-     * @return string
461
-     */
462
-    public function get_wpdb_data_type()
463
-    {
464
-        return $this->_get_wpdb_data_type();
465
-    }
466
-
467
-
468
-    /**
469
-     * Return `%d`, `%s` or `%f` to indicate the data type for the field that should be indicated in wpdb queries.
470
-     * @param string $type  Included if a specific type is requested.
471
-     * @uses get_schema_type()
472
-     * @return string
473
-     */
474
-    protected function _get_wpdb_data_type($type = '')
475
-    {
476
-        $type = empty($type) ? $this->getSchemaType() : $type;
477
-
478
-        // if type is an array, then different parsing is required.
479
-        if (is_array($type)) {
480
-            return $this->_get_wpdb_data_type_for_type_array($type);
481
-        }
482
-
483
-        $wpdb_type = '%s';
484
-        switch ($type) {
485
-            case 'number':
486
-                $wpdb_type = '%f';
487
-                break;
488
-            case 'integer':
489
-            case 'boolean':
490
-                $wpdb_type = '%d';
491
-                break;
492
-            case 'object':
493
-                $properties = $this->getSchemaProperties();
494
-                if (isset($properties['raw'], $properties['raw']['type'])) {
495
-                    $wpdb_type = $this->_get_wpdb_data_type($properties['raw']['type']);
496
-                }
497
-                break; // leave at default
498
-        }
499
-        return $wpdb_type;
500
-    }
501
-
502
-
503
-
504
-    protected function _get_wpdb_data_type_for_type_array($type)
505
-    {
506
-        $type = (array) $type;
507
-        // first let's flip because then we can do a faster key check
508
-        $type = array_flip($type);
509
-
510
-        // check for things that mean '%s'
511
-        if (isset($type['string'], $type['object'], $type['array'])) {
512
-            return '%s';
513
-        }
514
-
515
-        // if makes it past the above condition and there's float in the array
516
-        // then the type is %f
517
-        if (isset($type['number'])) {
518
-            return '%f';
519
-        }
520
-
521
-        // if it makes it above the above conditions and there is an integer in the array
522
-        // then the type is %d
523
-        if (isset($type['integer'])) {
524
-            return '%d';
525
-        }
526
-
527
-        // anything else is a string
528
-        return '%s';
529
-    }
530
-
531
-
532
-    /**
533
-     * This returns elements used to represent this field in the json schema.
534
-     *
535
-     * @link http://json-schema.org/
536
-     * @return array
537
-     */
538
-    public function getSchema()
539
-    {
540
-        $schema = array(
541
-            'description' => $this->getSchemaDescription(),
542
-            'type' => $this->getSchemaType(),
543
-            'readonly' => $this->getSchemaReadonly(),
544
-            'default' => $this->getSchemaDefault()
545
-        );
546
-
547
-        // optional properties of the schema
548
-        $enum = $this->getSchemaEnum();
549
-        $properties = $this->getSchemaProperties();
550
-        $format = $this->getSchemaFormat();
551
-        if ($enum) {
552
-            $schema['enum'] = $enum;
553
-        }
554
-
555
-        if ($properties) {
556
-            $schema['properties'] = $properties;
557
-        }
558
-
559
-        if ($format) {
560
-            $schema['format'] = $format;
561
-        }
562
-        return $schema;
563
-    }
564
-
565
-    /**
566
-     * Some fields are in the database-only, (ie, used in queries etc), but shouldn't necessarily be part
567
-     * of the model objects (ie, client code shouldn't care to ever see their value... if client code does
568
-     * want to see their value, then they shouldn't be db-only fields!)
569
-     * Eg, when doing events as custom post types, querying the post_type is essential, but
570
-     * post_type is irrelevant for EE_Event objects (because they will ALL be of post_type 'esp_event').
571
-     * By default, all fields aren't db-only.
572
-     *
573
-     * @return boolean
574
-     */
575
-    public function is_db_only_field()
576
-    {
577
-        return false;
578
-    }
579
-
580
-
581
-    /**
582
-     * Validates the incoming string|array to ensure its an allowable type.
583
-     * @throws InvalidArgumentException
584
-     * @param string|array $type
585
-     */
586
-    private function validateSchemaType($type)
587
-    {
588
-        if (! (is_string($type) || is_array($type))) {
589
-            throw new InvalidArgumentException(
590
-                sprintf(
591
-                    esc_html__('The incoming argument (%s) must be a string or an array.', 'event_espresso'),
592
-                    print_r($type, true)
593
-                )
594
-            );
595
-        }
596
-
597
-        // validate allowable types.
598
-        // @link http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2
599
-        $allowable_types = array_flip(
600
-            array(
601
-                'string',
602
-                'number',
603
-                'null',
604
-                'object',
605
-                'array',
606
-                'boolean',
607
-                'integer'
608
-            )
609
-        );
610
-
611
-        if (is_array($type)) {
612
-            foreach ($type as $item_in_type) {
613
-                $this->validateSchemaType($item_in_type);
614
-            }
615
-            return;
616
-        }
617
-
618
-        if (! isset($allowable_types[ $type ])) {
619
-            throw new InvalidArgumentException(
620
-                sprintf(
621
-                    esc_html__('The incoming argument (%1$s) must be one of the allowable types: %2$s', 'event_espresso'),
622
-                    $type,
623
-                    implode(',', array_flip($allowable_types))
624
-                )
625
-            );
626
-        }
627
-    }
628
-
629
-
630
-    /**
631
-     * Validates that the incoming format is an allowable string to use for the _schema_format property
632
-     * @throws InvalidArgumentException
633
-     * @param $format
634
-     */
635
-    private function validateSchemaFormat($format)
636
-    {
637
-        if (! is_string($format)) {
638
-            throw new InvalidArgumentException(
639
-                sprintf(
640
-                    esc_html__('The incoming argument (%s) must be a string.', 'event_espresso'),
641
-                    print_r($format, true)
642
-                )
643
-            );
644
-        }
645
-
646
-        // validate allowable format values
647
-        // @link http://json-schema.org/latest/json-schema-validation.html#rfc.section.7
648
-        $allowable_formats = array_flip(
649
-            array(
650
-                'date-time',
651
-                'email',
652
-                'hostname',
653
-                'ipv4',
654
-                'ipv6',
655
-                'uri',
656
-                'uriref'
657
-            )
658
-        );
659
-
660
-        if (! isset($allowable_formats[ $format ])) {
661
-            throw new InvalidArgumentException(
662
-                sprintf(
663
-                    esc_html__('The incoming argument (%1$s) must be one of the allowable formats: %2$s', 'event_espresso'),
664
-                    $format,
665
-                    implode(',', array_flip($allowable_formats))
666
-                )
667
-            );
668
-        }
669
-    }
23
+	/**
24
+	 * The alias for the table the column belongs to.
25
+	 * @var string
26
+	 */
27
+	protected $_table_alias;
28
+
29
+	/**
30
+	 * The actual db column name for the table
31
+	 * @var string
32
+	 */
33
+	protected $_table_column;
34
+
35
+
36
+	/**
37
+	 * The authoritative name for the table column (used by client code to reference the field).
38
+	 * @var string
39
+	 */
40
+	protected $_name;
41
+
42
+
43
+	/**
44
+	 * A description for the field.
45
+	 * @var string
46
+	 */
47
+	protected $_nicename;
48
+
49
+
50
+	/**
51
+	 * Whether the field is nullable or not
52
+	 * @var bool
53
+	 */
54
+	protected $_nullable;
55
+
56
+
57
+	/**
58
+	 * What the default value for the field should be.
59
+	 * @var mixed
60
+	 */
61
+	protected $_default_value;
62
+
63
+
64
+	/**
65
+	 * Other configuration for the field
66
+	 * @var mixed
67
+	 */
68
+	protected $_other_config;
69
+
70
+
71
+	/**
72
+	 * The name of the model this field is instantiated for.
73
+	 * @var string
74
+	 */
75
+	protected $_model_name;
76
+
77
+
78
+	/**
79
+	 * This should be a json-schema valid data type for the field.
80
+	 * @link http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2
81
+	 * @var string
82
+	 */
83
+	private $_schema_type = 'string';
84
+
85
+
86
+	/**
87
+	 * If the schema has a defined format then it should be defined via this property.
88
+	 * @link http://json-schema.org/latest/json-schema-validation.html#rfc.section.7
89
+	 * @var string
90
+	 */
91
+	private $_schema_format = '';
92
+
93
+
94
+	/**
95
+	 * Indicates that the value of the field is managed exclusively by the server/model and not something
96
+	 * settable by client code.
97
+	 * @link http://json-schema.org/latest/json-schema-hypermedia.html#rfc.section.4.4
98
+	 * @var bool
99
+	 */
100
+	private $_schema_readonly = false;
101
+
102
+
103
+	/**
104
+	 * @param string $table_column
105
+	 * @param string $nicename
106
+	 * @param bool   $nullable
107
+	 * @param null   $default_value
108
+	 */
109
+	public function __construct($table_column, $nicename, $nullable, $default_value = null)
110
+	{
111
+		$this->_table_column  = $table_column;
112
+		$this->_nicename      = $nicename;
113
+		$this->_nullable      = $nullable;
114
+		$this->_default_value = $default_value;
115
+	}
116
+
117
+
118
+	/**
119
+	 * @param $table_alias
120
+	 * @param $name
121
+	 * @param $model_name
122
+	 */
123
+	public function _construct_finalize($table_alias, $name, $model_name)
124
+	{
125
+		$this->_table_alias = $table_alias;
126
+		$this->_name        = $name;
127
+		$this->_model_name  = $model_name;
128
+		/**
129
+		 * allow for changing the defaults
130
+		 */
131
+		$this->_nicename      = apply_filters(
132
+			'FHEE__EE_Model_Field_Base___construct_finalize___nicename',
133
+			$this->_nicename,
134
+			$this
135
+		);
136
+		$this->_default_value = apply_filters(
137
+			'FHEE__EE_Model_Field_Base___construct_finalize___default_value',
138
+			$this->_default_value,
139
+			$this
140
+		);
141
+	}
142
+
143
+	public function get_table_alias()
144
+	{
145
+		return $this->_table_alias;
146
+	}
147
+
148
+	public function get_table_column()
149
+	{
150
+		return $this->_table_column;
151
+	}
152
+
153
+	/**
154
+	 * Returns the name of the model this field is on. Eg 'Event' or 'Ticket_Datetime'
155
+	 *
156
+	 * @return string
157
+	 */
158
+	public function get_model_name()
159
+	{
160
+		return $this->_model_name;
161
+	}
162
+
163
+	/**
164
+	 * @throws \EE_Error
165
+	 * @return string
166
+	 */
167
+	public function get_name()
168
+	{
169
+		if ($this->_name) {
170
+			return $this->_name;
171
+		} else {
172
+			throw new EE_Error(sprintf(esc_html__(
173
+				"Model field '%s' has no name set. Did you make a model and forget to call the parent model constructor?",
174
+				"event_espresso"
175
+			), get_class($this)));
176
+		}
177
+	}
178
+
179
+	public function get_nicename()
180
+	{
181
+		return $this->_nicename;
182
+	}
183
+
184
+	public function is_nullable()
185
+	{
186
+		return $this->_nullable;
187
+	}
188
+
189
+	/**
190
+	 * returns whether this field is an auto-increment field or not. If it is, then
191
+	 * on insertion it can be null. However, on updates it must be present.
192
+	 *
193
+	 * @return boolean
194
+	 */
195
+	public function is_auto_increment()
196
+	{
197
+		return false;
198
+	}
199
+
200
+	/**
201
+	 * The default value in the model object's value domain. See lengthy comment about
202
+	 * value domains at the top of EEM_Base
203
+	 *
204
+	 * @return mixed
205
+	 */
206
+	public function get_default_value()
207
+	{
208
+		return $this->_default_value;
209
+	}
210
+
211
+	/**
212
+	 * Returns the table alias joined to the table column, however this isn't the right
213
+	 * table alias if the aliased table is being joined to. In that case, you can use
214
+	 * EE_Model_Parser::extract_table_alias_model_relation_chain_prefix() to find the table's current alias
215
+	 * in the current query
216
+	 *
217
+	 * @return string
218
+	 */
219
+	public function get_qualified_column()
220
+	{
221
+		return $this->get_table_alias() . "." . $this->get_table_column();
222
+	}
223
+
224
+	/**
225
+	 * When get() is called on a model object (eg EE_Event), before returning its value,
226
+	 * call this function on it, allowing us to customize the returned value based on
227
+	 * the field's type. Eg, we may want to unserialize it, strip tags, etc. By default,
228
+	 * we simply return it.
229
+	 *
230
+	 * @param mixed $value_of_field_on_model_object
231
+	 * @return mixed
232
+	 */
233
+	public function prepare_for_get($value_of_field_on_model_object)
234
+	{
235
+		return $value_of_field_on_model_object;
236
+	}
237
+
238
+	/**
239
+	 * When inserting or updating a field on a model object, run this function on each
240
+	 * value to prepare it for insertion into the db. Generally this converts
241
+	 * the validated input on the model object into the format used in the DB.
242
+	 *
243
+	 * @param mixed $value_of_field_on_model_object
244
+	 * @return mixed
245
+	 */
246
+	public function prepare_for_use_in_db($value_of_field_on_model_object)
247
+	{
248
+		return $value_of_field_on_model_object;
249
+	}
250
+
251
+	/**
252
+	 * When creating a brand-new model object, or setting a particular value for one of its fields, this function
253
+	 * is called before setting it on the model object. We may want to strip slashes, unserialize the value, etc.
254
+	 * By default, we do nothing.
255
+	 *
256
+	 * If the model field is going to perform any validation on the input, this is where it should be done
257
+	 * (once the value is on the model object, it may be used in other ways besides putting it into the DB
258
+	 * so it's best to validate it right away).
259
+	 *
260
+	 * @param mixed $value_inputted_for_field_on_model_object
261
+	 * @return mixed
262
+	 */
263
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
264
+	{
265
+		return $value_inputted_for_field_on_model_object;
266
+	}
267
+
268
+
269
+	/**
270
+	 * When instantiating a model object from DB results, this function is called before setting each field.
271
+	 * We may want to serialize the value, etc. By default, we return the value using prepare_for_set() method as that
272
+	 * is the one child classes will most often define.
273
+	 *
274
+	 * @param mixed $value_found_in_db_for_model_object
275
+	 * @return mixed
276
+	 */
277
+	public function prepare_for_set_from_db($value_found_in_db_for_model_object)
278
+	{
279
+		return $this->prepare_for_set($value_found_in_db_for_model_object);
280
+	}
281
+
282
+	/**
283
+	 * When echoing a field's value on a model object, this function is run to prepare the value for presentation in a
284
+	 * webpage. For example, we may want to output floats with 2 decimal places by default, dates as "Monday Jan 12,
285
+	 * 2013, at 3:23pm" instead of
286
+	 * "8765678632", or any other modifications to how the value should be displayed, but not modified itself.
287
+	 *
288
+	 * @param mixed $value_on_field_to_be_outputted
289
+	 * @return mixed
290
+	 */
291
+	public function prepare_for_pretty_echoing($value_on_field_to_be_outputted)
292
+	{
293
+		return $value_on_field_to_be_outputted;
294
+	}
295
+
296
+
297
+	/**
298
+	 * Returns whatever is set as the nicename for the object.
299
+	 * @return string
300
+	 */
301
+	public function getSchemaDescription()
302
+	{
303
+		return $this->get_nicename();
304
+	}
305
+
306
+
307
+	/**
308
+	 * Returns whatever is set as the $_schema_type property for the object.
309
+	 * Note: this will automatically add 'null' to the schema if the object is_nullable()
310
+	 * @return string|array
311
+	 */
312
+	public function getSchemaType()
313
+	{
314
+		if ($this->is_nullable()) {
315
+			$this->_schema_type = (array) $this->_schema_type;
316
+			if (! in_array('null', $this->_schema_type)) {
317
+				$this->_schema_type[] = 'null';
318
+			};
319
+		}
320
+		return $this->_schema_type;
321
+	}
322
+
323
+
324
+	/**
325
+	 * Sets the _schema_type property.  Child classes should call this in their constructors to override the default state
326
+	 * for this property.
327
+	 * @param string|array $type
328
+	 * @throws InvalidArgumentException
329
+	 */
330
+	protected function setSchemaType($type)
331
+	{
332
+		$this->validateSchemaType($type);
333
+		$this->_schema_type = $type;
334
+	}
335
+
336
+
337
+	/**
338
+	 * This is usually present when the $_schema_type property is 'object'.  Any child classes will need to override
339
+	 * this method and return the properties for the schema.
340
+	 *
341
+	 * The reason this is not a property on the class is because there may be filters set on the values for the property
342
+	 * that won't be exposed on construct.  For example enum type schemas may have the enum values filtered.
343
+	 *
344
+	 * @return array
345
+	 */
346
+	public function getSchemaProperties()
347
+	{
348
+		return array();
349
+	}
350
+
351
+
352
+
353
+	/**
354
+	 * By default this returns the scalar default value that was sent in on the class prepped according to the class type
355
+	 * as the default.  However, when there are schema properties, then the default property is setup to mirror the
356
+	 * property keys and correctly prepare the default according to that expected property value.
357
+	 * The getSchema method validates whether the schema for default is setup correctly or not according to the schema type
358
+	 *
359
+	 * @return mixed
360
+	 */
361
+	public function getSchemaDefault()
362
+	{
363
+		$default_value = $this->prepare_for_use_in_db($this->prepare_for_set($this->get_default_value()));
364
+		$schema_properties = $this->getSchemaProperties();
365
+
366
+		// if this schema has properties than shape the default value to match the properties shape.
367
+		if ($schema_properties) {
368
+			$value_to_return = array();
369
+			foreach ($schema_properties as $property_key => $property_schema) {
370
+				switch ($property_key) {
371
+					case 'pretty':
372
+					case 'rendered':
373
+						$value_to_return[ $property_key ] = $this->prepare_for_pretty_echoing($this->prepare_for_set($default_value));
374
+						break;
375
+					default:
376
+						$value_to_return[ $property_key ] = $default_value;
377
+						break;
378
+				}
379
+			}
380
+			$default_value = $value_to_return;
381
+		}
382
+		return $default_value;
383
+	}
384
+
385
+
386
+
387
+
388
+	/**
389
+	 * If a child class has enum values, they should override this method and provide a simple array
390
+	 * of the enum values.
391
+	 * The reason this is not a property on the class is because there may be filterable enum values that
392
+	 * are set on the instantiated object that could be filtered after construct.
393
+	 *
394
+	 * @return array
395
+	 */
396
+	public function getSchemaEnum()
397
+	{
398
+		return array();
399
+	}
400
+
401
+
402
+	/**
403
+	 * This returns the value of the $_schema_format property on the object.
404
+	 * @return string
405
+	 */
406
+	public function getSchemaFormat()
407
+	{
408
+		return $this->_schema_format;
409
+	}
410
+
411
+
412
+	/**
413
+	 * Sets the schema format property.
414
+	 * @throws InvalidArgumentException
415
+	 * @param string $format
416
+	 */
417
+	protected function setSchemaFormat($format)
418
+	{
419
+		$this->validateSchemaFormat($format);
420
+		$this->_schema_format = $format;
421
+	}
422
+
423
+
424
+	/**
425
+	 * This returns the value of the $_schema_readonly property on the object.
426
+	 * @return bool
427
+	 */
428
+	public function getSchemaReadonly()
429
+	{
430
+		return $this->_schema_readonly;
431
+	}
432
+
433
+
434
+	/**
435
+	 * This sets the value for the $_schema_readonly property.
436
+	 * @param bool $readonly  (only explicit boolean values are accepted)
437
+	 */
438
+	protected function setSchemaReadOnly($readonly)
439
+	{
440
+		if (! is_bool($readonly)) {
441
+			throw new InvalidArgumentException(
442
+				sprintf(
443
+					esc_html__('The incoming argument (%s) must be a boolean.', 'event_espresso'),
444
+					print_r($readonly, true)
445
+				)
446
+			);
447
+		}
448
+
449
+		$this->_schema_readonly = $readonly;
450
+	}
451
+
452
+
453
+
454
+
455
+	/**
456
+	 * Return `%d`, `%s` or `%f` to indicate the data type for the field.
457
+	 * @uses _get_wpdb_data_type()
458
+	 *
459
+	 * @return string
460
+	 */
461
+	public function get_wpdb_data_type()
462
+	{
463
+		return $this->_get_wpdb_data_type();
464
+	}
465
+
466
+
467
+	/**
468
+	 * Return `%d`, `%s` or `%f` to indicate the data type for the field that should be indicated in wpdb queries.
469
+	 * @param string $type  Included if a specific type is requested.
470
+	 * @uses get_schema_type()
471
+	 * @return string
472
+	 */
473
+	protected function _get_wpdb_data_type($type = '')
474
+	{
475
+		$type = empty($type) ? $this->getSchemaType() : $type;
476
+
477
+		// if type is an array, then different parsing is required.
478
+		if (is_array($type)) {
479
+			return $this->_get_wpdb_data_type_for_type_array($type);
480
+		}
481
+
482
+		$wpdb_type = '%s';
483
+		switch ($type) {
484
+			case 'number':
485
+				$wpdb_type = '%f';
486
+				break;
487
+			case 'integer':
488
+			case 'boolean':
489
+				$wpdb_type = '%d';
490
+				break;
491
+			case 'object':
492
+				$properties = $this->getSchemaProperties();
493
+				if (isset($properties['raw'], $properties['raw']['type'])) {
494
+					$wpdb_type = $this->_get_wpdb_data_type($properties['raw']['type']);
495
+				}
496
+				break; // leave at default
497
+		}
498
+		return $wpdb_type;
499
+	}
500
+
501
+
502
+
503
+	protected function _get_wpdb_data_type_for_type_array($type)
504
+	{
505
+		$type = (array) $type;
506
+		// first let's flip because then we can do a faster key check
507
+		$type = array_flip($type);
508
+
509
+		// check for things that mean '%s'
510
+		if (isset($type['string'], $type['object'], $type['array'])) {
511
+			return '%s';
512
+		}
513
+
514
+		// if makes it past the above condition and there's float in the array
515
+		// then the type is %f
516
+		if (isset($type['number'])) {
517
+			return '%f';
518
+		}
519
+
520
+		// if it makes it above the above conditions and there is an integer in the array
521
+		// then the type is %d
522
+		if (isset($type['integer'])) {
523
+			return '%d';
524
+		}
525
+
526
+		// anything else is a string
527
+		return '%s';
528
+	}
529
+
530
+
531
+	/**
532
+	 * This returns elements used to represent this field in the json schema.
533
+	 *
534
+	 * @link http://json-schema.org/
535
+	 * @return array
536
+	 */
537
+	public function getSchema()
538
+	{
539
+		$schema = array(
540
+			'description' => $this->getSchemaDescription(),
541
+			'type' => $this->getSchemaType(),
542
+			'readonly' => $this->getSchemaReadonly(),
543
+			'default' => $this->getSchemaDefault()
544
+		);
545
+
546
+		// optional properties of the schema
547
+		$enum = $this->getSchemaEnum();
548
+		$properties = $this->getSchemaProperties();
549
+		$format = $this->getSchemaFormat();
550
+		if ($enum) {
551
+			$schema['enum'] = $enum;
552
+		}
553
+
554
+		if ($properties) {
555
+			$schema['properties'] = $properties;
556
+		}
557
+
558
+		if ($format) {
559
+			$schema['format'] = $format;
560
+		}
561
+		return $schema;
562
+	}
563
+
564
+	/**
565
+	 * Some fields are in the database-only, (ie, used in queries etc), but shouldn't necessarily be part
566
+	 * of the model objects (ie, client code shouldn't care to ever see their value... if client code does
567
+	 * want to see their value, then they shouldn't be db-only fields!)
568
+	 * Eg, when doing events as custom post types, querying the post_type is essential, but
569
+	 * post_type is irrelevant for EE_Event objects (because they will ALL be of post_type 'esp_event').
570
+	 * By default, all fields aren't db-only.
571
+	 *
572
+	 * @return boolean
573
+	 */
574
+	public function is_db_only_field()
575
+	{
576
+		return false;
577
+	}
578
+
579
+
580
+	/**
581
+	 * Validates the incoming string|array to ensure its an allowable type.
582
+	 * @throws InvalidArgumentException
583
+	 * @param string|array $type
584
+	 */
585
+	private function validateSchemaType($type)
586
+	{
587
+		if (! (is_string($type) || is_array($type))) {
588
+			throw new InvalidArgumentException(
589
+				sprintf(
590
+					esc_html__('The incoming argument (%s) must be a string or an array.', 'event_espresso'),
591
+					print_r($type, true)
592
+				)
593
+			);
594
+		}
595
+
596
+		// validate allowable types.
597
+		// @link http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2
598
+		$allowable_types = array_flip(
599
+			array(
600
+				'string',
601
+				'number',
602
+				'null',
603
+				'object',
604
+				'array',
605
+				'boolean',
606
+				'integer'
607
+			)
608
+		);
609
+
610
+		if (is_array($type)) {
611
+			foreach ($type as $item_in_type) {
612
+				$this->validateSchemaType($item_in_type);
613
+			}
614
+			return;
615
+		}
616
+
617
+		if (! isset($allowable_types[ $type ])) {
618
+			throw new InvalidArgumentException(
619
+				sprintf(
620
+					esc_html__('The incoming argument (%1$s) must be one of the allowable types: %2$s', 'event_espresso'),
621
+					$type,
622
+					implode(',', array_flip($allowable_types))
623
+				)
624
+			);
625
+		}
626
+	}
627
+
628
+
629
+	/**
630
+	 * Validates that the incoming format is an allowable string to use for the _schema_format property
631
+	 * @throws InvalidArgumentException
632
+	 * @param $format
633
+	 */
634
+	private function validateSchemaFormat($format)
635
+	{
636
+		if (! is_string($format)) {
637
+			throw new InvalidArgumentException(
638
+				sprintf(
639
+					esc_html__('The incoming argument (%s) must be a string.', 'event_espresso'),
640
+					print_r($format, true)
641
+				)
642
+			);
643
+		}
644
+
645
+		// validate allowable format values
646
+		// @link http://json-schema.org/latest/json-schema-validation.html#rfc.section.7
647
+		$allowable_formats = array_flip(
648
+			array(
649
+				'date-time',
650
+				'email',
651
+				'hostname',
652
+				'ipv4',
653
+				'ipv6',
654
+				'uri',
655
+				'uriref'
656
+			)
657
+		);
658
+
659
+		if (! isset($allowable_formats[ $format ])) {
660
+			throw new InvalidArgumentException(
661
+				sprintf(
662
+					esc_html__('The incoming argument (%1$s) must be one of the allowable formats: %2$s', 'event_espresso'),
663
+					$format,
664
+					implode(',', array_flip($allowable_formats))
665
+				)
666
+			);
667
+		}
668
+	}
670 669
 }
Please login to merge, or discard this patch.