Completed
Branch BUG/use-noconflictmode-lodash (0756da)
by
unknown
15:54 queued 43s
created
core/db_classes/EE_Post_Meta.class.php 2 patches
Doc Comments   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
      * Sets meta_id
47 47
      *
48 48
      * @param int $meta_id
49
-     * @return boolean
49
+     * @return boolean|null
50 50
      */
51 51
     public function set_meta_id($meta_id)
52 52
     {
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
      * Sets post_id
69 69
      *
70 70
      * @param int $post_id
71
-     * @return boolean
71
+     * @return boolean|null
72 72
      */
73 73
     public function set_post_id($post_id)
74 74
     {
@@ -90,7 +90,7 @@  discard block
 block discarded – undo
90 90
      * Sets meta_key
91 91
      *
92 92
      * @param string $meta_key
93
-     * @return boolean
93
+     * @return boolean|null
94 94
      */
95 95
     public function set_meta_key($meta_key)
96 96
     {
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
      * Sets meta_value
113 113
      *
114 114
      * @param mixed $meta_value
115
-     * @return boolean
115
+     * @return boolean|null
116 116
      */
117 117
     public function set_meta_value($meta_value)
118 118
     {
Please login to merge, or discard this patch.
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -10,112 +10,112 @@
 block discarded – undo
10 10
 class EE_Post_Meta extends EE_Base_Class
11 11
 {
12 12
 
13
-    /**
14
-     * @param array $props_n_values
15
-     * @return EE_Post_Meta|mixed
16
-     */
17
-    public static function new_instance($props_n_values = array())
18
-    {
19
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
20
-        return $has_object ? $has_object : new self($props_n_values);
21
-    }
22
-
23
-
24
-    /**
25
-     * @param array $props_n_values
26
-     * @return EE_Post_Meta
27
-     */
28
-    public static function new_instance_from_db($props_n_values = array())
29
-    {
30
-        return new self($props_n_values, true);
31
-    }
32
-
33
-
34
-    /**
35
-     * Gets meta_id
36
-     *
37
-     * @return int
38
-     */
39
-    public function meta_id()
40
-    {
41
-        return $this->get('meta_id');
42
-    }
43
-
44
-
45
-    /**
46
-     * Sets meta_id
47
-     *
48
-     * @param int $meta_id
49
-     * @return boolean
50
-     */
51
-    public function set_meta_id($meta_id)
52
-    {
53
-        return $this->set('meta_id', $meta_id);
54
-    }
55
-
56
-    /**
57
-     * Gets post_id
58
-     *
59
-     * @return int
60
-     */
61
-    public function post_id()
62
-    {
63
-        return $this->get('post_id');
64
-    }
65
-
66
-
67
-    /**
68
-     * Sets post_id
69
-     *
70
-     * @param int $post_id
71
-     * @return boolean
72
-     */
73
-    public function set_post_id($post_id)
74
-    {
75
-        return $this->set('post_id', $post_id);
76
-    }
77
-
78
-    /**
79
-     * Gets meta_key
80
-     *
81
-     * @return string
82
-     */
83
-    public function meta_key()
84
-    {
85
-        return $this->get('meta_key');
86
-    }
87
-
88
-
89
-    /**
90
-     * Sets meta_key
91
-     *
92
-     * @param string $meta_key
93
-     * @return boolean
94
-     */
95
-    public function set_meta_key($meta_key)
96
-    {
97
-        return $this->set('meta_key', $meta_key);
98
-    }
99
-
100
-    /**
101
-     * Gets meta_value
102
-     *
103
-     * @return mixed
104
-     */
105
-    public function meta_value()
106
-    {
107
-        return $this->get('meta_value');
108
-    }
109
-
110
-
111
-    /**
112
-     * Sets meta_value
113
-     *
114
-     * @param mixed $meta_value
115
-     * @return boolean
116
-     */
117
-    public function set_meta_value($meta_value)
118
-    {
119
-        return $this->set('meta_value', $meta_value);
120
-    }
13
+	/**
14
+	 * @param array $props_n_values
15
+	 * @return EE_Post_Meta|mixed
16
+	 */
17
+	public static function new_instance($props_n_values = array())
18
+	{
19
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
20
+		return $has_object ? $has_object : new self($props_n_values);
21
+	}
22
+
23
+
24
+	/**
25
+	 * @param array $props_n_values
26
+	 * @return EE_Post_Meta
27
+	 */
28
+	public static function new_instance_from_db($props_n_values = array())
29
+	{
30
+		return new self($props_n_values, true);
31
+	}
32
+
33
+
34
+	/**
35
+	 * Gets meta_id
36
+	 *
37
+	 * @return int
38
+	 */
39
+	public function meta_id()
40
+	{
41
+		return $this->get('meta_id');
42
+	}
43
+
44
+
45
+	/**
46
+	 * Sets meta_id
47
+	 *
48
+	 * @param int $meta_id
49
+	 * @return boolean
50
+	 */
51
+	public function set_meta_id($meta_id)
52
+	{
53
+		return $this->set('meta_id', $meta_id);
54
+	}
55
+
56
+	/**
57
+	 * Gets post_id
58
+	 *
59
+	 * @return int
60
+	 */
61
+	public function post_id()
62
+	{
63
+		return $this->get('post_id');
64
+	}
65
+
66
+
67
+	/**
68
+	 * Sets post_id
69
+	 *
70
+	 * @param int $post_id
71
+	 * @return boolean
72
+	 */
73
+	public function set_post_id($post_id)
74
+	{
75
+		return $this->set('post_id', $post_id);
76
+	}
77
+
78
+	/**
79
+	 * Gets meta_key
80
+	 *
81
+	 * @return string
82
+	 */
83
+	public function meta_key()
84
+	{
85
+		return $this->get('meta_key');
86
+	}
87
+
88
+
89
+	/**
90
+	 * Sets meta_key
91
+	 *
92
+	 * @param string $meta_key
93
+	 * @return boolean
94
+	 */
95
+	public function set_meta_key($meta_key)
96
+	{
97
+		return $this->set('meta_key', $meta_key);
98
+	}
99
+
100
+	/**
101
+	 * Gets meta_value
102
+	 *
103
+	 * @return mixed
104
+	 */
105
+	public function meta_value()
106
+	{
107
+		return $this->get('meta_value');
108
+	}
109
+
110
+
111
+	/**
112
+	 * Sets meta_value
113
+	 *
114
+	 * @param mixed $meta_value
115
+	 * @return boolean
116
+	 */
117
+	public function set_meta_value($meta_value)
118
+	{
119
+		return $this->set('meta_value', $meta_value);
120
+	}
121 121
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Price.class.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@
 block discarded – undo
30 30
      * @param array  $props_n_values  incoming values from the database
31 31
      * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32 32
      *                                the website will be used.
33
-     * @return EE_Attendee
33
+     * @return EE_Price
34 34
      */
35 35
     public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36 36
     {
Please login to merge, or discard this patch.
Indentation   +286 added lines, -286 removed lines patch added patch discarded remove patch
@@ -10,290 +10,290 @@
 block discarded – undo
10 10
 class EE_Price extends EE_Soft_Delete_Base_Class
11 11
 {
12 12
 
13
-    /**
14
-     *
15
-     * @param array  $props_n_values          incoming values
16
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
17
-     *                                        used.)
18
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
19
-     *                                        date_format and the second value is the time format
20
-     * @return EE_Attendee
21
-     */
22
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
-    {
24
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
-    }
27
-
28
-
29
-    /**
30
-     * @param array  $props_n_values  incoming values from the database
31
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
-     *                                the website will be used.
33
-     * @return EE_Attendee
34
-     */
35
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
-    {
37
-        return new self($props_n_values, true, $timezone);
38
-    }
39
-
40
-
41
-    /**
42
-     *        Set Price type ID
43
-     *
44
-     * @access        public
45
-     * @param        int $PRT_ID
46
-     */
47
-    public function set_type($PRT_ID = 0)
48
-    {
49
-        $this->set('PRT_ID', $PRT_ID);
50
-    }
51
-
52
-
53
-    /**
54
-     *        Set Price Amount
55
-     *
56
-     * @access        public
57
-     * @param        float $PRC_amount
58
-     */
59
-    public function set_amount($PRC_amount = 0.00)
60
-    {
61
-        $this->set('PRC_amount', $PRC_amount);
62
-    }
63
-
64
-
65
-    /**
66
-     *        Set Price Name
67
-     *
68
-     * @access        public
69
-     * @param        string $PRC_name
70
-     */
71
-    public function set_name($PRC_name = '')
72
-    {
73
-        $this->set('PRC_name', $PRC_name);
74
-    }
75
-
76
-
77
-    /**
78
-     *        Set Price Description
79
-     *
80
-     * @access        public
81
-     * @param        string $PRC_desc
82
-     */
83
-    public function set_description($PRC_desc = '')
84
-    {
85
-        $this->Set('PRC_desc', $PRC_desc);
86
-    }
87
-
88
-
89
-    /**
90
-     *        set is_default
91
-     *
92
-     * @access        public
93
-     * @param        bool $PRC_is_default
94
-     */
95
-    public function set_is_default($PRC_is_default = false)
96
-    {
97
-        $this->set('PRC_is_default', $PRC_is_default);
98
-    }
99
-
100
-
101
-    /**
102
-     *        set deleted
103
-     *
104
-     * @access        public
105
-     * @param        bool $PRC_deleted
106
-     */
107
-    public function set_deleted($PRC_deleted = null)
108
-    {
109
-        $this->set('PRC_deleted', $PRC_deleted);
110
-    }
111
-
112
-
113
-    /**
114
-     *    get Price type
115
-     *
116
-     * @access        public
117
-     * @return        int
118
-     */
119
-    public function type()
120
-    {
121
-        return $this->get('PRT_ID');
122
-    }
123
-
124
-
125
-    /**
126
-     *    get Price Amount
127
-     *
128
-     * @access        public
129
-     * @return        float
130
-     */
131
-    public function amount()
132
-    {
133
-        return $this->get('PRC_amount');
134
-    }
135
-
136
-
137
-    /**
138
-     *    get Price Name
139
-     *
140
-     * @access        public
141
-     * @return        string
142
-     */
143
-    public function name()
144
-    {
145
-        return $this->get('PRC_name');
146
-    }
147
-
148
-
149
-    /**
150
-     *    get Price description
151
-     *
152
-     * @access        public
153
-     * @return        string
154
-     */
155
-    public function desc()
156
-    {
157
-        return $this->get('PRC_desc');
158
-    }
159
-
160
-
161
-    /**
162
-     *    get overrides
163
-     *
164
-     * @access        public
165
-     * @return        int
166
-     */
167
-    public function overrides()
168
-    {
169
-        return $this->get('PRC_overrides');
170
-    }
171
-
172
-
173
-    /**
174
-     *    get order
175
-     *
176
-     * @access        public
177
-     * @return        int
178
-     */
179
-    public function order()
180
-    {
181
-        return $this->get('PRC_order');
182
-    }
183
-
184
-
185
-    /**
186
-     * get the author of the price
187
-     *
188
-     * @since 4.5.0
189
-     *
190
-     * @return int
191
-     */
192
-    public function wp_user()
193
-    {
194
-        return $this->get('PRC_wp_user');
195
-    }
196
-
197
-
198
-    /**
199
-     *    get is_default
200
-     *
201
-     * @access        public
202
-     * @return        bool
203
-     */
204
-    public function is_default()
205
-    {
206
-        return $this->get('PRC_is_default');
207
-    }
208
-
209
-
210
-    /**
211
-     *    get deleted
212
-     *
213
-     * @access        public
214
-     * @return        bool
215
-     */
216
-    public function deleted()
217
-    {
218
-        return $this->get('PRC_deleted');
219
-    }
220
-
221
-
222
-    /**
223
-     * @return bool
224
-     */
225
-    public function parent()
226
-    {
227
-        return $this->get('PRC_parent');
228
-    }
229
-
230
-
231
-    // some helper methods for getting info on the price_type for this price
232
-
233
-    /**
234
-     * return whether the price is a base price or not
235
-     *
236
-     * @return boolean
237
-     */
238
-    public function is_base_price()
239
-    {
240
-        $price_type = $this->type_obj();
241
-        return $price_type->base_type() === 1;
242
-    }
243
-
244
-
245
-    /**
246
-     *
247
-     * @return EE_Price_Type
248
-     */
249
-    public function type_obj()
250
-    {
251
-        return $this->get_first_related('Price_Type');
252
-    }
253
-
254
-
255
-    /**
256
-     * Simply indicates whether this price increases or decreases the total
257
-     *
258
-     * @return boolean true = discount, otherwise adds to the total
259
-     */
260
-    public function is_discount()
261
-    {
262
-        $price_type = $this->type_obj();
263
-        return $price_type->is_discount();
264
-    }
265
-
266
-
267
-    /**
268
-     * whether the price is a percentage or not
269
-     *
270
-     * @return boolean
271
-     */
272
-    public function is_percent()
273
-    {
274
-        $price_type = $this->type_obj();
275
-        return $price_type->get('PRT_is_percent');
276
-    }
277
-
278
-
279
-    /**
280
-     * return pretty price dependant on whether its a dollar or percent.
281
-     *
282
-     * @since 4.4.0
283
-     *
284
-     * @return string
285
-     */
286
-    public function pretty_price()
287
-    {
288
-        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
289
-    }
290
-
291
-
292
-    /**
293
-     * @return mixed
294
-     */
295
-    public function get_price_without_currency_symbol()
296
-    {
297
-        return str_replace(EE_Registry::instance()->CFG->currency->sign, '', $this->get_pretty('PRC_amount'));
298
-    }
13
+	/**
14
+	 *
15
+	 * @param array  $props_n_values          incoming values
16
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
17
+	 *                                        used.)
18
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
19
+	 *                                        date_format and the second value is the time format
20
+	 * @return EE_Attendee
21
+	 */
22
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
+	{
24
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
+	}
27
+
28
+
29
+	/**
30
+	 * @param array  $props_n_values  incoming values from the database
31
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
+	 *                                the website will be used.
33
+	 * @return EE_Attendee
34
+	 */
35
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
+	{
37
+		return new self($props_n_values, true, $timezone);
38
+	}
39
+
40
+
41
+	/**
42
+	 *        Set Price type ID
43
+	 *
44
+	 * @access        public
45
+	 * @param        int $PRT_ID
46
+	 */
47
+	public function set_type($PRT_ID = 0)
48
+	{
49
+		$this->set('PRT_ID', $PRT_ID);
50
+	}
51
+
52
+
53
+	/**
54
+	 *        Set Price Amount
55
+	 *
56
+	 * @access        public
57
+	 * @param        float $PRC_amount
58
+	 */
59
+	public function set_amount($PRC_amount = 0.00)
60
+	{
61
+		$this->set('PRC_amount', $PRC_amount);
62
+	}
63
+
64
+
65
+	/**
66
+	 *        Set Price Name
67
+	 *
68
+	 * @access        public
69
+	 * @param        string $PRC_name
70
+	 */
71
+	public function set_name($PRC_name = '')
72
+	{
73
+		$this->set('PRC_name', $PRC_name);
74
+	}
75
+
76
+
77
+	/**
78
+	 *        Set Price Description
79
+	 *
80
+	 * @access        public
81
+	 * @param        string $PRC_desc
82
+	 */
83
+	public function set_description($PRC_desc = '')
84
+	{
85
+		$this->Set('PRC_desc', $PRC_desc);
86
+	}
87
+
88
+
89
+	/**
90
+	 *        set is_default
91
+	 *
92
+	 * @access        public
93
+	 * @param        bool $PRC_is_default
94
+	 */
95
+	public function set_is_default($PRC_is_default = false)
96
+	{
97
+		$this->set('PRC_is_default', $PRC_is_default);
98
+	}
99
+
100
+
101
+	/**
102
+	 *        set deleted
103
+	 *
104
+	 * @access        public
105
+	 * @param        bool $PRC_deleted
106
+	 */
107
+	public function set_deleted($PRC_deleted = null)
108
+	{
109
+		$this->set('PRC_deleted', $PRC_deleted);
110
+	}
111
+
112
+
113
+	/**
114
+	 *    get Price type
115
+	 *
116
+	 * @access        public
117
+	 * @return        int
118
+	 */
119
+	public function type()
120
+	{
121
+		return $this->get('PRT_ID');
122
+	}
123
+
124
+
125
+	/**
126
+	 *    get Price Amount
127
+	 *
128
+	 * @access        public
129
+	 * @return        float
130
+	 */
131
+	public function amount()
132
+	{
133
+		return $this->get('PRC_amount');
134
+	}
135
+
136
+
137
+	/**
138
+	 *    get Price Name
139
+	 *
140
+	 * @access        public
141
+	 * @return        string
142
+	 */
143
+	public function name()
144
+	{
145
+		return $this->get('PRC_name');
146
+	}
147
+
148
+
149
+	/**
150
+	 *    get Price description
151
+	 *
152
+	 * @access        public
153
+	 * @return        string
154
+	 */
155
+	public function desc()
156
+	{
157
+		return $this->get('PRC_desc');
158
+	}
159
+
160
+
161
+	/**
162
+	 *    get overrides
163
+	 *
164
+	 * @access        public
165
+	 * @return        int
166
+	 */
167
+	public function overrides()
168
+	{
169
+		return $this->get('PRC_overrides');
170
+	}
171
+
172
+
173
+	/**
174
+	 *    get order
175
+	 *
176
+	 * @access        public
177
+	 * @return        int
178
+	 */
179
+	public function order()
180
+	{
181
+		return $this->get('PRC_order');
182
+	}
183
+
184
+
185
+	/**
186
+	 * get the author of the price
187
+	 *
188
+	 * @since 4.5.0
189
+	 *
190
+	 * @return int
191
+	 */
192
+	public function wp_user()
193
+	{
194
+		return $this->get('PRC_wp_user');
195
+	}
196
+
197
+
198
+	/**
199
+	 *    get is_default
200
+	 *
201
+	 * @access        public
202
+	 * @return        bool
203
+	 */
204
+	public function is_default()
205
+	{
206
+		return $this->get('PRC_is_default');
207
+	}
208
+
209
+
210
+	/**
211
+	 *    get deleted
212
+	 *
213
+	 * @access        public
214
+	 * @return        bool
215
+	 */
216
+	public function deleted()
217
+	{
218
+		return $this->get('PRC_deleted');
219
+	}
220
+
221
+
222
+	/**
223
+	 * @return bool
224
+	 */
225
+	public function parent()
226
+	{
227
+		return $this->get('PRC_parent');
228
+	}
229
+
230
+
231
+	// some helper methods for getting info on the price_type for this price
232
+
233
+	/**
234
+	 * return whether the price is a base price or not
235
+	 *
236
+	 * @return boolean
237
+	 */
238
+	public function is_base_price()
239
+	{
240
+		$price_type = $this->type_obj();
241
+		return $price_type->base_type() === 1;
242
+	}
243
+
244
+
245
+	/**
246
+	 *
247
+	 * @return EE_Price_Type
248
+	 */
249
+	public function type_obj()
250
+	{
251
+		return $this->get_first_related('Price_Type');
252
+	}
253
+
254
+
255
+	/**
256
+	 * Simply indicates whether this price increases or decreases the total
257
+	 *
258
+	 * @return boolean true = discount, otherwise adds to the total
259
+	 */
260
+	public function is_discount()
261
+	{
262
+		$price_type = $this->type_obj();
263
+		return $price_type->is_discount();
264
+	}
265
+
266
+
267
+	/**
268
+	 * whether the price is a percentage or not
269
+	 *
270
+	 * @return boolean
271
+	 */
272
+	public function is_percent()
273
+	{
274
+		$price_type = $this->type_obj();
275
+		return $price_type->get('PRT_is_percent');
276
+	}
277
+
278
+
279
+	/**
280
+	 * return pretty price dependant on whether its a dollar or percent.
281
+	 *
282
+	 * @since 4.4.0
283
+	 *
284
+	 * @return string
285
+	 */
286
+	public function pretty_price()
287
+	{
288
+		return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
289
+	}
290
+
291
+
292
+	/**
293
+	 * @return mixed
294
+	 */
295
+	public function get_price_without_currency_symbol()
296
+	{
297
+		return str_replace(EE_Registry::instance()->CFG->currency->sign, '', $this->get_pretty('PRC_amount'));
298
+	}
299 299
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -285,7 +285,7 @@
 block discarded – undo
285 285
      */
286 286
     public function pretty_price()
287 287
     {
288
-        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount') . '%';
288
+        return ! $this->is_percent() ? $this->get_pretty('PRC_amount') : $this->get('PRC_amount').'%';
289 289
     }
290 290
 
291 291
 
Please login to merge, or discard this patch.
core/db_classes/EE_Question.class.php 3 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -371,7 +371,7 @@  discard block
 block discarded – undo
371 371
      * Question, that relationship will be overwritten.
372 372
      *
373 373
      * @param EE_Question_Option $option
374
-     * @return boolean success
374
+     * @return EE_Base_Class success
375 375
      */
376 376
     public function add_option(EE_Question_Option $option)
377 377
     {
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
      * Marks the option as deleted.
397 397
      *
398 398
      * @param EE_Question_Option $option
399
-     * @return boolean success
399
+     * @return EE_Base_Class success
400 400
      */
401 401
     public function remove_option(EE_Question_Option $option)
402 402
     {
Please login to merge, or discard this patch.
Indentation   +657 added lines, -657 removed lines patch added patch discarded remove patch
@@ -12,661 +12,661 @@
 block discarded – undo
12 12
 class EE_Question extends EE_Soft_Delete_Base_Class implements EEI_Duplicatable
13 13
 {
14 14
 
15
-    /**
16
-     *
17
-     * @param array  $props_n_values          incoming values
18
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
19
-     *                                        used.)
20
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
21
-     *                                        date_format and the second value is the time format
22
-     * @return EE_Question
23
-     */
24
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
25
-    {
26
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
27
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
28
-    }
29
-
30
-
31
-    /**
32
-     * @param array  $props_n_values  incoming values from the database
33
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
34
-     *                                the website will be used.
35
-     * @return EE_Question
36
-     */
37
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
38
-    {
39
-        return new self($props_n_values, true, $timezone);
40
-    }
41
-
42
-
43
-    /**
44
-     *        Set    Question display text
45
-     *
46
-     * @access        public
47
-     * @param string $QST_display_text
48
-     */
49
-    public function set_display_text($QST_display_text = '')
50
-    {
51
-        $this->set('QST_display_text', $QST_display_text);
52
-    }
53
-
54
-
55
-    /**
56
-     *        Set    Question admin text
57
-     *
58
-     * @access        public
59
-     * @param        string $QST_admin_label
60
-     */
61
-    public function set_admin_label($QST_admin_label = '')
62
-    {
63
-        $this->set('QST_admin_label', $QST_admin_label);
64
-    }
65
-
66
-
67
-    /**
68
-     *        Set    system name
69
-     *
70
-     * @access        public
71
-     * @param        mixed $QST_system
72
-     */
73
-    public function set_system_ID($QST_system = '')
74
-    {
75
-        $this->set('QST_system', $QST_system);
76
-    }
77
-
78
-
79
-    /**
80
-     *        Set    question's type
81
-     *
82
-     * @access        public
83
-     * @param        string $QST_type
84
-     */
85
-    public function set_question_type($QST_type = '')
86
-    {
87
-        $this->set('QST_type', $QST_type);
88
-    }
89
-
90
-
91
-    /**
92
-     *        Sets whether this question must be answered when presented in a form
93
-     *
94
-     * @access        public
95
-     * @param        bool $QST_required
96
-     */
97
-    public function set_required($QST_required = false)
98
-    {
99
-        $this->set('QST_required', $QST_required);
100
-    }
101
-
102
-
103
-    /**
104
-     *        Set    Question display text
105
-     *
106
-     * @access        public
107
-     * @param        string $QST_required_text
108
-     */
109
-    public function set_required_text($QST_required_text = '')
110
-    {
111
-        $this->set('QST_required_text', $QST_required_text);
112
-    }
113
-
114
-
115
-    /**
116
-     *        Sets the order of this question when placed in a sequence of questions
117
-     *
118
-     * @access        public
119
-     * @param        int $QST_order
120
-     */
121
-    public function set_order($QST_order = 0)
122
-    {
123
-        $this->set('QST_order', $QST_order);
124
-    }
125
-
126
-
127
-    /**
128
-     *        Sets whether the question is admin-only
129
-     *
130
-     * @access        public
131
-     * @param        bool $QST_admin_only
132
-     */
133
-    public function set_admin_only($QST_admin_only = false)
134
-    {
135
-        $this->set('QST_admin_only', $QST_admin_only);
136
-    }
137
-
138
-
139
-    /**
140
-     *        Sets the wordpress user ID on the question
141
-     *
142
-     * @access        public
143
-     * @param        int $QST_wp_user
144
-     */
145
-    public function set_wp_user($QST_wp_user = 1)
146
-    {
147
-        $this->set('QST_wp_user', $QST_wp_user);
148
-    }
149
-
150
-
151
-    /**
152
-     *        Sets whether the question has been deleted
153
-     *        (we use this boolean instead of actually
154
-     *        deleting it because when users delete this question
155
-     *        they really want to remove the question from future
156
-     *        forms, BUT keep their old answers which depend
157
-     *        on this record actually existing.
158
-     *
159
-     * @access        public
160
-     * @param    bool $QST_deleted
161
-     */
162
-    public function set_deleted($QST_deleted = false)
163
-    {
164
-        $this->set('QST_deleted', $QST_deleted);
165
-    }
166
-
167
-
168
-    /**
169
-     * returns the text for displaying the question to users
170
-     *
171
-     * @access public
172
-     * @return string
173
-     */
174
-    public function display_text()
175
-    {
176
-        return $this->get('QST_display_text');
177
-    }
178
-
179
-
180
-    /**
181
-     * returns the text for the administrative label
182
-     *
183
-     * @access public
184
-     * @return string
185
-     */
186
-    public function admin_label()
187
-    {
188
-        return $this->get('QST_admin_label');
189
-    }
190
-
191
-
192
-    /**
193
-     * returns the attendee column name for this question
194
-     *
195
-     * @access public
196
-     * @return string
197
-     */
198
-    public function system_ID()
199
-    {
200
-        return $this->get('QST_system');
201
-    }
202
-
203
-
204
-    /**
205
-     * returns either a string of 'text', 'textfield', etc.
206
-     *
207
-     * @access public
208
-     * @return boolean
209
-     */
210
-    public function required()
211
-    {
212
-        return $this->get('QST_required');
213
-    }
214
-
215
-
216
-    /**
217
-     * returns the text which should be displayed when a user
218
-     * doesn't answer this question in a form
219
-     *
220
-     * @access public
221
-     * @return string
222
-     */
223
-    public function required_text()
224
-    {
225
-        return $this->get('QST_required_text');
226
-    }
227
-
228
-
229
-    /**
230
-     * returns the type of this question
231
-     *
232
-     * @access public
233
-     * @return string
234
-     */
235
-    public function type()
236
-    {
237
-        return $this->get('QST_type');
238
-    }
239
-
240
-
241
-    /**
242
-     * returns an integer showing where this question should
243
-     * be placed in a sequence of questions
244
-     *
245
-     * @access public
246
-     * @return int
247
-     */
248
-    public function order()
249
-    {
250
-        return $this->get('QST_order');
251
-    }
252
-
253
-
254
-    /**
255
-     * returns whether this question should only appears to admins,
256
-     * or to everyone
257
-     *
258
-     * @access public
259
-     * @return boolean
260
-     */
261
-    public function admin_only()
262
-    {
263
-        return $this->get('QST_admin_only');
264
-    }
265
-
266
-
267
-    /**
268
-     * returns the id the wordpress user who created this question
269
-     *
270
-     * @access public
271
-     * @return int
272
-     */
273
-    public function wp_user()
274
-    {
275
-        return $this->get('QST_wp_user');
276
-    }
277
-
278
-
279
-    /**
280
-     * returns whether this question has been marked as 'deleted'
281
-     *
282
-     * @access public
283
-     * @return boolean
284
-     */
285
-    public function deleted()
286
-    {
287
-        return $this->get('QST_deleted');
288
-    }
289
-
290
-
291
-    /**
292
-     * Gets an array of related EE_Answer  to this EE_Question
293
-     *
294
-     * @return EE_Answer[]
295
-     */
296
-    public function answers()
297
-    {
298
-        return $this->get_many_related('Answer');
299
-    }
300
-
301
-
302
-    /**
303
-     * Boolean check for if there are answers on this question in th db
304
-     *
305
-     * @return boolean true = has answers, false = no answers.
306
-     */
307
-    public function has_answers()
308
-    {
309
-        return $this->count_related('Answer') > 0 ? true : false;
310
-    }
311
-
312
-
313
-    /**
314
-     * gets an array of EE_Question_Group which relate to this question
315
-     *
316
-     * @return EE_Question_Group[]
317
-     */
318
-    public function question_groups()
319
-    {
320
-        return $this->get_many_related('Question_Group');
321
-    }
322
-
323
-
324
-    /**
325
-     * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
326
-     *
327
-     * @param boolean      $notDeletedOptionsOnly            1
328
-     *                                                       whether to return ALL options, or only the ones which have
329
-     *                                                       not yet been deleleted
330
-     * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
331
-     *                                                       we want to usually only show non-deleted options AND the
332
-     *                                                       value that was selected for the answer, whether it was
333
-     *                                                       trashed or not.
334
-     * @return EE_Question_Option[]
335
-     */
336
-    public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
337
-    {
338
-        if (! $this->ID()) {
339
-            return array();
340
-        }
341
-        $query_params = array();
342
-        if ($selected_value_to_always_include) {
343
-            if (is_array($selected_value_to_always_include)) {
344
-                $query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
345
-            } else {
346
-                $query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
347
-            }
348
-        }
349
-        if ($notDeletedOptionsOnly) {
350
-            $query_params[0]['OR*options-query']['QSO_deleted'] = false;
351
-        }
352
-        // order by QSO_order
353
-        $query_params['order_by'] = array('QSO_order' => 'ASC');
354
-        return $this->get_many_related('Question_Option', $query_params);
355
-    }
356
-
357
-
358
-    /**
359
-     * returns an array of EE_Question_Options which relate to this question
360
-     *
361
-     * @return \EE_Question_Option[]
362
-     */
363
-    public function temp_options()
364
-    {
365
-        return $this->_model_relations['Question_Option'];
366
-    }
367
-
368
-
369
-    /**
370
-     * Adds an option for this question. Note: if the option were previously associated with a different
371
-     * Question, that relationship will be overwritten.
372
-     *
373
-     * @param EE_Question_Option $option
374
-     * @return boolean success
375
-     */
376
-    public function add_option(EE_Question_Option $option)
377
-    {
378
-        return $this->_add_relation_to($option, 'Question_Option');
379
-    }
380
-
381
-
382
-    /**
383
-     * Adds an option directly to this question without saving to the db
384
-     *
385
-     * @param EE_Question_Option $option
386
-     * @return boolean success
387
-     */
388
-    public function add_temp_option(EE_Question_Option $option)
389
-    {
390
-        $this->_model_relations['Question_Option'][] = $option;
391
-        return true;
392
-    }
393
-
394
-
395
-    /**
396
-     * Marks the option as deleted.
397
-     *
398
-     * @param EE_Question_Option $option
399
-     * @return boolean success
400
-     */
401
-    public function remove_option(EE_Question_Option $option)
402
-    {
403
-        return $this->_remove_relation_to($option, 'Question_Option');
404
-    }
405
-
406
-
407
-    /**
408
-     * @return bool
409
-     */
410
-    public function is_system_question()
411
-    {
412
-        $system_ID = $this->get('QST_system');
413
-        return ! empty($system_ID) ? true : false;
414
-    }
415
-
416
-
417
-    /**
418
-     * The purpose of this method is set the question order this question order to be the max out of all questions
419
-     *
420
-     * @access public
421
-     * @return void
422
-     */
423
-    public function set_order_to_latest()
424
-    {
425
-        $latest_order = $this->get_model()->get_latest_question_order();
426
-        $latest_order++;
427
-        $this->set('QST_order', $latest_order);
428
-    }
429
-
430
-
431
-    /**
432
-     * Retrieves the list of allowed question types from the model.
433
-     *
434
-     * @return string[]
435
-     */
436
-    private function _allowed_question_types()
437
-    {
438
-        $questionModel = $this->get_model();
439
-        /* @var $questionModel EEM_Question */
440
-        return $questionModel->allowed_question_types();
441
-    }
442
-
443
-    /**
444
-     * Duplicates this question and its question options
445
-     *
446
-     * @return \EE_Question
447
-     */
448
-    public function duplicate($options = array())
449
-    {
450
-        $new_question = clone $this;
451
-        $new_question->set('QST_ID', null);
452
-        $new_question->set_display_text(sprintf(__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
453
-        $new_question->set_admin_label(sprintf(__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
454
-        $new_question->set_system_ID(null);
455
-        $new_question->set_wp_user(get_current_user_id());
456
-        // if we're duplicating a trashed question, assume we don't want the new one to be trashed
457
-        $new_question->set_deleted(false);
458
-        $success = $new_question->save();
459
-        if ($success) {
460
-            // we don't totally want to duplicate the question options, because we want them to be for the NEW question
461
-            foreach ($this->options() as $question_option) {
462
-                $question_option->duplicate(array('QST_ID' => $new_question->ID()));
463
-            }
464
-            return $new_question;
465
-        } else {
466
-            return null;
467
-        }
468
-    }
469
-
470
-    /**
471
-     * Returns the question's maximum allowed response size
472
-     *
473
-     * @return int|float
474
-     */
475
-    public function max()
476
-    {
477
-        return $this->get('QST_max');
478
-    }
479
-
480
-    /**
481
-     * Sets the question's maximum allowed response size
482
-     *
483
-     * @param int|float $new_max
484
-     * @return void
485
-     */
486
-    public function set_max($new_max)
487
-    {
488
-        $this->set('QST_max', $new_max);
489
-    }
490
-
491
-
492
-    /**
493
-     * Creates a form input from this question which can be used in HTML forms
494
-     *
495
-     * @param EE_Registration $registration
496
-     * @param EE_Answer       $answer
497
-     * @param array           $input_constructor_args
498
-     * @return EE_Form_Input_Base
499
-     */
500
-    public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
501
-    {
502
-        $identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
503
-
504
-        $input_constructor_args = array_merge(
505
-            array(
506
-                'required'                          => $this->required() ? true : false,
507
-                'html_label_text'                   => $this->display_text(),
508
-                'required_validation_error_message' => $this->required_text(),
509
-            ),
510
-            $input_constructor_args
511
-        );
512
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
513
-            $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
514
-        }
515
-        // has this question been answered ?
516
-        if ($answer instanceof EE_Answer
517
-            && $answer->value() !== ''
518
-        ) {
519
-            // answer gets htmlspecialchars called on it, undo that please
520
-            // because the form input's display strategy may call esc_attr too
521
-            // which also does html special characters
522
-            $values_with_html_special_chars = $answer->value();
523
-            if (is_array($values_with_html_special_chars)) {
524
-                $default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
525
-            } else {
526
-                $default_value = htmlspecialchars_decode($values_with_html_special_chars);
527
-            }
528
-            $input_constructor_args['default'] = $default_value;
529
-        }
530
-        $max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
531
-        if (in_array(
532
-            $this->type(),
533
-            EEM_Question::instance()->questionTypesWithMaxLength(),
534
-            true
535
-        )) {
536
-            $input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
537
-                null,
538
-                min($max_max_for_question, $this->max())
539
-            );
540
-        }
541
-        $input_constructor_args = apply_filters(
542
-            'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
543
-            $input_constructor_args,
544
-            $registration,
545
-            $this,
546
-            $answer
547
-        );
548
-
549
-        $result = null;
550
-        switch ($this->type()) {
551
-            // Text
552
-            case EEM_Question::QST_type_text:
553
-                $result = new EE_Text_Input($input_constructor_args);
554
-                break;
555
-            // Textarea
556
-            case EEM_Question::QST_type_textarea:
557
-                $result = new EE_Text_Area_Input($input_constructor_args);
558
-                break;
559
-            // Radio Buttons
560
-            case EEM_Question::QST_type_radio:
561
-                $result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
562
-                break;
563
-            // Dropdown
564
-            case EEM_Question::QST_type_dropdown:
565
-                $result = new EE_Select_Input($this->options(), $input_constructor_args);
566
-                break;
567
-            // State Dropdown
568
-            case EEM_Question::QST_type_state:
569
-                $state_options = apply_filters(
570
-                    'FHEE__EE_Question__generate_form_input__state_options',
571
-                    null,
572
-                    $this,
573
-                    $registration,
574
-                    $answer
575
-                );
576
-                $result = new EE_State_Select_Input($state_options, $input_constructor_args);
577
-                break;
578
-            // Country Dropdown
579
-            case EEM_Question::QST_type_country:
580
-                $country_options = apply_filters(
581
-                    'FHEE__EE_Question__generate_form_input__country_options',
582
-                    null,
583
-                    $this,
584
-                    $registration,
585
-                    $answer
586
-                );
587
-                $result = new EE_Country_Select_Input($country_options, $input_constructor_args);
588
-                break;
589
-            // Checkboxes
590
-            case EEM_Question::QST_type_checkbox:
591
-                $result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
592
-                break;
593
-            // Date
594
-            case EEM_Question::QST_type_date:
595
-                $result = new EE_Datepicker_Input($input_constructor_args);
596
-                break;
597
-            case EEM_Question::QST_type_html_textarea:
598
-                $input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
599
-                $result = new EE_Text_Area_Input($input_constructor_args);
600
-                $result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
601
-                break;
602
-            case EEM_Question::QST_type_email:
603
-                $result = new EE_Email_Input($input_constructor_args);
604
-                break;
605
-            case EEM_Question::QST_type_us_phone:
606
-                $result = new EE_Phone_Input($input_constructor_args);
607
-                break;
608
-            case EEM_Question::QST_type_int:
609
-                $result = new EE_Integer_Input($input_constructor_args);
610
-                break;
611
-            case EEM_Question::QST_type_decimal:
612
-                $result = new EE_Float_Input($input_constructor_args);
613
-                break;
614
-            case EEM_Question::QST_type_url:
615
-                $input_constructor_args['validation_strategies'][] = new EE_URL_Validation_Strategy();
616
-                $result = new EE_Text_Input($input_constructor_args);
617
-                break;
618
-            case EEM_Question::QST_type_year:
619
-                $result = new EE_Year_Input(
620
-                    $input_constructor_args,
621
-                    apply_filters(
622
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
623
-                        true,
624
-                        $this
625
-                    ),
626
-                    apply_filters(
627
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
628
-                        100,
629
-                        $this
630
-                    ),
631
-                    apply_filters(
632
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
633
-                        100,
634
-                        $this
635
-                    )
636
-                );
637
-                break;
638
-            case EEM_Question::QST_type_multi_select:
639
-                $result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
640
-                break;
641
-            // fallback
642
-            default:
643
-                $default_input = apply_filters(
644
-                    'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
645
-                    null,
646
-                    $this->type(),
647
-                    $this,
648
-                    $input_constructor_args
649
-                );
650
-                if (! $default_input) {
651
-                    $default_input = new EE_Text_Input($input_constructor_args);
652
-                }
653
-                $result = $default_input;
654
-        }
655
-        return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
656
-    }
657
-
658
-
659
-    /**
660
-     * Returns whether or not this question type should have question option entries
661
-     *
662
-     * @return bool
663
-     */
664
-    public function should_have_question_options()
665
-    {
666
-        return in_array(
667
-            $this->type(),
668
-            $this->_model->question_types_with_options(),
669
-            true
670
-        );
671
-    }
15
+	/**
16
+	 *
17
+	 * @param array  $props_n_values          incoming values
18
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
19
+	 *                                        used.)
20
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
21
+	 *                                        date_format and the second value is the time format
22
+	 * @return EE_Question
23
+	 */
24
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
25
+	{
26
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
27
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
28
+	}
29
+
30
+
31
+	/**
32
+	 * @param array  $props_n_values  incoming values from the database
33
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
34
+	 *                                the website will be used.
35
+	 * @return EE_Question
36
+	 */
37
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
38
+	{
39
+		return new self($props_n_values, true, $timezone);
40
+	}
41
+
42
+
43
+	/**
44
+	 *        Set    Question display text
45
+	 *
46
+	 * @access        public
47
+	 * @param string $QST_display_text
48
+	 */
49
+	public function set_display_text($QST_display_text = '')
50
+	{
51
+		$this->set('QST_display_text', $QST_display_text);
52
+	}
53
+
54
+
55
+	/**
56
+	 *        Set    Question admin text
57
+	 *
58
+	 * @access        public
59
+	 * @param        string $QST_admin_label
60
+	 */
61
+	public function set_admin_label($QST_admin_label = '')
62
+	{
63
+		$this->set('QST_admin_label', $QST_admin_label);
64
+	}
65
+
66
+
67
+	/**
68
+	 *        Set    system name
69
+	 *
70
+	 * @access        public
71
+	 * @param        mixed $QST_system
72
+	 */
73
+	public function set_system_ID($QST_system = '')
74
+	{
75
+		$this->set('QST_system', $QST_system);
76
+	}
77
+
78
+
79
+	/**
80
+	 *        Set    question's type
81
+	 *
82
+	 * @access        public
83
+	 * @param        string $QST_type
84
+	 */
85
+	public function set_question_type($QST_type = '')
86
+	{
87
+		$this->set('QST_type', $QST_type);
88
+	}
89
+
90
+
91
+	/**
92
+	 *        Sets whether this question must be answered when presented in a form
93
+	 *
94
+	 * @access        public
95
+	 * @param        bool $QST_required
96
+	 */
97
+	public function set_required($QST_required = false)
98
+	{
99
+		$this->set('QST_required', $QST_required);
100
+	}
101
+
102
+
103
+	/**
104
+	 *        Set    Question display text
105
+	 *
106
+	 * @access        public
107
+	 * @param        string $QST_required_text
108
+	 */
109
+	public function set_required_text($QST_required_text = '')
110
+	{
111
+		$this->set('QST_required_text', $QST_required_text);
112
+	}
113
+
114
+
115
+	/**
116
+	 *        Sets the order of this question when placed in a sequence of questions
117
+	 *
118
+	 * @access        public
119
+	 * @param        int $QST_order
120
+	 */
121
+	public function set_order($QST_order = 0)
122
+	{
123
+		$this->set('QST_order', $QST_order);
124
+	}
125
+
126
+
127
+	/**
128
+	 *        Sets whether the question is admin-only
129
+	 *
130
+	 * @access        public
131
+	 * @param        bool $QST_admin_only
132
+	 */
133
+	public function set_admin_only($QST_admin_only = false)
134
+	{
135
+		$this->set('QST_admin_only', $QST_admin_only);
136
+	}
137
+
138
+
139
+	/**
140
+	 *        Sets the wordpress user ID on the question
141
+	 *
142
+	 * @access        public
143
+	 * @param        int $QST_wp_user
144
+	 */
145
+	public function set_wp_user($QST_wp_user = 1)
146
+	{
147
+		$this->set('QST_wp_user', $QST_wp_user);
148
+	}
149
+
150
+
151
+	/**
152
+	 *        Sets whether the question has been deleted
153
+	 *        (we use this boolean instead of actually
154
+	 *        deleting it because when users delete this question
155
+	 *        they really want to remove the question from future
156
+	 *        forms, BUT keep their old answers which depend
157
+	 *        on this record actually existing.
158
+	 *
159
+	 * @access        public
160
+	 * @param    bool $QST_deleted
161
+	 */
162
+	public function set_deleted($QST_deleted = false)
163
+	{
164
+		$this->set('QST_deleted', $QST_deleted);
165
+	}
166
+
167
+
168
+	/**
169
+	 * returns the text for displaying the question to users
170
+	 *
171
+	 * @access public
172
+	 * @return string
173
+	 */
174
+	public function display_text()
175
+	{
176
+		return $this->get('QST_display_text');
177
+	}
178
+
179
+
180
+	/**
181
+	 * returns the text for the administrative label
182
+	 *
183
+	 * @access public
184
+	 * @return string
185
+	 */
186
+	public function admin_label()
187
+	{
188
+		return $this->get('QST_admin_label');
189
+	}
190
+
191
+
192
+	/**
193
+	 * returns the attendee column name for this question
194
+	 *
195
+	 * @access public
196
+	 * @return string
197
+	 */
198
+	public function system_ID()
199
+	{
200
+		return $this->get('QST_system');
201
+	}
202
+
203
+
204
+	/**
205
+	 * returns either a string of 'text', 'textfield', etc.
206
+	 *
207
+	 * @access public
208
+	 * @return boolean
209
+	 */
210
+	public function required()
211
+	{
212
+		return $this->get('QST_required');
213
+	}
214
+
215
+
216
+	/**
217
+	 * returns the text which should be displayed when a user
218
+	 * doesn't answer this question in a form
219
+	 *
220
+	 * @access public
221
+	 * @return string
222
+	 */
223
+	public function required_text()
224
+	{
225
+		return $this->get('QST_required_text');
226
+	}
227
+
228
+
229
+	/**
230
+	 * returns the type of this question
231
+	 *
232
+	 * @access public
233
+	 * @return string
234
+	 */
235
+	public function type()
236
+	{
237
+		return $this->get('QST_type');
238
+	}
239
+
240
+
241
+	/**
242
+	 * returns an integer showing where this question should
243
+	 * be placed in a sequence of questions
244
+	 *
245
+	 * @access public
246
+	 * @return int
247
+	 */
248
+	public function order()
249
+	{
250
+		return $this->get('QST_order');
251
+	}
252
+
253
+
254
+	/**
255
+	 * returns whether this question should only appears to admins,
256
+	 * or to everyone
257
+	 *
258
+	 * @access public
259
+	 * @return boolean
260
+	 */
261
+	public function admin_only()
262
+	{
263
+		return $this->get('QST_admin_only');
264
+	}
265
+
266
+
267
+	/**
268
+	 * returns the id the wordpress user who created this question
269
+	 *
270
+	 * @access public
271
+	 * @return int
272
+	 */
273
+	public function wp_user()
274
+	{
275
+		return $this->get('QST_wp_user');
276
+	}
277
+
278
+
279
+	/**
280
+	 * returns whether this question has been marked as 'deleted'
281
+	 *
282
+	 * @access public
283
+	 * @return boolean
284
+	 */
285
+	public function deleted()
286
+	{
287
+		return $this->get('QST_deleted');
288
+	}
289
+
290
+
291
+	/**
292
+	 * Gets an array of related EE_Answer  to this EE_Question
293
+	 *
294
+	 * @return EE_Answer[]
295
+	 */
296
+	public function answers()
297
+	{
298
+		return $this->get_many_related('Answer');
299
+	}
300
+
301
+
302
+	/**
303
+	 * Boolean check for if there are answers on this question in th db
304
+	 *
305
+	 * @return boolean true = has answers, false = no answers.
306
+	 */
307
+	public function has_answers()
308
+	{
309
+		return $this->count_related('Answer') > 0 ? true : false;
310
+	}
311
+
312
+
313
+	/**
314
+	 * gets an array of EE_Question_Group which relate to this question
315
+	 *
316
+	 * @return EE_Question_Group[]
317
+	 */
318
+	public function question_groups()
319
+	{
320
+		return $this->get_many_related('Question_Group');
321
+	}
322
+
323
+
324
+	/**
325
+	 * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
326
+	 *
327
+	 * @param boolean      $notDeletedOptionsOnly            1
328
+	 *                                                       whether to return ALL options, or only the ones which have
329
+	 *                                                       not yet been deleleted
330
+	 * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
331
+	 *                                                       we want to usually only show non-deleted options AND the
332
+	 *                                                       value that was selected for the answer, whether it was
333
+	 *                                                       trashed or not.
334
+	 * @return EE_Question_Option[]
335
+	 */
336
+	public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
337
+	{
338
+		if (! $this->ID()) {
339
+			return array();
340
+		}
341
+		$query_params = array();
342
+		if ($selected_value_to_always_include) {
343
+			if (is_array($selected_value_to_always_include)) {
344
+				$query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
345
+			} else {
346
+				$query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
347
+			}
348
+		}
349
+		if ($notDeletedOptionsOnly) {
350
+			$query_params[0]['OR*options-query']['QSO_deleted'] = false;
351
+		}
352
+		// order by QSO_order
353
+		$query_params['order_by'] = array('QSO_order' => 'ASC');
354
+		return $this->get_many_related('Question_Option', $query_params);
355
+	}
356
+
357
+
358
+	/**
359
+	 * returns an array of EE_Question_Options which relate to this question
360
+	 *
361
+	 * @return \EE_Question_Option[]
362
+	 */
363
+	public function temp_options()
364
+	{
365
+		return $this->_model_relations['Question_Option'];
366
+	}
367
+
368
+
369
+	/**
370
+	 * Adds an option for this question. Note: if the option were previously associated with a different
371
+	 * Question, that relationship will be overwritten.
372
+	 *
373
+	 * @param EE_Question_Option $option
374
+	 * @return boolean success
375
+	 */
376
+	public function add_option(EE_Question_Option $option)
377
+	{
378
+		return $this->_add_relation_to($option, 'Question_Option');
379
+	}
380
+
381
+
382
+	/**
383
+	 * Adds an option directly to this question without saving to the db
384
+	 *
385
+	 * @param EE_Question_Option $option
386
+	 * @return boolean success
387
+	 */
388
+	public function add_temp_option(EE_Question_Option $option)
389
+	{
390
+		$this->_model_relations['Question_Option'][] = $option;
391
+		return true;
392
+	}
393
+
394
+
395
+	/**
396
+	 * Marks the option as deleted.
397
+	 *
398
+	 * @param EE_Question_Option $option
399
+	 * @return boolean success
400
+	 */
401
+	public function remove_option(EE_Question_Option $option)
402
+	{
403
+		return $this->_remove_relation_to($option, 'Question_Option');
404
+	}
405
+
406
+
407
+	/**
408
+	 * @return bool
409
+	 */
410
+	public function is_system_question()
411
+	{
412
+		$system_ID = $this->get('QST_system');
413
+		return ! empty($system_ID) ? true : false;
414
+	}
415
+
416
+
417
+	/**
418
+	 * The purpose of this method is set the question order this question order to be the max out of all questions
419
+	 *
420
+	 * @access public
421
+	 * @return void
422
+	 */
423
+	public function set_order_to_latest()
424
+	{
425
+		$latest_order = $this->get_model()->get_latest_question_order();
426
+		$latest_order++;
427
+		$this->set('QST_order', $latest_order);
428
+	}
429
+
430
+
431
+	/**
432
+	 * Retrieves the list of allowed question types from the model.
433
+	 *
434
+	 * @return string[]
435
+	 */
436
+	private function _allowed_question_types()
437
+	{
438
+		$questionModel = $this->get_model();
439
+		/* @var $questionModel EEM_Question */
440
+		return $questionModel->allowed_question_types();
441
+	}
442
+
443
+	/**
444
+	 * Duplicates this question and its question options
445
+	 *
446
+	 * @return \EE_Question
447
+	 */
448
+	public function duplicate($options = array())
449
+	{
450
+		$new_question = clone $this;
451
+		$new_question->set('QST_ID', null);
452
+		$new_question->set_display_text(sprintf(__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
453
+		$new_question->set_admin_label(sprintf(__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
454
+		$new_question->set_system_ID(null);
455
+		$new_question->set_wp_user(get_current_user_id());
456
+		// if we're duplicating a trashed question, assume we don't want the new one to be trashed
457
+		$new_question->set_deleted(false);
458
+		$success = $new_question->save();
459
+		if ($success) {
460
+			// we don't totally want to duplicate the question options, because we want them to be for the NEW question
461
+			foreach ($this->options() as $question_option) {
462
+				$question_option->duplicate(array('QST_ID' => $new_question->ID()));
463
+			}
464
+			return $new_question;
465
+		} else {
466
+			return null;
467
+		}
468
+	}
469
+
470
+	/**
471
+	 * Returns the question's maximum allowed response size
472
+	 *
473
+	 * @return int|float
474
+	 */
475
+	public function max()
476
+	{
477
+		return $this->get('QST_max');
478
+	}
479
+
480
+	/**
481
+	 * Sets the question's maximum allowed response size
482
+	 *
483
+	 * @param int|float $new_max
484
+	 * @return void
485
+	 */
486
+	public function set_max($new_max)
487
+	{
488
+		$this->set('QST_max', $new_max);
489
+	}
490
+
491
+
492
+	/**
493
+	 * Creates a form input from this question which can be used in HTML forms
494
+	 *
495
+	 * @param EE_Registration $registration
496
+	 * @param EE_Answer       $answer
497
+	 * @param array           $input_constructor_args
498
+	 * @return EE_Form_Input_Base
499
+	 */
500
+	public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
501
+	{
502
+		$identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
503
+
504
+		$input_constructor_args = array_merge(
505
+			array(
506
+				'required'                          => $this->required() ? true : false,
507
+				'html_label_text'                   => $this->display_text(),
508
+				'required_validation_error_message' => $this->required_text(),
509
+			),
510
+			$input_constructor_args
511
+		);
512
+		if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
513
+			$answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
514
+		}
515
+		// has this question been answered ?
516
+		if ($answer instanceof EE_Answer
517
+			&& $answer->value() !== ''
518
+		) {
519
+			// answer gets htmlspecialchars called on it, undo that please
520
+			// because the form input's display strategy may call esc_attr too
521
+			// which also does html special characters
522
+			$values_with_html_special_chars = $answer->value();
523
+			if (is_array($values_with_html_special_chars)) {
524
+				$default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
525
+			} else {
526
+				$default_value = htmlspecialchars_decode($values_with_html_special_chars);
527
+			}
528
+			$input_constructor_args['default'] = $default_value;
529
+		}
530
+		$max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
531
+		if (in_array(
532
+			$this->type(),
533
+			EEM_Question::instance()->questionTypesWithMaxLength(),
534
+			true
535
+		)) {
536
+			$input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
537
+				null,
538
+				min($max_max_for_question, $this->max())
539
+			);
540
+		}
541
+		$input_constructor_args = apply_filters(
542
+			'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
543
+			$input_constructor_args,
544
+			$registration,
545
+			$this,
546
+			$answer
547
+		);
548
+
549
+		$result = null;
550
+		switch ($this->type()) {
551
+			// Text
552
+			case EEM_Question::QST_type_text:
553
+				$result = new EE_Text_Input($input_constructor_args);
554
+				break;
555
+			// Textarea
556
+			case EEM_Question::QST_type_textarea:
557
+				$result = new EE_Text_Area_Input($input_constructor_args);
558
+				break;
559
+			// Radio Buttons
560
+			case EEM_Question::QST_type_radio:
561
+				$result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
562
+				break;
563
+			// Dropdown
564
+			case EEM_Question::QST_type_dropdown:
565
+				$result = new EE_Select_Input($this->options(), $input_constructor_args);
566
+				break;
567
+			// State Dropdown
568
+			case EEM_Question::QST_type_state:
569
+				$state_options = apply_filters(
570
+					'FHEE__EE_Question__generate_form_input__state_options',
571
+					null,
572
+					$this,
573
+					$registration,
574
+					$answer
575
+				);
576
+				$result = new EE_State_Select_Input($state_options, $input_constructor_args);
577
+				break;
578
+			// Country Dropdown
579
+			case EEM_Question::QST_type_country:
580
+				$country_options = apply_filters(
581
+					'FHEE__EE_Question__generate_form_input__country_options',
582
+					null,
583
+					$this,
584
+					$registration,
585
+					$answer
586
+				);
587
+				$result = new EE_Country_Select_Input($country_options, $input_constructor_args);
588
+				break;
589
+			// Checkboxes
590
+			case EEM_Question::QST_type_checkbox:
591
+				$result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
592
+				break;
593
+			// Date
594
+			case EEM_Question::QST_type_date:
595
+				$result = new EE_Datepicker_Input($input_constructor_args);
596
+				break;
597
+			case EEM_Question::QST_type_html_textarea:
598
+				$input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
599
+				$result = new EE_Text_Area_Input($input_constructor_args);
600
+				$result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
601
+				break;
602
+			case EEM_Question::QST_type_email:
603
+				$result = new EE_Email_Input($input_constructor_args);
604
+				break;
605
+			case EEM_Question::QST_type_us_phone:
606
+				$result = new EE_Phone_Input($input_constructor_args);
607
+				break;
608
+			case EEM_Question::QST_type_int:
609
+				$result = new EE_Integer_Input($input_constructor_args);
610
+				break;
611
+			case EEM_Question::QST_type_decimal:
612
+				$result = new EE_Float_Input($input_constructor_args);
613
+				break;
614
+			case EEM_Question::QST_type_url:
615
+				$input_constructor_args['validation_strategies'][] = new EE_URL_Validation_Strategy();
616
+				$result = new EE_Text_Input($input_constructor_args);
617
+				break;
618
+			case EEM_Question::QST_type_year:
619
+				$result = new EE_Year_Input(
620
+					$input_constructor_args,
621
+					apply_filters(
622
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
623
+						true,
624
+						$this
625
+					),
626
+					apply_filters(
627
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
628
+						100,
629
+						$this
630
+					),
631
+					apply_filters(
632
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
633
+						100,
634
+						$this
635
+					)
636
+				);
637
+				break;
638
+			case EEM_Question::QST_type_multi_select:
639
+				$result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
640
+				break;
641
+			// fallback
642
+			default:
643
+				$default_input = apply_filters(
644
+					'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
645
+					null,
646
+					$this->type(),
647
+					$this,
648
+					$input_constructor_args
649
+				);
650
+				if (! $default_input) {
651
+					$default_input = new EE_Text_Input($input_constructor_args);
652
+				}
653
+				$result = $default_input;
654
+		}
655
+		return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
656
+	}
657
+
658
+
659
+	/**
660
+	 * Returns whether or not this question type should have question option entries
661
+	 *
662
+	 * @return bool
663
+	 */
664
+	public function should_have_question_options()
665
+	{
666
+		return in_array(
667
+			$this->type(),
668
+			$this->_model->question_types_with_options(),
669
+			true
670
+		);
671
+	}
672 672
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -335,7 +335,7 @@  discard block
 block discarded – undo
335 335
      */
336 336
     public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
337 337
     {
338
-        if (! $this->ID()) {
338
+        if ( ! $this->ID()) {
339 339
             return array();
340 340
         }
341 341
         $query_params = array();
@@ -509,7 +509,7 @@  discard block
 block discarded – undo
509 509
             ),
510 510
             $input_constructor_args
511 511
         );
512
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
512
+        if ( ! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
513 513
             $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
514 514
         }
515 515
         // has this question been answered ?
@@ -647,7 +647,7 @@  discard block
 block discarded – undo
647 647
                     $this,
648 648
                     $input_constructor_args
649 649
                 );
650
-                if (! $default_input) {
650
+                if ( ! $default_input) {
651 651
                     $default_input = new EE_Text_Input($input_constructor_args);
652 652
                 }
653 653
                 $result = $default_input;
Please login to merge, or discard this patch.
core/db_classes/EE_Question_Form_Input.class.php 3 patches
Doc Comments   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
      *        generate_question_form_inputs_for_object
242 242
      *
243 243
      * @access    protected
244
-     * @param bool|object $object $object
244
+     * @param EE_Base_Class|null $object $object
245 245
      * @param    array    $input_types
246 246
      * @return        array
247 247
      */
@@ -354,7 +354,7 @@  discard block
 block discarded – undo
354 354
      *
355 355
      * @access public
356 356
      * @param \EE_Question_Option $QSO EE_Question_Option
357
-     * @return boolean
357
+     * @return boolean|null
358 358
      */
359 359
     public function add_temp_option(EE_Question_Option $QSO)
360 360
     {
@@ -367,8 +367,8 @@  discard block
 block discarded – undo
367 367
      *
368 368
      * @access public
369 369
      * @param    string $property
370
-     * @param    mixed  $value
371
-     * @return mixed
370
+     * @param    boolean  $value
371
+     * @return boolean|null
372 372
      */
373 373
     public function set($property = null, $value = null)
374 374
     {
@@ -416,7 +416,7 @@  discard block
 block discarded – undo
416 416
      *    get_meta
417 417
      *
418 418
      * @access public
419
-     * @param mixed $key
419
+     * @param string $key
420 420
      * @return mixed
421 421
      */
422 422
     public function get_meta($key = false)
Please login to merge, or discard this patch.
Indentation   +409 added lines, -409 removed lines patch added patch discarded remove patch
@@ -14,413 +14,413 @@
 block discarded – undo
14 14
 class EE_Question_Form_Input
15 15
 {
16 16
 
17
-    /**
18
-     *    EE_Question object
19
-     *
20
-     * @access private
21
-     * @var object
22
-     */
23
-    private $_QST = null;
24
-
25
-    /**
26
-     *    EE_Answer object
27
-     *
28
-     * @access private
29
-     * @var object
30
-     */
31
-    private $_ANS = null;
32
-
33
-    /**
34
-     *    $_QST_meta
35
-     * @access private
36
-     * @var array
37
-     */
38
-    private $_QST_meta = array();
39
-
40
-    /**
41
-     *    $QST_input_name
42
-     * @access private
43
-     * @var string
44
-     */
45
-    private $QST_input_name = '';
46
-
47
-    /**
48
-     *    $QST_input_id
49
-     * @access private
50
-     * @var string
51
-     */
52
-    private $QST_input_id = '';
53
-
54
-    /**
55
-     *    $QST_input_class
56
-     * @access private
57
-     * @var string
58
-     */
59
-    private $QST_input_class = '';
60
-
61
-
62
-    /**
63
-     * constructor for questions
64
-     *
65
-     * @param \EE_Question $QST EE_Question object
66
-     * @param \EE_Answer   $ANS EE_Answer object
67
-     * @param array        $q_meta
68
-     * @access public
69
-     * @return \EE_Question_Form_Input
70
-     */
71
-    public function __construct(EE_Question $QST = null, EE_Answer $ANS = null, $q_meta = array())
72
-    {
73
-        if (empty($QST) || empty($ANS)) {
74
-            EE_Error::add_error(
75
-                __('An error occurred. A valid EE_Question or EE_Answer object was not received.', 'event_espresso'),
76
-                __FILE__,
77
-                __FUNCTION__,
78
-                __LINE__
79
-            );
80
-            return null;
81
-        }
82
-        $this->_QST = $QST;
83
-        $this->_ANS = $ANS;
84
-        $this->set_question_form_input_meta($q_meta);
85
-        $this->set_question_form_input_init();
86
-    }
87
-
88
-
89
-    /**
90
-     * sets meta data for the question form input
91
-     *
92
-     * @access public
93
-     * @param array $q_meta
94
-     * @return void
95
-     */
96
-    public function set_question_form_input_meta($q_meta = array())
97
-    {
98
-        $default_q_meta = array(
99
-            'att_nmbr'       => 1,
100
-            'ticket_id'      => '',
101
-            'date'           => '',
102
-            'time'           => '',
103
-            'input_name'     => '',
104
-            'input_id'       => '',
105
-            'input_class'    => '',
106
-            'input_prefix'   => 'qstn',
107
-            'append_qstn_id' => true,
108
-            'htmlentities'   => true,
109
-            'allow_null'     => false,
110
-        );
111
-        $this->_QST_meta = array_merge($default_q_meta, $q_meta);
112
-    }
113
-
114
-
115
-    /**
116
-     * set_question_form_input_init
117
-     *
118
-     * @access public
119
-     * @return void
120
-     */
121
-    public function set_question_form_input_init()
122
-    {
123
-        $qstn_id = $this->_QST->system_ID() ? $this->_QST->system_ID() : $this->_QST->ID();
124
-        $this->_set_input_name($qstn_id);
125
-        $this->_set_input_id($qstn_id);
126
-        $this->_set_input_class($qstn_id);
127
-        $this->set_question_form_input_answer($qstn_id);
128
-    }
129
-
130
-
131
-    /**
132
-     * set_input_name
133
-     *
134
-     * @access private
135
-     * @param $qstn_id
136
-     * @return void
137
-     */
138
-    private function _set_input_name($qstn_id)
139
-    {
140
-        if (! empty($qstn_id)) {
141
-            $ANS_ID = $this->get('ANS_ID');
142
-            $qstn_id = ! empty($ANS_ID) ? '[' . $qstn_id . '][' . $ANS_ID . ']' : '[' . $qstn_id . ']';
143
-        }
144
-        $this->QST_input_name = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id)
145
-            ? $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'] . $qstn_id
146
-            : $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'];
147
-    }
148
-
149
-
150
-    /**
151
-     * get property values for question form input
152
-     *
153
-     * @access public
154
-     * @param    string $property
155
-     * @return mixed
156
-     */
157
-    public function get($property = null)
158
-    {
159
-        if (! empty($property)) {
160
-            if (EEM_Question::instance()->has_field($property)) {
161
-                return $this->_QST->get($property);
162
-            } elseif (EEM_Answer::instance()->has_field($property)) {
163
-                return $this->_ANS->get($property);
164
-            } elseif ($this->_question_form_input_property_exists(__CLASS__, $property)) {
165
-                return $this->{$property};
166
-            }
167
-        }
168
-        return null;
169
-    }
170
-
171
-
172
-    /**
173
-     *    _question_form_input_property_exists
174
-     *
175
-     * @access private
176
-     * @param    string $classname
177
-     * @param    string $property
178
-     * @return boolean
179
-     */
180
-    private function _question_form_input_property_exists($classname, $property)
181
-    {
182
-        // first try regular property exists method which works as expected in PHP 5.3+
183
-        $prop = EEH_Class_Tools::has_property($classname, $property);
184
-        if (! $prop) {
185
-            // use reflection for < PHP 5.3 as a double check when property is not found, possible due to access restriction
186
-            $reflector = new ReflectionClass($classname);
187
-            $prop = $reflector->hasProperty($property);
188
-        }
189
-        return $prop;
190
-    }
191
-
192
-
193
-    /**
194
-     * set_input_id
195
-     *
196
-     * @access private
197
-     * @param $qstn_id
198
-     * @return void
199
-     */
200
-    private function _set_input_id($qstn_id)
201
-    {
202
-        $input_id = isset($this->_QST_meta['input_id']) && ! empty($this->_QST_meta['input_id'])
203
-            ? $this->_QST_meta['input_id'] : sanitize_key(strip_tags($this->_QST->get('QST_display_text')));
204
-        $this->QST_input_id = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id) ? $input_id . '-' . $qstn_id
205
-            : $input_id;
206
-    }
207
-
208
-
209
-    /**
210
-     * set_input_class
211
-     *
212
-     * @access private
213
-     * @return void
214
-     */
215
-    private function _set_input_class()
216
-    {
217
-        $this->QST_input_class = isset($this->_QST_meta['input_class']) ? $this->_QST_meta['input_class'] : '';
218
-    }
219
-
220
-
221
-    /**
222
-     * set_question_form_input_answer
223
-     *
224
-     * @access public
225
-     * @param mixed    int | string    $qstn_id
226
-     * @return void
227
-     */
228
-    public function set_question_form_input_answer($qstn_id)
229
-    {
230
-        // check for answer in $_REQUEST in case we are reprocessing a form after an error
231
-        if (isset($this->_QST_meta['EVT_ID']) && isset($this->_QST_meta['att_nmbr']) && isset($this->_QST_meta['date']) && isset($this->_QST_meta['time']) && isset($this->_QST_meta['price_id'])) {
232
-            if (isset($_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ])) {
233
-                $answer = $_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ];
234
-                $this->_ANS->set('ANS_value', $answer);
235
-            }
236
-        }
237
-    }
238
-
239
-
240
-    /**
241
-     *        generate_question_form_inputs_for_object
242
-     *
243
-     * @access    protected
244
-     * @param bool|object $object $object
245
-     * @param    array    $input_types
246
-     * @return        array
247
-     */
248
-    public static function generate_question_form_inputs_for_object($object = false, $input_types = array())
249
-    {
250
-        if (! is_object($object)) {
251
-            return false;
252
-        }
253
-        $inputs = array();
254
-        $fields = $object->get_model()->field_settings(false);
255
-        // $pk = $object->ID(); <<< NO!
256
-        // EEH_Debug_Tools::printr( $object, get_class( $object ) . '<br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
257
-        // EEH_Debug_Tools::printr( $fields, '$fields  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
258
-        // EEH_Debug_Tools::printr( $input_types, '$input_types  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
259
-        foreach ($fields as $field_ID => $field) {
260
-            if ($field instanceof EE_Model_Field_Base) {
261
-                // echo '<h4>$field_ID : ' . $field_ID . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
262
-                // EEH_Debug_Tools::printr( $field, '$field  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
263
-                if (isset($input_types[ $field_ID ])) {
264
-                    // get saved value for field
265
-                    $value = $object->get($field_ID);
266
-                    // echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
267
-                    // if no saved value, then use default
268
-                    $value = $value !== null ? $value : $field->get_default_value();
269
-                    // if ( $field_ID == 'CNT_active' )
270
-                    // echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
271
-                    // determine question type
272
-                    $type = isset($input_types[ $field_ID ]) ? $input_types[ $field_ID ]['type'] : 'TEXT';
273
-                    // input name
274
-                    $input_name = isset($input_types[ $field_ID ]) && isset($input_types[ $field_ID ]['input_name'])
275
-                        ? $input_types[ $field_ID ]['input_name'] . '[' . $field_ID . ']' : $field_ID;
276
-                    // css class for input
277
-                    $class = isset($input_types[ $field_ID ]['class']) && ! empty($input_types[ $field_ID ]['class'])
278
-                        ? ' ' . $input_types[ $field_ID ]['class'] : '';
279
-                    // whether to apply htmlentities to answer
280
-                    $htmlentities = isset($input_types[ $field_ID ]['htmlentities'])
281
-                        ? $input_types[ $field_ID ]['htmlentities'] : true;
282
-                    // whether to apply htmlentities to answer
283
-                    $label_b4 = isset($input_types[ $field_ID ]['label_b4']) ? $input_types[ $field_ID ]['label_b4']
284
-                        : false;
285
-                    // whether to apply htmlentities to answer
286
-                    $use_desc_4_label = isset($input_types[ $field_ID ]['use_desc_4_label'])
287
-                        ? $input_types[ $field_ID ]['use_desc_4_label'] : false;
288
-
289
-                    // create EE_Question_Form_Input object
290
-                    $QFI = new EE_Question_Form_Input(
291
-                        EE_Question::new_instance(
292
-                            array(
293
-                                'QST_ID'           => 0,
294
-                                'QST_display_text' => $field->get_nicename(),
295
-                                'QST_type'         => $type,
296
-                            )
297
-                        ),
298
-                        EE_Answer::new_instance(
299
-                            array(
300
-                                'ANS_ID'    => 0,
301
-                                'QST_ID'    => 0,
302
-                                'REG_ID'    => 0,
303
-                                'ANS_value' => $value,
304
-                            )
305
-                        ),
306
-                        array(
307
-                            'input_id'         => $field_ID . '-' . $object->ID(),
308
-                            'input_name'       => $input_name,
309
-                            'input_class'      => $field_ID . $class,
310
-                            'input_prefix'     => '',
311
-                            'append_qstn_id'   => false,
312
-                            'htmlentities'     => $htmlentities,
313
-                            'label_b4'         => $label_b4,
314
-                            'use_desc_4_label' => $use_desc_4_label,
315
-                        )
316
-                    );
317
-                    // does question type have options ?
318
-                    if (in_array($type, array('DROPDOWN', 'RADIO_BTN', 'CHECKBOX'))
319
-                        && isset($input_types[ $field_ID ])
320
-                        && isset($input_types[ $field_ID ]['options'])
321
-                    ) {
322
-                        foreach ($input_types[ $field_ID ]['options'] as $option) {
323
-                            $option = stripslashes_deep($option);
324
-                            $option_id = ! empty($option['id']) ? $option['id'] : 0;
325
-                            $QSO = EE_Question_Option::new_instance(
326
-                                array(
327
-                                    'QSO_value'   => (string) $option_id,
328
-                                    'QSO_desc'    => $option['text'],
329
-                                    'QSO_deleted' => false,
330
-                                )
331
-                            );
332
-                            // all QST (and ANS) properties can be accessed indirectly thru QFI
333
-                            $QFI->add_temp_option($QSO);
334
-                        }
335
-                    }
336
-                    // we don't want ppl manually changing primary keys cuz that would just lead to total craziness man
337
-                    if ($field_ID == $object->get_model()->primary_key_name()) {
338
-                        $QFI->set('QST_disabled', true);
339
-                    }
340
-                    // EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
341
-                    $inputs[ $field_ID ] = $QFI;
342
-                    // if ( $field_ID == 'CNT_active' ) {
343
-                    // EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
344
-                    // }
345
-                }
346
-            }
347
-        }
348
-        return $inputs;
349
-    }
350
-
351
-
352
-    /**
353
-     *    add_temp_option
354
-     *
355
-     * @access public
356
-     * @param \EE_Question_Option $QSO EE_Question_Option
357
-     * @return boolean
358
-     */
359
-    public function add_temp_option(EE_Question_Option $QSO)
360
-    {
361
-        $this->_QST->add_temp_option($QSO);
362
-    }
363
-
364
-
365
-    /**
366
-     * set property values for question form input
367
-     *
368
-     * @access public
369
-     * @param    string $property
370
-     * @param    mixed  $value
371
-     * @return mixed
372
-     */
373
-    public function set($property = null, $value = null)
374
-    {
375
-        if (! empty($property)) {
376
-            if (EEM_Question::instance()->has_field($property)) {
377
-                $this->_QST->set($property, $value);
378
-            } elseif (EEM_Answer::instance()->has_field($property)) {
379
-                $this->_ANS->set($property, $value);
380
-            } elseif ($this->_question_form_input_property_exists(__CLASS__, $property)) {
381
-                echo "<hr>$property is a prop of QFI";
382
-                $this->{$property} = $value;
383
-                return true;
384
-            }
385
-        }
386
-        return null;
387
-    }
388
-
389
-
390
-    /**
391
-     *    _question_form_input_property_exists
392
-     *
393
-     * @access public
394
-     * @param boolean      $notDeletedOptionsOnly            1
395
-     *                                                       whether to return ALL options, or only the ones which have
396
-     *                                                       not yet been deleted
397
-     * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
398
-     *                                                       we want to usually only show non-deleted options AND the
399
-     *                                                       value that was selected for the answer, whether it was
400
-     *                                                       trashed or not.
401
-     * @return EE_Question_Option
402
-     */
403
-    public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
404
-    {
405
-        $temp_options = $this->_QST->temp_options();
406
-        return ! empty($temp_options)
407
-            ? $temp_options
408
-            : $this->_QST->options(
409
-                $notDeletedOptionsOnly,
410
-                $selected_value_to_always_include
411
-            );
412
-    }
413
-
414
-
415
-    /**
416
-     *    get_meta
417
-     *
418
-     * @access public
419
-     * @param mixed $key
420
-     * @return mixed
421
-     */
422
-    public function get_meta($key = false)
423
-    {
424
-        return $key && isset($this->_QST_meta[ $key ]) ? $this->_QST_meta[ $key ] : false;
425
-    }
17
+	/**
18
+	 *    EE_Question object
19
+	 *
20
+	 * @access private
21
+	 * @var object
22
+	 */
23
+	private $_QST = null;
24
+
25
+	/**
26
+	 *    EE_Answer object
27
+	 *
28
+	 * @access private
29
+	 * @var object
30
+	 */
31
+	private $_ANS = null;
32
+
33
+	/**
34
+	 *    $_QST_meta
35
+	 * @access private
36
+	 * @var array
37
+	 */
38
+	private $_QST_meta = array();
39
+
40
+	/**
41
+	 *    $QST_input_name
42
+	 * @access private
43
+	 * @var string
44
+	 */
45
+	private $QST_input_name = '';
46
+
47
+	/**
48
+	 *    $QST_input_id
49
+	 * @access private
50
+	 * @var string
51
+	 */
52
+	private $QST_input_id = '';
53
+
54
+	/**
55
+	 *    $QST_input_class
56
+	 * @access private
57
+	 * @var string
58
+	 */
59
+	private $QST_input_class = '';
60
+
61
+
62
+	/**
63
+	 * constructor for questions
64
+	 *
65
+	 * @param \EE_Question $QST EE_Question object
66
+	 * @param \EE_Answer   $ANS EE_Answer object
67
+	 * @param array        $q_meta
68
+	 * @access public
69
+	 * @return \EE_Question_Form_Input
70
+	 */
71
+	public function __construct(EE_Question $QST = null, EE_Answer $ANS = null, $q_meta = array())
72
+	{
73
+		if (empty($QST) || empty($ANS)) {
74
+			EE_Error::add_error(
75
+				__('An error occurred. A valid EE_Question or EE_Answer object was not received.', 'event_espresso'),
76
+				__FILE__,
77
+				__FUNCTION__,
78
+				__LINE__
79
+			);
80
+			return null;
81
+		}
82
+		$this->_QST = $QST;
83
+		$this->_ANS = $ANS;
84
+		$this->set_question_form_input_meta($q_meta);
85
+		$this->set_question_form_input_init();
86
+	}
87
+
88
+
89
+	/**
90
+	 * sets meta data for the question form input
91
+	 *
92
+	 * @access public
93
+	 * @param array $q_meta
94
+	 * @return void
95
+	 */
96
+	public function set_question_form_input_meta($q_meta = array())
97
+	{
98
+		$default_q_meta = array(
99
+			'att_nmbr'       => 1,
100
+			'ticket_id'      => '',
101
+			'date'           => '',
102
+			'time'           => '',
103
+			'input_name'     => '',
104
+			'input_id'       => '',
105
+			'input_class'    => '',
106
+			'input_prefix'   => 'qstn',
107
+			'append_qstn_id' => true,
108
+			'htmlentities'   => true,
109
+			'allow_null'     => false,
110
+		);
111
+		$this->_QST_meta = array_merge($default_q_meta, $q_meta);
112
+	}
113
+
114
+
115
+	/**
116
+	 * set_question_form_input_init
117
+	 *
118
+	 * @access public
119
+	 * @return void
120
+	 */
121
+	public function set_question_form_input_init()
122
+	{
123
+		$qstn_id = $this->_QST->system_ID() ? $this->_QST->system_ID() : $this->_QST->ID();
124
+		$this->_set_input_name($qstn_id);
125
+		$this->_set_input_id($qstn_id);
126
+		$this->_set_input_class($qstn_id);
127
+		$this->set_question_form_input_answer($qstn_id);
128
+	}
129
+
130
+
131
+	/**
132
+	 * set_input_name
133
+	 *
134
+	 * @access private
135
+	 * @param $qstn_id
136
+	 * @return void
137
+	 */
138
+	private function _set_input_name($qstn_id)
139
+	{
140
+		if (! empty($qstn_id)) {
141
+			$ANS_ID = $this->get('ANS_ID');
142
+			$qstn_id = ! empty($ANS_ID) ? '[' . $qstn_id . '][' . $ANS_ID . ']' : '[' . $qstn_id . ']';
143
+		}
144
+		$this->QST_input_name = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id)
145
+			? $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'] . $qstn_id
146
+			: $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'];
147
+	}
148
+
149
+
150
+	/**
151
+	 * get property values for question form input
152
+	 *
153
+	 * @access public
154
+	 * @param    string $property
155
+	 * @return mixed
156
+	 */
157
+	public function get($property = null)
158
+	{
159
+		if (! empty($property)) {
160
+			if (EEM_Question::instance()->has_field($property)) {
161
+				return $this->_QST->get($property);
162
+			} elseif (EEM_Answer::instance()->has_field($property)) {
163
+				return $this->_ANS->get($property);
164
+			} elseif ($this->_question_form_input_property_exists(__CLASS__, $property)) {
165
+				return $this->{$property};
166
+			}
167
+		}
168
+		return null;
169
+	}
170
+
171
+
172
+	/**
173
+	 *    _question_form_input_property_exists
174
+	 *
175
+	 * @access private
176
+	 * @param    string $classname
177
+	 * @param    string $property
178
+	 * @return boolean
179
+	 */
180
+	private function _question_form_input_property_exists($classname, $property)
181
+	{
182
+		// first try regular property exists method which works as expected in PHP 5.3+
183
+		$prop = EEH_Class_Tools::has_property($classname, $property);
184
+		if (! $prop) {
185
+			// use reflection for < PHP 5.3 as a double check when property is not found, possible due to access restriction
186
+			$reflector = new ReflectionClass($classname);
187
+			$prop = $reflector->hasProperty($property);
188
+		}
189
+		return $prop;
190
+	}
191
+
192
+
193
+	/**
194
+	 * set_input_id
195
+	 *
196
+	 * @access private
197
+	 * @param $qstn_id
198
+	 * @return void
199
+	 */
200
+	private function _set_input_id($qstn_id)
201
+	{
202
+		$input_id = isset($this->_QST_meta['input_id']) && ! empty($this->_QST_meta['input_id'])
203
+			? $this->_QST_meta['input_id'] : sanitize_key(strip_tags($this->_QST->get('QST_display_text')));
204
+		$this->QST_input_id = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id) ? $input_id . '-' . $qstn_id
205
+			: $input_id;
206
+	}
207
+
208
+
209
+	/**
210
+	 * set_input_class
211
+	 *
212
+	 * @access private
213
+	 * @return void
214
+	 */
215
+	private function _set_input_class()
216
+	{
217
+		$this->QST_input_class = isset($this->_QST_meta['input_class']) ? $this->_QST_meta['input_class'] : '';
218
+	}
219
+
220
+
221
+	/**
222
+	 * set_question_form_input_answer
223
+	 *
224
+	 * @access public
225
+	 * @param mixed    int | string    $qstn_id
226
+	 * @return void
227
+	 */
228
+	public function set_question_form_input_answer($qstn_id)
229
+	{
230
+		// check for answer in $_REQUEST in case we are reprocessing a form after an error
231
+		if (isset($this->_QST_meta['EVT_ID']) && isset($this->_QST_meta['att_nmbr']) && isset($this->_QST_meta['date']) && isset($this->_QST_meta['time']) && isset($this->_QST_meta['price_id'])) {
232
+			if (isset($_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ])) {
233
+				$answer = $_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ];
234
+				$this->_ANS->set('ANS_value', $answer);
235
+			}
236
+		}
237
+	}
238
+
239
+
240
+	/**
241
+	 *        generate_question_form_inputs_for_object
242
+	 *
243
+	 * @access    protected
244
+	 * @param bool|object $object $object
245
+	 * @param    array    $input_types
246
+	 * @return        array
247
+	 */
248
+	public static function generate_question_form_inputs_for_object($object = false, $input_types = array())
249
+	{
250
+		if (! is_object($object)) {
251
+			return false;
252
+		}
253
+		$inputs = array();
254
+		$fields = $object->get_model()->field_settings(false);
255
+		// $pk = $object->ID(); <<< NO!
256
+		// EEH_Debug_Tools::printr( $object, get_class( $object ) . '<br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
257
+		// EEH_Debug_Tools::printr( $fields, '$fields  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
258
+		// EEH_Debug_Tools::printr( $input_types, '$input_types  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
259
+		foreach ($fields as $field_ID => $field) {
260
+			if ($field instanceof EE_Model_Field_Base) {
261
+				// echo '<h4>$field_ID : ' . $field_ID . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
262
+				// EEH_Debug_Tools::printr( $field, '$field  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
263
+				if (isset($input_types[ $field_ID ])) {
264
+					// get saved value for field
265
+					$value = $object->get($field_ID);
266
+					// echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
267
+					// if no saved value, then use default
268
+					$value = $value !== null ? $value : $field->get_default_value();
269
+					// if ( $field_ID == 'CNT_active' )
270
+					// echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
271
+					// determine question type
272
+					$type = isset($input_types[ $field_ID ]) ? $input_types[ $field_ID ]['type'] : 'TEXT';
273
+					// input name
274
+					$input_name = isset($input_types[ $field_ID ]) && isset($input_types[ $field_ID ]['input_name'])
275
+						? $input_types[ $field_ID ]['input_name'] . '[' . $field_ID . ']' : $field_ID;
276
+					// css class for input
277
+					$class = isset($input_types[ $field_ID ]['class']) && ! empty($input_types[ $field_ID ]['class'])
278
+						? ' ' . $input_types[ $field_ID ]['class'] : '';
279
+					// whether to apply htmlentities to answer
280
+					$htmlentities = isset($input_types[ $field_ID ]['htmlentities'])
281
+						? $input_types[ $field_ID ]['htmlentities'] : true;
282
+					// whether to apply htmlentities to answer
283
+					$label_b4 = isset($input_types[ $field_ID ]['label_b4']) ? $input_types[ $field_ID ]['label_b4']
284
+						: false;
285
+					// whether to apply htmlentities to answer
286
+					$use_desc_4_label = isset($input_types[ $field_ID ]['use_desc_4_label'])
287
+						? $input_types[ $field_ID ]['use_desc_4_label'] : false;
288
+
289
+					// create EE_Question_Form_Input object
290
+					$QFI = new EE_Question_Form_Input(
291
+						EE_Question::new_instance(
292
+							array(
293
+								'QST_ID'           => 0,
294
+								'QST_display_text' => $field->get_nicename(),
295
+								'QST_type'         => $type,
296
+							)
297
+						),
298
+						EE_Answer::new_instance(
299
+							array(
300
+								'ANS_ID'    => 0,
301
+								'QST_ID'    => 0,
302
+								'REG_ID'    => 0,
303
+								'ANS_value' => $value,
304
+							)
305
+						),
306
+						array(
307
+							'input_id'         => $field_ID . '-' . $object->ID(),
308
+							'input_name'       => $input_name,
309
+							'input_class'      => $field_ID . $class,
310
+							'input_prefix'     => '',
311
+							'append_qstn_id'   => false,
312
+							'htmlentities'     => $htmlentities,
313
+							'label_b4'         => $label_b4,
314
+							'use_desc_4_label' => $use_desc_4_label,
315
+						)
316
+					);
317
+					// does question type have options ?
318
+					if (in_array($type, array('DROPDOWN', 'RADIO_BTN', 'CHECKBOX'))
319
+						&& isset($input_types[ $field_ID ])
320
+						&& isset($input_types[ $field_ID ]['options'])
321
+					) {
322
+						foreach ($input_types[ $field_ID ]['options'] as $option) {
323
+							$option = stripslashes_deep($option);
324
+							$option_id = ! empty($option['id']) ? $option['id'] : 0;
325
+							$QSO = EE_Question_Option::new_instance(
326
+								array(
327
+									'QSO_value'   => (string) $option_id,
328
+									'QSO_desc'    => $option['text'],
329
+									'QSO_deleted' => false,
330
+								)
331
+							);
332
+							// all QST (and ANS) properties can be accessed indirectly thru QFI
333
+							$QFI->add_temp_option($QSO);
334
+						}
335
+					}
336
+					// we don't want ppl manually changing primary keys cuz that would just lead to total craziness man
337
+					if ($field_ID == $object->get_model()->primary_key_name()) {
338
+						$QFI->set('QST_disabled', true);
339
+					}
340
+					// EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
341
+					$inputs[ $field_ID ] = $QFI;
342
+					// if ( $field_ID == 'CNT_active' ) {
343
+					// EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
344
+					// }
345
+				}
346
+			}
347
+		}
348
+		return $inputs;
349
+	}
350
+
351
+
352
+	/**
353
+	 *    add_temp_option
354
+	 *
355
+	 * @access public
356
+	 * @param \EE_Question_Option $QSO EE_Question_Option
357
+	 * @return boolean
358
+	 */
359
+	public function add_temp_option(EE_Question_Option $QSO)
360
+	{
361
+		$this->_QST->add_temp_option($QSO);
362
+	}
363
+
364
+
365
+	/**
366
+	 * set property values for question form input
367
+	 *
368
+	 * @access public
369
+	 * @param    string $property
370
+	 * @param    mixed  $value
371
+	 * @return mixed
372
+	 */
373
+	public function set($property = null, $value = null)
374
+	{
375
+		if (! empty($property)) {
376
+			if (EEM_Question::instance()->has_field($property)) {
377
+				$this->_QST->set($property, $value);
378
+			} elseif (EEM_Answer::instance()->has_field($property)) {
379
+				$this->_ANS->set($property, $value);
380
+			} elseif ($this->_question_form_input_property_exists(__CLASS__, $property)) {
381
+				echo "<hr>$property is a prop of QFI";
382
+				$this->{$property} = $value;
383
+				return true;
384
+			}
385
+		}
386
+		return null;
387
+	}
388
+
389
+
390
+	/**
391
+	 *    _question_form_input_property_exists
392
+	 *
393
+	 * @access public
394
+	 * @param boolean      $notDeletedOptionsOnly            1
395
+	 *                                                       whether to return ALL options, or only the ones which have
396
+	 *                                                       not yet been deleted
397
+	 * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
398
+	 *                                                       we want to usually only show non-deleted options AND the
399
+	 *                                                       value that was selected for the answer, whether it was
400
+	 *                                                       trashed or not.
401
+	 * @return EE_Question_Option
402
+	 */
403
+	public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
404
+	{
405
+		$temp_options = $this->_QST->temp_options();
406
+		return ! empty($temp_options)
407
+			? $temp_options
408
+			: $this->_QST->options(
409
+				$notDeletedOptionsOnly,
410
+				$selected_value_to_always_include
411
+			);
412
+	}
413
+
414
+
415
+	/**
416
+	 *    get_meta
417
+	 *
418
+	 * @access public
419
+	 * @param mixed $key
420
+	 * @return mixed
421
+	 */
422
+	public function get_meta($key = false)
423
+	{
424
+		return $key && isset($this->_QST_meta[ $key ]) ? $this->_QST_meta[ $key ] : false;
425
+	}
426 426
 }
Please login to merge, or discard this patch.
Spacing   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -137,13 +137,13 @@  discard block
 block discarded – undo
137 137
      */
138 138
     private function _set_input_name($qstn_id)
139 139
     {
140
-        if (! empty($qstn_id)) {
140
+        if ( ! empty($qstn_id)) {
141 141
             $ANS_ID = $this->get('ANS_ID');
142
-            $qstn_id = ! empty($ANS_ID) ? '[' . $qstn_id . '][' . $ANS_ID . ']' : '[' . $qstn_id . ']';
142
+            $qstn_id = ! empty($ANS_ID) ? '['.$qstn_id.']['.$ANS_ID.']' : '['.$qstn_id.']';
143 143
         }
144 144
         $this->QST_input_name = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id)
145
-            ? $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'] . $qstn_id
146
-            : $this->_QST_meta['input_prefix'] . $this->_QST_meta['input_name'];
145
+            ? $this->_QST_meta['input_prefix'].$this->_QST_meta['input_name'].$qstn_id
146
+            : $this->_QST_meta['input_prefix'].$this->_QST_meta['input_name'];
147 147
     }
148 148
 
149 149
 
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
      */
157 157
     public function get($property = null)
158 158
     {
159
-        if (! empty($property)) {
159
+        if ( ! empty($property)) {
160 160
             if (EEM_Question::instance()->has_field($property)) {
161 161
                 return $this->_QST->get($property);
162 162
             } elseif (EEM_Answer::instance()->has_field($property)) {
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
     {
182 182
         // first try regular property exists method which works as expected in PHP 5.3+
183 183
         $prop = EEH_Class_Tools::has_property($classname, $property);
184
-        if (! $prop) {
184
+        if ( ! $prop) {
185 185
             // use reflection for < PHP 5.3 as a double check when property is not found, possible due to access restriction
186 186
             $reflector = new ReflectionClass($classname);
187 187
             $prop = $reflector->hasProperty($property);
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
     {
202 202
         $input_id = isset($this->_QST_meta['input_id']) && ! empty($this->_QST_meta['input_id'])
203 203
             ? $this->_QST_meta['input_id'] : sanitize_key(strip_tags($this->_QST->get('QST_display_text')));
204
-        $this->QST_input_id = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id) ? $input_id . '-' . $qstn_id
204
+        $this->QST_input_id = $this->_QST_meta['append_qstn_id'] && ! empty($qstn_id) ? $input_id.'-'.$qstn_id
205 205
             : $input_id;
206 206
     }
207 207
 
@@ -229,8 +229,8 @@  discard block
 block discarded – undo
229 229
     {
230 230
         // check for answer in $_REQUEST in case we are reprocessing a form after an error
231 231
         if (isset($this->_QST_meta['EVT_ID']) && isset($this->_QST_meta['att_nmbr']) && isset($this->_QST_meta['date']) && isset($this->_QST_meta['time']) && isset($this->_QST_meta['price_id'])) {
232
-            if (isset($_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ])) {
233
-                $answer = $_REQUEST['qstn'][ $this->_QST_meta['EVT_ID'] ][ $this->_QST_meta['att_nmbr'] ][ $this->_QST_meta['date'] ][ $this->_QST_meta['time'] ][ $this->_QST_meta['price_id'] ][ $qstn_id ];
232
+            if (isset($_REQUEST['qstn'][$this->_QST_meta['EVT_ID']][$this->_QST_meta['att_nmbr']][$this->_QST_meta['date']][$this->_QST_meta['time']][$this->_QST_meta['price_id']][$qstn_id])) {
233
+                $answer = $_REQUEST['qstn'][$this->_QST_meta['EVT_ID']][$this->_QST_meta['att_nmbr']][$this->_QST_meta['date']][$this->_QST_meta['time']][$this->_QST_meta['price_id']][$qstn_id];
234 234
                 $this->_ANS->set('ANS_value', $answer);
235 235
             }
236 236
         }
@@ -247,7 +247,7 @@  discard block
 block discarded – undo
247 247
      */
248 248
     public static function generate_question_form_inputs_for_object($object = false, $input_types = array())
249 249
     {
250
-        if (! is_object($object)) {
250
+        if ( ! is_object($object)) {
251 251
             return false;
252 252
         }
253 253
         $inputs = array();
@@ -260,7 +260,7 @@  discard block
 block discarded – undo
260 260
             if ($field instanceof EE_Model_Field_Base) {
261 261
                 // echo '<h4>$field_ID : ' . $field_ID . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
262 262
                 // EEH_Debug_Tools::printr( $field, '$field  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
263
-                if (isset($input_types[ $field_ID ])) {
263
+                if (isset($input_types[$field_ID])) {
264 264
                     // get saved value for field
265 265
                     $value = $object->get($field_ID);
266 266
                     // echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
@@ -269,22 +269,22 @@  discard block
 block discarded – undo
269 269
                     // if ( $field_ID == 'CNT_active' )
270 270
                     // echo '<h4>$value : ' . $value . '  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>';
271 271
                     // determine question type
272
-                    $type = isset($input_types[ $field_ID ]) ? $input_types[ $field_ID ]['type'] : 'TEXT';
272
+                    $type = isset($input_types[$field_ID]) ? $input_types[$field_ID]['type'] : 'TEXT';
273 273
                     // input name
274
-                    $input_name = isset($input_types[ $field_ID ]) && isset($input_types[ $field_ID ]['input_name'])
275
-                        ? $input_types[ $field_ID ]['input_name'] . '[' . $field_ID . ']' : $field_ID;
274
+                    $input_name = isset($input_types[$field_ID]) && isset($input_types[$field_ID]['input_name'])
275
+                        ? $input_types[$field_ID]['input_name'].'['.$field_ID.']' : $field_ID;
276 276
                     // css class for input
277
-                    $class = isset($input_types[ $field_ID ]['class']) && ! empty($input_types[ $field_ID ]['class'])
278
-                        ? ' ' . $input_types[ $field_ID ]['class'] : '';
277
+                    $class = isset($input_types[$field_ID]['class']) && ! empty($input_types[$field_ID]['class'])
278
+                        ? ' '.$input_types[$field_ID]['class'] : '';
279 279
                     // whether to apply htmlentities to answer
280
-                    $htmlentities = isset($input_types[ $field_ID ]['htmlentities'])
281
-                        ? $input_types[ $field_ID ]['htmlentities'] : true;
280
+                    $htmlentities = isset($input_types[$field_ID]['htmlentities'])
281
+                        ? $input_types[$field_ID]['htmlentities'] : true;
282 282
                     // whether to apply htmlentities to answer
283
-                    $label_b4 = isset($input_types[ $field_ID ]['label_b4']) ? $input_types[ $field_ID ]['label_b4']
283
+                    $label_b4 = isset($input_types[$field_ID]['label_b4']) ? $input_types[$field_ID]['label_b4']
284 284
                         : false;
285 285
                     // whether to apply htmlentities to answer
286
-                    $use_desc_4_label = isset($input_types[ $field_ID ]['use_desc_4_label'])
287
-                        ? $input_types[ $field_ID ]['use_desc_4_label'] : false;
286
+                    $use_desc_4_label = isset($input_types[$field_ID]['use_desc_4_label'])
287
+                        ? $input_types[$field_ID]['use_desc_4_label'] : false;
288 288
 
289 289
                     // create EE_Question_Form_Input object
290 290
                     $QFI = new EE_Question_Form_Input(
@@ -304,9 +304,9 @@  discard block
 block discarded – undo
304 304
                             )
305 305
                         ),
306 306
                         array(
307
-                            'input_id'         => $field_ID . '-' . $object->ID(),
307
+                            'input_id'         => $field_ID.'-'.$object->ID(),
308 308
                             'input_name'       => $input_name,
309
-                            'input_class'      => $field_ID . $class,
309
+                            'input_class'      => $field_ID.$class,
310 310
                             'input_prefix'     => '',
311 311
                             'append_qstn_id'   => false,
312 312
                             'htmlentities'     => $htmlentities,
@@ -316,10 +316,10 @@  discard block
 block discarded – undo
316 316
                     );
317 317
                     // does question type have options ?
318 318
                     if (in_array($type, array('DROPDOWN', 'RADIO_BTN', 'CHECKBOX'))
319
-                        && isset($input_types[ $field_ID ])
320
-                        && isset($input_types[ $field_ID ]['options'])
319
+                        && isset($input_types[$field_ID])
320
+                        && isset($input_types[$field_ID]['options'])
321 321
                     ) {
322
-                        foreach ($input_types[ $field_ID ]['options'] as $option) {
322
+                        foreach ($input_types[$field_ID]['options'] as $option) {
323 323
                             $option = stripslashes_deep($option);
324 324
                             $option_id = ! empty($option['id']) ? $option['id'] : 0;
325 325
                             $QSO = EE_Question_Option::new_instance(
@@ -338,7 +338,7 @@  discard block
 block discarded – undo
338 338
                         $QFI->set('QST_disabled', true);
339 339
                     }
340 340
                     // EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
341
-                    $inputs[ $field_ID ] = $QFI;
341
+                    $inputs[$field_ID] = $QFI;
342 342
                     // if ( $field_ID == 'CNT_active' ) {
343 343
                     // EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
344 344
                     // }
@@ -372,7 +372,7 @@  discard block
 block discarded – undo
372 372
      */
373 373
     public function set($property = null, $value = null)
374 374
     {
375
-        if (! empty($property)) {
375
+        if ( ! empty($property)) {
376 376
             if (EEM_Question::instance()->has_field($property)) {
377 377
                 $this->_QST->set($property, $value);
378 378
             } elseif (EEM_Answer::instance()->has_field($property)) {
@@ -421,6 +421,6 @@  discard block
 block discarded – undo
421 421
      */
422 422
     public function get_meta($key = false)
423 423
     {
424
-        return $key && isset($this->_QST_meta[ $key ]) ? $this->_QST_meta[ $key ] : false;
424
+        return $key && isset($this->_QST_meta[$key]) ? $this->_QST_meta[$key] : false;
425 425
     }
426 426
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Question_Group.class.php 2 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
      * Adds the question to this question group
216 216
      *
217 217
      * @param EE_Question || int $question object or ID
218
-     * @return boolean if successful
218
+     * @return EE_Base_Class if successful
219 219
      */
220 220
     public function add_question($questionObjectOrID)
221 221
     {
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
      * Removes the question from this question group
228 228
      *
229 229
      * @param EE_Question || int $question object or ID
230
-     * @return boolean of success
230
+     * @return EE_Base_Class of success
231 231
      */
232 232
     public function remove_question($questionObjectOrID)
233 233
     {
Please login to merge, or discard this patch.
Indentation   +276 added lines, -276 removed lines patch added patch discarded remove patch
@@ -12,280 +12,280 @@
 block discarded – undo
12 12
 class EE_Question_Group extends EE_Soft_Delete_Base_Class
13 13
 {
14 14
 
15
-    /**
16
-     * @param array $props_n_values
17
-     * @return EE_Question_Group|mixed
18
-     */
19
-    public static function new_instance($props_n_values = array())
20
-    {
21
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
22
-        return $has_object ? $has_object : new self($props_n_values);
23
-    }
24
-
25
-
26
-    /**
27
-     * @param array $props_n_values
28
-     * @return EE_Question_Group
29
-     */
30
-    public static function new_instance_from_db($props_n_values = array())
31
-    {
32
-        return new self($props_n_values, true);
33
-    }
34
-
35
-
36
-    /**
37
-     * gets the question group's name
38
-     *
39
-     * @access public
40
-     * @param bool $pretty
41
-     * @return string
42
-     */
43
-    public function name($pretty = false)
44
-    {
45
-        return $pretty ? $this->get_pretty('QSG_name') : $this->get('QSG_name');
46
-    }
47
-
48
-
49
-    /**
50
-     * Gets the question group's internal name
51
-     *
52
-     * @access public
53
-     * @return string
54
-     */
55
-    public function identifier()
56
-    {
57
-        return $this->get('QSG_identifier');
58
-    }
59
-
60
-
61
-    /**
62
-     * Gets the question group's description
63
-     *
64
-     * @access public
65
-     * @param bool $pretty
66
-     * @return string
67
-     */
68
-    public function desc($pretty = false)
69
-    {
70
-        return $pretty ? $this->get_pretty('QSG_desc') : $this->get('QSG_desc');
71
-    }
72
-
73
-
74
-    /**
75
-     * Gets the question group's order number in a sequence
76
-     * of other question groups
77
-     *
78
-     * @access public
79
-     * @return int
80
-     */
81
-    public function order()
82
-    {
83
-        return $this->get('QSG_order');
84
-    }
85
-
86
-
87
-    /**
88
-     * Returns whether to show the group's name on the frontend
89
-     *
90
-     * @access public
91
-     * @return boolean
92
-     */
93
-    public function show_group_name()
94
-    {
95
-        return $this->get('QSG_show_group_name');
96
-    }
97
-
98
-
99
-    /**
100
-     * Returns whether to show the group's description
101
-     * on the frontend
102
-     *
103
-     * @access public
104
-     * @return boolean
105
-     */
106
-    public function show_group_desc()
107
-    {
108
-        return $this->get('QSG_show_group_desc');
109
-    }
110
-
111
-
112
-    /**
113
-     * Returns whether this is a 'system group' (meaning
114
-     * a question group integral to the system, whose questions
115
-     * relate to the attendee table)
116
-     *
117
-     * @access public
118
-     * @return int
119
-     */
120
-    public function system_group()
121
-    {
122
-        return $this->get('QSG_system');
123
-    }
124
-
125
-
126
-    /**
127
-     * get the author of the question group.
128
-     *
129
-     * @since 4.5.0
130
-     *
131
-     * @return int
132
-     */
133
-    public function wp_user()
134
-    {
135
-        return $this->get('QSG_wp_user');
136
-    }
137
-
138
-
139
-    /**
140
-     * Returns whether this question group has
141
-     * been deleted
142
-     *
143
-     * @access public
144
-     * @return boolean
145
-     */
146
-    public function deleted()
147
-    {
148
-        return $this->get('QST_deleted');
149
-    }
150
-
151
-
152
-    /**
153
-     * Gets an array of questions with questions IN the group at the start of the array and questions NOT in the group
154
-     * at the end of the array.  Questions in the group are ordered by Question_Group_Question.QGQ_order and questions
155
-     * NOT in the group are ordered by Question.QGQ_order
156
-     *
157
-     * @return EE_Question[]
158
-     */
159
-    public function questions_in_and_not_in_group()
160
-    {
161
-        $questions_in_group = $this->questions();
162
-        $exclude_question_ids = ! empty($questions_in_group) ? array_keys($questions_in_group) : array();
163
-        $questions_not_in_group = $this->questions_not_in_group($exclude_question_ids);
164
-        return $questions_in_group + $questions_not_in_group;
165
-    }
166
-
167
-
168
-    /**
169
-     * Gets all the questions which are part of this question group (ordered Question_Group_Question.QGQ_order)
170
-     *
171
-     * @param array $query_params
172
-     * @return EE_Question[]
173
-     */
174
-    public function questions($query_params = array())
175
-    {
176
-        $query_params = ! empty($query_params) ? $query_params
177
-            : array('order_by' => array('Question_Group_Question.QGQ_order' => 'ASC'));
178
-        return $this->ID() ? $this->get_many_related('Question', $query_params) : array();
179
-    }
180
-
181
-
182
-    /**
183
-     * Gets all the questions which are NOT part of this question group.
184
-     *
185
-     * @param  mixed $question_IDS_in_group if empty array then all questions returned.  if FALSE then we first get
186
-     *                                      questions in this group and exclude them from questions get all. IF empty
187
-     *                                      array then we just return all questions.
188
-     * @return EE_Question[]
189
-     */
190
-    public function questions_not_in_group($question_IDS_in_group = false)
191
-    {
192
-        if ($question_IDS_in_group === false) {
193
-            $questions = $this->questions();
194
-            $question_IDS_in_group = ! empty($questions) ? array_keys($questions) : array();
195
-        }
196
-        $_where = ! empty($question_IDS_in_group) ? array('QST_ID' => array('not_in', $question_IDS_in_group))
197
-            : array();
198
-
199
-        return EEM_Question::instance()->get_all(array($_where, 'order_by' => array('QST_ID' => 'ASC')));
200
-    }
201
-
202
-
203
-    /**
204
-     * Gets all events which are related to this question group
205
-     *
206
-     * @return EE_Event[]
207
-     */
208
-    public function events()
209
-    {
210
-        return $this->get_many_related('Event');
211
-    }
212
-
213
-
214
-    /**
215
-     * Adds the question to this question group
216
-     *
217
-     * @param EE_Question || int $question object or ID
218
-     * @return boolean if successful
219
-     */
220
-    public function add_question($questionObjectOrID)
221
-    {
222
-        return $this->_add_relation_to($questionObjectOrID, 'Question');
223
-    }
224
-
225
-
226
-    /**
227
-     * Removes the question from this question group
228
-     *
229
-     * @param EE_Question || int $question object or ID
230
-     * @return boolean of success
231
-     */
232
-    public function remove_question($questionObjectOrID)
233
-    {
234
-        return $this->_remove_relation_to($questionObjectOrID, 'Question');
235
-    }
236
-
237
-
238
-    /**
239
-     * @param $questionObjectOrID
240
-     * @param $qst_order
241
-     * @return int
242
-     */
243
-    public function update_question_order($questionObjectOrID, $qst_order)
244
-    {
245
-        $qst_ID = $questionObjectOrID instanceof EE_Question ? $questionObjectOrID->ID() : (int) $questionObjectOrID;
246
-        return EEM_Question_Group_Question::instance()->update(
247
-            array('QGQ_order' => $qst_order),
248
-            array(
249
-                array(
250
-                    'QST_ID' => $qst_ID,
251
-                    'QSG_ID' => $this->ID(),
252
-                ),
253
-            )
254
-        );
255
-    }
256
-
257
-
258
-    /**
259
-     * Basically this is method just returns whether the question group has any questions with answers.  This is used
260
-     * by the admin currently to determine whether we should display the ui for deleting permanently or not b/c
261
-     * question groups with questions that have answers should not be possible to delete permanently
262
-     *
263
-     * @return boolean true if has questions with answers, false if not.
264
-     */
265
-    public function has_questions_with_answers()
266
-    {
267
-        $has_answers = false;
268
-        $questions = $this->get_many_related('Question');
269
-        foreach ($questions as $question) {
270
-            if ($question->count_related('Answer') > 0) {
271
-                $has_answers = true;
272
-            }
273
-        }
274
-        return $has_answers;
275
-    }
276
-
277
-
278
-    /**
279
-     * The purpose of this method is set the question group order for this question group to be the max out of all
280
-     * question groups
281
-     *
282
-     * @access public
283
-     * @return void
284
-     */
285
-    public function set_order_to_latest()
286
-    {
287
-        $latest_order = $this->get_model()->get_latest_question_group_order();
288
-        $latest_order++;
289
-        $this->set('QSG_order', $latest_order);
290
-    }
15
+	/**
16
+	 * @param array $props_n_values
17
+	 * @return EE_Question_Group|mixed
18
+	 */
19
+	public static function new_instance($props_n_values = array())
20
+	{
21
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
22
+		return $has_object ? $has_object : new self($props_n_values);
23
+	}
24
+
25
+
26
+	/**
27
+	 * @param array $props_n_values
28
+	 * @return EE_Question_Group
29
+	 */
30
+	public static function new_instance_from_db($props_n_values = array())
31
+	{
32
+		return new self($props_n_values, true);
33
+	}
34
+
35
+
36
+	/**
37
+	 * gets the question group's name
38
+	 *
39
+	 * @access public
40
+	 * @param bool $pretty
41
+	 * @return string
42
+	 */
43
+	public function name($pretty = false)
44
+	{
45
+		return $pretty ? $this->get_pretty('QSG_name') : $this->get('QSG_name');
46
+	}
47
+
48
+
49
+	/**
50
+	 * Gets the question group's internal name
51
+	 *
52
+	 * @access public
53
+	 * @return string
54
+	 */
55
+	public function identifier()
56
+	{
57
+		return $this->get('QSG_identifier');
58
+	}
59
+
60
+
61
+	/**
62
+	 * Gets the question group's description
63
+	 *
64
+	 * @access public
65
+	 * @param bool $pretty
66
+	 * @return string
67
+	 */
68
+	public function desc($pretty = false)
69
+	{
70
+		return $pretty ? $this->get_pretty('QSG_desc') : $this->get('QSG_desc');
71
+	}
72
+
73
+
74
+	/**
75
+	 * Gets the question group's order number in a sequence
76
+	 * of other question groups
77
+	 *
78
+	 * @access public
79
+	 * @return int
80
+	 */
81
+	public function order()
82
+	{
83
+		return $this->get('QSG_order');
84
+	}
85
+
86
+
87
+	/**
88
+	 * Returns whether to show the group's name on the frontend
89
+	 *
90
+	 * @access public
91
+	 * @return boolean
92
+	 */
93
+	public function show_group_name()
94
+	{
95
+		return $this->get('QSG_show_group_name');
96
+	}
97
+
98
+
99
+	/**
100
+	 * Returns whether to show the group's description
101
+	 * on the frontend
102
+	 *
103
+	 * @access public
104
+	 * @return boolean
105
+	 */
106
+	public function show_group_desc()
107
+	{
108
+		return $this->get('QSG_show_group_desc');
109
+	}
110
+
111
+
112
+	/**
113
+	 * Returns whether this is a 'system group' (meaning
114
+	 * a question group integral to the system, whose questions
115
+	 * relate to the attendee table)
116
+	 *
117
+	 * @access public
118
+	 * @return int
119
+	 */
120
+	public function system_group()
121
+	{
122
+		return $this->get('QSG_system');
123
+	}
124
+
125
+
126
+	/**
127
+	 * get the author of the question group.
128
+	 *
129
+	 * @since 4.5.0
130
+	 *
131
+	 * @return int
132
+	 */
133
+	public function wp_user()
134
+	{
135
+		return $this->get('QSG_wp_user');
136
+	}
137
+
138
+
139
+	/**
140
+	 * Returns whether this question group has
141
+	 * been deleted
142
+	 *
143
+	 * @access public
144
+	 * @return boolean
145
+	 */
146
+	public function deleted()
147
+	{
148
+		return $this->get('QST_deleted');
149
+	}
150
+
151
+
152
+	/**
153
+	 * Gets an array of questions with questions IN the group at the start of the array and questions NOT in the group
154
+	 * at the end of the array.  Questions in the group are ordered by Question_Group_Question.QGQ_order and questions
155
+	 * NOT in the group are ordered by Question.QGQ_order
156
+	 *
157
+	 * @return EE_Question[]
158
+	 */
159
+	public function questions_in_and_not_in_group()
160
+	{
161
+		$questions_in_group = $this->questions();
162
+		$exclude_question_ids = ! empty($questions_in_group) ? array_keys($questions_in_group) : array();
163
+		$questions_not_in_group = $this->questions_not_in_group($exclude_question_ids);
164
+		return $questions_in_group + $questions_not_in_group;
165
+	}
166
+
167
+
168
+	/**
169
+	 * Gets all the questions which are part of this question group (ordered Question_Group_Question.QGQ_order)
170
+	 *
171
+	 * @param array $query_params
172
+	 * @return EE_Question[]
173
+	 */
174
+	public function questions($query_params = array())
175
+	{
176
+		$query_params = ! empty($query_params) ? $query_params
177
+			: array('order_by' => array('Question_Group_Question.QGQ_order' => 'ASC'));
178
+		return $this->ID() ? $this->get_many_related('Question', $query_params) : array();
179
+	}
180
+
181
+
182
+	/**
183
+	 * Gets all the questions which are NOT part of this question group.
184
+	 *
185
+	 * @param  mixed $question_IDS_in_group if empty array then all questions returned.  if FALSE then we first get
186
+	 *                                      questions in this group and exclude them from questions get all. IF empty
187
+	 *                                      array then we just return all questions.
188
+	 * @return EE_Question[]
189
+	 */
190
+	public function questions_not_in_group($question_IDS_in_group = false)
191
+	{
192
+		if ($question_IDS_in_group === false) {
193
+			$questions = $this->questions();
194
+			$question_IDS_in_group = ! empty($questions) ? array_keys($questions) : array();
195
+		}
196
+		$_where = ! empty($question_IDS_in_group) ? array('QST_ID' => array('not_in', $question_IDS_in_group))
197
+			: array();
198
+
199
+		return EEM_Question::instance()->get_all(array($_where, 'order_by' => array('QST_ID' => 'ASC')));
200
+	}
201
+
202
+
203
+	/**
204
+	 * Gets all events which are related to this question group
205
+	 *
206
+	 * @return EE_Event[]
207
+	 */
208
+	public function events()
209
+	{
210
+		return $this->get_many_related('Event');
211
+	}
212
+
213
+
214
+	/**
215
+	 * Adds the question to this question group
216
+	 *
217
+	 * @param EE_Question || int $question object or ID
218
+	 * @return boolean if successful
219
+	 */
220
+	public function add_question($questionObjectOrID)
221
+	{
222
+		return $this->_add_relation_to($questionObjectOrID, 'Question');
223
+	}
224
+
225
+
226
+	/**
227
+	 * Removes the question from this question group
228
+	 *
229
+	 * @param EE_Question || int $question object or ID
230
+	 * @return boolean of success
231
+	 */
232
+	public function remove_question($questionObjectOrID)
233
+	{
234
+		return $this->_remove_relation_to($questionObjectOrID, 'Question');
235
+	}
236
+
237
+
238
+	/**
239
+	 * @param $questionObjectOrID
240
+	 * @param $qst_order
241
+	 * @return int
242
+	 */
243
+	public function update_question_order($questionObjectOrID, $qst_order)
244
+	{
245
+		$qst_ID = $questionObjectOrID instanceof EE_Question ? $questionObjectOrID->ID() : (int) $questionObjectOrID;
246
+		return EEM_Question_Group_Question::instance()->update(
247
+			array('QGQ_order' => $qst_order),
248
+			array(
249
+				array(
250
+					'QST_ID' => $qst_ID,
251
+					'QSG_ID' => $this->ID(),
252
+				),
253
+			)
254
+		);
255
+	}
256
+
257
+
258
+	/**
259
+	 * Basically this is method just returns whether the question group has any questions with answers.  This is used
260
+	 * by the admin currently to determine whether we should display the ui for deleting permanently or not b/c
261
+	 * question groups with questions that have answers should not be possible to delete permanently
262
+	 *
263
+	 * @return boolean true if has questions with answers, false if not.
264
+	 */
265
+	public function has_questions_with_answers()
266
+	{
267
+		$has_answers = false;
268
+		$questions = $this->get_many_related('Question');
269
+		foreach ($questions as $question) {
270
+			if ($question->count_related('Answer') > 0) {
271
+				$has_answers = true;
272
+			}
273
+		}
274
+		return $has_answers;
275
+	}
276
+
277
+
278
+	/**
279
+	 * The purpose of this method is set the question group order for this question group to be the max out of all
280
+	 * question groups
281
+	 *
282
+	 * @access public
283
+	 * @return void
284
+	 */
285
+	public function set_order_to_latest()
286
+	{
287
+		$latest_order = $this->get_model()->get_latest_question_group_order();
288
+		$latest_order++;
289
+		$this->set('QSG_order', $latest_order);
290
+	}
291 291
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Question_Option.class.php 2 patches
Doc Comments   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
      * @param array  $props_n_values  incoming values from the database
40 40
      * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
41 41
      *                                the website will be used.
42
-     * @return EE_Attendee
42
+     * @return EE_Question_Option
43 43
      */
44 44
     public static function new_instance_from_db($props_n_values = array(), $timezone = null)
45 45
     {
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
      * Sets the option's key value
52 52
      *
53 53
      * @param string $value
54
-     * @return bool success
54
+     * @return boolean|null success
55 55
      */
56 56
     public function set_value($value)
57 57
     {
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
      * Sets the option's Display Text
64 64
      *
65 65
      * @param string $text
66
-     * @return bool success
66
+     * @return boolean|null success
67 67
      */
68 68
     public function set_desc($text)
69 69
     {
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
      *
77 77
      * @access public
78 78
      * @param integer $order
79
-     * @return bool      $success
79
+     * @return boolean|null      $success
80 80
      */
81 81
     public function set_order($order)
82 82
     {
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
      * Sets the ID of the related question
89 89
      *
90 90
      * @param int $question_ID
91
-     * @return bool success
91
+     * @return boolean|null success
92 92
      */
93 93
     public function set_question_ID($question_ID)
94 94
     {
@@ -100,7 +100,7 @@  discard block
 block discarded – undo
100 100
      * Sets the option's opt_group
101 101
      *
102 102
      * @param string $text
103
-     * @return bool success
103
+     * @return string success
104 104
      */
105 105
     public function set_opt_group($text)
106 106
     {
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
      * Sets QSO_system
221 221
      *
222 222
      * @param string $QSO_system
223
-     * @return bool
223
+     * @return boolean|null
224 224
      */
225 225
     public function set_system($QSO_system)
226 226
     {
Please login to merge, or discard this patch.
Indentation   +216 added lines, -216 removed lines patch added patch discarded remove patch
@@ -10,220 +10,220 @@
 block discarded – undo
10 10
 class EE_Question_Option extends EE_Soft_Delete_Base_Class implements EEI_Duplicatable
11 11
 {
12 12
 
13
-    /**
14
-     * Question Option Opt Group Name
15
-     *
16
-     * @access protected
17
-     * @var string
18
-     */
19
-    protected $_QSO_opt_group = null;
20
-
21
-
22
-    /**
23
-     *
24
-     * @param array  $props_n_values          incoming values
25
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
26
-     *                                        used.)
27
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
28
-     *                                        date_format and the second value is the time format
29
-     * @return EE_Attendee
30
-     */
31
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
32
-    {
33
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
34
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
35
-    }
36
-
37
-
38
-    /**
39
-     * @param array  $props_n_values  incoming values from the database
40
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
41
-     *                                the website will be used.
42
-     * @return EE_Attendee
43
-     */
44
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
45
-    {
46
-        return new self($props_n_values, true, $timezone);
47
-    }
48
-
49
-
50
-    /**
51
-     * Sets the option's key value
52
-     *
53
-     * @param string $value
54
-     * @return bool success
55
-     */
56
-    public function set_value($value)
57
-    {
58
-        $this->set('QSO_value', $value);
59
-    }
60
-
61
-
62
-    /**
63
-     * Sets the option's Display Text
64
-     *
65
-     * @param string $text
66
-     * @return bool success
67
-     */
68
-    public function set_desc($text)
69
-    {
70
-        $this->set('QSO_desc', $text);
71
-    }
72
-
73
-
74
-    /**
75
-     * Sets the order for this option
76
-     *
77
-     * @access public
78
-     * @param integer $order
79
-     * @return bool      $success
80
-     */
81
-    public function set_order($order)
82
-    {
83
-        $this->set('QSO_order', $order);
84
-    }
85
-
86
-
87
-    /**
88
-     * Sets the ID of the related question
89
-     *
90
-     * @param int $question_ID
91
-     * @return bool success
92
-     */
93
-    public function set_question_ID($question_ID)
94
-    {
95
-        $this->set('QST_ID', $question_ID);
96
-    }
97
-
98
-
99
-    /**
100
-     * Sets the option's opt_group
101
-     *
102
-     * @param string $text
103
-     * @return bool success
104
-     */
105
-    public function set_opt_group($text)
106
-    {
107
-        return $this->_QSO_opt_group = $text;
108
-    }
109
-
110
-
111
-    /**
112
-     * Gets the option's key value
113
-     *
114
-     * @return string
115
-     */
116
-    public function value()
117
-    {
118
-        return $this->get('QSO_value');
119
-    }
120
-
121
-
122
-    /**
123
-     * Gets the option's display text
124
-     *
125
-     * @return string
126
-     */
127
-    public function desc()
128
-    {
129
-        return $this->get('QSO_desc');
130
-    }
131
-
132
-
133
-    /**
134
-     * Returns whether this option has been deleted or not
135
-     *
136
-     * @return boolean
137
-     */
138
-    public function deleted()
139
-    {
140
-        return $this->get('QSO_deleted');
141
-    }
142
-
143
-
144
-    /**
145
-     * Returns the order or the Question Option
146
-     *
147
-     * @access public
148
-     * @return integer
149
-     */
150
-    public function order()
151
-    {
152
-        return $this->get('QSO_option');
153
-    }
154
-
155
-
156
-    /**
157
-     * Gets the related question's ID
158
-     *
159
-     * @return int
160
-     */
161
-    public function question_ID()
162
-    {
163
-        return $this->get('QST_ID');
164
-    }
165
-
166
-
167
-    /**
168
-     * Returns the question related to this question option
169
-     *
170
-     * @return EE_Question
171
-     */
172
-    public function question()
173
-    {
174
-        return $this->get_first_related('Question');
175
-    }
176
-
177
-
178
-    /**
179
-     * Gets the option's opt_group
180
-     *
181
-     * @return string
182
-     */
183
-    public function opt_group()
184
-    {
185
-        return $this->_QSO_opt_group;
186
-    }
187
-
188
-    /**
189
-     * Duplicates this question option. By default the new question option will be for the same question,
190
-     * but that can be overriden by setting the 'QST_ID' option
191
-     *
192
-     * @param array $options {
193
-     * @type int    $QST_ID  the QST_ID attribute of this question option, otherwise it will be for the same question
194
-     *                       as the original
195
-     */
196
-    public function duplicate($options = array())
197
-    {
198
-        $new_question_option = clone $this;
199
-        $new_question_option->set('QSO_ID', null);
200
-        if (array_key_exists(
201
-            'QST_ID',
202
-            $options
203
-        )) {// use array_key_exists instead of isset because NULL might be a valid value
204
-            $new_question_option->set_question_ID($options['QST_ID']);
205
-        }
206
-        $new_question_option->save();
207
-    }
208
-
209
-    /**
210
-     * Gets the QSO_system value
211
-     *
212
-     * @return string|null
213
-     */
214
-    public function system()
215
-    {
216
-        return $this->get('QSO_system');
217
-    }
218
-
219
-    /**
220
-     * Sets QSO_system
221
-     *
222
-     * @param string $QSO_system
223
-     * @return bool
224
-     */
225
-    public function set_system($QSO_system)
226
-    {
227
-        return $this->set('QSO_system', $QSO_system);
228
-    }
13
+	/**
14
+	 * Question Option Opt Group Name
15
+	 *
16
+	 * @access protected
17
+	 * @var string
18
+	 */
19
+	protected $_QSO_opt_group = null;
20
+
21
+
22
+	/**
23
+	 *
24
+	 * @param array  $props_n_values          incoming values
25
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
26
+	 *                                        used.)
27
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
28
+	 *                                        date_format and the second value is the time format
29
+	 * @return EE_Attendee
30
+	 */
31
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
32
+	{
33
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
34
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
35
+	}
36
+
37
+
38
+	/**
39
+	 * @param array  $props_n_values  incoming values from the database
40
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
41
+	 *                                the website will be used.
42
+	 * @return EE_Attendee
43
+	 */
44
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
45
+	{
46
+		return new self($props_n_values, true, $timezone);
47
+	}
48
+
49
+
50
+	/**
51
+	 * Sets the option's key value
52
+	 *
53
+	 * @param string $value
54
+	 * @return bool success
55
+	 */
56
+	public function set_value($value)
57
+	{
58
+		$this->set('QSO_value', $value);
59
+	}
60
+
61
+
62
+	/**
63
+	 * Sets the option's Display Text
64
+	 *
65
+	 * @param string $text
66
+	 * @return bool success
67
+	 */
68
+	public function set_desc($text)
69
+	{
70
+		$this->set('QSO_desc', $text);
71
+	}
72
+
73
+
74
+	/**
75
+	 * Sets the order for this option
76
+	 *
77
+	 * @access public
78
+	 * @param integer $order
79
+	 * @return bool      $success
80
+	 */
81
+	public function set_order($order)
82
+	{
83
+		$this->set('QSO_order', $order);
84
+	}
85
+
86
+
87
+	/**
88
+	 * Sets the ID of the related question
89
+	 *
90
+	 * @param int $question_ID
91
+	 * @return bool success
92
+	 */
93
+	public function set_question_ID($question_ID)
94
+	{
95
+		$this->set('QST_ID', $question_ID);
96
+	}
97
+
98
+
99
+	/**
100
+	 * Sets the option's opt_group
101
+	 *
102
+	 * @param string $text
103
+	 * @return bool success
104
+	 */
105
+	public function set_opt_group($text)
106
+	{
107
+		return $this->_QSO_opt_group = $text;
108
+	}
109
+
110
+
111
+	/**
112
+	 * Gets the option's key value
113
+	 *
114
+	 * @return string
115
+	 */
116
+	public function value()
117
+	{
118
+		return $this->get('QSO_value');
119
+	}
120
+
121
+
122
+	/**
123
+	 * Gets the option's display text
124
+	 *
125
+	 * @return string
126
+	 */
127
+	public function desc()
128
+	{
129
+		return $this->get('QSO_desc');
130
+	}
131
+
132
+
133
+	/**
134
+	 * Returns whether this option has been deleted or not
135
+	 *
136
+	 * @return boolean
137
+	 */
138
+	public function deleted()
139
+	{
140
+		return $this->get('QSO_deleted');
141
+	}
142
+
143
+
144
+	/**
145
+	 * Returns the order or the Question Option
146
+	 *
147
+	 * @access public
148
+	 * @return integer
149
+	 */
150
+	public function order()
151
+	{
152
+		return $this->get('QSO_option');
153
+	}
154
+
155
+
156
+	/**
157
+	 * Gets the related question's ID
158
+	 *
159
+	 * @return int
160
+	 */
161
+	public function question_ID()
162
+	{
163
+		return $this->get('QST_ID');
164
+	}
165
+
166
+
167
+	/**
168
+	 * Returns the question related to this question option
169
+	 *
170
+	 * @return EE_Question
171
+	 */
172
+	public function question()
173
+	{
174
+		return $this->get_first_related('Question');
175
+	}
176
+
177
+
178
+	/**
179
+	 * Gets the option's opt_group
180
+	 *
181
+	 * @return string
182
+	 */
183
+	public function opt_group()
184
+	{
185
+		return $this->_QSO_opt_group;
186
+	}
187
+
188
+	/**
189
+	 * Duplicates this question option. By default the new question option will be for the same question,
190
+	 * but that can be overriden by setting the 'QST_ID' option
191
+	 *
192
+	 * @param array $options {
193
+	 * @type int    $QST_ID  the QST_ID attribute of this question option, otherwise it will be for the same question
194
+	 *                       as the original
195
+	 */
196
+	public function duplicate($options = array())
197
+	{
198
+		$new_question_option = clone $this;
199
+		$new_question_option->set('QSO_ID', null);
200
+		if (array_key_exists(
201
+			'QST_ID',
202
+			$options
203
+		)) {// use array_key_exists instead of isset because NULL might be a valid value
204
+			$new_question_option->set_question_ID($options['QST_ID']);
205
+		}
206
+		$new_question_option->save();
207
+	}
208
+
209
+	/**
210
+	 * Gets the QSO_system value
211
+	 *
212
+	 * @return string|null
213
+	 */
214
+	public function system()
215
+	{
216
+		return $this->get('QSO_system');
217
+	}
218
+
219
+	/**
220
+	 * Sets QSO_system
221
+	 *
222
+	 * @param string $QSO_system
223
+	 * @return bool
224
+	 */
225
+	public function set_system($QSO_system)
226
+	{
227
+		return $this->set('QSO_system', $QSO_system);
228
+	}
229 229
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Status.class.php 3 patches
Doc Comments   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
      * Sets code
53 53
      *
54 54
      * @param string $code
55
-     * @return boolean
55
+     * @return boolean|null
56 56
      */
57 57
     public function set_code($code)
58 58
     {
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
      * Sets desc
76 76
      *
77 77
      * @param string $desc
78
-     * @return boolean
78
+     * @return boolean|null
79 79
      */
80 80
     public function set_desc($desc)
81 81
     {
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
      * Sets type
99 99
      *
100 100
      * @param string $type
101
-     * @return boolean
101
+     * @return boolean|null
102 102
      */
103 103
     public function set_type($type)
104 104
     {
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
      * Sets can_edit
122 122
      *
123 123
      * @param boolean $can_edit
124
-     * @return boolean
124
+     * @return boolean|null
125 125
      */
126 126
     public function set_can_edit($can_edit)
127 127
     {
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
      * Sets open
145 145
      *
146 146
      * @param boolean $open
147
-     * @return boolean
147
+     * @return boolean|null
148 148
      */
149 149
     public function set_open($open)
150 150
     {
Please login to merge, or discard this patch.
Indentation   +138 added lines, -138 removed lines patch added patch discarded remove patch
@@ -12,142 +12,142 @@
 block discarded – undo
12 12
 class EE_Status extends EE_Base_Class
13 13
 {
14 14
 
15
-    /**
16
-     * @param array $props_n_values
17
-     * @return EE_Status
18
-     */
19
-    public static function new_instance($props_n_values = array())
20
-    {
21
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
22
-        return $has_object ? $has_object : new self($props_n_values);
23
-    }
24
-
25
-
26
-    /**
27
-     * @param array $props_n_values
28
-     * @return EE_Status
29
-     */
30
-    public static function new_instance_from_db($props_n_values = array())
31
-    {
32
-        return new self($props_n_values, true);
33
-    }
34
-
35
-
36
-    /**
37
-     * Gets code
38
-     *
39
-     * @param bool   $plural
40
-     * @param string $schema
41
-     * @return string
42
-     */
43
-    public function code($plural = false, $schema = 'upper')
44
-    {
45
-        $id = $this->get('STS_ID');
46
-        $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
47
-        return $code[ $id ];
48
-    }
49
-
50
-
51
-    /**
52
-     * Sets code
53
-     *
54
-     * @param string $code
55
-     * @return boolean
56
-     */
57
-    public function set_code($code)
58
-    {
59
-        $this->set('STS_code', $code);
60
-    }
61
-
62
-
63
-    /**
64
-     * Gets desc
65
-     *
66
-     * @return string
67
-     */
68
-    public function desc()
69
-    {
70
-        return $this->get('STS_desc');
71
-    }
72
-
73
-
74
-    /**
75
-     * Sets desc
76
-     *
77
-     * @param string $desc
78
-     * @return boolean
79
-     */
80
-    public function set_desc($desc)
81
-    {
82
-        $this->set('STS_desc', $desc);
83
-    }
84
-
85
-
86
-    /**
87
-     * Gets type
88
-     *
89
-     * @return string
90
-     */
91
-    public function type()
92
-    {
93
-        return $this->get('STS_type');
94
-    }
95
-
96
-
97
-    /**
98
-     * Sets type
99
-     *
100
-     * @param string $type
101
-     * @return boolean
102
-     */
103
-    public function set_type($type)
104
-    {
105
-        $this->set('STS_type', $type);
106
-    }
107
-
108
-
109
-    /**
110
-     * Gets can_edit
111
-     *
112
-     * @return boolean
113
-     */
114
-    public function can_edit()
115
-    {
116
-        return $this->get('STS_can_edit');
117
-    }
118
-
119
-
120
-    /**
121
-     * Sets can_edit
122
-     *
123
-     * @param boolean $can_edit
124
-     * @return boolean
125
-     */
126
-    public function set_can_edit($can_edit)
127
-    {
128
-        $this->set('STS_can_edit', $can_edit);
129
-    }
130
-
131
-
132
-    /**
133
-     * Gets open
134
-     *
135
-     * @return boolean
136
-     */
137
-    public function open()
138
-    {
139
-        return $this->get('STS_open');
140
-    }
141
-
142
-
143
-    /**
144
-     * Sets open
145
-     *
146
-     * @param boolean $open
147
-     * @return boolean
148
-     */
149
-    public function set_open($open)
150
-    {
151
-        $this->set('STS_open', $open);
152
-    }
15
+	/**
16
+	 * @param array $props_n_values
17
+	 * @return EE_Status
18
+	 */
19
+	public static function new_instance($props_n_values = array())
20
+	{
21
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
22
+		return $has_object ? $has_object : new self($props_n_values);
23
+	}
24
+
25
+
26
+	/**
27
+	 * @param array $props_n_values
28
+	 * @return EE_Status
29
+	 */
30
+	public static function new_instance_from_db($props_n_values = array())
31
+	{
32
+		return new self($props_n_values, true);
33
+	}
34
+
35
+
36
+	/**
37
+	 * Gets code
38
+	 *
39
+	 * @param bool   $plural
40
+	 * @param string $schema
41
+	 * @return string
42
+	 */
43
+	public function code($plural = false, $schema = 'upper')
44
+	{
45
+		$id = $this->get('STS_ID');
46
+		$code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
47
+		return $code[ $id ];
48
+	}
49
+
50
+
51
+	/**
52
+	 * Sets code
53
+	 *
54
+	 * @param string $code
55
+	 * @return boolean
56
+	 */
57
+	public function set_code($code)
58
+	{
59
+		$this->set('STS_code', $code);
60
+	}
61
+
62
+
63
+	/**
64
+	 * Gets desc
65
+	 *
66
+	 * @return string
67
+	 */
68
+	public function desc()
69
+	{
70
+		return $this->get('STS_desc');
71
+	}
72
+
73
+
74
+	/**
75
+	 * Sets desc
76
+	 *
77
+	 * @param string $desc
78
+	 * @return boolean
79
+	 */
80
+	public function set_desc($desc)
81
+	{
82
+		$this->set('STS_desc', $desc);
83
+	}
84
+
85
+
86
+	/**
87
+	 * Gets type
88
+	 *
89
+	 * @return string
90
+	 */
91
+	public function type()
92
+	{
93
+		return $this->get('STS_type');
94
+	}
95
+
96
+
97
+	/**
98
+	 * Sets type
99
+	 *
100
+	 * @param string $type
101
+	 * @return boolean
102
+	 */
103
+	public function set_type($type)
104
+	{
105
+		$this->set('STS_type', $type);
106
+	}
107
+
108
+
109
+	/**
110
+	 * Gets can_edit
111
+	 *
112
+	 * @return boolean
113
+	 */
114
+	public function can_edit()
115
+	{
116
+		return $this->get('STS_can_edit');
117
+	}
118
+
119
+
120
+	/**
121
+	 * Sets can_edit
122
+	 *
123
+	 * @param boolean $can_edit
124
+	 * @return boolean
125
+	 */
126
+	public function set_can_edit($can_edit)
127
+	{
128
+		$this->set('STS_can_edit', $can_edit);
129
+	}
130
+
131
+
132
+	/**
133
+	 * Gets open
134
+	 *
135
+	 * @return boolean
136
+	 */
137
+	public function open()
138
+	{
139
+		return $this->get('STS_open');
140
+	}
141
+
142
+
143
+	/**
144
+	 * Sets open
145
+	 *
146
+	 * @param boolean $open
147
+	 * @return boolean
148
+	 */
149
+	public function set_open($open)
150
+	{
151
+		$this->set('STS_open', $open);
152
+	}
153 153
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@
 block discarded – undo
44 44
     {
45 45
         $id = $this->get('STS_ID');
46 46
         $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
47
-        return $code[ $id ];
47
+        return $code[$id];
48 48
     }
49 49
 
50 50
 
Please login to merge, or discard this patch.
core/db_classes/EE_Term.class.php 3 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
      * Sets name
67 67
      *
68 68
      * @param string $name
69
-     * @return boolean
69
+     * @return boolean|null
70 70
      */
71 71
     public function set_name($name)
72 72
     {
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
      * Sets slug
90 90
      *
91 91
      * @param string $slug
92
-     * @return boolean
92
+     * @return boolean|null
93 93
      */
94 94
     public function set_slug($slug)
95 95
     {
Please login to merge, or discard this patch.
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -12,87 +12,87 @@
 block discarded – undo
12 12
 class EE_Term extends EE_Base_Class
13 13
 {
14 14
 
15
-    public $post_type;
15
+	public $post_type;
16 16
 
17
-    /**
18
-     * Sets some dynamic defaults
19
-     *
20
-     * @param array  $fieldValues
21
-     * @param bool   $bydb
22
-     * @param string $timezone
23
-     */
24
-    protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
25
-    {
26
-        if (! isset($fieldValues['slug'])) {
27
-            $fieldValues['slug'] = $fieldValues['name'];
28
-        }
29
-        parent::__construct($fieldValues, $bydb, $timezone);
30
-    }
17
+	/**
18
+	 * Sets some dynamic defaults
19
+	 *
20
+	 * @param array  $fieldValues
21
+	 * @param bool   $bydb
22
+	 * @param string $timezone
23
+	 */
24
+	protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
25
+	{
26
+		if (! isset($fieldValues['slug'])) {
27
+			$fieldValues['slug'] = $fieldValues['name'];
28
+		}
29
+		parent::__construct($fieldValues, $bydb, $timezone);
30
+	}
31 31
 
32 32
 
33
-    /**
34
-     * @param array $props_n_values
35
-     * @return EE_Term|mixed
36
-     */
37
-    public static function new_instance($props_n_values = array())
38
-    {
39
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
40
-        return $has_object ? $has_object : new self($props_n_values);
41
-    }
33
+	/**
34
+	 * @param array $props_n_values
35
+	 * @return EE_Term|mixed
36
+	 */
37
+	public static function new_instance($props_n_values = array())
38
+	{
39
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
40
+		return $has_object ? $has_object : new self($props_n_values);
41
+	}
42 42
 
43 43
 
44
-    /**
45
-     * @param array $props_n_values
46
-     * @return EE_Term
47
-     */
48
-    public static function new_instance_from_db($props_n_values = array())
49
-    {
50
-        return new self($props_n_values, true);
51
-    }
44
+	/**
45
+	 * @param array $props_n_values
46
+	 * @return EE_Term
47
+	 */
48
+	public static function new_instance_from_db($props_n_values = array())
49
+	{
50
+		return new self($props_n_values, true);
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * Gets name
56
-     *
57
-     * @return string
58
-     */
59
-    public function name()
60
-    {
61
-        return $this->get('name');
62
-    }
54
+	/**
55
+	 * Gets name
56
+	 *
57
+	 * @return string
58
+	 */
59
+	public function name()
60
+	{
61
+		return $this->get('name');
62
+	}
63 63
 
64 64
 
65
-    /**
66
-     * Sets name
67
-     *
68
-     * @param string $name
69
-     * @return boolean
70
-     */
71
-    public function set_name($name)
72
-    {
73
-        $this->set('name', $name);
74
-    }
65
+	/**
66
+	 * Sets name
67
+	 *
68
+	 * @param string $name
69
+	 * @return boolean
70
+	 */
71
+	public function set_name($name)
72
+	{
73
+		$this->set('name', $name);
74
+	}
75 75
 
76 76
 
77
-    /**
78
-     * Gets slug
79
-     *
80
-     * @return string
81
-     */
82
-    public function slug()
83
-    {
84
-        return $this->get('slug');
85
-    }
77
+	/**
78
+	 * Gets slug
79
+	 *
80
+	 * @return string
81
+	 */
82
+	public function slug()
83
+	{
84
+		return $this->get('slug');
85
+	}
86 86
 
87 87
 
88
-    /**
89
-     * Sets slug
90
-     *
91
-     * @param string $slug
92
-     * @return boolean
93
-     */
94
-    public function set_slug($slug)
95
-    {
96
-        $this->set('slug', $slug);
97
-    }
88
+	/**
89
+	 * Sets slug
90
+	 *
91
+	 * @param string $slug
92
+	 * @return boolean
93
+	 */
94
+	public function set_slug($slug)
95
+	{
96
+		$this->set('slug', $slug);
97
+	}
98 98
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@
 block discarded – undo
23 23
      */
24 24
     protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
25 25
     {
26
-        if (! isset($fieldValues['slug'])) {
26
+        if ( ! isset($fieldValues['slug'])) {
27 27
             $fieldValues['slug'] = $fieldValues['name'];
28 28
         }
29 29
         parent::__construct($fieldValues, $bydb, $timezone);
Please login to merge, or discard this patch.
core/db_classes/EE_Term_Taxonomy.class.php 2 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@  discard block
 block discarded – undo
47 47
      * Sets taxonomy
48 48
      *
49 49
      * @param string $taxonomy
50
-     * @return boolean
50
+     * @return boolean|null
51 51
      */
52 52
     public function set_taxonomy($taxonomy)
53 53
     {
@@ -70,7 +70,7 @@  discard block
 block discarded – undo
70 70
      * Sets term_count
71 71
      *
72 72
      * @param int $term_count
73
-     * @return boolean
73
+     * @return boolean|null
74 74
      */
75 75
     public function set_count($term_count)
76 76
     {
Please login to merge, or discard this patch.
Indentation   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -11,80 +11,80 @@
 block discarded – undo
11 11
 class EE_Term_Taxonomy extends EE_Base_Class
12 12
 {
13 13
 
14
-    /**
15
-     * @param array $props_n_values
16
-     * @return EE_Term_Taxonomy
17
-     */
18
-    public static function new_instance($props_n_values = array())
19
-    {
20
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
-        return $has_object ? $has_object : new self($props_n_values);
22
-    }
14
+	/**
15
+	 * @param array $props_n_values
16
+	 * @return EE_Term_Taxonomy
17
+	 */
18
+	public static function new_instance($props_n_values = array())
19
+	{
20
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
+		return $has_object ? $has_object : new self($props_n_values);
22
+	}
23 23
 
24 24
 
25
-    /**
26
-     * @param array $props_n_values
27
-     * @return EE_Term_Taxonomy
28
-     */
29
-    public static function new_instance_from_db($props_n_values = array())
30
-    {
31
-        return new self($props_n_values, true);
32
-    }
25
+	/**
26
+	 * @param array $props_n_values
27
+	 * @return EE_Term_Taxonomy
28
+	 */
29
+	public static function new_instance_from_db($props_n_values = array())
30
+	{
31
+		return new self($props_n_values, true);
32
+	}
33 33
 
34 34
 
35
-    /**
36
-     * Gets taxonomy
37
-     *
38
-     * @return string
39
-     */
40
-    public function taxonomy()
41
-    {
42
-        return $this->get('taxonomy');
43
-    }
35
+	/**
36
+	 * Gets taxonomy
37
+	 *
38
+	 * @return string
39
+	 */
40
+	public function taxonomy()
41
+	{
42
+		return $this->get('taxonomy');
43
+	}
44 44
 
45 45
 
46
-    /**
47
-     * Sets taxonomy
48
-     *
49
-     * @param string $taxonomy
50
-     * @return boolean
51
-     */
52
-    public function set_taxonomy($taxonomy)
53
-    {
54
-        $this->set('taxonomy', $taxonomy);
55
-    }
46
+	/**
47
+	 * Sets taxonomy
48
+	 *
49
+	 * @param string $taxonomy
50
+	 * @return boolean
51
+	 */
52
+	public function set_taxonomy($taxonomy)
53
+	{
54
+		$this->set('taxonomy', $taxonomy);
55
+	}
56 56
 
57 57
 
58
-    /**
59
-     * Gets term_count
60
-     *
61
-     * @return int
62
-     */
63
-    public function count()
64
-    {
65
-        return $this->get('term_count');
66
-    }
58
+	/**
59
+	 * Gets term_count
60
+	 *
61
+	 * @return int
62
+	 */
63
+	public function count()
64
+	{
65
+		return $this->get('term_count');
66
+	}
67 67
 
68 68
 
69
-    /**
70
-     * Sets term_count
71
-     *
72
-     * @param int $term_count
73
-     * @return boolean
74
-     */
75
-    public function set_count($term_count)
76
-    {
77
-        $this->set('term_count', $term_count);
78
-    }
69
+	/**
70
+	 * Sets term_count
71
+	 *
72
+	 * @param int $term_count
73
+	 * @return boolean
74
+	 */
75
+	public function set_count($term_count)
76
+	{
77
+		$this->set('term_count', $term_count);
78
+	}
79 79
 
80 80
 
81
-    /**
82
-     * Gets the term for this term taxonomy
83
-     *
84
-     * @return EE_Term
85
-     */
86
-    public function term()
87
-    {
88
-        return $this->get_first_related('Term');
89
-    }
81
+	/**
82
+	 * Gets the term for this term taxonomy
83
+	 *
84
+	 * @return EE_Term
85
+	 */
86
+	public function term()
87
+	{
88
+		return $this->get_first_related('Term');
89
+	}
90 90
 }
Please login to merge, or discard this patch.