Completed
Branch fix-dummy-related-question-qst... (e5efcf)
by
unknown
07:49 queued 03:45
created
core/db_models/relations/EE_Has_Many_Revision_Relation.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
         // k this is where things differ because NOW what we're going to do is get the PARENTS for the get all related (and we'll also start setting up the return_objs array containing related that DON'T have parent ids, for those that DON'T have parents to merge with our returned objects);
191 191
         foreach ($autosave_relations as $a_r) {
192 192
             $pid = $a_r->parent();
193
-            if (! empty($pid)) {
193
+            if ( ! empty($pid)) {
194 194
                 $parent_ids[] = $pid;
195 195
             } else {
196 196
                 $return_objs[] = $a_r;
@@ -206,9 +206,9 @@  discard block
 block discarded – undo
206 206
         }
207 207
 
208 208
         // now we setup the query to get all the parents
209
-        if (! empty($parent_ids)) {
210
-            $query_param_where_this_model_pk                  = $this->get_this_model()->get_this_model_name() . "." . $this->get_this_model()->get_primary_key_field()->get_name();
211
-            $query_param[0][ $query_param_where_this_model_pk ] = array('IN', $parent_ids);
209
+        if ( ! empty($parent_ids)) {
210
+            $query_param_where_this_model_pk                  = $this->get_this_model()->get_this_model_name().".".$this->get_this_model()->get_primary_key_field()->get_name();
211
+            $query_param[0][$query_param_where_this_model_pk] = array('IN', $parent_ids);
212 212
             $parents                                          = $this->get_other_model()->get_all($query_params);
213 213
         }
214 214
 
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
             var_dump($this_obj);
244 244
             var_dump($other_obj);/**/
245 245
 
246
-            if (! empty($parent_evt_id) && $parent_evt_id == $other_obj->get($this->_primary_cpt_field)) {
246
+            if ( ! empty($parent_evt_id) && $parent_evt_id == $other_obj->get($this->_primary_cpt_field)) {
247 247
                 // let's do query on this objects model to see if the incoming pk value on the obj matches any parents in this objects table.
248 248
                 $has_parent_obj = $this->get_other_model()->get_one(array(
249 249
                     array(
@@ -259,7 +259,7 @@  discard block
 block discarded – undo
259 259
                     $other_obj->set($pk_on_related_model, $has_parent_obj->ID());
260 260
                     $other_obj->set($this->_primary_cpt_field, $this_obj->ID());
261 261
 
262
-                    if (! $remove_relation) {
262
+                    if ( ! $remove_relation) {
263 263
                         $other_obj->save();
264 264
                         return array($other_obj);
265 265
                     } elseif ($remove_relation && ! $this->_blocking_delete) {
@@ -287,7 +287,7 @@  discard block
 block discarded – undo
287 287
             // the last possible condition on a revision is that the incoming other_model object has a fk that == $this_obj pk which means we just return the $other obj and let it save as normal so we see the return at the bottom of this method.
288 288
         } else {
289 289
             // we only need to do the below IF this is not a remove relation
290
-            if (! $remove_relation) {
290
+            if ( ! $remove_relation) {
291 291
                 // okay this is is a normal update/save/remove so, let's make sure the other object is not a revision of the current object.
292 292
                 // the other object will likely NOT have the correct fk on it (which is the primary_cpt_field_mame) so we must retrieve from the db to get that first.
293 293
                 $existing_other_obj    = $this->get_other_model()->get_one_by_ID($other_obj->ID());
Please login to merge, or discard this patch.
Indentation   +296 added lines, -296 removed lines patch added patch discarded remove patch
@@ -10,303 +10,303 @@
 block discarded – undo
10 10
  */
11 11
 class EE_Has_Many_Revision_Relation extends EE_Has_Many_Relation
12 12
 {
13
-    /**
14
-     * The Foreign key on the model that acts as the PRIMARY KEY used in special autosave handling where we query for
15
-     * autosaves (or the Foreign key on other models in relations pointing to this models primary key which is this
16
-     * value).  The _primary_cpt_field is what is equivalent to the post_id field on a cpt join.
17
-     *
18
-     * @var string
19
-     */
20
-    private $_primary_cpt_field;
21
-
22
-
23
-    /**
24
-     * This is what field serves as the "parent" column that is linked with whatever the main model's calling this
25
-     * relation has as a primary key.  In other words EEM_Event has 'Datetime' => new
26
-     * EE_Has_Many_Revision_Relation('EVT_ID', 'DTT_parent').  That means that in the EEM_Datetime model the
27
-     * 'DTT_Parent' field is related to the 'DTT_ID' primary key field (in the same model) because 'DTT_ID' is the
28
-     * primary key in the other model (EEM_Datetime).
29
-     *
30
-     * @var string
31
-     */
32
-    private $_parent_pk_relation_field;
33
-
34
-
35
-    /**
36
-     * Object representing the relationship between two models. Has_Many_Relations are where the OTHER model has the
37
-     * foreign key this model. IE, there can be many other model objects related to one of this model's objects (but
38
-     * NOT through a JOIN table, which is the case for EE_HABTM_Relations). This knows how to join the models, get
39
-     * related models across the relation, and add-and-remove the relationships.
40
-     *
41
-     * @param string  $primary_cpt_field             See property description for details
42
-     * @param string  $parent_pk_relation_field      This is the field that is "connected" to the $primary_cpt_field.
43
-     *                                               See property desc for details.
44
-     * @param boolean $block_deletes                 For this type of relation, we block by default. If there are
45
-     *                                               related models across this relation, block (prevent and add an
46
-     *                                               error) the deletion of this model
47
-     * @param string  $blocking_delete_error_message a customized error message on blocking deletes instead of the
48
-     *                                               default
49
-     */
50
-    public function __construct(
51
-        $primary_cpt_field,
52
-        $parent_pk_relation_field,
53
-        $block_deletes = true,
54
-        $blocking_delete_error_message = null
55
-    ) {
56
-        $this->_primary_cpt_field        = $primary_cpt_field;
57
-        $this->_parent_pk_relation_field = $parent_pk_relation_field;
58
-        parent::__construct($block_deletes, $blocking_delete_error_message);
59
-    }
60
-
61
-
62
-    /**
63
-     * Sets the other model object's foreign key to this model object's primary key. Feel free to do this manually if
64
-     * you like.
65
-     *
66
-     * @param EE_Base_Class|int $this_obj_or_id
67
-     * @param EE_Base_Class|int $other_obj_or_id
68
-     * @param array             $extra_join_model_fields_n_values
69
-     * @return \EE_Base_Class
70
-     * @throws \EE_Error
71
-     */
72
-    public function add_relation_to($this_obj_or_id, $other_obj_or_id, $extra_join_model_fields_n_values = array())
73
-    {
74
-        $this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id, true);
75
-        $other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id);
76
-
77
-        // handle possible revisions
78
-        $other_model_obj = $this->_check_for_revision($this_model_obj, $other_model_obj);
79
-
80
-        // if is array, then we've already done the add_relation so let's get out
81
-        if (is_array($other_model_obj)) {
82
-            return $other_model_obj[0];
83
-        }
84
-        // find the field on the other model which is a foreign key to this model
85
-        $fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
86
-        // set that field on the other model to this model's ID
87
-        $other_model_obj->set($fk_field_on_other_model->get_name(), $this_model_obj->ID());
88
-        $other_model_obj->save();
89
-        return $other_model_obj;
90
-    }
91
-
92
-
93
-    /**
94
-     * Sets the other model object's foreign key to its default, instead of pointing to this model object
95
-     *
96
-     * @param EE_Base_Class|int $this_obj_or_id
97
-     * @param EE_Base_Class|int $other_obj_or_id
98
-     * @param array             $where_query
99
-     * @return \EE_Base_Class
100
-     * @throws \EE_Error
101
-     */
102
-    public function remove_relation_to($this_obj_or_id, $other_obj_or_id, $where_query = array())
103
-    {
104
-        $this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id);
105
-        $other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id);
106
-        // handle possible revisions
107
-        $other_model_obj = $this->_check_for_revision($this_model_obj, $other_model_obj, true);
108
-
109
-
110
-        // if is array, then we've already done the add_relation so let's get out
111
-        if (is_array($other_model_obj)) {
112
-            return $other_model_obj[0];
113
-        }
114
-
115
-        // find the field on the other model which is a foreign key to this model
116
-        $fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
117
-
118
-
119
-        // set that field on the other model to this model's ID
120
-        if ($this->_blocking_delete) {
121
-            $other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
122
-            $other_model_obj->save();
123
-        } else {
124
-            $other_model_obj->delete();
125
-            $other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
126
-            return $other_model_obj;
127
-        }
128
-        return $other_model_obj;
129
-    }
130
-
131
-
132
-    /**
133
-     * This is identical to EE_Model_Relation->get_all_related() except we're going handle special autosave conditions
134
-     * in here.
135
-     *
136
-     * @param  EE_Base_Class|int $model_object_or_id
137
-     * @param  array             $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
138
-     * @param  boolean           $values_already_prepared_by_model_object @deprecated since 4.8.1
139
-     * @return EE_Base_Class[]
140
-     * @throws \EE_Error
141
-     */
142
-    public function get_all_related(
143
-        $model_object_or_id,
144
-        $query_params = array(),
145
-        $values_already_prepared_by_model_object = false
146
-    ) {
147
-        if ($values_already_prepared_by_model_object !== false) {
148
-            EE_Error::doing_it_wrong(
149
-                'EE_Model_Relation_Base::get_all_related',
150
-                esc_html__('The argument $values_already_prepared_by_model_object is no longer used.', 'event_espresso'),
151
-                '4.8.1'
152
-            );
153
-        }
154
-
155
-        // if this is an autosave then we're going to get things differently
156
-        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
157
-            return $this->_do_autosave_get_all($model_object_or_id, $query_params);
158
-        }
159
-
160
-        return parent::get_all_related($model_object_or_id, $query_params);
161
-    }
162
-
163
-
164
-    /**
165
-     * If we're in the midst of an autosave then we're going to do things a bit differently than the usual
166
-     * get_all_related (commenting within).  For description of params see the get_all_related() comments
167
-     *
168
-     * @access protected
169
-     * @param      $model_object_or_id
170
-     * @param      $query_params
171
-     * @param bool $deprecated
172
-     * @return \EE_Base_Class[]
173
-     * @throws \EE_Error
174
-     */
175
-    protected function _do_autosave_get_all($model_object_or_id, $query_params, $deprecated = false)
176
-    {
177
-
178
-        // first we check if the post_id for the incoming query is for an autosave.  If it isn't that's what we want!
179
-        $model_object_id = $this->_get_model_object_id($model_object_or_id);
180
-
181
-        $autosave  = wp_get_post_autosave($model_object_id);
182
-        $id_to_use = $autosave ? $autosave->ID : $model_object_id;
183
-
184
-        $autosave_relations = parent::get_all_related($id_to_use, $query_params);
185
-        $parent_ids         = $parents = array();
186
-        $return_objs        = array();
187
-
188
-        // k this is where things differ because NOW what we're going to do is get the PARENTS for the get all related (and we'll also start setting up the return_objs array containing related that DON'T have parent ids, for those that DON'T have parents to merge with our returned objects);
189
-        foreach ($autosave_relations as $a_r) {
190
-            $pid = $a_r->parent();
191
-            if (! empty($pid)) {
192
-                $parent_ids[] = $pid;
193
-            } else {
194
-                $return_objs[] = $a_r;
195
-            }
196
-        }
197
-
198
-        // we have to make sure we also include the ORIGINAL values
199
-        $originals = parent::get_all_related($model_object_or_id, $query_params);
200
-
201
-        // merge $originals with $return_objs
202
-        if ($originals) {
203
-            $return_objs = array_merge($originals, $return_objs);
204
-        }
205
-
206
-        // now we setup the query to get all the parents
207
-        if (! empty($parent_ids)) {
208
-            $query_param_where_this_model_pk                  = $this->get_this_model()->get_this_model_name() . "." . $this->get_this_model()->get_primary_key_field()->get_name();
209
-            $query_param[0][ $query_param_where_this_model_pk ] = array('IN', $parent_ids);
210
-            $parents                                          = $this->get_other_model()->get_all($query_params);
211
-        }
212
-
213
-        // var_dump($parents);
214
-
215
-
216
-        // now merge parents with our current $return_objs and send back
217
-        return array_merge($parents, $return_objs);
218
-    }
219
-
220
-
221
-    /**
222
-     * Basically this method gets called to verify if the incoming object needs to be manipulated somewhat because it
223
-     * is a revision save.  If so, then we change things before sending back.  We also do verifications when this IS
224
-     * NOT an revision because we always need to make sure that the autosave/revision has parent recorded (which is
225
-     * sometime delayed if the object is created/saved first by the autosave)
226
-     *
227
-     * @param  EE_Base_Class $this_obj
228
-     * @param  EE_Base_Class $other_obj
229
-     * @param  boolean       $remove_relation Indicates whether we're doing a remove_relation or add_relation.
230
-     * @return EE_Base_Class. ($other_obj);
231
-     * @throws \EE_Error
232
-     */
233
-    protected function _check_for_revision($this_obj, $other_obj, $remove_relation = false)
234
-    {
235
-        $pk_on_related_model = $this->get_other_model()->get_primary_key_field()->get_name();
236
-        // now we need to determine if we're in a WP revision save cause if we are we need to do some special handling
237
-        if ($this_obj->post_type() === 'revision') {
238
-            // first if $other_obj fk = this_obj pk then we know that this is a pk object, let's make sure there is a matching set for the autosave if there is then we save over it, if there isn't then we need to create a new one.
239
-            $parent_evt_id = $this_obj->parent();
240
-            /*var_dump($parent_evt_id);
13
+	/**
14
+	 * The Foreign key on the model that acts as the PRIMARY KEY used in special autosave handling where we query for
15
+	 * autosaves (or the Foreign key on other models in relations pointing to this models primary key which is this
16
+	 * value).  The _primary_cpt_field is what is equivalent to the post_id field on a cpt join.
17
+	 *
18
+	 * @var string
19
+	 */
20
+	private $_primary_cpt_field;
21
+
22
+
23
+	/**
24
+	 * This is what field serves as the "parent" column that is linked with whatever the main model's calling this
25
+	 * relation has as a primary key.  In other words EEM_Event has 'Datetime' => new
26
+	 * EE_Has_Many_Revision_Relation('EVT_ID', 'DTT_parent').  That means that in the EEM_Datetime model the
27
+	 * 'DTT_Parent' field is related to the 'DTT_ID' primary key field (in the same model) because 'DTT_ID' is the
28
+	 * primary key in the other model (EEM_Datetime).
29
+	 *
30
+	 * @var string
31
+	 */
32
+	private $_parent_pk_relation_field;
33
+
34
+
35
+	/**
36
+	 * Object representing the relationship between two models. Has_Many_Relations are where the OTHER model has the
37
+	 * foreign key this model. IE, there can be many other model objects related to one of this model's objects (but
38
+	 * NOT through a JOIN table, which is the case for EE_HABTM_Relations). This knows how to join the models, get
39
+	 * related models across the relation, and add-and-remove the relationships.
40
+	 *
41
+	 * @param string  $primary_cpt_field             See property description for details
42
+	 * @param string  $parent_pk_relation_field      This is the field that is "connected" to the $primary_cpt_field.
43
+	 *                                               See property desc for details.
44
+	 * @param boolean $block_deletes                 For this type of relation, we block by default. If there are
45
+	 *                                               related models across this relation, block (prevent and add an
46
+	 *                                               error) the deletion of this model
47
+	 * @param string  $blocking_delete_error_message a customized error message on blocking deletes instead of the
48
+	 *                                               default
49
+	 */
50
+	public function __construct(
51
+		$primary_cpt_field,
52
+		$parent_pk_relation_field,
53
+		$block_deletes = true,
54
+		$blocking_delete_error_message = null
55
+	) {
56
+		$this->_primary_cpt_field        = $primary_cpt_field;
57
+		$this->_parent_pk_relation_field = $parent_pk_relation_field;
58
+		parent::__construct($block_deletes, $blocking_delete_error_message);
59
+	}
60
+
61
+
62
+	/**
63
+	 * Sets the other model object's foreign key to this model object's primary key. Feel free to do this manually if
64
+	 * you like.
65
+	 *
66
+	 * @param EE_Base_Class|int $this_obj_or_id
67
+	 * @param EE_Base_Class|int $other_obj_or_id
68
+	 * @param array             $extra_join_model_fields_n_values
69
+	 * @return \EE_Base_Class
70
+	 * @throws \EE_Error
71
+	 */
72
+	public function add_relation_to($this_obj_or_id, $other_obj_or_id, $extra_join_model_fields_n_values = array())
73
+	{
74
+		$this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id, true);
75
+		$other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id);
76
+
77
+		// handle possible revisions
78
+		$other_model_obj = $this->_check_for_revision($this_model_obj, $other_model_obj);
79
+
80
+		// if is array, then we've already done the add_relation so let's get out
81
+		if (is_array($other_model_obj)) {
82
+			return $other_model_obj[0];
83
+		}
84
+		// find the field on the other model which is a foreign key to this model
85
+		$fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
86
+		// set that field on the other model to this model's ID
87
+		$other_model_obj->set($fk_field_on_other_model->get_name(), $this_model_obj->ID());
88
+		$other_model_obj->save();
89
+		return $other_model_obj;
90
+	}
91
+
92
+
93
+	/**
94
+	 * Sets the other model object's foreign key to its default, instead of pointing to this model object
95
+	 *
96
+	 * @param EE_Base_Class|int $this_obj_or_id
97
+	 * @param EE_Base_Class|int $other_obj_or_id
98
+	 * @param array             $where_query
99
+	 * @return \EE_Base_Class
100
+	 * @throws \EE_Error
101
+	 */
102
+	public function remove_relation_to($this_obj_or_id, $other_obj_or_id, $where_query = array())
103
+	{
104
+		$this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id);
105
+		$other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id);
106
+		// handle possible revisions
107
+		$other_model_obj = $this->_check_for_revision($this_model_obj, $other_model_obj, true);
108
+
109
+
110
+		// if is array, then we've already done the add_relation so let's get out
111
+		if (is_array($other_model_obj)) {
112
+			return $other_model_obj[0];
113
+		}
114
+
115
+		// find the field on the other model which is a foreign key to this model
116
+		$fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
117
+
118
+
119
+		// set that field on the other model to this model's ID
120
+		if ($this->_blocking_delete) {
121
+			$other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
122
+			$other_model_obj->save();
123
+		} else {
124
+			$other_model_obj->delete();
125
+			$other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
126
+			return $other_model_obj;
127
+		}
128
+		return $other_model_obj;
129
+	}
130
+
131
+
132
+	/**
133
+	 * This is identical to EE_Model_Relation->get_all_related() except we're going handle special autosave conditions
134
+	 * in here.
135
+	 *
136
+	 * @param  EE_Base_Class|int $model_object_or_id
137
+	 * @param  array             $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
138
+	 * @param  boolean           $values_already_prepared_by_model_object @deprecated since 4.8.1
139
+	 * @return EE_Base_Class[]
140
+	 * @throws \EE_Error
141
+	 */
142
+	public function get_all_related(
143
+		$model_object_or_id,
144
+		$query_params = array(),
145
+		$values_already_prepared_by_model_object = false
146
+	) {
147
+		if ($values_already_prepared_by_model_object !== false) {
148
+			EE_Error::doing_it_wrong(
149
+				'EE_Model_Relation_Base::get_all_related',
150
+				esc_html__('The argument $values_already_prepared_by_model_object is no longer used.', 'event_espresso'),
151
+				'4.8.1'
152
+			);
153
+		}
154
+
155
+		// if this is an autosave then we're going to get things differently
156
+		if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
157
+			return $this->_do_autosave_get_all($model_object_or_id, $query_params);
158
+		}
159
+
160
+		return parent::get_all_related($model_object_or_id, $query_params);
161
+	}
162
+
163
+
164
+	/**
165
+	 * If we're in the midst of an autosave then we're going to do things a bit differently than the usual
166
+	 * get_all_related (commenting within).  For description of params see the get_all_related() comments
167
+	 *
168
+	 * @access protected
169
+	 * @param      $model_object_or_id
170
+	 * @param      $query_params
171
+	 * @param bool $deprecated
172
+	 * @return \EE_Base_Class[]
173
+	 * @throws \EE_Error
174
+	 */
175
+	protected function _do_autosave_get_all($model_object_or_id, $query_params, $deprecated = false)
176
+	{
177
+
178
+		// first we check if the post_id for the incoming query is for an autosave.  If it isn't that's what we want!
179
+		$model_object_id = $this->_get_model_object_id($model_object_or_id);
180
+
181
+		$autosave  = wp_get_post_autosave($model_object_id);
182
+		$id_to_use = $autosave ? $autosave->ID : $model_object_id;
183
+
184
+		$autosave_relations = parent::get_all_related($id_to_use, $query_params);
185
+		$parent_ids         = $parents = array();
186
+		$return_objs        = array();
187
+
188
+		// k this is where things differ because NOW what we're going to do is get the PARENTS for the get all related (and we'll also start setting up the return_objs array containing related that DON'T have parent ids, for those that DON'T have parents to merge with our returned objects);
189
+		foreach ($autosave_relations as $a_r) {
190
+			$pid = $a_r->parent();
191
+			if (! empty($pid)) {
192
+				$parent_ids[] = $pid;
193
+			} else {
194
+				$return_objs[] = $a_r;
195
+			}
196
+		}
197
+
198
+		// we have to make sure we also include the ORIGINAL values
199
+		$originals = parent::get_all_related($model_object_or_id, $query_params);
200
+
201
+		// merge $originals with $return_objs
202
+		if ($originals) {
203
+			$return_objs = array_merge($originals, $return_objs);
204
+		}
205
+
206
+		// now we setup the query to get all the parents
207
+		if (! empty($parent_ids)) {
208
+			$query_param_where_this_model_pk                  = $this->get_this_model()->get_this_model_name() . "." . $this->get_this_model()->get_primary_key_field()->get_name();
209
+			$query_param[0][ $query_param_where_this_model_pk ] = array('IN', $parent_ids);
210
+			$parents                                          = $this->get_other_model()->get_all($query_params);
211
+		}
212
+
213
+		// var_dump($parents);
214
+
215
+
216
+		// now merge parents with our current $return_objs and send back
217
+		return array_merge($parents, $return_objs);
218
+	}
219
+
220
+
221
+	/**
222
+	 * Basically this method gets called to verify if the incoming object needs to be manipulated somewhat because it
223
+	 * is a revision save.  If so, then we change things before sending back.  We also do verifications when this IS
224
+	 * NOT an revision because we always need to make sure that the autosave/revision has parent recorded (which is
225
+	 * sometime delayed if the object is created/saved first by the autosave)
226
+	 *
227
+	 * @param  EE_Base_Class $this_obj
228
+	 * @param  EE_Base_Class $other_obj
229
+	 * @param  boolean       $remove_relation Indicates whether we're doing a remove_relation or add_relation.
230
+	 * @return EE_Base_Class. ($other_obj);
231
+	 * @throws \EE_Error
232
+	 */
233
+	protected function _check_for_revision($this_obj, $other_obj, $remove_relation = false)
234
+	{
235
+		$pk_on_related_model = $this->get_other_model()->get_primary_key_field()->get_name();
236
+		// now we need to determine if we're in a WP revision save cause if we are we need to do some special handling
237
+		if ($this_obj->post_type() === 'revision') {
238
+			// first if $other_obj fk = this_obj pk then we know that this is a pk object, let's make sure there is a matching set for the autosave if there is then we save over it, if there isn't then we need to create a new one.
239
+			$parent_evt_id = $this_obj->parent();
240
+			/*var_dump($parent_evt_id);
241 241
             var_dump($this_obj);
242 242
             var_dump($other_obj);/**/
243 243
 
244
-            if (! empty($parent_evt_id) && $parent_evt_id == $other_obj->get($this->_primary_cpt_field)) {
245
-                // let's do query on this objects model to see if the incoming pk value on the obj matches any parents in this objects table.
246
-                $has_parent_obj = $this->get_other_model()->get_one(array(
247
-                    array(
248
-                        $this->_parent_pk_relation_field => $other_obj->ID(),
249
-                        $this->_primary_cpt_field        => $this_obj->ID(),
250
-                    ),
251
-                ));
252
-
253
-                if ($has_parent_obj) {
254
-                    // this makes sure the update on the current obj happens to the revision's row NOT the parent row.
255
-
256
-                    $other_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
257
-                    $other_obj->set($pk_on_related_model, $has_parent_obj->ID());
258
-                    $other_obj->set($this->_primary_cpt_field, $this_obj->ID());
259
-
260
-                    if (! $remove_relation) {
261
-                        $other_obj->save();
262
-                        return array($other_obj);
263
-                    } elseif ($remove_relation && ! $this->_blocking_delete) {
264
-                        $other_obj->delete();
265
-                        $other_obj->set($this->_parent_pk_relation_field, null, true);
266
-                        return array($other_obj);
267
-                    }
268
-                } else {
269
-                    $other_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
270
-                    $other_obj->set($this->_primary_cpt_field, $this_obj->ID());
271
-                    $other_obj->set(
272
-                        $pk_on_related_model,
273
-                        null,
274
-                        true
275
-                    ); // ensure we create a new row for the autosave with parent id the same as the incoming ID.
276
-                    $other_obj->save(); // make sure we insert.
277
-                    return array($other_obj);
278
-                }
279
-            }
280
-
281
-            // var_dump('what makes it here');
282
-            // var_dump($other_obj);
283
-            // the next possible condition is that the incoming other_model obj has a NULL pk which means it just gets saved (which in turn creates it)
284
-
285
-            // the last possible condition on a revision is that the incoming other_model object has a fk that == $this_obj pk which means we just return the $other obj and let it save as normal so we see the return at the bottom of this method.
286
-        } else {
287
-            // we only need to do the below IF this is not a remove relation
288
-            if (! $remove_relation) {
289
-                // okay this is is a normal update/save/remove so, let's make sure the other object is not a revision of the current object.
290
-                // the other object will likely NOT have the correct fk on it (which is the primary_cpt_field_mame) so we must retrieve from the db to get that first.
291
-                $existing_other_obj    = $this->get_other_model()->get_one_by_ID($other_obj->ID());
292
-                $potential_revision_id = is_object($existing_other_obj) ? $existing_other_obj->get($this->_primary_cpt_field) : null;
293
-
294
-                if ($parent_this_obj_id = wp_is_post_revision($potential_revision_id)) {
295
-                    // yes the OTHER object is linked to the revision of the parent, not the parent itself. That means we need to make the other_object an attachment of this_obj and then duplicate other_obj for the revision.
296
-                    $other_obj->set($this->_primary_cpt_field, $this_obj->ID());
297
-                    $other_obj->save();
298
-
299
-                    // now create a new other_obj and fill with details from existing object
300
-                    $new_obj = $other_obj;
301
-                    $new_obj->set($this->_primary_cpt_field, $potential_revision_id);
302
-                    $new_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
303
-                    $new_obj->set($pk_on_related_model, null);
304
-                    $new_obj->save();
305
-                    return array($new_obj);
306
-                }
307
-            }
308
-        }
309
-
310
-        return $other_obj;
311
-    }
244
+			if (! empty($parent_evt_id) && $parent_evt_id == $other_obj->get($this->_primary_cpt_field)) {
245
+				// let's do query on this objects model to see if the incoming pk value on the obj matches any parents in this objects table.
246
+				$has_parent_obj = $this->get_other_model()->get_one(array(
247
+					array(
248
+						$this->_parent_pk_relation_field => $other_obj->ID(),
249
+						$this->_primary_cpt_field        => $this_obj->ID(),
250
+					),
251
+				));
252
+
253
+				if ($has_parent_obj) {
254
+					// this makes sure the update on the current obj happens to the revision's row NOT the parent row.
255
+
256
+					$other_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
257
+					$other_obj->set($pk_on_related_model, $has_parent_obj->ID());
258
+					$other_obj->set($this->_primary_cpt_field, $this_obj->ID());
259
+
260
+					if (! $remove_relation) {
261
+						$other_obj->save();
262
+						return array($other_obj);
263
+					} elseif ($remove_relation && ! $this->_blocking_delete) {
264
+						$other_obj->delete();
265
+						$other_obj->set($this->_parent_pk_relation_field, null, true);
266
+						return array($other_obj);
267
+					}
268
+				} else {
269
+					$other_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
270
+					$other_obj->set($this->_primary_cpt_field, $this_obj->ID());
271
+					$other_obj->set(
272
+						$pk_on_related_model,
273
+						null,
274
+						true
275
+					); // ensure we create a new row for the autosave with parent id the same as the incoming ID.
276
+					$other_obj->save(); // make sure we insert.
277
+					return array($other_obj);
278
+				}
279
+			}
280
+
281
+			// var_dump('what makes it here');
282
+			// var_dump($other_obj);
283
+			// the next possible condition is that the incoming other_model obj has a NULL pk which means it just gets saved (which in turn creates it)
284
+
285
+			// the last possible condition on a revision is that the incoming other_model object has a fk that == $this_obj pk which means we just return the $other obj and let it save as normal so we see the return at the bottom of this method.
286
+		} else {
287
+			// we only need to do the below IF this is not a remove relation
288
+			if (! $remove_relation) {
289
+				// okay this is is a normal update/save/remove so, let's make sure the other object is not a revision of the current object.
290
+				// the other object will likely NOT have the correct fk on it (which is the primary_cpt_field_mame) so we must retrieve from the db to get that first.
291
+				$existing_other_obj    = $this->get_other_model()->get_one_by_ID($other_obj->ID());
292
+				$potential_revision_id = is_object($existing_other_obj) ? $existing_other_obj->get($this->_primary_cpt_field) : null;
293
+
294
+				if ($parent_this_obj_id = wp_is_post_revision($potential_revision_id)) {
295
+					// yes the OTHER object is linked to the revision of the parent, not the parent itself. That means we need to make the other_object an attachment of this_obj and then duplicate other_obj for the revision.
296
+					$other_obj->set($this->_primary_cpt_field, $this_obj->ID());
297
+					$other_obj->save();
298
+
299
+					// now create a new other_obj and fill with details from existing object
300
+					$new_obj = $other_obj;
301
+					$new_obj->set($this->_primary_cpt_field, $potential_revision_id);
302
+					$new_obj->set($this->_parent_pk_relation_field, $other_obj->ID());
303
+					$new_obj->set($pk_on_related_model, null);
304
+					$new_obj->save();
305
+					return array($new_obj);
306
+				}
307
+			}
308
+		}
309
+
310
+		return $other_obj;
311
+	}
312 312
 }
Please login to merge, or discard this patch.
core/db_models/relations/EE_Has_Many_Any_Relation.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -32,11 +32,11 @@  discard block
 block discarded – undo
32 32
         $pk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
33 33
             $model_relation_chain,
34 34
             $this->get_this_model()->get_this_model_name()
35
-        ) . $this_table_pk_field->get_table_alias();
36
-        $fk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
35
+        ).$this_table_pk_field->get_table_alias();
36
+        $fk_table_alias = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
37 37
             $model_relation_chain,
