/**
  * function add, Adds product to quotelist
  * @access  public
  * @return string "error" or "true"  , "error" indicates, error occurred
  */
 public function add()
 {
     //adsjust the price
     global $wpdb, $woocommerce, $dvin_qlist_products;
     $dvin_qlist_products = self::get_qlist_from_session();
     //handle simple product
     if (!isset($this->details_arr['variation_id']) && isset($this->details_arr['product_id'])) {
         //single product
         $quantity = isset($this->details_arr['quantity']) ? (int) $this->details_arr['quantity'] : 1;
         // check for existence,  product ID, variation ID, variation data, and other cart item data
         if ($this->isExists($this->details_arr['product_id'], '')) {
             return "exists";
         }
         //get price
         $index = $price = 0;
         $price = get_quotelist_product_price(wc_get_product($this->details_arr['product_id']));
         //add to session
         $dvin_qlist_products[$this->details_arr['product_id']]['product_id'] = $this->details_arr['product_id'];
         $dvin_qlist_products[$this->details_arr['product_id']]['quantity'] = $quantity;
         if (isset($this->details_arr['addons'])) {
             $dvin_qlist_products[$this->details_arr['product_id']]['addons'] = $this->details_arr['addons'];
             //add addons price
             foreach ($this->details_arr['addons'] as $ar) {
                 $price += (double) $ar['price'];
             }
         }
         $dvin_qlist_products[$this->details_arr['product_id']]['price'] = $price;
         WC()->session->set('dvin_qlist_products', $dvin_qlist_products);
         $ret_val = true;
         return "true";
     } elseif (isset($this->details_arr['variation_id']) && isset($this->details_arr['product_id'])) {
         // Variation add to cart
         if (empty($this->details_arr['variation_id']) || !is_numeric($this->details_arr['variation_id'])) {
             $this->errors_arr[] = __('Please choose product options…', 'dvinwcql');
             return "error";
         } else {
             $product_id = (int) $this->details_arr['product_id'];
             $variation_id = (int) $this->details_arr['variation_id'];
             $quantity = isset($this->details_arr['quantity']) ? (int) $this->details_arr['quantity'] : 1;
             $attributes = (array) maybe_unserialize(get_post_meta($product_id, '_product_attributes', true));
             $variations = array();
             $all_variations_set = true;
             foreach ($attributes as $attribute) {
                 if (!$attribute['is_variation']) {
                     continue;
                 }
                 $taxonomy = 'attribute_' . sanitize_title($attribute['name']);
                 if (!empty($this->details_arr[$taxonomy])) {
                     // Get value from post data
                     $value = esc_attr(stripslashes($this->details_arr[$taxonomy]));
                     // Use name so it looks nicer in the cart widget/order page etc - instead of a sanitized string
                     $variations[esc_attr($attribute['name'])] = $value;
                 } else {
                     $all_variations_set = false;
                 }
             }
             if ($all_variations_set && $variation_id > 0) {
                 // check for existence,  product ID, variation ID, variation data, and other cart item data
                 if ($this->isExists($variation_id)) {
                     return "exists";
                 }
                 //push the variable data into session
                 $this->details_arr['variation_data'] = serialize($variations);
                 ///get price
                 $price = 0;
                 $price = get_quotelist_product_price(wc_get_product($variation_id));
                 if (isset($this->details_arr['addons']) && is_array($this->details_arr['addons'])) {
                     foreach ($this->details_arr['addons'] as $ar) {
                         $price += (double) $ar['price'];
                     }
                 }
                 $this->details_arr['price'] = $price;
                 $dvin_qlist_products[$variation_id] = $this->details_arr;
                 WC()->session->set('dvin_qlist_products', $dvin_qlist_products);
                 $ret_val = true;
                 //if added, return true, otherwise error
                 if ($ret_val) {
                     return "true";
                 } else {
                     $this->errors_arr[] = __('Error occurred while adding product to quotelist', 'dvinwcql');
                     return "error";
                 }
             } else {
                 $this->errors_arr[] = __('Please choose product options…', 'dvinwcql');
                 return "error";
             }
         }
     }
 }
