Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

fatal error


Guest

Recommended Posts

Can some one please help me as i have customers waiting to order from website but they cant get to checkout as this message keeps appearing

 

 

Fatal error: Call to undefined function: calculate_price() in /nfs/c01/h02/mnt/33484/domains/craftyhobbiesuk.com/html/includes/classes/shopping_cart.php on line 272

 

 

any help greatly appreciated

 

thanks in advance

john

 

craftyhobbiesuk

 

:(

 

<?php/*$Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $osCommerce, Open Source E-Commerce Solutionshttp://www.oscommerce.comCopyright © 2003 osCommerceReleased under the GNU General Public License*/class shoppingCart {var $contents, $total, $weight, $cartID, $content_type;function shoppingCart() {$this->reset();}function restore_contents() {global $customer_id;if (!tep_session_is_registered('customer_id')) return false;// insert current cart contents in databaseif (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];$product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");if (!tep_db_num_rows($product_query)) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");}}} else {tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($qty) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}}}// reset per-session cart contents, but not the database contents$this->reset(false);$products_query = tep_db_query("select products_id, customers_basket_quantity from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");while ($products = tep_db_fetch_array($products_query)) {$this->contents[$products['products_id']] = array('qty' => $products['customers_basket_quantity']);// attributes$attributes_query = tep_db_query("select products_options_id, products_options_value_id from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products['products_id']) . "'");while ($attributes = tep_db_fetch_array($attributes_query)) {$this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id'];}}$this->cleanup();}function reset($reset_database = false) {global $customer_id;$this->contents = array();$this->total = 0;$this->weight = 0;$this->content_type = false;if (tep_session_is_registered('customer_id') && ($reset_database == true)) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "'");}unset($this->cartID);if (tep_session_is_registered('cartID')) tep_session_unregister('cartID');}function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {global $new_products_id_in_cart, $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) {$qty = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && is_numeric($qty) && ($attributes_pass_check == true)) {$check_product_query = tep_db_query("select products_status from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");$check_product = tep_db_fetch_array($check_product_query);if (($check_product !== false) && ($check_product['products_status'] == '1')) {if ($notify == true) {$new_products_id_in_cart = $products_id;tep_session_register('new_products_id_in_cart');}if ($this->in_cart($products_id_string)) {$this->update_quantity($products_id_string, $qty, $attributes);} else {$this->contents[$products_id_string] = array('qty' => (int)$qty);// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$qty . "', '" . date('Ymd') . "')");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$option . "', '" . (int)$value . "')");}}}$this->cleanup();// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}}}function update_quantity($products_id, $quantity = '', $attributes = '') {global $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) {$quantity = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity) && ($attributes_pass_check == true)) {$this->contents[$products_id_string] = array('qty' => (int)$quantity);// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . (int)$quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "'");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " set products_options_value_id = '" . (int)$value . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "' and products_options_id = '" . (int)$option . "'");}}}}function cleanup() {global $customer_id;reset($this->contents);while (list($key,) = each($this->contents)) {if ($this->contents[$key]['qty'] < 1) {unset($this->contents[$key]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");}}}}function count_contents() { // get total number of items in cart $total_items = 0;if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$total_items += $this->get_quantity($products_id);}}return $total_items;}function get_quantity($products_id) {if (isset($this->contents[$products_id])) {return $this->contents[$products_id]['qty'];} else {return 0;}}function in_cart($products_id) {if (isset($this->contents[$products_id])) {return true;} else {return false;}}function remove($products_id) {global $customer_id;unset($this->contents[$products_id]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}function remove_all() {$this->reset();}function get_product_id_list() {$product_id_list = '';if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$product_id_list .= ', ' . $products_id;}}return substr($product_id_list, 2);}function calculate() {global $currencies;$this->total = 0;$this->weight = 0;if (!is_array($this->contents)) return 0;reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];// products price$product_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_weight from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");if ($product = tep_db_fetch_array($product_query)) {$prid = $product['products_id'];$products_tax = tep_get_tax_rate($product['products_tax_class_id']);$products_price = $product['products_price'];$products_weight = $product['products_weight'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows ($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$this->total += $currencies->calculate_price($products_price, $products_tax, $qty);$this->weight += ($qty * $products_weight);}// attributes priceif (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$this->total += $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);} else {$this->total -= $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);}}}}}function attributes_price($products_id) {$attributes_price = 0;if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$attributes_price += $attribute_price['options_values_price'];} else {$attributes_price -= $attribute_price['options_values_price'];}}}return $attributes_price;}function get_products() {global $languages_id;if (!is_array($this->contents)) return false;$products_array = array();reset($this->contents);while (list($products_id, ) = each($this->contents)) {$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");if ($products = tep_db_fetch_array($products_query)) {$prid = $products['products_id'];$products_price = $products['products_price'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$products_array[] = array('id' => $products_id,'name' => $products['products_name'],'model' => $products['products_model'],'image' => $products['products_image'],'price' => $products_price,'quantity' => $this->contents[$products_id]['qty'],'weight' => $products['products_weight'],'final_price' => ($products_price + $this->attributes_price($products_id)),'tax_class_id' => $products['products_tax_class_id'],'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));}}return $products_array;}function show_total() {$this->calculate();return $this->total;}function show_weight() {$this->calculate();return $this->weight;}function generate_cart_id($length = 5) {return tep_create_random_value($length, 'digits');}function get_content_type() {$this->content_type = false;if ( (DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0) ) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list(, $value) = each($this->contents[$products_id]['attributes'])) {$virtual_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad where pa.products_id = '" . (int)$products_id . "' and pa.options_values_id = '" . (int)$value . "' and pa.products_attributes_id = pad.products_attributes_id");$virtual_check = tep_db_fetch_array($virtual_check_query);if ($virtual_check['total'] > 0) {switch ($this->content_type) {case 'physical':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'virtual';break;}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {$this->content_type = 'physical';}return $this->content_type;}function unserialize($broken) {for(reset($broken);$kv=each($broken) {$key=$kv['key'];if (gettype($this->$key)!="user function")$this->$key=$kv['value'];}}}?>

Link to comment
Share on other sites

sorry forgot code :blink:

 

<?php/*$Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $osCommerce, Open Source E-Commerce Solutionshttp://www.oscommerce.comCopyright © 2003 osCommerceReleased under the GNU General Public License*/class shoppingCart {var $contents, $total, $weight, $cartID, $content_type;function shoppingCart() {$this->reset();}function restore_contents() {global $customer_id;if (!tep_session_is_registered('customer_id')) return false;// insert current cart contents in databaseif (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];$product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");if (!tep_db_num_rows($product_query)) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");}}} else {tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($qty) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}}}// reset per-session cart contents, but not the database contents$this->reset(false);$products_query = tep_db_query("select products_id, customers_basket_quantity from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");while ($products = tep_db_fetch_array($products_query)) {$this->contents[$products['products_id']] = array('qty' => $products['customers_basket_quantity']);// attributes$attributes_query = tep_db_query("select products_options_id, products_options_value_id from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products['products_id']) . "'");while ($attributes = tep_db_fetch_array($attributes_query)) {$this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id'];}}$this->cleanup();}function reset($reset_database = false) {global $customer_id;$this->contents = array();$this->total = 0;$this->weight = 0;$this->content_type = false;if (tep_session_is_registered('customer_id') && ($reset_database == true)) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "'");}unset($this->cartID);if (tep_session_is_registered('cartID')) tep_session_unregister('cartID');}function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {global $new_products_id_in_cart, $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) {$qty = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && is_numeric($qty) && ($attributes_pass_check == true)) {$check_product_query = tep_db_query("select products_status from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");$check_product = tep_db_fetch_array($check_product_query);if (($check_product !== false) && ($check_product['products_status'] == '1')) {if ($notify == true) {$new_products_id_in_cart = $products_id;tep_session_register('new_products_id_in_cart');}if ($this->in_cart($products_id_string)) {$this->update_quantity($products_id_string, $qty, $attributes);} else {$this->contents[$products_id_string] = array('qty' => (int)$qty);// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$qty . "', '" . date('Ymd') . "')");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$option . "', '" . (int)$value . "')");}}}$this->cleanup();// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}}}function update_quantity($products_id, $quantity = '', $attributes = '') {global $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) {$quantity = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity) && ($attributes_pass_check == true)) {$this->contents[$products_id_string] = array('qty' => (int)$quantity);// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . (int)$quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "'");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " set products_options_value_id = '" . (int)$value . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "' and products_options_id = '" . (int)$option . "'");}}}}function cleanup() {global $customer_id;reset($this->contents);while (list($key,) = each($this->contents)) {if ($this->contents[$key]['qty'] < 1) {unset($this->contents[$key]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");}}}}function count_contents() { // get total number of items in cart $total_items = 0;if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$total_items += $this->get_quantity($products_id);}}return $total_items;}function get_quantity($products_id) {if (isset($this->contents[$products_id])) {return $this->contents[$products_id]['qty'];} else {return 0;}}function in_cart($products_id) {if (isset($this->contents[$products_id])) {return true;} else {return false;}}function remove($products_id) {global $customer_id;unset($this->contents[$products_id]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}function remove_all() {$this->reset();}function get_product_id_list() {$product_id_list = '';if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$product_id_list .= ', ' . $products_id;}}return substr($product_id_list, 2);}function calculate() {global $currencies;$this->total = 0;$this->weight = 0;if (!is_array($this->contents)) return 0;reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];// products price$product_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_weight from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");if ($product = tep_db_fetch_array($product_query)) {$prid = $product['products_id'];$products_tax = tep_get_tax_rate($product['products_tax_class_id']);$products_price = $product['products_price'];$products_weight = $product['products_weight'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows ($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$this->total += $currencies->calculate_price($products_price, $products_tax, $qty);$this->weight += ($qty * $products_weight);}// attributes priceif (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$this->total += $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);} else {$this->total -= $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);}}}}}function attributes_price($products_id) {$attributes_price = 0;if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$attributes_price += $attribute_price['options_values_price'];} else {$attributes_price -= $attribute_price['options_values_price'];}}}return $attributes_price;}function get_products() {global $languages_id;if (!is_array($this->contents)) return false;$products_array = array();reset($this->contents);while (list($products_id, ) = each($this->contents)) {$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");if ($products = tep_db_fetch_array($products_query)) {$prid = $products['products_id'];$products_price = $products['products_price'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$products_array[] = array('id' => $products_id,'name' => $products['products_name'],'model' => $products['products_model'],'image' => $products['products_image'],'price' => $products_price,'quantity' => $this->contents[$products_id]['qty'],'weight' => $products['products_weight'],'final_price' => ($products_price + $this->attributes_price($products_id)),'tax_class_id' => $products['products_tax_class_id'],'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));}}return $products_array;}function show_total() {$this->calculate();return $this->total;}function show_weight() {$this->calculate();return $this->weight;}function generate_cart_id($length = 5) {return tep_create_random_value($length, 'digits');}function get_content_type() {$this->content_type = false;if ( (DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0) ) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list(, $value) = each($this->contents[$products_id]['attributes'])) {$virtual_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad where pa.products_id = '" . (int)$products_id . "' and pa.options_values_id = '" . (int)$value . "' and pa.products_attributes_id = pad.products_attributes_id");$virtual_check = tep_db_fetch_array($virtual_check_query);if ($virtual_check['total'] > 0) {switch ($this->content_type) {case 'physical':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'virtual';break;}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {$this->content_type = 'physical';}return $this->content_type;}function unserialize($broken) {for(reset($broken);$kv=each($broken) {$key=$kv['key'];if (gettype($this->$key)!="user function")$this->$key=$kv['value'];}}}?>

Link to comment
Share on other sites

sorry forgot code :blink:

 

<?php/*$Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $osCommerce, Open Source E-Commerce Solutionshttp://www.oscommerce.comCopyright © 2003 osCommerceReleased under the GNU General Public License*/class shoppingCart {var $contents, $total, $weight, $cartID, $content_type;function shoppingCart() {$this->reset();}function restore_contents() {global $customer_id;if (!tep_session_is_registered('customer_id')) return false;// insert current cart contents in databaseif (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];$product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");if (!tep_db_num_rows($product_query)) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");}}} else {tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($qty) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}}}// reset per-session cart contents, but not the database contents$this->reset(false);$products_query = tep_db_query("select products_id, customers_basket_quantity from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");while ($products = tep_db_fetch_array($products_query)) {$this->contents[$products['products_id']] = array('qty' => $products['customers_basket_quantity']);// attributes$attributes_query = tep_db_query("select products_options_id, products_options_value_id from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products['products_id']) . "'");while ($attributes = tep_db_fetch_array($attributes_query)) {$this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id'];}}$this->cleanup();}function reset($reset_database = false) {global $customer_id;$this->contents = array();$this->total = 0;$this->weight = 0;$this->content_type = false;if (tep_session_is_registered('customer_id') && ($reset_database == true)) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "'");}unset($this->cartID);if (tep_session_is_registered('cartID')) tep_session_unregister('cartID');}function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {global $new_products_id_in_cart, $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) {$qty = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && is_numeric($qty) && ($attributes_pass_check == true)) {$check_product_query = tep_db_query("select products_status from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");$check_product = tep_db_fetch_array($check_product_query);if (($check_product !== false) && ($check_product['products_status'] == '1')) {if ($notify == true) {$new_products_id_in_cart = $products_id;tep_session_register('new_products_id_in_cart');}if ($this->in_cart($products_id_string)) {$this->update_quantity($products_id_string, $qty, $attributes);} else {$this->contents[$products_id_string] = array('qty' => (int)$qty);// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$qty . "', '" . date('Ymd') . "')");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// insert into databaseif (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$option . "', '" . (int)$value . "')");}}}$this->cleanup();// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}}}function update_quantity($products_id, $quantity = '', $attributes = '') {global $customer_id;$products_id_string = tep_get_uprid($products_id, $attributes);$products_id = tep_get_prid($products_id_string);if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) {$quantity = MAX_QTY_IN_CART;}$attributes_pass_check = true;if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {if (!is_numeric($option) || !is_numeric($value)) {$attributes_pass_check = false;break;}}}if (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity) && ($attributes_pass_check == true)) {$this->contents[$products_id_string] = array('qty' => (int)$quantity);// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . (int)$quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "'");if (is_array($attributes)) {reset($attributes);while (list($option, $value) = each($attributes)) {$this->contents[$products_id_string]['attributes'][$option] = $value;// update databaseif (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " set products_options_value_id = '" . (int)$value . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "' and products_options_id = '" . (int)$option . "'");}}}}function cleanup() {global $customer_id;reset($this->contents);while (list($key,) = each($this->contents)) {if ($this->contents[$key]['qty'] < 1) {unset($this->contents[$key]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");}}}}function count_contents() { // get total number of items in cart $total_items = 0;if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$total_items += $this->get_quantity($products_id);}}return $total_items;}function get_quantity($products_id) {if (isset($this->contents[$products_id])) {return $this->contents[$products_id]['qty'];} else {return 0;}}function in_cart($products_id) {if (isset($this->contents[$products_id])) {return true;} else {return false;}}function remove($products_id) {global $customer_id;unset($this->contents[$products_id]);// remove from databaseif (tep_session_is_registered('customer_id')) {tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");}// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure$this->cartID = $this->generate_cart_id();}function remove_all() {$this->reset();}function get_product_id_list() {$product_id_list = '';if (is_array($this->contents)) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {$product_id_list .= ', ' . $products_id;}}return substr($product_id_list, 2);}function calculate() {global $currencies;$this->total = 0;$this->weight = 0;if (!is_array($this->contents)) return 0;reset($this->contents);while (list($products_id, ) = each($this->contents)) {$qty = $this->contents[$products_id]['qty'];// products price$product_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_weight from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");if ($product = tep_db_fetch_array($product_query)) {$prid = $product['products_id'];$products_tax = tep_get_tax_rate($product['products_tax_class_id']);$products_price = $product['products_price'];$products_weight = $product['products_weight'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows ($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$this->total += $currencies->calculate_price($products_price, $products_tax, $qty);$this->weight += ($qty * $products_weight);}// attributes priceif (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$this->total += $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);} else {$this->total -= $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);}}}}}function attributes_price($products_id) {$attributes_price = 0;if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {$attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");$attribute_price = tep_db_fetch_array($attribute_price_query);if ($attribute_price['price_prefix'] == '+') {$attributes_price += $attribute_price['options_values_price'];} else {$attributes_price -= $attribute_price['options_values_price'];}}}return $attributes_price;}function get_products() {global $languages_id;if (!is_array($this->contents)) return false;$products_array = array();reset($this->contents);while (list($products_id, ) = each($this->contents)) {$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");if ($products = tep_db_fetch_array($products_query)) {$prid = $products['products_id'];$products_price = $products['products_price'];$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");if (tep_db_num_rows($specials_query)) {$specials = tep_db_fetch_array($specials_query);$products_price = $specials['specials_new_products_price'];}$products_array[] = array('id' => $products_id,'name' => $products['products_name'],'model' => $products['products_model'],'image' => $products['products_image'],'price' => $products_price,'quantity' => $this->contents[$products_id]['qty'],'weight' => $products['products_weight'],'final_price' => ($products_price + $this->attributes_price($products_id)),'tax_class_id' => $products['products_tax_class_id'],'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));}}return $products_array;}function show_total() {$this->calculate();return $this->total;}function show_weight() {$this->calculate();return $this->weight;}function generate_cart_id($length = 5) {return tep_create_random_value($length, 'digits');}function get_content_type() {$this->content_type = false;if ( (DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0) ) {reset($this->contents);while (list($products_id, ) = each($this->contents)) {if (isset($this->contents[$products_id]['attributes'])) {reset($this->contents[$products_id]['attributes']);while (list(, $value) = each($this->contents[$products_id]['attributes'])) {$virtual_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad where pa.products_id = '" . (int)$products_id . "' and pa.options_values_id = '" . (int)$value . "' and pa.products_attributes_id = pad.products_attributes_id");$virtual_check = tep_db_fetch_array($virtual_check_query);if ($virtual_check['total'] > 0) {switch ($this->content_type) {case 'physical':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'virtual';break;}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {switch ($this->content_type) {case 'virtual':$this->content_type = 'mixed';return $this->content_type;break;default:$this->content_type = 'physical';break;}}}} else {$this->content_type = 'physical';}return $this->content_type;}function unserialize($broken) {for(reset($broken);$kv=each($broken) {$key=$kv['key'];if (gettype($this->$key)!="user function")$this->$key=$kv['value'];}}}?>

try re-uploading your catalog/includes/classes folder

following files contain calculate_price

catalog\includes\classes\shopping_cart.php

catalog\includes\classes\order.php

catalog\includes\classes\currencies.php

Link to comment
Share on other sites

Fatal error: Call to undefined function: calculate_price() in /nfs/c01/h02/mnt/33484/domains/craftyhobbiesuk.com/html/includes/classes/shopping_cart.php on line 272

As the error says, the function calculate_price is undefined (so nowhere to be found for the program).

 

This function was added in I think RC1, in the class currencies. Obviously you are mixing files from different versions of osCommerce. Best to upgrade to RC2a (contribution 6654 will help).

Link to comment
Share on other sites

As the error says, the function calculate_price is undefined (so nowhere to be found for the program).

 

This function was added in I think RC1, in the class currencies. Obviously you are mixing files from different versions of osCommerce. Best to upgrade to RC2a (contribution 6654 will help).

 

 

thanks for that i am already upgraded to rc2 and the site has been running fine till sataday then we started getting error message

 

i have uploaded the original file but it is still showing error message (time for those shares in paracetemol to come in handy)

 

thanks again

john

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...