38 38
             $this->get_other_model()->get_this_model_name()
39
-        ) . $other_table_fk_field->get_table_alias();
39
+        ).$other_table_fk_field->get_table_alias();
40 40
         $fk_table              = $this->get_other_model()->get_table_for_alias($fk_table_alias);
41 41
         $field_with_model_name = $this->get_other_model()->get_field_containing_related_model_name();
42 42
 
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
             $other_table_fk_field->get_table_column(),
47 47
             $pk_table_alias,
48 48
             $this_table_pk_field->get_table_column(),
49
-            $fk_table_alias . '.' . $field_with_model_name->get_table_column() . "='" . $this->get_this_model()->get_this_model_name() . "'"
49
+            $fk_table_alias.'.'.$field_with_model_name->get_table_column()."='".$this->get_this_model()->get_this_model_name()."'"
50 50
         )
51 51
                . $this->get_other_model()->_construct_internal_join_to_table_with_alias($fk_table_alias);
52 52
     }
Please login to merge, or discard this patch.
Indentation   +84 added lines, -84 removed lines patch added patch discarded remove patch
@@ -14,94 +14,94 @@
 block discarded – undo
14 14
  */
15 15
 class EE_Has_Many_Any_Relation extends EE_Has_Many_Relation
16 16
 {
17
-    /**
18
-     * Gets the SQL string for performing the join between this model and the other model.
19
-     *
20
-     * @param string $model_relation_chain like 'Event.Event_Venue.Venue'
21
-     * @return string of SQL, eg "LEFT JOIN table_name AS table_alias ON this_model_primary_table.pk =
22
-     *                other_model_primary_table.fk" etc
23
-     * @throws \EE_Error
24
-     */
25
-    public function get_join_statement($model_relation_chain)
26
-    {
27
-        // create the sql string like
28
-        // LEFT JOIN other_table AS table_alias ON this_table_alias.pk = other_table_alias.fk extra_join_conditions
29
-        $this_table_pk_field   = $this->get_this_model()->get_primary_key_field();
30
-        $other_table_fk_field  = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
31
-        $pk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
32
-            $model_relation_chain,
33
-            $this->get_this_model()->get_this_model_name()
34
-        ) . $this_table_pk_field->get_table_alias();
35
-        $fk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
36
-            $model_relation_chain,
37
-            $this->get_other_model()->get_this_model_name()
38
-        ) . $other_table_fk_field->get_table_alias();
39
-        $fk_table              = $this->get_other_model()->get_table_for_alias($fk_table_alias);
40
-        $field_with_model_name = $this->get_other_model()->get_field_containing_related_model_name();
17
+	/**
18
+	 * Gets the SQL string for performing the join between this model and the other model.
19
+	 *
20
+	 * @param string $model_relation_chain like 'Event.Event_Venue.Venue'
21
+	 * @return string of SQL, eg "LEFT JOIN table_name AS table_alias ON this_model_primary_table.pk =
22
+	 *                other_model_primary_table.fk" etc
23
+	 * @throws \EE_Error
24
+	 */
25
+	public function get_join_statement($model_relation_chain)
26
+	{
27
+		// create the sql string like
28
+		// LEFT JOIN other_table AS table_alias ON this_table_alias.pk = other_table_alias.fk extra_join_conditions
29
+		$this_table_pk_field   = $this->get_this_model()->get_primary_key_field();
30
+		$other_table_fk_field  = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
31
+		$pk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
32
+			$model_relation_chain,
33
+			$this->get_this_model()->get_this_model_name()
34
+		) . $this_table_pk_field->get_table_alias();
35
+		$fk_table_alias        = EE_Model_Parser::extract_table_alias_model_relation_chain_prefix(
36
+			$model_relation_chain,
37
+			$this->get_other_model()->get_this_model_name()
38
+		) . $other_table_fk_field->get_table_alias();
39
+		$fk_table              = $this->get_other_model()->get_table_for_alias($fk_table_alias);
40
+		$field_with_model_name = $this->get_other_model()->get_field_containing_related_model_name();
41 41
 
