/** * 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"; } } } }
</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
$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);