diff options
author | Andrey Andreev <narf@devilix.net> | 2014-02-13 12:56:50 +0100 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2014-02-13 12:56:50 +0100 |
commit | 42a1139debbe1679beb670dd29561a2965f99b8c (patch) | |
tree | 5a82d069aed0e87e0110ad9a2c25e73b5e314cc2 /system/libraries/Cart.php | |
parent | 376b215500b1facb3ba063aec618bcc12da50351 (diff) | |
parent | c09b953be9d14158cc21cecc676f7e992c16f752 (diff) |
Merge pull request #2874 from aanbar/develop
[Cart Library] Allow updating all properties for an item.
Diffstat (limited to 'system/libraries/Cart.php')
-rw-r--r-- | system/libraries/Cart.php | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/system/libraries/Cart.php b/system/libraries/Cart.php index 5a31a1d45..389b1b77e 100644 --- a/system/libraries/Cart.php +++ b/system/libraries/Cart.php @@ -323,10 +323,10 @@ class CI_Cart { /** * Update the cart * - * This function permits the quantity of a given item to be changed. + * This function permits changing item properties. * Typically it is called from the "view cart" page if a user makes * changes to the quantity before checkout. That array must contain the - * product ID and quantity for each item. + * rowid and quantity for each item. * * @param array * @return bool @@ -350,7 +350,19 @@ class CI_Cart { } else { - $this->_cart_contents[$items['rowid']]['qty'] = $items['qty']; + // find updatable keys + $keys = array_intersect(array_keys($this->_cart_contents[$items['rowid']]), array_keys($items)); + // if a price was passed, make sure it contains valid data + if (isset($items['price'])) + { + $items['price'] = (float) $items['price']; + } + + // product id & name shouldn't be changed + foreach (array_diff($keys, array('id', 'name')) as $key) + { + $this->_cart_contents[$items['rowid']][$key] = $items[$key]; + } } return TRUE; |