42
-        return $this->_left_join(
43
-            $fk_table,
44
-            $fk_table_alias,
45
-            $other_table_fk_field->get_table_column(),
46
-            $pk_table_alias,
47
-            $this_table_pk_field->get_table_column(),
48
-            $fk_table_alias . '.' . $field_with_model_name->get_table_column() . "='" . $this->get_this_model()->get_this_model_name() . "'"
49
-        )
50
-               . $this->get_other_model()->_construct_internal_join_to_table_with_alias($fk_table_alias);
51
-    }
42
+		return $this->_left_join(
43
+			$fk_table,
44
+			$fk_table_alias,
45
+			$other_table_fk_field->get_table_column(),
46
+			$pk_table_alias,
47
+			$this_table_pk_field->get_table_column(),
48
+			$fk_table_alias . '.' . $field_with_model_name->get_table_column() . "='" . $this->get_this_model()->get_this_model_name() . "'"
49
+		)
50
+			   . $this->get_other_model()->_construct_internal_join_to_table_with_alias($fk_table_alias);
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * Sets the other model object's foreign key to this model object's primary key. Feel free to do this manually if
56
-     * you like.
57
-     *
58
-     * @param EE_Base_Class|int $this_obj_or_id
59
-     * @param EE_Base_Class|int $other_obj_or_id
60
-     * @param array             $extra_join_model_fields_n_values
61
-     * @return \EE_Base_Class
62
-     * @throws \EE_Error
63
-     */
64
-    public function add_relation_to($this_obj_or_id, $other_obj_or_id, $extra_join_model_fields_n_values = array())
65
-    {
66
-        $this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id, true);
67
-        $other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id, true);
54
+	/**
55
+	 * Sets the other model object's foreign key to this model object's primary key. Feel free to do this manually if
56
+	 * you like.
57
+	 *
58
+	 * @param EE_Base_Class|int $this_obj_or_id
59
+	 * @param EE_Base_Class|int $other_obj_or_id
60
+	 * @param array             $extra_join_model_fields_n_values
61
+	 * @return \EE_Base_Class
62
+	 * @throws \EE_Error
63
+	 */
64
+	public function add_relation_to($this_obj_or_id, $other_obj_or_id, $extra_join_model_fields_n_values = array())
65
+	{
66
+		$this_model_obj  = $this->get_this_model()->ensure_is_obj($this_obj_or_id, true);
67
+		$other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id, true);
68 68
 
69
-        // find the field on the other model which is a foreign key to this model
70
-        $fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
71
-        // set that field on the other model to this model's ID
72
-        $other_model_obj->set($fk_field_on_other_model->get_name(), $this_model_obj->ID());
73
-        $other_model_obj->set(
74
-            $this->get_other_model()->get_field_containing_related_model_name()->get_name(),
75
-            $this->get_this_model()->get_this_model_name()
76
-        );
77
-        $other_model_obj->save();
78
-        return $other_model_obj;
79
-    }
69
+		// find the field on the other model which is a foreign key to this model
70
+		$fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
71
+		// set that field on the other model to this model's ID
72
+		$other_model_obj->set($fk_field_on_other_model->get_name(), $this_model_obj->ID());
73
+		$other_model_obj->set(
74
+			$this->get_other_model()->get_field_containing_related_model_name()->get_name(),
75
+			$this->get_this_model()->get_this_model_name()
76
+		);
77
+		$other_model_obj->save();
78
+		return $other_model_obj;
79
+	}
80 80
 
81 81
 
82
-    /**
83
-     * Sets the other model object's foreign key to its default, instead of pointing to this model object.
84
-     * If $other_obj_or_id doesn't have any other relations, this function is essentially orphaning it
85
-     *
86
-     * @param EE_Base_Class|int $this_obj_or_id
87
-     * @param EE_Base_Class|int $other_obj_or_id
88
-     * @param array             $where_query
89
-     * @return \EE_Base_Class
90
-     * @throws \EE_Error
91
-     */
92
-    public function remove_relation_to($this_obj_or_id, $other_obj_or_id, $where_query = array())
93
-    {
94
-        $other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id, true);
95
-        // find the field on the other model which is a foreign key to this model
96
-        $fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
97
-        // set that field on the other model to this model's ID
98
-        $other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
99
-        $other_model_obj->set(
100
-            $this->get_other_model()->get_field_containing_related_model_name()->get_name(),
101
-            null,
102
-            true
103
-        );
104
-        $other_model_obj->save();
105
-        return $other_model_obj;
106
-    }
82
+	/**
83
+	 * Sets the other model object's foreign key to its default, instead of pointing to this model object.
84
+	 * If $other_obj_or_id doesn't have any other relations, this function is essentially orphaning it
85
+	 *
86
+	 * @param EE_Base_Class|int $this_obj_or_id
87
+	 * @param EE_Base_Class|int $other_obj_or_id
88
+	 * @param array             $where_query
89
+	 * @return \EE_Base_Class
90
+	 * @throws \EE_Error
91
+	 */
92
+	public function remove_relation_to($this_obj_or_id, $other_obj_or_id, $where_query = array())
93
+	{
94
+		$other_model_obj = $this->get_other_model()->ensure_is_obj($other_obj_or_id, true);
95
+		// find the field on the other model which is a foreign key to this model
96
+		$fk_field_on_other_model = $this->get_other_model()->get_foreign_key_to($this->get_this_model()->get_this_model_name());
97
+		// set that field on the other model to this model's ID
98
+		$other_model_obj->set($fk_field_on_other_model->get_name(), null, true);
99
+		$other_model_obj->set(
100
+			$this->get_other_model()->get_field_containing_related_model_name()->get_name(),
101
+			null,
102
+			true
103
+		);
104
+		$other_model_obj->save();
105
+		return $other_model_obj;
106
+	}
107 107
 }