Exemple #2
0
						</td>
						<td class="product-name">
							<a href="<?php 
                echo esc_url(get_permalink(apply_filters('woocommerce_in_cart_product', $values['prod_id'])));
                ?>
"><?php 
                echo $product_obj->get_title();
                ?>
</a><br/>
							<?php 
                if (!empty($values['variation_id'])) {
                    echo wc_get_formatted_variation($product_obj->variation_data, false);
                }
                //get price before showing the addon data as proce could change
                if (!isset($values['price'])) {
                    $values['price'] = get_quotelist_product_price($product_obj);
                }
                $temp_arr = array();
                if (isset($addon_cart_obj) && $addon_cart_obj instanceof Product_Addon_Cart) {
                    $temp_arr = dvin_wcql_get_add_on_list($addon_cart_obj, $values['price'], $product_obj, $values);
                } else {
                    $temp_arr = dvin_wcql_get_add_on_list(array(), $values['price'], $product_obj, $values);
                }
                echo wc_get_formatted_variation($temp_arr, false);
                ?>
						</td>
						<?php 
                if (!$remove_price_col) {
                    ?>
						<td class="product-price">
						<?php 
Exemple #3
0
                $values['prod_id'] = $values['ID'] = $values['product_id'];
            }
            if (!empty($values['variation_id'])) {
                $values['ID'] = $values['variation_id'];
            }
        } else {
            $values['prod_id'] = $values['ID'] = $values['product_id'];
            $values['ID'] = $values['product_id'];
        }
        $_product = !empty($values['variation_id']) ? get_product($values['variation_id'], array('parent_id' => $values['product_id'])) : get_product($values['prod_id']);
        if ($_product && $_product->exists()) {
            $product_name = apply_filters('woocommerce_cart_item_name', $_product->get_title());
            $thumbnail = apply_filters('woocommerce_cart_item_thumbnail', $_product->get_image());
            //get price before showing the addon data as proce could change
            if (!isset($values['price'])) {
                $values['price'] = get_quotelist_product_price($_product);
            }
            $temp_arr = array();
            if (class_exists('Product_Addon_Cart')) {
                $addon_cart_obj = new Product_Addon_Cart();
                $temp_arr = dvin_wcql_get_add_on_list($addon_cart_obj, $values['price'], $_product, $values);
            }
            $addons_str = wc_get_formatted_variation($temp_arr, false);
            $price_in_html = apply_filters('woocommerce_cart_product_price', wc_price($values['price']), $_product);
            $price_in_html = apply_filters('woocommerce_cart_item_price', $price_in_html, '', '');
            ?>
					<li>
					<?php 
            if (!$_product->is_visible()) {
                ?>
						<?php 
     if (!empty($values['variation_id'])) {
         $values['ID'] = $values['variation_id'];
     }
 }
 $product_obj = wc_get_product($values['variation_id'] != 0 ? $values['variation_id'] : $values['product_id']);
 if ($product_obj->exists()) {
     $image_str = $product_obj->get_image();
     $href_str = esc_url(get_permalink(apply_filters('woocommerce_in_cart_product', $values['prod_id'])));
 }
 $product_name_str = apply_filters('woocommerce_in_cartproduct_obj_title', $product_obj->get_title(), $product_obj);
 if (!empty($values['variation_id'])) {
     $product_name_str .= woocommerce_get_formatted_variation(unserialize($values['variation_data']), false);
 }
 //get price before showing the addon data as proce could change
 if (!isset($values['price'])) {
     $unit_price = get_quotelist_product_price($product_obj);
 } else {
     $unit_price = $values['price'];
 }
 //get price before showing the addon data as proce could change
 //if addons extensions active
 if (class_exists('Product_Addon_Cart')) {
     $addon_cart_obj = new Product_Addon_Cart();
     $temp_arr = dvin_wcql_get_add_on_list($addon_cart_obj, $unit_price, $product_obj, $values);
 } else {
     $temp_arr = dvin_wcql_get_add_on_list(array(), $unit_price, $product_obj, $values);
 }
 $addons_str = wc_get_formatted_variation($temp_arr, false);
 //if only set the price as visible NOT remove
 if ($add_price_col == 'on') {
     $unit_price_in_html = apply_filters('woocommerce_cart_product_price', wc_price($unit_price), $product_obj);