please

streetflossin <[email protected]> 11 Sep 2003 02:53:35 -0000
Newsgroups gmane.comp.web.oscommerce.contributions
Message-ID <295d52098673463d3fc50565a691296e@osCommerce-Forums>
This message was sent from: Contributions
http://forums.oscommerce.com/viewtopic.php?p=227693#227693
----------------------------------------------------------------

[color=red]Please someone help me out[/color]

I need to include my easypop files to work with my multivendor mod. 
my database is setup as stock with the including of:
[code]CREATE TABLE ship_method ( 
method_name varchar(32) NOT NULL, 
module_name varchar(32) NOT NULL, 
handling_charge decimal (5,2) NOT NULL, 
handling_per_box bool NOT NULL, 
tare_weight decimal (4,2) NOT NULL, 
max_box_weight TINYINT UNSIGNED NOT NULL 
); 

INSERT INTO ship_method VALUES('Free Shipping', 'Free', 0, 0, 0, 0); 
INSERT INTO ship_method VALUES('INV USPS', 'usps', .5, 1, 0, 59); 
INSERT INTO ship_method VALUES('INV UPS', 'ups', .5, 1, 0, 59); 
INSERT INTO ship_method VALUES('Table Rates', 'table', 0, 0, 0, 200); 

ALTER TABLE products_description ADD ship_method VARCHAR(32) NOT NULL;[/code]
most of that info you dont need but i want to include it just so you know how everything is set-up. I really dont need the admin side to work properly since i dont use the admin to add/alter products. I dont really need much work for this to work. I just need for ship_method to be pointed to the right place in the database, i cant figure out how to code it in with the right path of pd.ship_method and not p.products like the rest of the files. Please help also if need be let me know how much to get this done. It shouldnt be more then 5 mins worth of work but I can not figure it out.
[code]<?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 shipping methods 
$methods = tep_db_fetch_array(tep_db_query("select method_name from " . TABLE_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 = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$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['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, 
//changes mltship 
       'ship_method' => $products['ship_mthod'], 
//mltship                                    


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


  } 
?> [/code]