Please login to merge, or discard this patch.
core/db_models/helpers/EE_Unique_Index.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -6,5 +6,5 @@
 block discarded – undo
6 6
  */
7 7
 class EE_Unique_Index extends EE_Index
8 8
 {
9
-    // yep, actually the same as index right now
9
+	// yep, actually the same as index right now
10 10
 }
Please login to merge, or discard this patch.
core/db_models/helpers/EE_Primary_Key_Index.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -6,5 +6,5 @@
 block discarded – undo
6 6
  */
7 7
 class EE_Primary_Key_Index extends EE_Unique_Index
8 8
 {
9
-    // yep, actually the same as unique index right now
9
+	// yep, actually the same as unique index right now
10 10
 }
Please login to merge, or discard this patch.
core/db_models/helpers/EE_Model_Query_Info_Carrier.php 2 patches
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -14,141 +14,141 @@  discard block
 block discarded – undo
14 14
    /**
15 15
     * @var string SQL for performing joins (Eg, "INNER JOIN blah ON blah=blah INNER JOIN FOO ON foo=foo...")
16 16
     */
17
-    private $_join_sql;
17
+	private $_join_sql;
18 18
    /**
19 19
     *
20 20
     * @var array stating all the models that have been included thus far,so we don't get duplicates.
21 21
     * Keys are the model relation chains to them from the queried model
22 22
     * (eg, "Registration.Transaction.Payment"), and valuesare model names (eg "Payment")
23 23
     */
24
-    private $_models_included;
24
+	private $_models_included;
25 25
    
26 26
    /**
27 27
     * After we've acquired all the data types, we can create this sql.
28 28
     * @var string
29 29
     */
30
-    private $_where_sql;
30
+	private $_where_sql;
31 31
    /**
32 32
     * Full join sql. Eg, in a select query, that's everything after the "FROM", and before the "WHERE", so it includes
33 33
     * the declaration of the main model's tables, and then appends all the joining sql to other models
34 34
     * @var string
35 35
     */
36
-    private $_main_join_sql;
36
+	private $_main_join_sql;
37 37
    
38 38
    
39
-    private $_limit_sql;
39
+	private $_limit_sql;
40 40
    
41
-    private $_order_by_sql;
41
+	private $_order_by_sql;
42 42
    
43
-    private $_having_sql;
43
+	private $_having_sql;
44 44
    
45
-    private $_group_by_sql;
45
+	private $_group_by_sql;
46 46
    
47
-    public function set_limit_sql($limit_sql)
48
-    {
49
-        $this->_limit_sql = $limit_sql;
50
-    }
47
+	public function set_limit_sql($limit_sql)
48
+	{
49
+		$this->_limit_sql = $limit_sql;
50
+	}
51 51
     
52
-    public function set_order_by_sql($order_by_sql)
53
-    {
54
-        $this->_order_by_sql = $order_by_sql;
55
-    }
56
-    public function set_group_by_sql($group_by_sql)
57
-    {
58
-        $this->_group_by_sql = $group_by_sql;
59
-    }
60
-    public function set_having_sql($having_sql)
61
-    {
62
-        $this->_having_sql = $having_sql;
63
-    }
64
-    public function get_limit_sql()
65
-    {
66
-        return $this->_limit_sql;
67
-    }
68
-    public function get_order_by_sql()
69
-    {
70
-        return $this->_order_by_sql;
71
-    }
72
-    public function get_group_by_sql()
73
-    {
74
-        return $this->_group_by_sql;
75
-    }
76
-    public function get_having_sql()
77
-    {
78
-        return $this->_having_sql;
79
-    }
52
+	public function set_order_by_sql($order_by_sql)
53
+	{
54
+		$this->_order_by_sql = $order_by_sql;
55
+	}
56
+	public function set_group_by_sql($group_by_sql)
57
+	{
58
+		$this->_group_by_sql = $group_by_sql;
59
+	}
60
+	public function set_having_sql($having_sql)
61
+	{
62
+		$this->_having_sql = $having_sql;
63
+	}
64
+	public function get_limit_sql()
65
+	{
66
+		return $this->_limit_sql;
67
+	}
68
+	public function get_order_by_sql()
69
+	{
70
+		return $this->_order_by_sql;
71
+	}
72
+	public function get_group_by_sql()
73
+	{
74
+		return $this->_group_by_sql;
75
+	}
76
+	public function get_having_sql()
77
+	{
78
+		return $this->_having_sql;
79
+	}
80 80
    /**
81 81
     *
82 82
     * @param type $model_included_name
83 83
     * @param type $join_sql
84 84
     * @param type $data_types
85 85
     */
86
-    public function __construct($model_included_name = array(), $join_sql = '')
87
-    {
88
-        $this->_models_included = $model_included_name;
89
-        $this->_join_sql = $join_sql;
90
-    }
86
+	public function __construct($model_included_name = array(), $join_sql = '')
87
+	{
88
+		$this->_models_included = $model_included_name;
89
+		$this->_join_sql = $join_sql;
90
+	}
91 91
    
92 92
    /**
93 93
     * Merges info from the other EEM_Related_Model_Info_Carrier into this one.
94 94
     * @param EE_Model_Query_Info_Carrier $other_model_query_info_carrier
95 95
     */
96
-    public function merge($other_model_query_info_carrier)
97
-    {
98
-        if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
-            $model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
100
-            $this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101
-            $this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102
-        }
103
-        // otherwise don't merge our data.
104
-        // yes, this means that we must immediately merge any model data into our grand list
105
-        // as soon as we get some from ONE model, or else we could reject a EEM_Related_Model_Info_Carrier
106
-        // which is carrying info from two models WHERE one is already included but the other is NOT
107
-    }
96
+	public function merge($other_model_query_info_carrier)
97
+	{
98
+		if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
+			$model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
100
+			$this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101
+			$this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102
+		}
103
+		// otherwise don't merge our data.
104
+		// yes, this means that we must immediately merge any model data into our grand list
105
+		// as soon as we get some from ONE model, or else we could reject a EEM_Related_Model_Info_Carrier
106
+		// which is carrying info from two models WHERE one is already included but the other is NOT
107
+	}
108 108
    /**
109 109
     * Checks whether or not we have already included all the models mentione din $model_names on the query info varrier
110 110
     * @param array $model_names just like EE_MOdel_QUery_Info_Carrier::_models_included: keys are model chain paths, values are the model names only
111 111
     * @return boolean
112 112
     */
113
-    protected function _have_already_included_one_of_these_models($model_names)
114
-    {
115
-        foreach ($this->_models_included as $model_relation_path => $model_included) {
116
-            if (array_key_exists($model_relation_path, $model_names)) {
117
-                return true;
118
-            }
119
-        }
120
-        return false;
121
-    }
113
+	protected function _have_already_included_one_of_these_models($model_names)
114
+	{
115
+		foreach ($this->_models_included as $model_relation_path => $model_included) {
116
+			if (array_key_exists($model_relation_path, $model_names)) {
117
+				return true;
118
+			}
119
+		}
120
+		return false;
121
+	}
122 122
    /**
123 123
     * Array keys are model names, values are "model relation paths". See EE_Model_Query_Info_Carrier::_models_included for details
124 124
     * @return array like EE_Model_Query_Info_Carrier::_models_included
125 125
     */
126
-    public function get_model_names_included()
127
-    {
128
-        return $this->_models_included;
129
-    }
126
+	public function get_model_names_included()
127
+	{
128
+		return $this->_models_included;
129
+	}
130 130
    /**
131 131
     * sets the $where_sql for later use from client code
132 132
     * @param string $where_sql
133 133
     */
134
-    public function set_where_sql($where_sql)
135
-    {
136
-        $this->_where_sql = $where_sql;
137
-    }
138
-    public function get_where_sql()
139
-    {
140
-        return $this->_where_sql;
141
-    }
134
+	public function set_where_sql($where_sql)
135
+	{
136
+		$this->_where_sql = $where_sql;
137
+	}
138
+	public function get_where_sql()
139
+	{
140
+		return $this->_where_sql;
141
+	}
142 142
 
143 143
    /**
144 144
     * Gets the SQL for joining the main model to other models involves in the query, which was set earlier on
145 145
     * the EE_Model_Query_info_Carrier by calling set_main_model_join_sql()
146 146
     * @return string
147 147
     */
148
-    public function get_main_model_join_sql()
149
-    {
150
-        return $this->_main_join_sql;
151
-    }
148
+	public function get_main_model_join_sql()
149
+	{
150
+		return $this->_main_join_sql;
151
+	}
152 152
 
153 153
 
154 154
    /**
@@ -158,12 +158,12 @@  discard block
 block discarded – undo
158 158
     * after the FROM and before the WHERE.)
159 159
     * @param string $join_sql
160 160
     */
161
-    public function set_main_model_join_sql($join_sql)
162
-    {
163
-        $this->_main_join_sql = $join_sql;
164
-    }
165
-    public function get_full_join_sql()
166
-    {
167
-        return $this->_main_join_sql . $this->_join_sql;
168
-    }
161
+	public function set_main_model_join_sql($join_sql)
162
+	{
163
+		$this->_main_join_sql = $join_sql;
164
+	}
165
+	public function get_full_join_sql()
166
+	{
167
+		return $this->_main_join_sql . $this->_join_sql;
168
+	}
169 169
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
     public function merge($other_model_query_info_carrier)
97 97
     {
98 98
         if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
-            $model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
99
+            $model_included_on_other_join_sql_and_data_types_carrier = $other_model_query_info_carrier->get_model_names_included();
100 100
             $this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101 101
             $this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102 102
         }
@@ -164,6 +164,6 @@  discard block
 block discarded – undo
164 164
     }
165 165
     public function get_full_join_sql()
166 166
     {
167
-        return $this->_main_join_sql . $this->_join_sql;
167
+        return $this->_main_join_sql.$this->_join_sql;
168 168
     }
169 169
 }
Please login to merge, or discard this patch.
core/EE_Cart.core.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -65,14 +65,14 @@  discard block
 block discarded – undo
65 65
             self::$_instance = new self($grand_total, $session);
66 66
         }
67 67
         // or maybe retrieve an existing one ?
