Welcome Guest, Not a member yet? Register   Sign In
Find all open carts..
#8

[eluser]darkhouse[/eluser]
No problem. It's just the _insert function I changed. You'll notice all I did was comment out the part where it checks the product name, and then at the end I created $old_qty, and applied it after the item is re-added.

Code:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Cart extends CI_Cart {
    
    /**
     * Insert
     *
     * @access    private
     * @param    array
     * @return    bool
     */
    function _insert($items = array())
    {
        // Was any cart data passed? No? Bah...
        if ( ! is_array($items) OR count($items) == 0)
        {
            log_message('error', 'The insert method must be passed an array containing data.');
            return FALSE;
        }
    
        // Does the $items array contain an id, quantity, price, and name?  These are required
        if ( ! isset($items['id']) OR ! isset($items['qty']) OR ! isset($items['price']) OR ! isset($items['name']))
        {
            log_message('error', 'The cart array must contain a product ID, quantity, price, and name.');
            return FALSE;
        }
    
        // Prep the quantity. It can only be a number.  Duh...
        $items['qty'] = trim(preg_replace('/([^0-9])/i', '', $items['qty']));
        // Trim any leading zeros
        $items['qty'] = trim(preg_replace('/(^[0]+)/i', '', $items['qty']));

        // If the quantity is zero or blank there's nothing for us to do
        if ( ! is_numeric($items['qty']) OR $items['qty'] == 0)
        {
            return FALSE;
        }
    
        // Validate the product ID. It can only be alpha-numeric, dashes, underscores or periods
        // Not totally sure we should impose this rule, but it seems prudent to standardize IDs.
        // Note: These can be user-specified by setting the $this->product_id_rules variable.
        if ( ! preg_match("/^[".$this->product_id_rules."]+$/i", $items['id']))
        {
            log_message('error', 'Invalid product ID.  The product ID can only contain alpha-numeric characters, dashes, and underscores');
            return FALSE;
        }
    
        // Validate the product name. It can only be alpha-numeric, dashes, underscores, colons or periods.
        // Note: These can be user-specified by setting the $this->product_name_rules variable.
        // if ( ! preg_match("/^[".$this->product_name_rules."]+$/i", $items['name']))
        //         {
        //             log_message('error', 'An invalid name was submitted as the product name: '.$items['name'].' The name can only contain alpha-numeric characters, dashes, underscores, colons, and spaces');
        //             return FALSE;
        //         }

        // Prep the price.  Remove anything that isn't a number or decimal point.
        $items['price'] = trim(preg_replace('/([^0-9\.])/i', '', $items['price']));
        // Trim any leading zeros
        $items['price'] = trim(preg_replace('/(^[0]+)/i', '', $items['price']));
        
        // Is the price a valid number?
        if ( ! is_numeric($items['price']))
        {
            log_message('error', 'An invalid price was submitted for product ID: '.$items['id']);
            return FALSE;
        }

        if (isset($items['options']) AND count($items['options']) > 0)
        {
            $rowid = md5($items['id'].implode('', $items['options']));
        }
        else
        {
            // No options were submitted so we simply MD5 the product ID.
            // Technically, we don't need to MD5 the ID in this case, but it makes
            // sense to standardize the format of array indexes for both conditions
            $rowid = md5($items['id']);
        }        

        // Now that we have our unique "row ID", we'll add our cart items to the master array
        $old_qty = 0;
        if(isset($this->_cart_contents[$rowid])){
            $old_qty = $this->_cart_contents[$rowid]['qty'];
        }
        
        // let's unset this first, just to make sure our index contains only the data from this submission
        unset($this->_cart_contents[$rowid]);        
        
        // Create a new index with our new row ID
        $this->_cart_contents[$rowid]['rowid'] = $rowid;
    
        // And add the new items to the cart array            
        foreach ($items as $key => $val)
        {
            $this->_cart_contents[$rowid][$key] = $val;
        }
        
        $this->_cart_contents[$rowid]['qty'] += $old_qty;

        // Woot!
        return TRUE;
    }

}


Messages In This Thread
Find all open carts.. - by El Forum - 10-13-2009, 12:58 PM
Find all open carts.. - by El Forum - 10-14-2009, 01:30 PM
Find all open carts.. - by El Forum - 10-14-2009, 01:34 PM
Find all open carts.. - by El Forum - 10-14-2009, 06:41 PM
Find all open carts.. - by El Forum - 10-14-2009, 07:03 PM
Find all open carts.. - by El Forum - 10-14-2009, 07:36 PM
Find all open carts.. - by El Forum - 10-14-2009, 07:42 PM
Find all open carts.. - by El Forum - 10-14-2009, 08:01 PM



Theme © iAndrew 2016 - Forum software by © MyBB