public function add_to_cart($return = 'return') { if (!\Input::post()) { return false; } // check for a valid CSRF token // if (!\Security::check_token()) // { // \Messages::error('CSRF attack or expired CSRF token.'); // return false; // } $post = \Input::post(); $product_id = $post['product_id']; if (!($product = Model_Product::find_one_by_id($product_id))) { return; } $selected_attributes = array(); $selected_attributes_json = null; if (isset($post['select']) && !empty($post['select'])) { ksort($post['select']); $selected_attributes_json = json_encode($post['select']); } $product_data = Model_Product::product_data($product, $selected_attributes_json, \Input::post('select'), \Input::post('attributeid')); if (!empty($product_data)) { $attr_obj = null; if (!empty($product_data['current_attributes'])) { $attr_obj = $product_data['current_attributes'][0]->product_attribute; } $item = array('title' => $product->title, 'id' => $product->id, 'product_attribute_id' => $attr_obj ? $attr_obj->id : null, 'quantity' => $post['quantity'], 'attributes' => $attr_obj ? $attr_obj->attributes : null, 'product_code' => $product_data['code'], 'unique_id' => uniqid()); if ($product_data['sale']) { $item += array('price' => $product_data['sale'], 'price_type' => 'sale_price'); } else { $item += array('price' => $product_data['retail_price'], 'price_type' => 'retail_price'); } $stock_options = \Config::load('stock-option.db'); if ($stock_options['allow_buy_out_of_stock'] != 1 && $product_data['stock_quantity'] < 1) { \Messages::error('Product is Out of Stock.'); echo \Messages::display(); return; } $uid = \Cart::generateUID($item); if (\Cart::exists($uid)) { $cart_item = \Cart::item($uid); $quantity = $cart_item->get('quantity'); if ($product_data['stock_quantity'] > 0 && $product_data['stock_quantity'] <= $quantity) { \Messages::error($product->title . ' has not enough stock to fulfill your request.'); echo \Messages::display(); return; } } if ($return == 'return') { \Cart::add($item); // Always return cart item id $uid = \Cart::generateUID($item); if (\Cart::exists($uid)) { return $uid; } return false; } else { $uid = \Cart::generateUID($item); if (\Cart::exists($uid)) { echo $uid; } echo ''; exit; } \Messages::success('Product successfully added to cart.'); echo \Messages::display(); } return false; }