68
-        if (! self::$_instance instanceof EE_Cart) {
68
+        if ( ! self::$_instance instanceof EE_Cart) {
69 69
             // try getting the cart out of the session
70 70
             $saved_cart = $session instanceof EE_Session ? $session->cart() : null;
71 71
             self::$_instance = $saved_cart instanceof EE_Cart ? $saved_cart : new self($grand_total, $session);
72 72
             unset($saved_cart);
73 73
         }
74 74
         // verify that cart is ok and grand total line item exists
75
-        if (! self::$_instance instanceof EE_Cart || ! self::$_instance->_grand_total instanceof EE_Line_Item) {
75
+        if ( ! self::$_instance instanceof EE_Cart || ! self::$_instance->_grand_total instanceof EE_Line_Item) {
76 76
             self::$_instance = new self($grand_total, $session);
77 77
         }
78 78
         self::$_instance->get_grand_total();
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
      */
125 125
     public function session()
126 126
     {
127
-        if (! $this->_session instanceof EE_Session) {
127
+        if ( ! $this->_session instanceof EE_Session) {
128 128
             $this->set_session();
129 129
         }
130 130
         return $this->_session;
@@ -392,7 +392,7 @@  discard block
 block discarded – undo
392 392
 
393 393
     public function __wakeup()
394 394
     {
395
-        if (! $this->_grand_total instanceof EE_Line_Item && absint($this->_grand_total) !== 0) {
395
+        if ( ! $this->_grand_total instanceof EE_Line_Item && absint($this->_grand_total) !== 0) {
396 396
             // $this->_grand_total is actually just an ID, so use it to get the object from the db
397 397
             $this->_grand_total = EEM_Line_Item::instance()->get_one_by_ID($this->_grand_total);
398 398
         }
Please login to merge, or discard this patch.
Indentation   +393 added lines, -393 removed lines patch added patch discarded remove patch
@@ -16,397 +16,397 @@
 block discarded – undo
16 16
  */
17 17
 class EE_Cart implements ResettableInterface
18 18
 {
19
-    /**
20
-     * instance of the EE_Cart object
21
-     *
22
-     * @access    private
23
-     * @var EE_Cart $_instance
24
-     */
25
-    private static $_instance;
26
-
27
-    /**
28
-     * instance of the EE_Session object
29
-     *
30
-     * @access    protected
31
-     * @var EE_Session $_session
32
-     */
33
-    protected $_session;
34
-
35
-    /**
36
-     * The total Line item which comprises all the children line-item subtotals,
37
-     * which in turn each have their line items.
38
-     * Typically, the line item structure will look like:
39
-     * grand total
40
-     * -tickets-sub-total
41
-     * --ticket1
42
-     * --ticket2
43
-     * --...
44
-     * -taxes-sub-total
45
-     * --tax1
46
-     * --tax2
47
-     *
48
-     * @var EE_Line_Item
49
-     */
50
-    private $_grand_total;
51
-
52
-
53
-    /**
54
-     * @singleton method used to instantiate class object
55
-     * @access    public
56
-     * @param EE_Line_Item $grand_total
57
-     * @param EE_Session   $session
58
-     * @return \EE_Cart
59
-     * @throws \EE_Error
60
-     */
61
-    public static function instance(EE_Line_Item $grand_total = null, EE_Session $session = null)
62
-    {
63
-        if ($grand_total instanceof EE_Line_Item && $grand_total->is_total()) {
64
-            self::$_instance = new self($grand_total, $session);
65
-        }
66
-        // or maybe retrieve an existing one ?
67
-        if (! self::$_instance instanceof EE_Cart) {
68
-            // try getting the cart out of the session
69
-            $saved_cart = $session instanceof EE_Session ? $session->cart() : null;
70
-            self::$_instance = $saved_cart instanceof EE_Cart ? $saved_cart : new self($grand_total, $session);
71
-            unset($saved_cart);
72
-        }
73
-        // verify that cart is ok and grand total line item exists
74
-        if (! self::$_instance instanceof EE_Cart || ! self::$_instance->_grand_total instanceof EE_Line_Item) {
75
-            self::$_instance = new self($grand_total, $session);
76
-        }
77
-        self::$_instance->get_grand_total();
78
-        // once everything is all said and done, save the cart to the EE_Session
79
-        add_action('shutdown', array(self::$_instance, 'save_cart'), 90);
80
-        return self::$_instance;
81
-    }
82
-
83
-
84
-    /**
85
-     * private constructor to prevent direct creation
86
-     *
87
-     * @Constructor
88
-     * @access private
89
-     * @param EE_Line_Item $grand_total
90
-     * @param EE_Session   $session
91
-     */
92
-    private function __construct(EE_Line_Item $grand_total = null, EE_Session $session = null)
93
-    {
94
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
95
-        $this->set_session($session);
96
-        if ($grand_total instanceof EE_Line_Item && $grand_total->is_total()) {
97
-            $this->set_grand_total_line_item($grand_total);
98
-        }
99
-    }
100
-
101
-
102
-    /**
103
-     * Resets the cart completely (whereas empty_cart
104
-     *
105
-     * @param EE_Line_Item $grand_total
106
-     * @param EE_Session   $session
107
-     * @return EE_Cart
108
-     * @throws \EE_Error
109
-     */
110
-    public static function reset(EE_Line_Item $grand_total = null, EE_Session $session = null)
111
-    {
112
-        remove_action('shutdown', array(self::$_instance, 'save_cart'), 90);
113
-        if ($session instanceof EE_Session) {
114
-            $session->reset_cart();
115
-        }
116
-        self::$_instance = null;
117
-        return self::instance($grand_total, $session);
118
-    }
119
-
120
-
121
-    /**
122
-     * @return \EE_Session
123
-     */
124
-    public function session()
125
-    {
126
-        if (! $this->_session instanceof EE_Session) {
127
-            $this->set_session();
128
-        }
129
-        return $this->_session;
130
-    }
131
-
132
-
133
-    /**
134
-     * @param EE_Session $session
135
-     */
136
-    public function set_session(EE_Session $session = null)
137
-    {
138
-        $this->_session = $session instanceof EE_Session ? $session : EE_Registry::instance()->load_core('Session');
139
-    }
140
-
141
-
142
-    /**
143
-     * Sets the cart to match the line item. Especially handy for loading an old cart where you
144
-     *  know the grand total line item on it
145
-     *
146
-     * @param EE_Line_Item $line_item
147
-     */
148
-    public function set_grand_total_line_item(EE_Line_Item $line_item)
149
-    {
150
-        $this->_grand_total = $line_item;
151
-    }
152
-
153
-
154
-    /**
155
-     * get_cart_from_reg_url_link
156
-     *
157
-     * @access public
158
-     * @param EE_Transaction $transaction
159
-     * @param EE_Session     $session
160
-     * @return \EE_Cart
161
-     * @throws \EE_Error
162
-     */
163
-    public static function get_cart_from_txn(EE_Transaction $transaction, EE_Session $session = null)
164
-    {
165
-        $grand_total = $transaction->total_line_item();
166
-        $grand_total->get_items();
167
-        $grand_total->tax_descendants();
168
-        return EE_Cart::instance($grand_total, $session);
169
-    }
170
-
171
-
172
-    /**
173
-     * Creates the total line item, and ensures it has its 'tickets' and 'taxes' sub-items
174
-     *
175
-     * @return EE_Line_Item
176
-     * @throws \EE_Error
177
-     */
178
-    private function _create_grand_total()
179
-    {
180
-        $this->_grand_total = EEH_Line_Item::create_total_line_item();
181
-        return $this->_grand_total;
182
-    }
183
-
184
-
185
-    /**
186
-     * Gets all the line items of object type Ticket
187
-     *
188
-     * @access public
189
-     * @return \EE_Line_Item[]
190
-     */
191
-    public function get_tickets()
192
-    {
193
-        if ($this->_grand_total === null) {
194
-            return array();
195
-        }
196
-        return EEH_Line_Item::get_ticket_line_items($this->_grand_total);
197
-    }
198
-
199
-
200
-    /**
201
-     * returns the total quantity of tickets in the cart
202
-     *
203
-     * @access public
204
-     * @return int
205
-     * @throws \EE_Error
206
-     */
207
-    public function all_ticket_quantity_count()
208
-    {
209
-        $tickets = $this->get_tickets();
210
-        if (empty($tickets)) {
211
-            return 0;
212
-        }
213
-        $count = 0;
214
-        foreach ($tickets as $ticket) {
215
-            $count += $ticket->get('LIN_quantity');
216
-        }
217
-        return $count;
218
-    }
219
-
220
-
221
-    /**
222
-     * Gets all the tax line items
223
-     *
224
-     * @return \EE_Line_Item[]
225
-     * @throws \EE_Error
226
-     */
227
-    public function get_taxes()
228
-    {
229
-        return EEH_Line_Item::get_taxes_subtotal($this->_grand_total)->children();
230
-    }
231
-
232
-
233
-    /**
234
-     * Gets the total line item (which is a parent of all other line items) on this cart
235
-     *
236
-     * @return EE_Line_Item
237
-     * @throws \EE_Error
238
-     */
239
-    public function get_grand_total()
240
-    {
241
-        return $this->_grand_total instanceof EE_Line_Item ? $this->_grand_total : $this->_create_grand_total();
242
-    }
243
-
244
-
245
-    /**
246
-     * @process items for adding to cart
247
-     * @access  public
248
-     * @param EE_Ticket $ticket
249
-     * @param int       $qty
250
-     * @return TRUE on success, FALSE on fail
251
-     * @throws \EE_Error
252
-     */
253
-    public function add_ticket_to_cart(EE_Ticket $ticket, $qty = 1)
254
-    {
255
-        EEH_Line_Item::add_ticket_purchase($this->get_grand_total(), $ticket, $qty);
256
-        return $this->save_cart() ? true : false;
257
-    }
258
-
259
-
260
-    /**
261
-     * get_cart_total_before_tax
262
-     *
263
-     * @access public
264
-     * @return float
265
-     * @throws \EE_Error
266
-     */
267
-    public function get_cart_total_before_tax()
268
-    {
269
-        return $this->get_grand_total()->recalculate_pre_tax_total();
270
-    }
271
-
272
-
273
-    /**
274
-     * gets the total amount of tax paid for items in this cart
275
-     *
276
-     * @access public
277
-     * @return float
278
-     * @throws \EE_Error
279
-     */
280
-    public function get_applied_taxes()
281
-    {
282
-        return EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
283
-    }
284
-
285
-
286
-    /**
287
-     * Gets the total amount to be paid for the items in the cart, including taxes and other modifiers
288
-     *
289
-     * @access public
290
-     * @return float
291
-     * @throws \EE_Error
292
-     */
293
-    public function get_cart_grand_total()
294
-    {
295
-        EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
296
-        return $this->get_grand_total()->total();
297
-    }
298
-
299
-
300
-    /**
301
-     * Gets the total amount to be paid for the items in the cart, including taxes and other modifiers
302
-     *
303
-     * @access public
304
-     * @return float
305
-     * @throws \EE_Error
306
-     */
307
-    public function recalculate_all_cart_totals()
308
-    {
309
-        $pre_tax_total = $this->get_cart_total_before_tax();
310
-        $taxes_total = EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
311
-        $this->_grand_total->set_total($pre_tax_total + $taxes_total);
312
-        $this->_grand_total->save_this_and_descendants_to_txn();
313
-        return $this->get_grand_total()->total();
314
-    }
315
-
316
-
317
-    /**
318
-     * deletes an item from the cart
319
-     *
320
-     * @access public
321
-     * @param array|bool|string $line_item_codes
322
-     * @return int on success, FALSE on fail
323
-     * @throws \EE_Error
324
-     */
325
-    public function delete_items($line_item_codes = false)
326
-    {
327
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
328
-        return EEH_Line_Item::delete_items($this->get_grand_total(), $line_item_codes);
329
-    }
330
-
331
-
332
-    /**
333
-     * @remove ALL items from cart and zero ALL totals
334
-     * @access public
335
-     * @return bool
336
-     * @throws \EE_Error
337
-     */
338
-    public function empty_cart()
339
-    {
340
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
341
-        $this->_grand_total = $this->_create_grand_total();
342
-        return $this->save_cart(true);
343
-    }
344
-
345
-
346
-    /**
347
-     * @remove ALL items from cart and delete total as well
348
-     * @access public
349
-     * @return bool
350
-     * @throws \EE_Error
351
-     */
352
-    public function delete_cart()
353
-    {
354
-        if ($this->_grand_total instanceof EE_Line_Item) {
355
-            $deleted = EEH_Line_Item::delete_all_child_items($this->_grand_total);
356
-            if ($deleted) {
357
-                $deleted += $this->_grand_total->delete();
358
-                $this->_grand_total = null;
359
-                return true;
360
-            }
361
-        }
362
-        return false;
363
-    }
364
-
365
-
366
-    /**
367
-     * @save   cart to session
368
-     * @access public
369
-     * @param bool $apply_taxes
370
-     * @return TRUE on success, FALSE on fail
371
-     * @throws \EE_Error
372
-     */
373
-    public function save_cart($apply_taxes = true)
374
-    {
375
-        if ($apply_taxes && $this->_grand_total instanceof EE_Line_Item) {
376
-            EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
377
-            // make sure we don't cache the transaction because it can get stale
378
-            if (
379
-                $this->_grand_total->get_one_from_cache('Transaction') instanceof EE_Transaction
380
-                && $this->_grand_total->get_one_from_cache('Transaction')->ID()
381
-            ) {
382
-                $this->_grand_total->clear_cache('Transaction', null, true);
383
-            }
384
-        }
385
-        if ($this->session() instanceof EE_Session) {
386
-            return $this->session()->set_cart($this);
387
-        } else {
388
-            return false;
389
-        }
390
-    }
391
-
392
-
393
-    public function __wakeup()
394
-    {
395
-        if (! $this->_grand_total instanceof EE_Line_Item && absint($this->_grand_total) !== 0) {
396
-            // $this->_grand_total is actually just an ID, so use it to get the object from the db
397
-            $this->_grand_total = EEM_Line_Item::instance()->get_one_by_ID($this->_grand_total);
398
-        }
399
-    }
400
-
401
-
402
-    /**
403
-     * @return array
404
-     */
405
-    public function __sleep()
406
-    {
407
-        if ($this->_grand_total instanceof EE_Line_Item && $this->_grand_total->ID()) {
408
-            $this->_grand_total = $this->_grand_total->ID();
409
-        }
410
-        return array('_grand_total');
411
-    }
19
+	/**
20
+	 * instance of the EE_Cart object
21
+	 *
22
+	 * @access    private
23
+	 * @var EE_Cart $_instance
24
+	 */
25
+	private static $_instance;
26
+
27
+	/**
28
+	 * instance of the EE_Session object
29
+	 *
30
+	 * @access    protected
31
+	 * @var EE_Session $_session
32
+	 */
33
+	protected $_session;
34
+
35
+	/**
36
+	 * The total Line item which comprises all the children line-item subtotals,
37
+	 * which in turn each have their line items.
38
+	 * Typically, the line item structure will look like:
39
+	 * grand total
40
+	 * -tickets-sub-total
41
+	 * --ticket1
42
+	 * --ticket2
43
+	 * --...
44
+	 * -taxes-sub-total
45
+	 * --tax1
46
+	 * --tax2
47
+	 *
48
+	 * @var EE_Line_Item
49
+	 */
50
+	private $_grand_total;
51
+
52
+
53
+	/**
54
+	 * @singleton method used to instantiate class object
55
+	 * @access    public
56
+	 * @param EE_Line_Item $grand_total
57
+	 * @param EE_Session   $session
58
+	 * @return \EE_Cart
59
+	 * @throws \EE_Error
60
+	 */
61
+	public static function instance(EE_Line_Item $grand_total = null, EE_Session $session = null)
62
+	{
63
+		if ($grand_total instanceof EE_Line_Item && $grand_total->is_total()) {
64
+			self::$_instance = new self($grand_total, $session);
65
+		}
66
+		// or maybe retrieve an existing one ?
67
+		if (! self::$_instance instanceof EE_Cart) {
68
+			// try getting the cart out of the session
69
+			$saved_cart = $session instanceof EE_Session ? $session->cart() : null;
70
+			self::$_instance = $saved_cart instanceof EE_Cart ? $saved_cart : new self($grand_total, $session);
71
+			unset($saved_cart);
72
+		}
73
+		// verify that cart is ok and grand total line item exists
74
+		if (! self::$_instance instanceof EE_Cart || ! self::$_instance->_grand_total instanceof EE_Line_Item) {
75
+			self::$_instance = new self($grand_total, $session);
76
+		}
77
+		self::$_instance->get_grand_total();
78
+		// once everything is all said and done, save the cart to the EE_Session
79
+		add_action('shutdown', array(self::$_instance, 'save_cart'), 90);
80
+		return self::$_instance;
81
+	}
82
+
83
+
84
+	/**
85
+	 * private constructor to prevent direct creation
86
+	 *
87
+	 * @Constructor
88
+	 * @access private
89
+	 * @param EE_Line_Item $grand_total
90
+	 * @param EE_Session   $session
91
+	 */
92
+	private function __construct(EE_Line_Item $grand_total = null, EE_Session $session = null)
93
+	{
94
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
95
+		$this->set_session($session);
96
+		if ($grand_total instanceof EE_Line_Item && $grand_total->is_total()) {
97
+			$this->set_grand_total_line_item($grand_total);
98
+		}
99
+	}
100
+
101
+
102
+	/**
103
+	 * Resets the cart completely (whereas empty_cart
104
+	 *
105
+	 * @param EE_Line_Item $grand_total
106
+	 * @param EE_Session   $session
107
+	 * @return EE_Cart
108
+	 * @throws \EE_Error
109
+	 */
110
+	public static function reset(EE_Line_Item $grand_total = null, EE_Session $session = null)
111
+	{
112
+		remove_action('shutdown', array(self::$_instance, 'save_cart'), 90);
113
+		if ($session instanceof EE_Session) {
114
+			$session->reset_cart();
115
+		}
116
+		self::$_instance = null;
117
+		return self::instance($grand_total, $session);
118
+	}
119
+
120
+
121
+	/**
122
+	 * @return \EE_Session
123
+	 */
124
+	public function session()
125
+	{
126
+		if (! $this->_session instanceof EE_Session) {
127
+			$this->set_session();
128
+		}
129
+		return $this->_session;
130
+	}
131
+
132
+
133
+	/**
134
+	 * @param EE_Session $session
135
+	 */
136
+	public function set_session(EE_Session $session = null)
137
+	{
138
+		$this->_session = $session instanceof EE_Session ? $session : EE_Registry::instance()->load_core('Session');
139
+	}
140
+
141
+
142
+	/**
143
+	 * Sets the cart to match the line item. Especially handy for loading an old cart where you
144
+	 *  know the grand total line item on it
145
+	 *
146
+	 * @param EE_Line_Item $line_item
147
+	 */
148
+	public function set_grand_total_line_item(EE_Line_Item $line_item)
149
+	{
150
+		$this->_grand_total = $line_item;
151
+	}
152
+
153
+
154
+	/**
155
+	 * get_cart_from_reg_url_link
156
+	 *
157
+	 * @access public
158
+	 * @param EE_Transaction $transaction
159
+	 * @param EE_Session     $session
160
+	 * @return \EE_Cart
161
+	 * @throws \EE_Error
162
+	 */
163
+	public static function get_cart_from_txn(EE_Transaction $transaction, EE_Session $session = null)
164
+	{
165
+		$grand_total = $transaction->total_line_item();
166
+		$grand_total->get_items();
167
+		$grand_total->tax_descendants();
168
+		return EE_Cart::instance($grand_total, $session);
169
+	}
170
+
171
+
172
+	/**
173
+	 * Creates the total line item, and ensures it has its 'tickets' and 'taxes' sub-items
174
+	 *
175
+	 * @return EE_Line_Item
176
+	 * @throws \EE_Error
177
+	 */
178
+	private function _create_grand_total()
179
+	{
180
+		$this->_grand_total = EEH_Line_Item::create_total_line_item();
181
+		return $this->_grand_total;
182
+	}
183
+
184
+
185
+	/**
186
+	 * Gets all the line items of object type Ticket
187
+	 *
188
+	 * @access public
189
+	 * @return \EE_Line_Item[]
190
+	 */
191
+	public function get_tickets()
192
+	{
193
+		if ($this->_grand_total === null) {
194
+			return array();
195
+		}
196
+		return EEH_Line_Item::get_ticket_line_items($this->_grand_total);
197
+	}
198
+
199
+
200
+	/**
201
+	 * returns the total quantity of tickets in the cart
202
+	 *
203
+	 * @access public
204
+	 * @return int
205
+	 * @throws \EE_Error
206
+	 */
207
+	public function all_ticket_quantity_count()
208
+	{
209
+		$tickets = $this->get_tickets();
210
+		if (empty($tickets)) {
211
+			return 0;
212
+		}
213
+		$count = 0;
214
+		foreach ($tickets as $ticket) {
215
+			$count += $ticket->get('LIN_quantity');
216
+		}
217
+		return $count;
218
+	}
219
+
220
+
221
+	/**
222
+	 * Gets all the tax line items
223
+	 *
224
+	 * @return \EE_Line_Item[]
225
+	 * @throws \EE_Error
226
+	 */
227
+	public function get_taxes()
228
+	{
229
+		return EEH_Line_Item::get_taxes_subtotal($this->_grand_total)->children();
230
+	}
231
+
232
+
233
+	/**
234
+	 * Gets the total line item (which is a parent of all other line items) on this cart
235
+	 *
236
+	 * @return EE_Line_Item
237
+	 * @throws \EE_Error
238
+	 */
239
+	public function get_grand_total()
240
+	{
241
+		return $this->_grand_total instanceof EE_Line_Item ? $this->_grand_total : $this->_create_grand_total();
242
+	}
243
+
244
+
245
+	/**
246
+	 * @process items for adding to cart
247
+	 * @access  public
248
+	 * @param EE_Ticket $ticket
249
+	 * @param int       $qty
250
+	 * @return TRUE on success, FALSE on fail
251
+	 * @throws \EE_Error
252
+	 */
253
+	public function add_ticket_to_cart(EE_Ticket $ticket, $qty = 1)
254
+	{
255
+		EEH_Line_Item::add_ticket_purchase($this->get_grand_total(), $ticket, $qty);
256
+		return $this->save_cart() ? true : false;
257
+	}
258
+
259
+
260
+	/**
261
+	 * get_cart_total_before_tax
262
+	 *
263
+	 * @access public
264
+	 * @return float
265
+	 * @throws \EE_Error
266
+	 */
267
+	public function get_cart_total_before_tax()
268
+	{
269
+		return $this->get_grand_total()->recalculate_pre_tax_total();
270
+	}
271
+
272
+
273
+	/**
274
+	 * gets the total amount of tax paid for items in this cart
275
+	 *
276
+	 * @access public
277
+	 * @return float
278
+	 * @throws \EE_Error
279
+	 */
280
+	public function get_applied_taxes()
281
+	{
282
+		return EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
283
+	}
284
+
285
+
286
+	/**
287
+	 * Gets the total amount to be paid for the items in the cart, including taxes and other modifiers
288
+	 *
289
+	 * @access public
290
+	 * @return float
291
+	 * @throws \EE_Error
292
+	 */
293
+	public function get_cart_grand_total()
294
+	{
295
+		EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
296
+		return $this->get_grand_total()->total();
297
+	}
298
+
299
+
300
+	/**
301
+	 * Gets the total amount to be paid for the items in the cart, including taxes and other modifiers
302
+	 *
303
+	 * @access public
304
+	 * @return float
305
+	 * @throws \EE_Error
306
+	 */
307
+	public function recalculate_all_cart_totals()
308
+	{
309
+		$pre_tax_total = $this->get_cart_total_before_tax();
310
+		$taxes_total = EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
311
+		$this->_grand_total->set_total($pre_tax_total + $taxes_total);
312
+		$this->_grand_total->save_this_and_descendants_to_txn();
313
+		return $this->get_grand_total()->total();
314
+	}
315
+
316
+
317
+	/**
318
+	 * deletes an item from the cart
319
+	 *
320
+	 * @access public
321
+	 * @param array|bool|string $line_item_codes
322
+	 * @return int on success, FALSE on fail
323
+	 * @throws \EE_Error
324
+	 */
325
+	public function delete_items($line_item_codes = false)
326
+	{
327
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
328
+		return EEH_Line_Item::delete_items($this->get_grand_total(), $line_item_codes);
329
+	}
330
+
331
+
332
+	/**
333
+	 * @remove ALL items from cart and zero ALL totals
334
+	 * @access public
335
+	 * @return bool
336
+	 * @throws \EE_Error
337
+	 */
338
+	public function empty_cart()
339
+	{
340
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
341
+		$this->_grand_total = $this->_create_grand_total();
342
+		return $this->save_cart(true);
343
+	}
344
+
345
+
346
+	/**
347
+	 * @remove ALL items from cart and delete total as well
348
+	 * @access public
349
+	 * @return bool
350
+	 * @throws \EE_Error
351
+	 */
352
+	public function delete_cart()
353
+	{
354
+		if ($this->_grand_total instanceof EE_Line_Item) {
355
+			$deleted = EEH_Line_Item::delete_all_child_items($this->_grand_total);
356
+			if ($deleted) {
357
+				$deleted += $this->_grand_total->delete();
358
+				$this->_grand_total = null;
359
+				return true;
360
+			}
361
+		}
362
+		return false;
363
+	}
364
+
365
+
366
+	/**
367
+	 * @save   cart to session
368
+	 * @access public
369
+	 * @param bool $apply_taxes
370
+	 * @return TRUE on success, FALSE on fail
371
+	 * @throws \EE_Error
372
+	 */
373
+	public function save_cart($apply_taxes = true)
374
+	{
375
+		if ($apply_taxes && $this->_grand_total instanceof EE_Line_Item) {
376
+			EEH_Line_Item::ensure_taxes_applied($this->_grand_total);
377
+			// make sure we don't cache the transaction because it can get stale
378
+			if (
379
+				$this->_grand_total->get_one_from_cache('Transaction') instanceof EE_Transaction
380
+				&& $this->_grand_total->get_one_from_cache('Transaction')->ID()
381
+			) {
382
+				$this->_grand_total->clear_cache('Transaction', null, true);
383
+			}
384
+		}
385
+		if ($this->session() instanceof EE_Session) {
386
+			return $this->session()->set_cart($this);
387
+		} else {
388
+			return false;
389
+		}
390
+	}
391
+
392
+
393
+	public function __wakeup()
394
+	{
395
+		if (! $this->_grand_total instanceof EE_Line_Item && absint($this->_grand_total) !== 0) {
396
+			// $this->_grand_total is actually just an ID, so use it to get the object from the db
397
+			$this->_grand_total = EEM_Line_Item::instance()->get_one_by_ID($this->_grand_total);
398
+		}
399
+	}
400
+
401
+
402
+	/**
403
+	 * @return array
404
+	 */
405
+	public function __sleep()
406
+	{
407
+		if ($this->_grand_total instanceof EE_Line_Item && $this->_grand_total->ID()) {
408
+			$this->_grand_total = $this->_grand_total->ID();
409
+		}
410
+		return array('_grand_total');
411
+	}
412 412
 }
Please login to merge, or discard this patch.
core/helpers/EEH_Formatter.helper.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
             return htmlspecialchars($string);
47 47
         } else {
48 48
             if ($translate === false) {
49
-                return self::ee_tep_parse_input_field_data($string, array( '"' => '"' ));
49
+                return self::ee_tep_parse_input_field_data($string, array('"' => '"'));
50 50
             } else {
51 51
                 return self::ee_tep_parse_input_field_data($string, $translate);
52 52
             }
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
                 return false;
85 85
             }
86 86
         } else {
87
-            if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
87
+            if (($value !== '') && (strtolower($value) !== 'null') && (strlen(trim($value)) > 0)) {
88 88
                 return true;
89 89
             } else {
90 90
                 return false;
Please login to merge, or discard this patch.
Indentation   +92 added lines, -92 removed lines patch added patch discarded remove patch
@@ -10,108 +10,108 @@
 block discarded – undo
10 10
  */
11 11
 class EEH_Formatter
12 12
 {
13
-    /**
14
-     * _admin_format_content
15
-     * Text formatting function for wp_editor.
16
-     * This should fix all of the formatting issues of text output from the database.
17
-     *
18
-     * @static
19
-     * @access public
20
-     * @param  string $content content to format
21
-     * @return string          formatted content
22
-     */
23
-    public static function admin_format_content($content = '')
24
-    {
25
-        return wpautop(stripslashes_deep(html_entity_decode($content, ENT_QUOTES, "UTF-8")));
26
-    }
13
+	/**
14
+	 * _admin_format_content
15
+	 * Text formatting function for wp_editor.
16
+	 * This should fix all of the formatting issues of text output from the database.
17
+	 *
18
+	 * @static
19
+	 * @access public
20
+	 * @param  string $content content to format
21
+	 * @return string          formatted content
22
+	 */
23
+	public static function admin_format_content($content = '')
24
+	{
25
+		return wpautop(stripslashes_deep(html_entity_decode($content, ENT_QUOTES, "UTF-8")));
26
+	}
27 27
 
28 28
 
29 29
 
30
-    /**
31
-     * ee_tep_output_string
32
-     * todo: we need a description for this.
33
-     *
34
-     * @static
35
-     * @access public
36
-     * @param  string  $string    string to handle
37
-     * @param  boolean $translate //todo what is this for?
38
-     * @param  boolean $protected true then we run htmlspecialchars and return
39
-     * @return string
40
-     */
41
-    public static function ee_tep_output_string($string, $translate = false, $protected = false)
42
-    {
43
-        if ($protected === true) {
44
-            return htmlspecialchars($string);
45
-        } else {
46
-            if ($translate === false) {
47
-                return self::ee_tep_parse_input_field_data($string, array( '"' => '"' ));
48
-            } else {
49
-                return self::ee_tep_parse_input_field_data($string, $translate);
50
-            }
51
-        }
52
-    }
30
+	/**
31
+	 * ee_tep_output_string
32
+	 * todo: we need a description for this.
33
+	 *
34
+	 * @static
35
+	 * @access public
36
+	 * @param  string  $string    string to handle
37
+	 * @param  boolean $translate //todo what is this for?
38
+	 * @param  boolean $protected true then we run htmlspecialchars and return
39
+	 * @return string
40
+	 */
41
+	public static function ee_tep_output_string($string, $translate = false, $protected = false)
42
+	{
43
+		if ($protected === true) {
44
+			return htmlspecialchars($string);
45
+		} else {
46
+			if ($translate === false) {
47
+				return self::ee_tep_parse_input_field_data($string, array( '"' => '"' ));
48
+			} else {
49
+				return self::ee_tep_parse_input_field_data($string, $translate);
50
+			}
51
+		}
52
+	}
53 53
 
54 54
 
55 55
 
56
-    /**
57
-     * ee_tep_parse_input_field_data
58
-     *
59
-     * @param  string $data string to be "translated"
60
-     * @param         array ] $parse array in the form array( 'from' => 'to', ... )
61
-     * @return string
62
-     */
63
-    public static function ee_tep_parse_input_field_data($data, $parse)
64
-    {
65
-        return strtr(trim($data), $parse);
66
-    }
56
+	/**
57
+	 * ee_tep_parse_input_field_data
58
+	 *
59
+	 * @param  string $data string to be "translated"
60
+	 * @param         array ] $parse array in the form array( 'from' => 'to', ... )
61
+	 * @return string
62
+	 */
63
+	public static function ee_tep_parse_input_field_data($data, $parse)
64
+	{
65
+		return strtr(trim($data), $parse);
66
+	}
67 67
 
68 68
 
69 69
 
70
-    /**
71
-     * [ee_tep_not_null description]
72
-     *
73
-     * @param  string | array $value [description]
74
-     * @return bool       [description]
75
-     */
76
-    public static function ee_tep_not_null($value)
77
-    {
78
-        if (is_array($value)) {
79
-            if (count($value) > 0) {
80
-                return true;
81
-            } else {
82
-                return false;
83
-            }
84
-        } else {
85
-            if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
86
-                return true;
87
-            } else {
88
-                return false;
89
-            }
90
-        }
91
-    }
70
+	/**
71
+	 * [ee_tep_not_null description]
72
+	 *
73
+	 * @param  string | array $value [description]
74
+	 * @return bool       [description]
75
+	 */
76
+	public static function ee_tep_not_null($value)
77
+	{
78
+		if (is_array($value)) {
79
+			if (count($value) > 0) {
80
+				return true;
81
+			} else {
82
+				return false;
83
+			}
84
+		} else {
85
+			if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
86
+				return true;
87
+			} else {
88
+				return false;
89
+			}
90
+		}
91
+	}
92 92
 
93 93
 
94 94
 
95
-    /**
96
-     * Formats a date
97
-     *
98
-     * @param string $date
99
-     * @param string $format - format for the date
100
-     * @deprecated 4.6.12  Note, a search revealed this was not used anywhere in core or in our
101
-     *                       addons at time of writing this.  So just deprecated in case of third party use.
102
-     * @return string
103
-     * @deprecated v4.6.21
104
-     */
105
-    public static function event_date_display($date, $format = '')
106
-    {
107
-        EE_Error::doing_it_wrong(
108
-            __METHOD__,
109
-            esc_html__(
110
-                'This method is deprecated as of EE 4.6.12.  Currently it does not reformat as with prior behaviour but just returns the incoming string.  Please use the EE_Datetime helpers for Datetime on the event to display as desired.',
111
-                'event_espresso'
112
-            ),
113
-            '4.6.21'
114
-        );
115
-        return $date;
116
-    }
95
+	/**
96
+	 * Formats a date
97
+	 *
98
+	 * @param string $date
99
+	 * @param string $format - format for the date
100
+	 * @deprecated 4.6.12  Note, a search revealed this was not used anywhere in core or in our
101
+	 *                       addons at time of writing this.  So just deprecated in case of third party use.
102
+	 * @return string
103
+	 * @deprecated v4.6.21
104
+	 */
105
+	public static function event_date_display($date, $format = '')
106
+	{
107
+		EE_Error::doing_it_wrong(
108
+			__METHOD__,
109
+			esc_html__(
110
+				'This method is deprecated as of EE 4.6.12.  Currently it does not reformat as with prior behaviour but just returns the incoming string.  Please use the EE_Datetime helpers for Datetime on the event to display as desired.',
111
+				'event_espresso'
112
+			),
113
+			'4.6.21'
114
+		);
115
+		return $date;
116
+	}
117 117
 }
Please login to merge, or discard this patch.
core/helpers/EEH_Money.helper.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
             ),
38 38
             $money_value
39 39
         );
40
-        $money_value     = filter_var(
40
+        $money_value = filter_var(
41 41
             $money_value,
42 42
             FILTER_SANITIZE_NUMBER_FLOAT,
43 43
             FILTER_FLAG_ALLOW_FRACTION
@@ -165,9 +165,9 @@  discard block
 block discarded – undo
165 165
         $format          = 'f';
166 166
         $currency_config = $currency_config = EEH_Money::get_currency_config($CNT_ISO);
167 167
         // first get the decimal place and number of places
168
-        $format = "%'." . $currency_config->dec_plc . $format;
168
+        $format = "%'.".$currency_config->dec_plc.$format;
169 169
         // currency symbol on right side.
170
-        $format = $currency_config->sign_b4 ? $currency_config->sign . $format : $format . $currency_config->sign;
170
+        $format = $currency_config->sign_b4 ? $currency_config->sign.$format : $format.$currency_config->sign;
171 171
         return $format;
172 172
     }
173 173
 
@@ -187,10 +187,10 @@  discard block
 block discarded – undo
187 187
         $currency_config            = EEH_Money::get_currency_config($CNT_ISO);
188 188
         $decimal_places_placeholder = str_pad('', $currency_config->dec_plc, '0');
189 189
         // first get the decimal place and number of places
190
-        $format = '#,##0.' . $decimal_places_placeholder;
190
+        $format = '#,##0.'.$decimal_places_placeholder;
191 191
         // currency symbol on right side.
192
-        $format          = $currency_config->sign_b4
193
-            ? $currency_config->sign . $format
192
+        $format = $currency_config->sign_b4
193
+            ? $currency_config->sign.$format
194 194
             : $format
195 195
               . $currency_config->sign;
196 196
         $formatterObject = array(
@@ -222,7 +222,7 @@  discard block
 block discarded – undo
222 222
             ? new EE_Currency_Config($CNT_ISO)
223 223
             : null;
224 224
         // default currency settings for site if not set
225
-        if (! $currency_config instanceof EE_Currency_Config) {
225
+        if ( ! $currency_config instanceof EE_Currency_Config) {
226 226
             $currency_config = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config
227 227
                 ? EE_Registry::instance()->CFG->currency
228 228
                 : new EE_Currency_Config();
Please login to merge, or discard this patch.
Indentation   +207 added lines, -207 removed lines patch added patch discarded remove patch
@@ -11,221 +11,221 @@
 block discarded – undo
11 11
  */
12 12
 class EEH_Money extends EEH_Base
13 13
 {
14
-    /**
15
-     * This removes all localized money formatting from the incoming value
16
-     * Note: uses this site's currency settings for deciding what is considered a
17
-     * "thousands separator" (usually the character "," )
18
-     * and what is a "decimal mark" (usually the character ".")
19
-     *
20
-     * @param int|float|string $money_value
21
-     * @param string           $CNT_ISO
22
-     * @return float
23
-     * @throws EE_Error
24
-     */
25
-    public static function strip_localized_money_formatting($money_value, $CNT_ISO = '')
26
-    {
27
-        $currency_config = EEH_Money::get_currency_config($CNT_ISO);
28
-        $money_value     = str_replace(
29
-            array(
30
-                $currency_config->thsnds,
31
-                $currency_config->dec_mrk,
32
-            ),
33
-            array(
34
-                '', // remove thousands separator
35
-                '.', // convert decimal mark to what PHP expects
36
-            ),
37
-            $money_value
38
-        );
39
-        $money_value     = filter_var(
40
-            $money_value,
41
-            FILTER_SANITIZE_NUMBER_FLOAT,
42
-            FILTER_FLAG_ALLOW_FRACTION
43
-        );
44
-        return $money_value;
45
-    }
14
+	/**
15
+	 * This removes all localized money formatting from the incoming value
16
+	 * Note: uses this site's currency settings for deciding what is considered a
17
+	 * "thousands separator" (usually the character "," )
18
+	 * and what is a "decimal mark" (usually the character ".")
19
+	 *
20
+	 * @param int|float|string $money_value
21
+	 * @param string           $CNT_ISO
22
+	 * @return float
23
+	 * @throws EE_Error
24
+	 */
25
+	public static function strip_localized_money_formatting($money_value, $CNT_ISO = '')
26
+	{
27
+		$currency_config = EEH_Money::get_currency_config($CNT_ISO);
28
+		$money_value     = str_replace(
29
+			array(
30
+				$currency_config->thsnds,
31
+				$currency_config->dec_mrk,
32
+			),
33
+			array(
34
+				'', // remove thousands separator
35
+				'.', // convert decimal mark to what PHP expects
36
+			),
37
+			$money_value
38
+		);
39
+		$money_value     = filter_var(
40
+			$money_value,
41
+			FILTER_SANITIZE_NUMBER_FLOAT,
42
+			FILTER_FLAG_ALLOW_FRACTION
43
+		);
44
+		return $money_value;
45
+	}
46 46
 
47 47
 
48
-    /**
49
-     * This converts an incoming localized money value into a standard float item (to three decimal places)
50
-     * Only use this if you know the $money_value follows your currency configuration's
51
-     * settings. Note: this uses this site's currency settings for deciding what is considered a
52
-     * "thousands separator" (usually the character "," )
53
-     * and what is a "decimal mark" (usually the character ".")
54
-     *
55
-     * @param int|string $money_value
56
-     * @return float
57
-     * @throws EE_Error
58
-     */
59
-    public static function convert_to_float_from_localized_money($money_value)
60
-    {
61
-        // float it! and round to three decimal places
62
-        return round((float) EEH_Money::strip_localized_money_formatting($money_value), 3);
63
-    }
48
+	/**
49
+	 * This converts an incoming localized money value into a standard float item (to three decimal places)
50
+	 * Only use this if you know the $money_value follows your currency configuration's
51
+	 * settings. Note: this uses this site's currency settings for deciding what is considered a
52
+	 * "thousands separator" (usually the character "," )
53
+	 * and what is a "decimal mark" (usually the character ".")
54
+	 *
55
+	 * @param int|string $money_value
56
+	 * @return float
57
+	 * @throws EE_Error
58
+	 */
59
+	public static function convert_to_float_from_localized_money($money_value)
60
+	{
61
+		// float it! and round to three decimal places
62
+		return round((float) EEH_Money::strip_localized_money_formatting($money_value), 3);
63
+	}
64 64
 
65 65
 
66
-    /**
67
-     * For comparing floats. Default operator is '=', but see the $operator below for all options.
68
-     * This should be used to compare floats instead of normal '==' because floats
69
-     * are inherently imprecise, and so you can sometimes have two floats that appear to be identical
70
-     * but actually differ by 0.00000001.
71
-     *
72
-     * @see http://biostall.com/php-function-to-compare-floating-point-numbers
73
-     * @param float  $float1
74
-     * @param float  $float2
75
-     * @param string $operator The operator. Valid options are =, <=, <, >=, >, <>, eq, lt, lte, gt, gte, ne
76
-     * @return bool whether the equation is true or false
77
-     * @throws EE_Error
78
-     */
79
-    public static function compare_floats($float1, $float2, $operator = '=')
80
-    {
81
-        // Check numbers to 5 digits of precision
82
-        $epsilon = 0.00001;
83
-        $float1 = (float) $float1;
84
-        $float2 = (float) $float2;
85
-        switch ($operator) {
86
-            // equal
87
-            case "=":
88
-            case "==":
89
-            case "===":
90
-            case "eq":
91
-                if (abs($float1 - $float2) < $epsilon) {
92
-                    return true;
93
-                }
94
-                break;
95
-            // less than
96
-            case "<":
97
-            case "lt":
98
-                if (abs($float1 - $float2) < $epsilon) {
99
-                    return false;
100
-                } else {
101
-                    if ($float1 < $float2) {
102
-                        return true;
103
-                    }
104
-                }
105
-                break;
106
-            // less than or equal
107
-            case "<=":
108
-            case "lte":
109
-                if (self::compare_floats($float1, $float2, '<') || self::compare_floats($float1, $float2, '=')) {
110
-                    return true;
111
-                }
112
-                break;
113
-            // greater than
114
-            case ">":
115
-            case "gt":
116
-                if (abs($float1 - $float2) < $epsilon) {
117
-                    return false;
118
-                } else {
119
-                    if ($float1 > $float2) {
120
-                        return true;
121
-                    }
122
-                }
123
-                break;
124
-            // greater than or equal
125
-            case ">=":
126
-            case "gte":
127
-                if (self::compare_floats($float1, $float2, '>') || self::compare_floats($float1, $float2, '=')) {
128
-                    return true;
129
-                }
130
-                break;
131
-            case "<>":
132
-            case "!=":
133
-            case "ne":
134
-                if (abs($float1 - $float2) > $epsilon) {
135
-                    return true;
136
-                }
137
-                break;
138
-            default:
139
-                throw new EE_Error(
140
-                    sprintf(
141
-                        esc_html__(
142
-                            "Unknown operator %s in EEH_Money::compare_floats()",
143
-                            'event_espresso'
144
-                        ),
145
-                        $operator
146
-                    )
147
-                );
148
-        }
149
-        return false;
150
-    }
66
+	/**
67
+	 * For comparing floats. Default operator is '=', but see the $operator below for all options.
68
+	 * This should be used to compare floats instead of normal '==' because floats
69
+	 * are inherently imprecise, and so you can sometimes have two floats that appear to be identical
70
+	 * but actually differ by 0.00000001.
71
+	 *
72
+	 * @see http://biostall.com/php-function-to-compare-floating-point-numbers
73
+	 * @param float  $float1
74
+	 * @param float  $float2
75
+	 * @param string $operator The operator. Valid options are =, <=, <, >=, >, <>, eq, lt, lte, gt, gte, ne
76
+	 * @return bool whether the equation is true or false
77
+	 * @throws EE_Error
78
+	 */
79
+	public static function compare_floats($float1, $float2, $operator = '=')
80
+	{
81
+		// Check numbers to 5 digits of precision
82
+		$epsilon = 0.00001;
83
+		$float1 = (float) $float1;
84
+		$float2 = (float) $float2;
85
+		switch ($operator) {
86
+			// equal
87
+			case "=":
88
+			case "==":
89
+			case "===":
90
+			case "eq":
91
+				if (abs($float1 - $float2) < $epsilon) {
92
+					return true;
93
+				}
94
+				break;
95
+			// less than
96
+			case "<":
97
+			case "lt":
98
+				if (abs($float1 - $float2) < $epsilon) {
99
+					return false;
100
+				} else {
101
+					if ($float1 < $float2) {
102
+						return true;
103
+					}
104
+				}
105
+				break;
106
+			// less than or equal
107
+			case "<=":
108
+			case "lte":
109
+				if (self::compare_floats($float1, $float2, '<') || self::compare_floats($float1, $float2, '=')) {
110
+					return true;
111
+				}
112
+				break;
113
+			// greater than
114
+			case ">":
115
+			case "gt":
116
+				if (abs($float1 - $float2) < $epsilon) {
117
+					return false;
118
+				} else {
119
+					if ($float1 > $float2) {
120
+						return true;
121
+					}
122
+				}
123
+				break;
124
+			// greater than or equal
125
+			case ">=":
126
+			case "gte":
127
+				if (self::compare_floats($float1, $float2, '>') || self::compare_floats($float1, $float2, '=')) {
128
+					return true;
129
+				}
130
+				break;
131
+			case "<>":
132
+			case "!=":
133
+			case "ne":
134
+				if (abs($float1 - $float2) > $epsilon) {
135
+					return true;
136
+				}
137
+				break;
138
+			default:
139
+				throw new EE_Error(
140
+					sprintf(
141
+						esc_html__(
142
+							"Unknown operator %s in EEH_Money::compare_floats()",
143
+							'event_espresso'
144
+						),
145
+						$operator
146
+					)
147
+				);
148
+		}
149
+		return false;
150
+	}
151 151
 
152 152
 
153
-    /**
154
-     * This returns a localized format string suitable for jQplot.
155
-     *
156
-     * @param string $CNT_ISO  If this is provided, then will attempt to get the currency settings for the country.
157
-     *                         Otherwise will use currency settings for current active country on site.
158
-     * @return string
159
-     * @throws EE_Error
160
-     */
161
-    public static function get_format_for_jqplot($CNT_ISO = '')
162
-    {
163
-        // default format
164
-        $format          = 'f';
165
-        $currency_config = $currency_config = EEH_Money::get_currency_config($CNT_ISO);
166
-        // first get the decimal place and number of places
167
-        $format = "%'." . $currency_config->dec_plc . $format;
168
-        // currency symbol on right side.
169
-        $format = $currency_config->sign_b4 ? $currency_config->sign . $format : $format . $currency_config->sign;
170
-        return $format;
171
-    }
153
+	/**
154
+	 * This returns a localized format string suitable for jQplot.
155
+	 *
156
+	 * @param string $CNT_ISO  If this is provided, then will attempt to get the currency settings for the country.
157
+	 *                         Otherwise will use currency settings for current active country on site.
158
+	 * @return string
159
+	 * @throws EE_Error
160
+	 */
161
+	public static function get_format_for_jqplot($CNT_ISO = '')
162
+	{
163
+		// default format
164
+		$format          = 'f';
165
+		$currency_config = $currency_config = EEH_Money::get_currency_config($CNT_ISO);
166
+		// first get the decimal place and number of places
167
+		$format = "%'." . $currency_config->dec_plc . $format;
168
+		// currency symbol on right side.
169
+		$format = $currency_config->sign_b4 ? $currency_config->sign . $format : $format . $currency_config->sign;
170
+		return $format;
171
+	}
172 172
 
173 173
 
174
-    /**
175
-     * This returns a localized format string suitable for usage with the Google Charts API format param.
176
-     *
177
-     * @param string $CNT_ISO  If this is provided, then will attempt to get the currency settings for the country.
178
-     *                         Otherwise will use currency settings for current active country on site.
179
-     *                         Note: GoogleCharts uses ICU pattern set
180
-     *                         (@see http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details)
181
-     * @return string
182
-     * @throws EE_Error
183
-     */
184
-    public static function get_format_for_google_charts($CNT_ISO = '')
185
-    {
186
-        $currency_config            = EEH_Money::get_currency_config($CNT_ISO);
187
-        $decimal_places_placeholder = str_pad('', $currency_config->dec_plc, '0');
188
-        // first get the decimal place and number of places
189
-        $format = '#,##0.' . $decimal_places_placeholder;
190
-        // currency symbol on right side.
191
-        $format          = $currency_config->sign_b4
192
-            ? $currency_config->sign . $format
193
-            : $format
194
-              . $currency_config->sign;
195
-        $formatterObject = array(
196
-            'decimalSymbol'  => $currency_config->dec_mrk,
197
-            'groupingSymbol' => $currency_config->thsnds,
198
-            'fractionDigits' => $currency_config->dec_plc,
199
-        );
200
-        if ($currency_config->sign_b4) {
201
-            $formatterObject['prefix'] = $currency_config->sign;
202
-        } else {
203
-            $formatterObject['suffix'] = $currency_config->sign;
204
-        }
205
-        return array(
206
-            'format'          => $format,
207
-            'formatterObject' => $formatterObject,
208
-        );
209
-    }
174
+	/**
175
+	 * This returns a localized format string suitable for usage with the Google Charts API format param.
176
+	 *
177
+	 * @param string $CNT_ISO  If this is provided, then will attempt to get the currency settings for the country.
178
+	 *                         Otherwise will use currency settings for current active country on site.
179
+	 *                         Note: GoogleCharts uses ICU pattern set
180
+	 *                         (@see http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details)
181
+	 * @return string
182
+	 * @throws EE_Error
183
+	 */
184
+	public static function get_format_for_google_charts($CNT_ISO = '')
185
+	{
186
+		$currency_config            = EEH_Money::get_currency_config($CNT_ISO);
187
+		$decimal_places_placeholder = str_pad('', $currency_config->dec_plc, '0');
188
+		// first get the decimal place and number of places
189
+		$format = '#,##0.' . $decimal_places_placeholder;
190
+		// currency symbol on right side.
191
+		$format          = $currency_config->sign_b4
192
+			? $currency_config->sign . $format
193
+			: $format
194
+			  . $currency_config->sign;
195
+		$formatterObject = array(
196
+			'decimalSymbol'  => $currency_config->dec_mrk,
197
+			'groupingSymbol' => $currency_config->thsnds,
198
+			'fractionDigits' => $currency_config->dec_plc,
199
+		);
200
+		if ($currency_config->sign_b4) {
201
+			$formatterObject['prefix'] = $currency_config->sign;
202
+		} else {
203
+			$formatterObject['suffix'] = $currency_config->sign;
204
+		}
205
+		return array(
206
+			'format'          => $format,
207
+			'formatterObject' => $formatterObject,
208
+		);
209
+	}
210 210
 
211 211
 
212
-    /**
213
-     * @param string $CNT_ISO
214
-     * @return EE_Currency_Config|null
215
-     * @throws EE_Error
216
-     */
217
-    public static function get_currency_config($CNT_ISO = '')
218
-    {
219
-        // if CNT_ISO passed lets try to get currency settings for it.
220
-        $currency_config = $CNT_ISO !== ''
221
-            ? new EE_Currency_Config($CNT_ISO)
222
-            : null;
223
-        // default currency settings for site if not set
224
-        if (! $currency_config instanceof EE_Currency_Config) {
225
-            $currency_config = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config
226
-                ? EE_Registry::instance()->CFG->currency
227
-                : new EE_Currency_Config();
228
-        }
229
-        return $currency_config;
230
-    }
212
+	/**
213
+	 * @param string $CNT_ISO
214
+	 * @return EE_Currency_Config|null
215
+	 * @throws EE_Error
216
+	 */
217
+	public static function get_currency_config($CNT_ISO = '')
218
+	{
219
+		// if CNT_ISO passed lets try to get currency settings for it.
220
+		$currency_config = $CNT_ISO !== ''
221
+			? new EE_Currency_Config($CNT_ISO)
222
+			: null;
223
+		// default currency settings for site if not set
224
+		if (! $currency_config instanceof EE_Currency_Config) {
225
+			$currency_config = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config
226
+				? EE_Registry::instance()->CFG->currency
227
+				: new EE_Currency_Config();
228
+		}
229
+		return $currency_config;
230
+	}
231 231
 }
Please login to merge, or discard this patch.
core/CPTs/EE_CPT_Default_Strategy.core.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@
 block discarded – undo
44 44
      */
45 45
     public function pre_get_posts(WP_Query $WP_Query)
46 46
     {
47
-        if (! $WP_Query->is_main_query() && ! $WP_Query->is_archive()) {
47
+        if ( ! $WP_Query->is_main_query() && ! $WP_Query->is_archive()) {
48 48
             return $WP_Query;
49 49
         }
50 50
         return $WP_Query;
Please login to merge, or discard this patch.
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -11,70 +11,70 @@
 block discarded – undo
11 11
  */
12 12
 class EE_CPT_Default_Strategy
13 13
 {
14
-    /**
15
-     * $CPT - the current page, if it utilizes CPTs
16
-     *
17
-     * @var    object
18
-     * @access    protected
19
-     */
20
-    protected $CPT = null;
14
+	/**
15
+	 * $CPT - the current page, if it utilizes CPTs
16
+	 *
17
+	 * @var    object
18
+	 * @access    protected
19
+	 */
20
+	protected $CPT = null;
21 21
 
22 22
 
23
-    /**
24
-     *    class constructor
25
-     *
26
-     * @access    private
27
-     * @param    array $arguments
28
-     * @return    \EE_CPT_Default_Strategy
29
-     */
30
-    public function __construct($arguments = array())
31
-    {
32
-        $this->CPT = isset($arguments['CPT']) ? $arguments['CPT'] : null;
33
-    }
23
+	/**
24
+	 *    class constructor
25
+	 *
26
+	 * @access    private
27
+	 * @param    array $arguments
28
+	 * @return    \EE_CPT_Default_Strategy
29
+	 */
30
+	public function __construct($arguments = array())
31
+	{
32
+		$this->CPT = isset($arguments['CPT']) ? $arguments['CPT'] : null;
33
+	}
34 34
 
35 35
 
36
-    /**
37
-     *    pre_get_posts
38
-     *
39
-     * @access    public
40
-     * @param    \WP_Query $WP_Query
41
-     * @return    \WP_Query
42
-     */
43
-    public function pre_get_posts(WP_Query $WP_Query)
44
-    {
45
-        if (! $WP_Query->is_main_query() && ! $WP_Query->is_archive()) {
46
-            return $WP_Query;
47
-        }
48
-        return $WP_Query;
49
-    }
36
+	/**
37
+	 *    pre_get_posts
38
+	 *
39
+	 * @access    public
40
+	 * @param    \WP_Query $WP_Query
41
+	 * @return    \WP_Query
42
+	 */
43
+	public function pre_get_posts(WP_Query $WP_Query)
44
+	{
45
+		if (! $WP_Query->is_main_query() && ! $WP_Query->is_archive()) {
46
+			return $WP_Query;
47
+		}
48
+		return $WP_Query;
49
+	}
50 50
 
51 51
 
52
-    /**
53
-     *    wp
54
-     *
55
-     * @access    public
56
-     * @param    \WP_Post[] $posts
57
-     * @param    \WP_Query  $WP_Query
58
-     * @return    \WP_Post[]
59
-     */
60
-    public function the_posts($posts, WP_Query $WP_Query)
61
-    {
62
-        return $posts;
63
-    }
52
+	/**
53
+	 *    wp
54
+	 *
55
+	 * @access    public
56
+	 * @param    \WP_Post[] $posts
57
+	 * @param    \WP_Query  $WP_Query
58
+	 * @return    \WP_Post[]
59
+	 */
60
+	public function the_posts($posts, WP_Query $WP_Query)
61
+	{
62
+		return $posts;
63
+	}
64 64
 
65 65
 
66
-    /**
67
-     *    get_EE_post_type_metadata
68
-     *
69
-     * @access    public
70
-     * @param mixed     $meta_value
71
-     * @param    int    $post_id
72
-     * @param    string $meta_key
73
-     * @param    string $single
74
-     * @return    mixed
75
-     */
76
-    public function get_EE_post_type_metadata($meta_value = null, $post_id, $meta_key, $single)
77
-    {
78
-        return $meta_value;
79
-    }
66
+	/**
67
+	 *    get_EE_post_type_metadata
68
+	 *
69
+	 * @access    public
70
+	 * @param mixed     $meta_value
71
+	 * @param    int    $post_id
72
+	 * @param    string $meta_key
73
+	 * @param    string $single
74
+	 * @return    mixed
75
+	 */
76
+	public function get_EE_post_type_metadata($meta_value = null, $post_id, $meta_key, $single)
77
+	{
78
+		return $meta_value;
79
+	}
80 80
 }
Please login to merge, or discard this patch.