Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Qihun

Archived
  • Posts

    561
  • Joined

  • Last visited

Posts posted by Qihun

  1. Update to previous post: I added manually values to config_cache file ( it didn't catch when I hit update on HTML configuration)

     

    so now configuration_cache enabled and HTML cache appears without warnigs

  2. Thank you for the reply.

    The SQL file attached to the contribution has a typo (for my humble opinion )

    INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added, use_function, set_function) VALUES ('Number of scripts to show per page', 'MAX_DISPLAY_HTML_CACHE_SCRIPTS', '64', 'Number of script entries to display per page', '22', '4', now(), NULL, 'tep_cfg_select_option(array(''true'', ''false''),');

     

    I have changed use_function and function to NULL

     

    and when I disabled Chemo's page_cache it's got right.

     

    I have this warning and also SQL error when configuration_cache (Chemo) - enabled

    so now I can play with it.

  3. Hello enigma1 ! Thank you for the effort of making this script. I am not someone who understands what he is doing with PHP

    I just playing around with a shop.

    I've installed this contribution and I have

    Warning: Division by zero in c:\program files\easyphp1-8\www\admin\includes\classes\split_page_results.php on line 33

     

    it's appears in HTML Cache and Cache Report files.

    I found that relevant part of those files is

    <?php
    // Get Scripts info from the database
    $rows = 0;
    $cache_html_query_raw = "select cr.*, c.cache_html_type from " . TABLE_CACHE_HTML_REPORTS . " cr left join " . TABLE_CACHE_HTML . " c on (c.cache_html_key = cr.cache_html_key) order by cr.cache_html_script";
    $cache_html_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_HTML_CACHE_SCRIPTS, $cache_html_query_raw, $cache_html_query_numrows, 'cr.cache_html_key');
    if( $cache_html_query_numrows > 0 ) {
    ?>

     

    I shop script with latest updates and I really do not know where to start looking up.

    Can you please help me with this, I guess, minor problem. Thank you again

    Misha

  4. Hello !

    First , Thank you for great work Frank.

    I 'd like to ask about small problem

     

    when I select payment method on checkout_shipping (combined)

    and proceed to confirmation I do not see it appear on the page

     

    But

     

    if come from checkout_payment page - it does appear

     

    where should I find the place to correct this issue ?

     

    Thank you for your time !

  5. Good day !

    I updated to version 2.5 and I have small problem :

    every page from ORDER's family ( edit, invoice, pack. slip, details)

    have 1064 syntax error

     

    here is my error

    1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'er Sheva'' at line 1
    
    select * from zones where zone_country_id = '104' and zone_name = 'Be'er Sheva'

     

    I still can't find where does it come from

    whould you please give me some direction

     

    Thank you for your time

    Miclosh

  6. Hello !

    I tried to install Ajax_state on my local host shop and I am geting script error

     

    getObject("states").innerHTML = ' <img style="vertical-align:middle" src="images/loading.gif">Please wait...';	Error here......

     

    Does anybody made it :blush: ??

     

    Miclosh

  7. Hello custodian ! Thank you for your great work .

    I made the same function on my site long time ago , BUT yours much more neat and professional.

    I added this to index page .

    If adding this messages to account page , I think would be better to place some note on index page ,for registered visitors , to view the massege

     

    btw I got error on admin/custommerce.php

    <td class="main">
    <?php
    		  if ($processed == true) {
    		  echo $cInfo->customers_private_messages . tep_draw_hidden_field('customers_private_messages');
    		  } else {
    		  echo tep_draw_textarea_field('customers_private_messages', 'soft', '75', '5', ($cInfo->customers_private_messages));
    		  }
    		  ?></td>

     

    there was BR tag after last bracket , so I removed it , but maybe possible just placed it after ?> .

     

    again , thank you

    Miclosh

  8. I can't get it work with last updates for this contribution ( sorry )

    I rolled back to version 1.2.2 and it seems to be ok on my shop (localhost clean)

     

    I post here two files from last OSC version with addition of AAP 1.2.2

    1. classes/shopping_cart.php

    2.function/general.php

    I didn't change anything inside BOF AAP-----EOF AAP 1.2.2

    all credits and many thanks go to all people who made it for us

    <?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;
    
    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_string = tep_get_uprid($products_id, $attributes);
      $products_id = tep_get_prid($products_id_string);
    
      if (is_numeric($products_id) && is_numeric($qty)) {
    	$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' => $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_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 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_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 (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity)) {
    	$this->contents[$products_id_string] = array('qty' => $quantity);
    // update database
    	if (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 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_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 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;
      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'];
    	  }
    
    // BOF - AAP V1.2.1 - updated to account for no price prefix to equal actual price
    // attributes price
    	if (!isset($this->contents[$products_id]['attributes']))
    	{
    	  $this->total += tep_add_tax($products_price, $products_tax) * $qty;
    	}
    	  $this->weight += ($qty * $products_weight);
    	}
    
    	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);
    		$price_prefix = $attribute_price['price_prefix'];
    		$option_price = $attribute_price['options_values_price'];
    		  $products_query = tep_db_query("select products_price from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
    		  $products_stuff = tep_db_fetch_array($products_query);
    		  $products_price = $products_stuff['products_price'];
    		if ($price_prefix == '+') {
    		  $this->total += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
    		}
    		  if ($price_prefix == '-') {
    		  $this->total -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
    		}
    		if ($price_prefix == '')
    		{  
    		  if ($attribute_price['options_values_price'] == '0')
    			$this->total += tep_add_tax($products_price, $products_tax) * $qty;
    		}
    		if ($attribute_price['options_values_price'] > '0') {
    		  if ($price_prefix == '') {
    					  if (ceil($option_price) != ceil($products_price))
    					  {
    						  $this->total += tep_add_tax($attribute_price['options_values_price'], $products_tax) * $qty;
    					  }
    					  else
    					  {
    					  $this->total += tep_add_tax($products_price, $products_tax) * $qty;
    						  $this->total += tep_add_tax(tep_adjust_price($option_price, $products_price), $product_tax) * $qty;
    					  }
    		  }
    		}
    	  }
    	}
      }
    }
    
    // subtotal function for attributes price
    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);
    	  $price_prefix = $attribute_price['price_prefix'];
    	  $option_price = $attribute_price['options_values_price'];
    	  $products_query = tep_db_query("select products_price from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
    	  $products_stuff = tep_db_fetch_array($products_query);
    	  $products_price = $products_stuff['products_price'];
    	  //Check for special price
    	  $products_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$products_id . "'");
    	  $products_stuff = tep_db_fetch_array($products_query);
    	  if($products_stuff['specials_new_products_price'] != ''){
    		$products_price = $products_stuff['specials_new_products_price'];
    	  }
    	  if ($price_prefix == '+') {
    		$attributes_price += $option_price;
    	  }
    	  if ($price_prefix == '-') {
    		$attributes_price -= $option_price;
    	  }
    	  if (($price_prefix == '') and  ($option_price > 0))
    		$attributes_price += tep_adjust_price($option_price,$products_price);
    	  else
    		$attributes_price+= $option_price;
    	}
      }
      return $attributes_price;
    }
    // EOF - AAP V1.2.1
    
    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'];
      }
    }
    
     }
    ?>

     

    <?php

    /*

    $Id: general.php,v 1.231 2003/07/09 01:15:48 hpdl Exp $

     

    osCommerce, Open Source E-Commerce Solutions

    http://www.oscommerce.com

     

    Copyright (c) 2003 osCommerce

     

    Released under the GNU General Public License

    */

     

    ////

    // Stop from parsing any further PHP code

    function tep_exit() {

    tep_session_close();

    exit();

    }

     

    ////

    // Redirect to another page or site

    function tep_redirect($url) {

    if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) {

    tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));

    }

     

    if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

    if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

    $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

    }

    }

     

    header('Location: ' . $url);

     

    tep_exit();

    }

     

    ////

    // Parse the data used in the html tags to ensure the tags will not break

    function tep_parse_input_field_data($data, $parse) {

    return strtr(trim($data), $parse);

    }

     

    function tep_output_string($string, $translate = false, $protected = false) {

    if ($protected == true) {

    return htmlspecialchars($string);

    } else {

    if ($translate == false) {

    return tep_parse_input_field_data($string, array('"' => '"'));

    } else {

    return tep_parse_input_field_data($string, $translate);

    }

    }

    }

     

    function tep_output_string_protected($string) {

    return tep_output_string($string, false, true);

    }

     

    function tep_sanitize_string($string) {

    $string = ereg_replace(' +', ' ', trim($string));

     

    return preg_replace("/[<>]/", '_', $string);

    }

     

    ////

    // Return a random row from a database query

    function tep_random_select($query) {

    $random_product = '';

    $random_query = tep_db_query($query);

    $num_rows = tep_db_num_rows($random_query);

    if ($num_rows > 0) {

    $random_row = tep_rand(0, ($num_rows - 1));

    tep_db_data_seek($random_query, $random_row);

    $random_product = tep_db_fetch_array($random_query);

    }

     

    return $random_product;

    }

     

    ////

    // Return a product's name

    // TABLES: products

    function tep_get_products_name($product_id, $language = '') {

    global $languages_id;

     

    if (empty($language)) $language = $languages_id;

     

    $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language . "'");

    $product = tep_db_fetch_array($product_query);

     

    return $product['products_name'];

    }

     

    ////

    // Return a product's special price (returns nothing if there is no offer)

    // TABLES: products

    function tep_get_products_special_price($product_id) {

    $product_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "' and status");

    $product = tep_db_fetch_array($product_query);

     

    return $product['specials_new_products_price'];

    }

     

    ////

    // Return a product's stock

    // TABLES: products

    function tep_get_products_stock($products_id) {

    $products_id = tep_get_prid($products_id);

    $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");

    $stock_values = tep_db_fetch_array($stock_query);

     

    return $stock_values['products_quantity'];

    }

     

    ////

    // Check if the required stock is available

    // If insufficent stock is available return an out of stock message

    function tep_check_stock($products_id, $products_quantity) {

    $stock_left = tep_get_products_stock($products_id) - $products_quantity;

    $out_of_stock = '';

     

    if ($stock_left < 0) {

    $out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>';

    }

     

    return $out_of_stock;

    }

     

    ////

    // Break a word in a string if it is longer than a specified length ($len)

    function tep_break_string($string, $len, $break_char = '-') {

    $l = 0;

    $output = '';

    for ($i=0, $n=strlen($string); $i<$n; $i++) {

    $char = substr($string, $i, 1);

    if ($char != ' ') {

    $l++;

    } else {

    $l = 0;

    }

    if ($l > $len) {

    $l = 1;

    $output .= $break_char;

    }

    $output .= $char;

    }

     

    return $output;

    }

     

    ////

    // Return all HTTP GET variables, except those passed as a parameter

    function tep_get_all_get_params($exclude_array = '') {

    global $HTTP_GET_VARS;

     

    if (!is_array($exclude_array)) $exclude_array = array();

     

    $get_url = '';

    if (is_array($HTTP_GET_VARS) && (sizeof($HTTP_GET_VARS) > 0)) {

    reset($HTTP_GET_VARS);

    while (list($key, $value) = each($HTTP_GET_VARS)) {

    if ( (strlen($value) > 0) && ($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array)) && ($key != 'x') && ($key != 'y') ) {

    $get_url .= $key . '=' . rawurlencode(stripslashes($value)) . '&';

    }

    }

    }

     

    return $get_url;

    }

     

    ////

    // Returns an array with countries

    // TABLES: countries

    function tep_get_countries($countries_id = '', $with_iso_codes = false) {

    $countries_array = array();

    if (tep_not_null($countries_id)) {

    if ($with_iso_codes == true) {

    $countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "' order by countries_name");

    $countries_values = tep_db_fetch_array($countries);

    $countries_array = array('countries_name' => $countries_values['countries_name'],

    'countries_iso_code_2' => $countries_values['countries_iso_code_2'],

    'countries_iso_code_3' => $countries_values['countries_iso_code_3']);

    } else {

    $countries = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "'");

    $countries_values = tep_db_fetch_array($countries);

    $countries_array = array('countries_name' => $countries_values['countries_name']);

    }

    } else {

    $countries = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");

    while ($countries_values = tep_db_fetch_array($countries)) {

    $countries_array[] = array('countries_id' => $countries_values['countries_id'],

    'countries_name' => $countries_values['countries_name']);

    }

    }

     

    return $countries_array;

    }

     

    ////

    // Alias function to tep_get_countries, which also returns the countries iso codes

    function tep_get_countries_with_iso_codes($countries_id) {

    return tep_get_countries($countries_id, true);

    }

     

    ////

    // Generate a path to categories

    function tep_get_path($current_category_id = '') {

    global $cPath_array;

     

    if (tep_not_null($current_category_id)) {

    $cp_size = sizeof($cPath_array);

    if ($cp_size == 0) {

    $cPath_new = $current_category_id;

    } else {

    $cPath_new = '';

    $last_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cPath_array[($cp_size-1)] . "'");

    $last_category = tep_db_fetch_array($last_category_query);

     

    $current_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");

    $current_category = tep_db_fetch_array($current_category_query);

     

    if ($last_category['parent_id'] == $current_category['parent_id']) {

    for ($i=0; $i<($cp_size-1); $i++) {

    $cPath_new .= '_' . $cPath_array[$i];

    }

    } else {

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

    $cPath_new .= '_' . $cPath_array[$i];

    }

    }

    $cPath_new .= '_' . $current_category_id;

     

    if (substr($cPath_new, 0, 1) == '_') {

    $cPath_new = substr($cPath_new, 1);

    }

    }

    } else {

    $cPath_new = implode('_', $cPath_array);

    }

     

    return 'cPath=' . $cPath_new;

    }

     

    ////

    // Returns the clients browser

    function tep_browser_detect($component) {

    global $HTTP_USER_AGENT;

     

    return stristr($HTTP_USER_AGENT, $component);

    }

     

    ////

    // Alias function to tep_get_countries()

    function tep_get_country_name($country_id) {

    $country_array = tep_get_countries($country_id);

     

    return $country_array['countries_name'];

    }

     

    ////

    // Returns the zone (State/Province) name

    // TABLES: zones

    function tep_get_zone_name($country_id, $zone_id, $default_zone) {

    $zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' and zone_id = '" . (int)$zone_id . "'");

    if (tep_db_num_rows($zone_query)) {

    $zone = tep_db_fetch_array($zone_query);

    return $zone['zone_name'];

    } else {

    return $default_zone;

    }

    }

     

    ////

    // Returns the zone (State/Province) code

    // TABLES: zones

    function tep_get_zone_code($country_id, $zone_id, $default_zone) {

    $zone_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' and zone_id = '" . (int)$zone_id . "'");

    if (tep_db_num_rows($zone_query)) {

    $zone = tep_db_fetch_array($zone_query);

    return $zone['zone_code'];

    } else {

    return $default_zone;

    }

    }

     

    ////

    // Wrapper function for round()

    function tep_round($number, $precision) {

    if (strpos($number, '.') && (strlen(substr($number, strpos($number, '.')+1)) > $precision)) {

    $number = substr($number, 0, strpos($number, '.') + 1 + $precision + 1);

     

    if (substr($number, -1) >= 5) {

    if ($precision > 1) {

    $number = substr($number, 0, -1) + ('0.' . str_repeat(0, $precision-1) . '1');

    } elseif ($precision == 1) {

    $number = substr($number, 0, -1) + 0.1;

    } else {

    $number = substr($number, 0, -1) + 1;

    }

    } else {

    $number = substr($number, 0, -1);

    }

    }

     

    return $number;

    }

     

    ////

    // Returns the tax rate for a zone / class

    // TABLES: tax_rates, zones_to_geo_zones

    function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) {

    global $customer_zone_id, $customer_country_id;

     

    if ( ($country_id == -1) && ($zone_id == -1) ) {

    if (!tep_session_is_registered('customer_id')) {

    $country_id = STORE_COUNTRY;

    $zone_id = STORE_ZONE;

    } else {

    $country_id = $customer_country_id;

    $zone_id = $customer_zone_id;

    }

    }

     

    $tax_query = tep_db_query("select sum(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . (int)$country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . (int)$zone_id . "') and tr.tax_class_id = '" . (int)$class_id . "' group by tr.tax_priority");

    if (tep_db_num_rows($tax_query)) {

    $tax_multiplier = 1.0;

    while ($tax = tep_db_fetch_array($tax_query)) {

    $tax_multiplier *= 1.0 + ($tax['tax_rate'] / 100);

    }

    return ($tax_multiplier - 1.0) * 100;

    } else {

    return 0;

    }

    }

     

    ////

    // Return the tax description for a zone / class

    // TABLES: tax_rates;

    function tep_get_tax_description($class_id, $country_id, $zone_id) {

    $tax_query = tep_db_query("select tax_description from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . (int)$country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . (int)$zone_id . "') and tr.tax_class_id = '" . (int)$class_id . "' order by tr.tax_priority");

    if (tep_db_num_rows($tax_query)) {

    $tax_description = '';

    while ($tax = tep_db_fetch_array($tax_query)) {

    $tax_description .= $tax['tax_description'] . ' + ';

    }

    $tax_description = substr($tax_description, 0, -3);

     

    return $tax_description;

    } else {

    return TEXT_UNKNOWN_TAX_RATE;

    }

    }

     

    // BOF AAP V1.2.1

    // actual attribute price adjustment (used with no price prefix only)

    function tep_adjust_price($attribute, $price) {

    global $currencies;

     

    $adjustment = ($attribute-$price);

    return $adjustment;

    }

    //EOF AAP V1.2.1

    // Add tax to a products price

    function tep_add_tax($price, $tax) {

    global $currencies;

     

    if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {

    return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);

    } else {

    return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);

    }

    }

     

    // Calculates Tax rounding the result

    function tep_calculate_tax($price, $tax) {

    global $currencies;

     

    return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);

    }

     

    ////

    // Return the number of products in a category

    // TABLES: products, products_to_categories, categories

    function tep_count_products_in_category($category_id, $include_inactive = false) {

    $products_count = 0;

    if ($include_inactive == true) {

    $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$category_id . "'");

    } else {

    $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . (int)$category_id . "'");

    }

    $products = tep_db_fetch_array($products_query);

    $products_count += $products['total'];

     

    $child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "'");

    if (tep_db_num_rows($child_categories_query)) {

    while ($child_categories = tep_db_fetch_array($child_categories_query)) {

    $products_count += tep_count_products_in_category($child_categories['categories_id'], $include_inactive);

    }

    }

     

    return $products_count;

    }

     

    ////

    // Return true if the category has subcategories

    // TABLES: categories

    function tep_has_category_subcategories($category_id) {

    $child_category_query = tep_db_query("select count(*) as count from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "'");

    $child_category = tep_db_fetch_array($child_category_query);

     

    if ($child_category['count'] > 0) {

    return true;

    } else {

    return false;

    }

    }

     

    ////

    // Returns the address_format_id for the given country

    // TABLES: countries;

    function tep_get_address_format_id($country_id) {

    $address_format_query = tep_db_query("select address_format_id as format_id from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$country_id . "'");

    if (tep_db_num_rows($address_format_query)) {

    $address_format = tep_db_fetch_array($address_format_query);

    return $address_format['format_id'];

    } else {

    return '1';

    }

    }

     

    ////

    // Return a formatted address

    // TABLES: address_format

    function tep_address_format($address_format_id, $address, $html, $boln, $eoln) {

    $address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . (int)$address_format_id . "'");

    $address_format = tep_db_fetch_array($address_format_query);

     

    $company = tep_output_string_protected($address['company']);

    if (isset($address['firstname']) && tep_not_null($address['firstname'])) {

    $firstname = tep_output_string_protected($address['firstname']);

    $lastname = tep_output_string_protected($address['lastname']);

    } elseif (isset($address['name']) && tep_not_null($address['name'])) {

    $firstname = tep_output_string_protected($address['name']);

    $lastname = '';

    } else {

    $firstname = '';

    $lastname = '';

    }

    $street = tep_output_string_protected($address['street_address']);

    $suburb = tep_output_string_protected($address['suburb']);

    $city = tep_output_string_protected($address['city']);

    $state = tep_output_string_protected($address['state']);

    if (isset($address['country_id']) && tep_not_null($address['country_id'])) {

    $country = tep_get_country_name($address['country_id']);

     

    if (isset($address['zone_id']) && tep_not_null($address['zone_id'])) {

    $state = tep_get_zone_code($address['country_id'], $address['zone_id'], $state);

    }

    } elseif (isset($address['country']) && tep_not_null($address['country'])) {

    $country = tep_output_string_protected($address['country']);

    } else {

    $country = '';

    }

    $postcode = tep_output_string_protected($address['postcode']);

    $zip = $postcode;

     

    if ($html) {

    // HTML Mode

    $HR = '<hr>';

    $hr = '<hr>';

    if ( ($boln == '') && ($eoln == "\n") ) { // Values not specified, use rational defaults

    $CR = '<br>';

    $cr = '<br>';

    $eoln = $cr;

    } else { // Use values supplied

    $CR = $eoln . $boln;

    $cr = $CR;

    }

    } else {

    // Text Mode

    $CR = $eoln;

    $cr = $CR;

    $HR = '----------------------------------------';

    $hr = '----------------------------------------';

    }

     

    $statecomma = '';

    $streets = $street;

    if ($suburb != '') $streets = $street . $cr . $suburb;

    if ($country == '') $country = tep_output_string_protected($address['country']);

    if ($state != '') $statecomma = $state . ', ';

     

    $fmt = $address_format['format'];

    eval("\$address = \"$fmt\";");

     

    if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) {

    $address = $company . $cr . $address;

    }

     

    return $address;

    }

     

    ////

    // Return a formatted address

    // TABLES: customers, address_book

    function tep_address_label($customers_id, $address_id = 1, $html = false, $boln = '', $eoln = "\n") {

    $address_query = tep_db_query("select entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customers_id . "' and address_book_id = '" . (int)$address_id . "'");

    $address = tep_db_fetch_array($address_query);

     

    $format_id = tep_get_address_format_id($address['country_id']);

     

    return tep_address_format($format_id, $address, $html, $boln, $eoln);

    }

     

    function tep_row_number_format($number) {

    if ( ($number < 10) && (substr($number, 0, 1) != '0') ) $number = '0' . $number;

     

    return $number;

    }

     

    function tep_get_categories($categories_array = '', $parent_id = '0', $indent = '') {

    global $languages_id;

     

    if (!is_array($categories_array)) $categories_array = array();

     

    $categories_query = tep_db_query("select c.categories_id, cd.categories_name from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where parent_id = '" . (int)$parent_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");

    while ($categories = tep_db_fetch_array($categories_query)) {

    $categories_array[] = array('id' => $categories['categories_id'],

    'text' => $indent . $categories['categories_name']);

     

    if ($categories['categories_id'] != $parent_id) {

    $categories_array = tep_get_categories($categories_array, $categories['categories_id'], $indent . ' ');

    }

    }

     

    return $categories_array;

    }

     

    function tep_get_manufacturers($manufacturers_array = '') {

    if (!is_array($manufacturers_array)) $manufacturers_array = array();

     

    $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");

    while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {

    $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers['manufacturers_name']);

    }

     

    return $manufacturers_array;

    }

     

    ////

    // Return all subcategory IDs

    // TABLES: categories

    function tep_get_subcategories(&$subcategories_array, $parent_id = 0) {

    $subcategories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$parent_id . "'");

    while ($subcategories = tep_db_fetch_array($subcategories_query)) {

    $subcategories_array[sizeof($subcategories_array)] = $subcategories['categories_id'];

    if ($subcategories['categories_id'] != $parent_id) {

    tep_get_subcategories($subcategories_array, $subcategories['categories_id']);

    }

    }

    }

     

    // Output a raw date string in the selected locale date format

    // $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

    function tep_date_long($raw_date) {

    if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

     

    $year = (int)substr($raw_date, 0, 4);

    $month = (int)substr($raw_date, 5, 2);

    $day = (int)substr($raw_date, 8, 2);

    $hour = (int)substr($raw_date, 11, 2);

    $minute = (int)substr($raw_date, 14, 2);

    $second = (int)substr($raw_date, 17, 2);

     

    return strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year));

    }

     

    ////

    // Output a raw date string in the selected locale date format

    // $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

    // NOTE: Includes a workaround for dates before 01/01/1970 that fail on windows servers

    function tep_date_short($raw_date) {

    if ( ($raw_date == '0000-00-00 00:00:00') || empty($raw_date) ) return false;

     

    $year = substr($raw_date, 0, 4);

    $month = (int)substr($raw_date, 5, 2);

    $day = (int)substr($raw_date, 8, 2);

    $hour = (int)substr($raw_date, 11, 2);

    $minute = (int)substr($raw_date, 14, 2);

    $second = (int)substr($raw_date, 17, 2);

     

    if (@date('Y', mktime(

  9. Thank you Amber for your effort.

    I play with the files and still can't get desirable result.

     

    I found i still need to alter order files because i have order with zero total

    I am going to play with checkout.

     

    Do you have it works on your shop and did have problems with order_total?

    may be I altered somewhere and need to upload backup

     

    Thank you again for attention to this problem

     

    Miclosh

  10. I tried to install this contribution for 2 days and I can't get it work .

    I am totally confused with "unstable" instructions (I am sorry)

    if I don't have the parse error , so i have zerros in my basket

     

    can some one post here modifaed files for fresh OSCommerce

     

    I will really appreciate this.

  11. Hello ! I am trying to change the way the contribution define the country of a customer. The idea is insert name of the country and even city by IP address .

    Now i am look at WHO'S ONLINE or USER TRACKING way.

     

    I thought maybe somebody will so kind and help me with the coding , unfortunately

    i do not know PHP so i am stacked.

    thank you

  12. do you have these lines

    ////
    // Return true if the topic has subtopics
    // TABLES: topics
     function tep_has_topic_subtopics($topic_id) {
       $child_topic_query = tep_db_query("select count(*) as count from " . TABLE_TOPICS . " where parent_id = '" . (int)$topic_id . "'");
       $child_topic = tep_db_fetch_array($child_topic_query);
    
       if ($child_topic['count'] > 0) {
         return true;
       } else {
         return false;
       }
     }

     

    in functions/articles.php

×
×
  • Create New...