Permalink
Browse files

Add CI_Cart::get_item() (rel #400)

  • Loading branch information...
1 parent 60b9714 commit cdeee661db2438cc65304f704ab4bcebeccb9b7d @narfbg narfbg committed Oct 25, 2012
Showing with 37 additions and 13 deletions.
  1. +23 −6 system/libraries/Cart.php
  2. +4 −3 user_guide_src/source/changelog.rst
  3. +10 −4 user_guide_src/source/libraries/cart.rst
View
@@ -480,17 +480,34 @@ public function contents($newest_first = FALSE)
// --------------------------------------------------------------------
/**
+ * Get cart item
+ *
+ * Returns the details of a specific item in the cart
+ *
+ * @param string $row_id
+ * @return array
+ */
+ public function get_item($row_id)
+ {
+ return (in_array($row_id, array('total_items', 'cart_total'), TRUE) OR ! isset($this->_cart_contents[$row_id]))
+ ? FALSE
+ : $this->_cart_contents[$row_id];
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* Has options
*
* Returns TRUE if the rowid passed to this function correlates to an item
* that has options associated with it.
*
- * @param mixed
+ * @param string $row_id = ''
* @return bool
*/
- public function has_options($rowid = '')
+ public function has_options($row_id = '')
{
- return (isset($this->_cart_contents[$rowid]['options']) && count($this->_cart_contents[$rowid]['options']) !== 0);
+ return (isset($this->_cart_contents[$row_id]['options']) && count($this->_cart_contents[$row_id]['options']) !== 0);
}
// --------------------------------------------------------------------
@@ -500,12 +517,12 @@ public function has_options($rowid = '')
*
* Returns the an array of options, for a particular product row ID
*
- * @param int
+ * @param string $row_id = ''
* @return array
*/
- public function product_options($rowid = '')
+ public function product_options($row_id = '')
{
- return isset($this->_cart_contents[$rowid]['options']) ? $this->_cart_contents[$rowid]['options'] : array();
+ return isset($this->_cart_contents[$row_id]['options']) ? $this->_cart_contents[$row_id]['options'] : array();
}
// --------------------------------------------------------------------
@@ -173,9 +173,10 @@ Release Date: Not Released
- Added *max_filename_increment* config setting.
- Added an "index" parameter to the ``data()`` method.
- :doc:`Cart library <libraries/cart>` changes include:
- - It now auto-increments quantity's instead of just resetting it, this is the default behaviour of large e-commerce sites.
- - Product Name strictness can be disabled via the Cart Library by switching "$product_name_safe".
- - Added function remove() to remove a cart item, updating with quantity of 0 seemed like a hack but has remained to retain compatibility.
+ - It now auto-increments quantity instead of just resetting it, this is the default behaviour of large e-commerce sites.
+ - *Product Name* strictness can be disabled by switching the ``$product_name_safe`` property to FALSE.
+ - Added method ``remove()`` to remove a cart item, updating with quantity of 0 seemed like a hack but has remained to retain compatibility.
+ - Added method ``get_item()`` to enable retrieving data for a single cart item.
- :doc:`Image Manipulation library <libraries/image_lib>` changes include:
- The initialize() method now only sets existing class properties.
- Added support for 3-length hex color values for *wm_font_color* and *wm_shadow_color* properties, as well as validation for them.
@@ -279,16 +279,22 @@ by which this is returned by passing it "true" where the contents will be sorted
from newest to oldest, by leaving this function blank, you'll automatically just get
first added to the basket to last added to the basket.
-$this->cart->has_options(rowid);
-********************************
+$this->cart->get_item($row_id);
+*******************************
+
+Returns an array containing data for the item matching the specified row ID,
+or FALSE if no such item exists.
+
+$this->cart->has_options($row_id);
+**********************************
Returns TRUE (boolean) if a particular row in the cart contains options.
This function is designed to be used in a loop with
$this->cart->contents(), since you must pass the rowid to this function,
as shown in the Displaying the Cart example above.
-$this->cart->product_options(rowid);
-************************************
+$this->cart->product_options($row_id);
+**************************************
Returns an array of options for a particular product. This function is
designed to be used in a loop with $this->cart->contents(), since you

0 comments on commit cdeee66

Please sign in to comment.