Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

can someone review this code


Guest

Recommended Posts

Posted

ok im trying to update my multivendor mod and my easypopmod so they work together. i got everything to work but i cant figure out this last thing. In my product_description field i have ship_method (pd.ship_method) thats what the multivendor mod looks for when it sees what shipping rates to apply. well i can get it so when i download the easypop file it includes the new ship_method field and it uploads everything perfectly into the pd.ship_method but im have a problem with my shopping_cart.php it seems its not looking in the right place for the ship_method info. here is my code can someone please look over it and see whats its not pointing in the write direction?

<?php

/*

 $Id: shopping_cart.php,v 1.35 2003/06/25 21:14:33 hpdl Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2003 osCommerce



 Released under the GNU General Public License

*/



 class shoppingCart {

   var $contents, $total, $weight, $cartID, $content_type;



//changes mltship

var $multi_weight;

// end changes mltship





   function shoppingCart() {

     $this->reset();

   }



   function restore_contents() {

     global $customer_id;



     if (!tep_session_is_registered('customer_id')) return false;



// insert current cart contents in database

     if (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) . "', '" . $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 = '" . $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 = tep_get_uprid($products_id, $attributes);

     if ($notify == true) {

       $new_products_id_in_cart = $products_id;

       tep_session_register('new_products_id_in_cart');

     }



     if ($this->in_cart($products_id)) {

       $this->update_quantity($products_id, $qty, $attributes);

     } else {

       $this->contents[] = array($products_id);

       $this->contents[$products_id] = array('qty' => $qty);

// insert into database

       if (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) . "', '" . $qty . "', '" . date('Ymd') . "')");



       if (is_array($attributes)) {

         reset($attributes);

         while (list($option, $value) = each($attributes)) {

           $this->contents[$products_id]['attributes'][$option] = $value;

// insert into database

           if (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) . "', '" . (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;



     if (empty($quantity)) return true; // nothing needs to be updated if theres no quantity, so we return true..



     $this->contents[$products_id] = array('qty' => $quantity);

// update database

     if (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . $quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");



     if (is_array($attributes)) {

       reset($attributes);

       while (list($option, $value) = each($attributes)) {

         $this->contents[$products_id]['attributes'][$option] = $value;

// update database

         if (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) . "' 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 database

         if (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 database

     if (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() {

     $this->total = 0;

     $this->weight = 0;



//chnages mltship

$this->multi_weight = NULL;

//mltship



     if (!is_array($this->contents)) return 0;



//changes mltship

//get ship method

$methods = tep_db_fetch_array(tep_db_query("select method_name from " . SHIP_METHOD));

$mltcount = sizeof($methods);



$this->multi_weight = NULL;



for($i = 0; $i < $mltcount; $i++){

$this->multi_weight[] = Array($methods[$i]=>0);

}

//end chages mltship



     reset($this->contents);

     while (list($products_id, ) = each($this->contents)) {

       $qty = $this->contents[$products_id]['qty'];



// products price

       $product_query = tep_db_query("select pd.ship_method, p.products_id, p.products_price, p.products_tax_class_id, p.products_weight from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id='" . tep_get_prid($products_id) . "' and pd.products_id = p.products_id and pd.language_id = '" . $languages_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'];





//Changes mltship

$ship_method = $product_description['ship_method'];



$this->multi_weight[$ship_method] += ($qty * $products_weight);

//end change mltship





         $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 += tep_add_tax($products_price, $products_tax) * $qty;

         $this->weight += ($qty * $products_weight);

       }



// attributes price

       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)$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 += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);

           } else {

             $this->total -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);

           }

         }

       }

     }

   }



   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 pd.ship_method, 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,

                                   'ship_method' => $products_description['ship_method'],

                                   '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'];

     }

   }



//changes mltship

function get_multi_weight() {

   $this->calculate();



   return $this->multi_weight;

//changes mltship

   function get_multi_weight() {

 $this->calculate();



    return $this->multi_weight;

   }

}





 }

?>

Posted

ok i think i found my problem and i need some help:

//changes mltship

//get ship method

$methods = tep_db_fetch_array(tep_db_query("select method_name from " . ship_method));

$mltcount = sizeof($methods);

 

Right there is my problem its linking mydatabase.ship_method.method_name how can i get it so it goes to mydatabase.product_description.ship_method.method_name? i tried putting a pd.ship_method, no luck at all

Archived

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

×
×
  • Create New...