Example #1
0
    $delete_message = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_DELETE_PRODUCT_MSG');
}
$display_label = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_ITEM_DISPLAY_LBL');
if (!empty($product_id)) {
    $price = $ps_product->get_retail_price($product_id);
} else {
    $price['product_price'] = vmGet($_REQUEST, 'product_price', '');
}
$quantity_start = 0;
$quantity_end = 0;
$quantity_step = 1;
if (!empty($product_id)) {
    // get the Database object we're filling the product form with
    $db = $ps_product->get($product_id);
    //get quantity options
    $quantity_options = ps_product::get_quantity_options($product_id);
    extract($quantity_options);
    //get list style
    $child_options = ps_product::get_child_options($product_id);
    extract($child_options);
    //Get min max order levels
    $order_levels = ps_product::product_order_levels($product_id);
    if ($order_levels) {
        $min_order = array_shift($order_levels);
        $max_order = array_shift($order_levels);
    }
    // Get category IDs
    $db2 = new ps_DB();
    $q = "SELECT category_id FROM #__{vm}_product_category_xref WHERE product_id='{$product_id}'";
    $db2->query($q);
    while ($db2->next_record()) {
 /**
  * Creates the Quantity Input Boxes/Radio Buttons/Lists for Products
  *
  * @param int $product_id The Parent Product ID
  * @param int $prod_id The actual Product ID
  * @param string $child
  * @param string $use_parent
  * @return string
  */
 function show_quantity_box($product_id, $prod_id, $child = false, $use_parent = 'N')
 {
     global $VM_LANG;
     $tpl = vmTemplate::getInstance();
     if ($child == 'Y') {
         //We have a child list so get the current quantity;
         $quantity = 0;
         for ($i = 0; $i < $_SESSION["cart"]["idx"]; $i++) {
             if ($_SESSION['cart'][$i]["product_id"] == $prod_id) {
                 $quantity = $_SESSION['cart'][$i]["quantity"];
             }
         }
     } else {
         $quantity = vmrequest::getInt('quantity', 1);
     }
     // Detremine which style to use
     if ($use_parent == 'Y' && !empty($product_id)) {
         $id = $product_id;
     } else {
         $id = $prod_id;
     }
     //Get style to use
     $product_in_stock = ps_product::get_field($id, 'product_in_stock');
     $quantity_options = ps_product::get_quantity_options($id);
     extract($quantity_options);
     //Start output of quantity
     //Check for incompatabilities and reset to normal
     if (CHECK_STOCK == '1' && !$product_in_stock) {
         $display_type = 'hide';
     }
     if (empty($display_type) || @$display_type == "hide" && $child == 'Y' || @$display_type == "radio" && $child == 'YM' || @$display_type == "radio" && !$child) {
         $display_type = "none";
     }
     unset($quantity_options['display_type']);
     $tpl->set('prod_id', $prod_id);
     $tpl->set('quantity', $quantity);
     $tpl->set('display_type', $display_type);
     $tpl->set('child', $child);
     $tpl->set('quantity_options', $quantity_options);
     //Determine if label to be used
     $html = $tpl->fetch('product_details/includes/quantity_box_general.tpl.php');
     return $html;
 }
Example #3
0
 /**
  * updates the quantity of a product_id in the cart
  * @author pablo
  * @param array $d
  * @return boolean result of the update
  */
 function update(&$d)
 {
     global $VM_LANG, $vmLogger, $func, $page;
     include_class("product");
     $product_id = (int) $d["prod_id"];
     $quantity = isset($d["quantity"]) ? (int) $d["quantity"] : 1;
     $_SESSION['last_page'] = "shop.cart";
     // Check for negative quantity
     if ($quantity < 0) {
         $vmLogger->warning($VM_LANG->_('PHPSHOP_CART_ERROR_NO_NEGATIVE', false));
         return False;
     }
     if (!is_numeric($quantity)) {
         $vmLogger->warning($VM_LANG->_('PHPSHOP_CART_ERROR_NO_VALID_QUANTITY', false));
         return False;
     }
     if (!$product_id) {
         return false;
     }
     $deleted_prod = 0;
     $updated_prod = 0;
     if ($quantity == 0 && strtolower($func) == "cartupdate") {
         $deleted_prod = $this->delete($d);
     } else {
         for ($i = 0; $i < $_SESSION['cart']["idx"]; $i++) {
             // modified for the advanced attribute modification
             if ($_SESSION['cart'][$i]["product_id"] == $product_id && $_SESSION['cart'][$i]["description"] == $d["description"]) {
                 if (strtolower($func) == 'cartadd') {
                     $quantity += $_SESSION['cart'][$i]["quantity"];
                 }
                 // Get min and max order levels
                 list($min, $max) = ps_product::product_order_levels($product_id);
                 if ($min != 0 && $quantity < $min) {
                     eval("\$msg = \"" . $VM_LANG->_('VM_CART_MIN_ORDER', false) . "\";");
                     $vmLogger->warning($msg);
                     return false;
                 }
                 if ($max != 0 && $quantity > $max) {
                     eval("\$msg = \"" . $VM_LANG->_('VM_CART_MAX_ORDER', false) . "\";");
                     $vmLogger->warning($msg);
                     return false;
                 }
                 $quantity_options = ps_product::get_quantity_options($product_id);
                 if (!empty($quantity_options) && !empty($quantity_options['quantity_step'])) {
                     if ($quantity % $quantity_options['quantity_step'] > 0) {
                         continue;
                     }
                 }
                 // Remove deleted or unpublished products from the cart
                 if (!ps_product::product_exists($product_id)) {
                     $this->delete(array('product_id', $product_id));
                     continue;
                 }
                 // Check to see if checking stock quantity
                 if (CHECK_STOCK) {
                     $product_in_stock = ps_product::get_field($product_id, 'product_in_stock');
                     if (empty($product_in_stock)) {
                         $product_in_stock = 0;
                     }
                     if ($quantity > $product_in_stock) {
                         global $notify;
                         $_SESSION['notify'] = array();
                         $_SESSION['notify']['idx'] = 0;
                         $k = 0;
                         $notify = $_SESSION['notify'];
                         $_SESSION['notify'][$k]["prod_id"] = $product_id;
                         $_SESSION['notify'][$k]["quantity"] = $quantity;
                         $_SESSION['notify']['idx']++;
                         $page = 'shop.waiting_list';
                         return true;
                     }
                 }
                 $_SESSION['cart'][$i]["quantity"] = $quantity;
                 $updated_prod++;
             }
         }
     }
     if (!empty($_SESSION['coupon_discount'])) {
         // Update the Coupon Discount !!
         require_once CLASSPATH . 'ps_coupon.php';
         ps_coupon::process_coupon_code($d);
     }
     ps_cart::saveCart();
     return array($updated_prod, $deleted_prod);
 }