Пример #1
0
 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;
 }