Jump to content
Jack_mcs

Dynamic SiteMap

Recommended Posts

Just installed v4.1.

 

Is there a fix for the next to the last entry being blank? I just have a bullet, with no entry.

Also, how can I eliminate "Bestsellers" and "List of Manufacturers"?

 

Thanks,

Cindy


I find the fun in everything.

Share this post


Link to post
Share on other sites

Hi all,

 

I've installed dynamic sitemap and I'm getting an "openbase restriction is in effect" warning on the catalog side.

Seems the script is trying to access the tmp dir, which is in the root of my store. The warning states however, that it's not within the allowed path (/var/www/vhosts/domain/httpdocs:/tmp).

Has anybody seen this before?

I'm getting the "openbase restriction is in effect" warning too. Strange thing though, the path also reads /var/www/vhosts/domain/httpdocs:/tmp but the : is not supposed to be there, right??

Has anyone else experienced this before?

Edited by JSR

Share this post


Link to post
Share on other sites

Ok ppl, so I contacted my host and the openbase restriction warning is finally solved now!

 

Change line 178:

if((!is_dir($file) && strtolower(substr($file, -4, 4)) === ".php") && !in_array($file ,$excluded_array))

 

TO:

if(($file != "..") && (!is_dir($file) && strtolower(substr($file, -4, 4)) === ".php") && !in_array($file ,$excluded_array))

 

This should stop the code from trying to access the tmp directory that's located outside of the root.

Share this post


Link to post
Share on other sites

Im running V2.2 RC2a

 

Installed Dynamic Sitemap v4.21 that all seems to be working except the content on the website on the site map page is all

wonky. My site is centered but does not center on the site map page.

 

Also, when you click on a link made from IPU, the page comes up 404 error. I made the IPU changes in the sitemap.php

 

http://www.craftybin.com

Share this post


Link to post
Share on other sites

Can you help me? I get this error in catalog:

 

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(..) is not within the allowed path(s): (/var/www/vhosts/midomain.com/httpdocs:/tmp) in /var/www/vhosts/mydomain.com/httpdocs/dynamic_sitemap.php on line 179

 

thanks

Share this post


Link to post
Share on other sites

First of all, thanks for a great contribution. I have installed this on a customers site and it all works fine. But now the customer wants also to show products that are listed under different categories as customers site doesn't have many products for the time being.

 

I wanted to know if someone could look into possibility of also displaying products, but that option was up to customer to decide whether to show products or keep them hidden.

 

Best of luck and can't wait to hear from some the experts here.

Share this post


Link to post
Share on other sites

I am trying to install this on a fresh, clean install of oscommerece 2.3.1.

 

 

However when I get to this installation instruction it does not make sense.

 

The instruction #3 says to edit -- catalog/includes/boxes/information.php

 

 

 

HOWEVER THERE IS NO SUCH FILE " INFORMATION.PHP " IN OSCOMMERECE 2.3.1.

 

 

Additionally... install step 9 calles to edit --- admin/includes/boxes/tools.php

 

There is also no TOOLS.PHP file

 

Please advise. Thanks so much

Share this post


Link to post
Share on other sites

It looks like this only works with version 2.2 . 3.2 does not use information.php

 

I can't find a sitemap contribution that works with a clean install of 2.3.1.

 

Wierd!@#$%

 

 

guess i will try Sitemap_SEO_V_1.7.zip

Share this post


Link to post
Share on other sites

Hi,

 

i have also tried installing this contribution to 2.3.1.

 

i am almost there.

 

When you view the site map i get this error.

 

 

 

Parse error: syntax error, unexpected $end in /home/blah/public_html/blah/dynamic_sitemap.php on line 340

 

I guess this is a missing ; or } i cant spot the culprit allthough there are many missing ones in for/if/else loops etc guessing php 5.3.8 dont like these missing ones.

 

Any ideas anyone

Share this post


Link to post
Share on other sites

The version for osc 2.3.1 dated 22-Sep-2011:

http://addons.oscommerce.com/info/3306

 

It installed without any issues on my site...

Edited by The Munch

Thank You!!

----------

Using: OSC 2.3.1, Algozone Template, Jcow 5 Pro, CometChat 4 Premium.

 

Contributions for OSC-2.3.1: QT Pro 4.6.1, Easy Populate EPv2.77a, Admin Notes, Contribution Tracker, Multi-Product Manager, myQBi Quickbooks Sync, Order Editor 5.0.9, Dynamic Sitemap, Tax ID in Order Editor, Separate Pricing Per Customer v4.2.2 ... etc ...

 

Contributions for OSC-2.2 I've Modified for OSC-2.3.1: Admin Level Account with Categories 2.3.4, File Logging or Email for Failed Admin Login Attempts, Autologon v1.09, Admin Specials by Categories, CCGV 6.0_1, Hide Categories, How Did You Hear About Us, MSRP Listing, Multiple Sales Per Product, osc as info site, OSC Checkout Security Boost v1.1, Points and Rewards Module, Quick Stock Updater, Quick Updates 292, RMA Returns System 2.6, Show Unit Price, Store Mode, Supplier Admin v1.3, Tell A Friend, Required Customer Details v22rc2a, Admin Change Customers Password v3.3, PDF Invoice & PackingSlip 1.6, Quick Price Updates for SPPC v1.5, Country-State Selector v1.5.5 + Limit Countries v2.2, Contact Us Popup Business Card, No Right Click, Delete Customer Account v1.2, Control Login v2.2, Member Type Control v1.1, .... etc...

Share this post


Link to post
Share on other sites

Anyone know how to modify this to make an seo url friendly output? On the 2.3.1

I have had this installed for a long time on my sites along with the SEO urls and also use google sitemap. My files from the google sitemap go through the html rewrites & effectively have those displayed with SEO friendly urls.

 

Is there a way to have this contribution do the same? I tried searching this topic but it keeps sending me to the 1st page.

 

I am not running 2.3.1 I am running 2.2rc2a

Share this post


Link to post
Share on other sites

Just installed synamic sitemap 2.3.1 and when I try clicking on the link in admin/config I get this error message Fatal error: Cannot redeclare tep_cfg_select_multioption() (previously declared in /home/azariahs/public_html/admin/includes/functions/general.php:15) in /home/azariahs/public_html/admin/includes/functions/general.php on line 24.

 

To the best of my knowledge only the usps page is using this call, so I am not sure what is the link to my /admin./admin/includes/functions/general.php and the admin/sitemaps.php file. THsi is the code for my general.php page.

<?php
/*
 $Id: general.php 1739 2007-12-20 00:52:16Z hpdl $
 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com
 Copyright (c) 2007 osCommerce
 Released under the GNU General Public License
*/
////
// Alias function for array of configuration values in the Administration Tool for USPS
 function tep_cfg_select_multioption($select_array, $key_value, $key = '') {
for ($i=0; $i<sizeof($select_array); $i++) {
  $name = (($key) ? 'configuration[' . $key . '][]' : 'configuration_value');
  $string .= '<br><input type="checkbox" name="' . $name . '" value="' . $select_array[$i] . '"';
  $key_values = explode( ", ", $key_value);
  if ( in_array($select_array[$i], $key_values) ) $string .= 'CHECKED';
  $string .= '> ' . $select_array[$i];
}
return $string;
 }
////
// Redirect to another page or site
 function tep_redirect($url) {
global $logger;
if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) {
  tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONon which SSL', false));
}
header('Location: ' . $url);
if (STORE_PAGE_PARSE_TIME == 'true') {
  if (!is_object($logger)) $logger = new logger;
  $logger->timer_stop();
}
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(' +', ' ', $string);
return preg_replace("/[<>]/", '_', $string);
 }
 function tep_customers_name($customers_id) {
$customers = tep_db_query("select customers_firstname, customers_lastname from " . TABLE_CUSTOMERS . " where customers_id = '" . (int)$customers_id . "'");
$customers_values = tep_db_fetch_array($customers);
return $customers_values['customers_firstname'] . ' ' . $customers_values['customers_lastname'];
 }
 function tep_get_path($current_category_id = '') {
global $cPath_array;
if ($current_category_id == '') {
  $cPath_new = implode('_', $cPath_array);
} else {
  if (sizeof($cPath_array) == 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[(sizeof($cPath_array)-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, $n = sizeof($cPath_array) - 1; $i < $n; $i++) {
		$cPath_new .= '_' . $cPath_array[$i];
	  }
	} else {
	  for ($i = 0, $n = sizeof($cPath_array); $i < $n; $i++) {
		$cPath_new .= '_' . $cPath_array[$i];
	  }
	}
	$cPath_new .= '_' . $current_category_id;
	if (substr($cPath_new, 0, 1) == '_') {
	  $cPath_new = substr($cPath_new, 1);
	}
  }
}
return 'cPath=' . $cPath_new;
 }
 function tep_get_all_get_params($exclude_array = '') {
global $HTTP_GET_VARS;
if ($exclude_array == '') $exclude_array = array();
$get_url = '';
reset($HTTP_GET_VARS);
while (list($key, $value) = each($HTTP_GET_VARS)) {
  if (($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array))) $get_url .= $key . '=' . $value . '&';
}
return $get_url;
 }
 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') || ($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 (@[member='date']('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {
  return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));
} else {
  return ereg_replace('2037' . '$', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037)));
}
 }
 function tep_datetime_short($raw_datetime) {
if ( ($raw_datetime == '0000-00-00 00:00:00') || ($raw_datetime == '') ) return false;
$year = (int)substr($raw_datetime, 0, 4);
$month = (int)substr($raw_datetime, 5, 2);
$day = (int)substr($raw_datetime, 8, 2);
$hour = (int)substr($raw_datetime, 11, 2);
$minute = (int)substr($raw_datetime, 14, 2);
$second = (int)substr($raw_datetime, 17, 2);
return strftime(DATE_TIME_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));
 }
 function tep_get_category_tree($parent_id = '0', $spacing = '', $exclude = '', $category_tree_array = '', $include_itself = false) {
global $languages_id;
if (!is_array($category_tree_array)) $category_tree_array = array();
if ( (sizeof($category_tree_array) < 1) && ($exclude != '0') ) $category_tree_array[] = array('id' => '0', 'text' => TEXT_TOP);
if ($include_itself) {
  $category_query = tep_db_query("select cd.categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " cd where cd.language_id = '" . (int)$languages_id . "' and cd.categories_id = '" . (int)$parent_id . "'");
  $category = tep_db_fetch_array($category_query);
  $category_tree_array[] = array('id' => $parent_id, 'text' => $category['categories_name']);
}
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and c.parent_id = '" . (int)$parent_id . "' order by c.sort_order, cd.categories_name");
while ($categories = tep_db_fetch_array($categories_query)) {
  if ($exclude != $categories['categories_id']) $category_tree_array[] = array('id' => $categories['categories_id'], 'text' => $spacing . $categories['categories_name']);
  $category_tree_array = tep_get_category_tree($categories['categories_id'], $spacing . '   ', $exclude, $category_tree_array);
}
return $category_tree_array;
 }
 function tep_draw_products_pull_down($name, $parameters = '', $exclude = '') {
global $currencies, $languages_id;
if ($exclude == '') {
  $exclude = array();
}
$select_string = '<select name="' . $name . '"';
if ($parameters) {
  $select_string .= ' ' . $parameters;
}
$select_string .= '>';
$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by products_name");
while ($products = tep_db_fetch_array($products_query)) {
  if (!in_array($products['products_id'], $exclude)) {
	$select_string .= '<option value="' . $products['products_id'] . '">' . $products['products_name'] . ' (' . $currencies->format($products['products_price']) . ')</option>';
  }
}
$select_string .= '</select>';
return $select_string;
 }
 function tep_options_name($options_id) {
global $languages_id;
$options = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$options_id . "' and language_id = '" . (int)$languages_id . "'");
$options_values = tep_db_fetch_array($options);
return $options_values['products_options_name'];
 }
 function tep_values_name($values_id) {
global $languages_id;
$values = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$values_id . "' and language_id = '" . (int)$languages_id . "'");
$values_values = tep_db_fetch_array($values);
return $values_values['products_options_values_name'];
 }
 function tep_info_image($image, $alt, $width = '', $height = '') {
if (tep_not_null($image) && (file_exists(DIR_FS_CATALOG_IMAGES . $image)) ) {
  $image = tep_image(DIR_WS_CATALOG_IMAGES . $image, $alt, $width, $height);
} else {
  $image = TEXT_IMAGE_NONEXISTENT;
}
return $image;
 }
 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;
 }
 function tep_get_country_name($country_id) {
$country_query = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$country_id . "'");
if (!tep_db_num_rows($country_query)) {
  return $country_id;
} else {
  $country = tep_db_fetch_array($country_query);
  return $country['countries_name'];
}
 }
 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;
}
 }
 function tep_not_null($value) {
if (is_array($value)) {
  if (sizeof($value) > 0) {
	return true;
  } else {
	return false;
  }
} else {
  if ( (is_string($value) || is_int($value)) && ($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) {
	return true;
  } else {
	return false;
  }
}
 }
 function tep_browser_detect($component) {
global $HTTP_USER_AGENT;
return stristr($HTTP_USER_AGENT, $component);
 }
 function tep_tax_classes_pull_down($parameters, $selected = '') {
$select_string = '<select ' . $parameters . '>';
$classes_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title");
while ($classes = tep_db_fetch_array($classes_query)) {
  $select_string .= '<option value="' . $classes['tax_class_id'] . '"';
  if ($selected == $classes['tax_class_id']) $select_string .= ' SELECTED';
  $select_string .= '>' . $classes['tax_class_title'] . '</option>';
}
$select_string .= '</select>';
return $select_string;
 }
 function tep_geo_zones_pull_down($parameters, $selected = '') {
$select_string = '<select ' . $parameters . '>';
$zones_query = tep_db_query("select geo_zone_id, geo_zone_name from " . TABLE_GEO_ZONES . " order by geo_zone_name");
while ($zones = tep_db_fetch_array($zones_query)) {
  $select_string .= '<option value="' . $zones['geo_zone_id'] . '"';
  if ($selected == $zones['geo_zone_id']) $select_string .= ' SELECTED';
  $select_string .= '>' . $zones['geo_zone_name'] . '</option>';
}
$select_string .= '</select>';
return $select_string;
 }
 function tep_get_geo_zone_name($geo_zone_id) {
$zones_query = tep_db_query("select geo_zone_name from " . TABLE_GEO_ZONES . " where geo_zone_id = '" . (int)$geo_zone_id . "'");
if (!tep_db_num_rows($zones_query)) {
  $geo_zone_name = $geo_zone_id;
} else {
  $zones = tep_db_fetch_array($zones_query);
  $geo_zone_name = $zones['geo_zone_name'];
}
return $geo_zone_name;
 }
 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;
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function	: tep_get_zone_code
 //
 // Arguments   : country		   country code string
 //			   zone			  state/province zone_id
 //			   def_state		 default string if zone==0
 //
 // Return	  : state_prov_code   state/province code
 //
 // Description : Function to retrieve the state/province code (as in FL for Florida etc)
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_get_zone_code($country, $zone, $def_state) {
$state_prov_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and zone_id = '" . (int)$zone . "'");
if (!tep_db_num_rows($state_prov_query)) {
  $state_prov_code = $def_state;
}
else {
  $state_prov_values = tep_db_fetch_array($state_prov_query);
  $state_prov_code = $state_prov_values['zone_code'];
}

return $state_prov_code;
 }
 function tep_get_uprid($prid, $params) {
$uprid = $prid;
if ( (is_array($params)) && (!strstr($prid, '{')) ) {
  while (list($option, $value) = each($params)) {
	$uprid = $uprid . '{' . $option . '}' . $value;
  }
}
return $uprid;
 }
 function tep_get_prid($uprid) {
$pieces = explode('{', $uprid);
return $pieces[0];
 }
 function tep_get_languages() {
$languages_query = tep_db_query("select languages_id, name, code, image, directory from " . TABLE_LANGUAGES . " order by sort_order");
while ($languages = tep_db_fetch_array($languages_query)) {
  $languages_array[] = array('id' => $languages['languages_id'],
							 'name' => $languages['name'],
							 'code' => $languages['code'],
							 'image' => $languages['image'],
							 'directory' => $languages['directory']);
}
return $languages_array;
 }
 function tep_get_category_name($category_id, $language_id) {
$category_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$category_id . "' and language_id = '" . (int)$language_id . "'");
$category = tep_db_fetch_array($category_query);
return $category['categories_name'];
 }
 function tep_get_orders_status_name($orders_status_id, $language_id = '') {
global $languages_id;
if (!$language_id) $language_id = $languages_id;
$orders_status_query = tep_db_query("select orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id = '" . (int)$orders_status_id . "' and language_id = '" . (int)$language_id . "'");
$orders_status = tep_db_fetch_array($orders_status_query);
return $orders_status['orders_status_name'];
 }
 function tep_get_orders_status() {
global $languages_id;
$orders_status_array = array();
$orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_id");
while ($orders_status = tep_db_fetch_array($orders_status_query)) {
  $orders_status_array[] = array('id' => $orders_status['orders_status_id'],
								 'text' => $orders_status['orders_status_name']);
}
return $orders_status_array;
 }
 function tep_get_products_name($product_id, $language_id = 0) {
global $languages_id;
if ($language_id == 0) $language_id = $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_id . "'");
$product = tep_db_fetch_array($product_query);
return $product['products_name'];
 }
 function tep_get_products_description($product_id, $language_id) {
$product_query = tep_db_query("select products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
$product = tep_db_fetch_array($product_query);
return $product['products_description'];
 }
 function tep_get_products_url($product_id, $language_id) {
$product_query = tep_db_query("select products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
$product = tep_db_fetch_array($product_query);
return $product['products_url'];
 }
////
// Return the manufacturers URL in the needed language
// TABLES: manufacturers_info
 function tep_get_manufacturer_url($manufacturer_id, $language_id) {
$manufacturer_query = tep_db_query("select manufacturers_url from " . TABLE_MANUFACTURERS_INFO . " where manufacturers_id = '" . (int)$manufacturer_id . "' and languages_id = '" . (int)$language_id . "'");
$manufacturer = tep_db_fetch_array($manufacturer_query);
return $manufacturer['manufacturers_url'];
 }
////
// Wrapper for class_exists() function
// This function is not available in all PHP versions so we test it before using it.
 function tep_class_exists($class_name) {
if (function_exists('class_exists')) {
  return class_exists($class_name);
} else {
  return true;
}
 }
////
// Count how many products exist in a category
// TABLES: products, products_to_categories, categories
 function tep_products_in_category_count($categories_id, $include_deactivated = false) {
$products_count = 0;
if ($include_deactivated) {
  $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)$categories_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)$categories_id . "'");
}
$products = tep_db_fetch_array($products_query);
$products_count += $products['total'];
$childs_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$categories_id . "'");
if (tep_db_num_rows($childs_query)) {
  while ($childs = tep_db_fetch_array($childs_query)) {
	$products_count += tep_products_in_category_count($childs['categories_id'], $include_deactivated);
  }
}
return $products_count;
 }
////
// Count how many subcategories exist in a category
// TABLES: categories
 function tep_childs_in_category_count($categories_id) {
$categories_count = 0;
$categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$categories_id . "'");
while ($categories = tep_db_fetch_array($categories_query)) {
  $categories_count++;
  $categories_count += tep_childs_in_category_count($categories['categories_id']);
}
return $categories_count;
 }
////
// Returns an array with countries
// TABLES: countries
 function tep_get_countries($default = '') {
$countries_array = array();
if ($default) {
  $countries_array[] = array('id' => '',
							 'text' => $default);
}
$countries_query = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");
while ($countries = tep_db_fetch_array($countries_query)) {
  $countries_array[] = array('id' => $countries['countries_id'],
							 'text' => $countries['countries_name']);
}
return $countries_array;
 }
////
// return an array with country zones
 function tep_get_country_zones($country_id) {
$zones_array = array();
$zones_query = tep_db_query("select zone_id, zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' order by zone_name");
while ($zones = tep_db_fetch_array($zones_query)) {
  $zones_array[] = array('id' => $zones['zone_id'],
						 'text' => $zones['zone_name']);
}
return $zones_array;
 }
 function tep_prepare_country_zones_pull_down($country_id = '') {
// preset the width of the drop-down for Netscape
$pre = '';
if ( (!tep_browser_detect('MSIE')) && (tep_browser_detect('Mozilla/4')) ) {
  for ($i=0; $i<45; $i++) $pre .= ' ';
}
$zones = tep_get_country_zones($country_id);
if (sizeof($zones) > 0) {
  $zones_select = array(array('id' => '', 'text' => PLEASE_SELECT));
  $zones = array_merge($zones_select, $zones);
} else {
  $zones = array(array('id' => '', 'text' => TYPE_BELOW));
// create dummy options for Netscape to preset the height of the drop-down
  if ( (!tep_browser_detect('MSIE')) && (tep_browser_detect('Mozilla/4')) ) {
	for ($i=0; $i<9; $i++) {
	  $zones[] = array('id' => '', 'text' => $pre);
	}
  }
}
return $zones;
 }
////
// Get list of address_format_id's
 function tep_get_address_formats() {
$address_format_query = tep_db_query("select address_format_id from " . TABLE_ADDRESS_FORMAT . " order by address_format_id");
$address_format_array = array();
while ($address_format_values = tep_db_fetch_array($address_format_query)) {
  $address_format_array[] = array('id' => $address_format_values['address_format_id'],
								  'text' => $address_format_values['address_format_id']);
}
return $address_format_array;
 }
////
// Alias function for Store configuration values in the Administration Tool
 function tep_cfg_pull_down_country_list($country_id) {
return tep_draw_pull_down_menu('configuration_value', tep_get_countries(), $country_id);
 }
 function tep_cfg_pull_down_zone_list($zone_id) {
return tep_draw_pull_down_menu('configuration_value', tep_get_country_zones(STORE_COUNTRY), $zone_id);
 }
 function tep_cfg_pull_down_tax_classes($tax_class_id, $key = '') {
$name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value');
$tax_class_array = array(array('id' => '0', 'text' => TEXT_NONE));
$tax_class_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title");
while ($tax_class = tep_db_fetch_array($tax_class_query)) {
  $tax_class_array[] = array('id' => $tax_class['tax_class_id'],
							 'text' => $tax_class['tax_class_title']);
}
return tep_draw_pull_down_menu($name, $tax_class_array, $tax_class_id);
 }
////
// Function to read in text area in admin
function tep_cfg_textarea($text) {
return tep_draw_textarea_field('configuration_value', false, 35, 5, $text);
 }
 function tep_cfg_get_zone_name($zone_id) {
$zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_id = '" . (int)$zone_id . "'");
if (!tep_db_num_rows($zone_query)) {
  return $zone_id;
} else {
  $zone = tep_db_fetch_array($zone_query);
  return $zone['zone_name'];
}
 }
////
// Sets the status of a banner
 function tep_set_banner_status($banners_id, $status) {
if ($status == '1') {
  return tep_db_query("update " . TABLE_BANNERS . " set status = '1', expires_impressions = NULL, expires_date = NULL, date_status_change = NULL where banners_id = '" . $banners_id . "'");
} elseif ($status == '0') {
  return tep_db_query("update " . TABLE_BANNERS . " set status = '0', date_status_change = now() where banners_id = '" . $banners_id . "'");
} else {
  return -1;
}
 }
////
// Sets the status of a product
 function tep_set_product_status($products_id, $status) {
if ($status == '1') {
  return tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '1', products_last_modified = now() where products_id = '" . (int)$products_id . "'");
} elseif ($status == '0') {
  return tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0', products_last_modified = now() where products_id = '" . (int)$products_id . "'");
} else {
  return -1;
}
 }
////
// Sets the status of a product on special
 function tep_set_specials_status($specials_id, $status) {
if ($status == '1') {
  return tep_db_query("update " . TABLE_SPECIALS . " set status = '1', expires_date = NULL, date_status_change = NULL where specials_id = '" . (int)$specials_id . "'");
} elseif ($status == '0') {
  return tep_db_query("update " . TABLE_SPECIALS . " set status = '0', date_status_change = now() where specials_id = '" . (int)$specials_id . "'");
} else {
  return -1;
}
 }
////
// Sets timeout for the current script.
// Cant be used in safe mode.
 function tep_set_time_limit($limit) {
if (!get_cfg_var('safe_mode')) {
  set_time_limit($limit);
}
 }
////
// Alias function for Store configuration values in the Administration Tool
 function tep_cfg_select_option($select_array, $key_value, $key = '') {
$string = '';
for ($i=0, $n=sizeof($select_array); $i<$n; $i++) {
  $name = ((tep_not_null($key)) ? 'configuration[' . $key . ']' : 'configuration_value');
  $string .= '<br><input type="radio" name="' . $name . '" value="' . $select_array[$i] . '"';
  if ($key_value == $select_array[$i]) $string .= ' CHECKED';
  $string .= '> ' . $select_array[$i];
}
return $string;
 }
////
// Alias function for module configuration keys
 function tep_mod_select_option($select_array, $key_name, $key_value) {
reset($select_array);
while (list($key, $value) = each($select_array)) {
  if (is_int($key)) $key = $value;
  $string .= '<br><input type="radio" name="configuration[' . $key_name . ']" value="' . $key . '"';
  if ($key_value == $key) $string .= ' CHECKED';
  $string .= '> ' . $value;
}
return $string;
 }
////
// Retreive server information
 function tep_get_system_information() {
global $HTTP_SERVER_VARS;
$db_query = tep_db_query("select now() as datetime");
$db = tep_db_fetch_array($db_query);
list($system, $host, $kernel) = preg_split('/[\s,]+/', @exec('uname -a'), 5);
return array('date' => tep_datetime_short(date('Y-m-d H:i:s')),
			 'system' => $system,
			 'kernel' => $kernel,
			 'host' => $host,
			 'ip' => gethostbyname($host),
			 'uptime' => @exec('uptime'),
			 'http_server' => $HTTP_SERVER_VARS['SERVER_SOFTWARE'],
			 'php' => PHP_VERSION,
			 'zend' => (function_exists('zend_version') ? zend_version() : ''),
			 'db_server' => DB_SERVER,
			 'db_ip' => gethostbyname(DB_SERVER),
			 'db_version' => 'MySQL ' . (function_exists('mysql_get_server_info') ? mysql_get_server_info() : ''),
			 'db_date' => tep_datetime_short($db['datetime']));
 }
 function tep_generate_category_path($id, $from = 'category', $categories_array = '', $index = 0) {
global $languages_id;
if (!is_array($categories_array)) $categories_array = array();
if ($from == 'product') {
  $categories_query = tep_db_query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$id . "'");
  while ($categories = tep_db_fetch_array($categories_query)) {
	if ($categories['categories_id'] == '0') {
	  $categories_array[$index][] = array('id' => '0', 'text' => TEXT_TOP);
	} else {
	  $category_query = tep_db_query("select cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$categories['categories_id'] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'");
	  $category = tep_db_fetch_array($category_query);
	  $categories_array[$index][] = array('id' => $categories['categories_id'], 'text' => $category['categories_name']);
	  if ( (tep_not_null($category['parent_id'])) && ($category['parent_id'] != '0') ) $categories_array = tep_generate_category_path($category['parent_id'], 'category', $categories_array, $index);
	  $categories_array[$index] = array_reverse($categories_array[$index]);
	}
	$index++;
  }
} elseif ($from == 'category') {
  $category_query = tep_db_query("select cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'");
  $category = tep_db_fetch_array($category_query);
  $categories_array[$index][] = array('id' => $id, 'text' => $category['categories_name']);
  if ( (tep_not_null($category['parent_id'])) && ($category['parent_id'] != '0') ) $categories_array = tep_generate_category_path($category['parent_id'], 'category', $categories_array, $index);
}
return $categories_array;
 }
 function tep_output_generated_category_path($id, $from = 'category') {
$calculated_category_path_string = '';
$calculated_category_path = tep_generate_category_path($id, $from);
for ($i=0, $n=sizeof($calculated_category_path); $i<$n; $i++) {
  for ($j=0, $k=sizeof($calculated_category_path[$i]); $j<$k; $j++) {
	$calculated_category_path_string .= $calculated_category_path[$i][$j]['text'] . ' > ';
  }
  $calculated_category_path_string = substr($calculated_category_path_string, 0, -16) . '<br>';
}
$calculated_category_path_string = substr($calculated_category_path_string, 0, -4);
if (strlen($calculated_category_path_string) < 1) $calculated_category_path_string = TEXT_TOP;
return $calculated_category_path_string;
 }
 function tep_get_generated_category_path_ids($id, $from = 'category') {
$calculated_category_path_string = '';
$calculated_category_path = tep_generate_category_path($id, $from);
for ($i=0, $n=sizeof($calculated_category_path); $i<$n; $i++) {
  for ($j=0, $k=sizeof($calculated_category_path[$i]); $j<$k; $j++) {
	$calculated_category_path_string .= $calculated_category_path[$i][$j]['id'] . '_';
  }
  $calculated_category_path_string = substr($calculated_category_path_string, 0, -1) . '<br>';
}
$calculated_category_path_string = substr($calculated_category_path_string, 0, -4);
if (strlen($calculated_category_path_string) < 1) $calculated_category_path_string = TEXT_TOP;
return $calculated_category_path_string;
 }
 function tep_remove_category($category_id) {
$category_image_query = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$category_id . "'");
$category_image = tep_db_fetch_array($category_image_query);
$duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where categories_image = '" . tep_db_input($category_image['categories_image']) . "'");
$duplicate_image = tep_db_fetch_array($duplicate_image_query);
if ($duplicate_image['total'] < 2) {
  if (file_exists(DIR_FS_CATALOG_IMAGES . $category_image['categories_image'])) {
	@unlink(DIR_FS_CATALOG_IMAGES . $category_image['categories_image']);
  }
}
tep_db_query("delete from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$category_id . "'");
tep_db_query("delete from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$category_id . "'");
tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$category_id . "'");
if (USE_CACHE == 'true') {
  tep_reset_cache_block('categories');
  tep_reset_cache_block('also_purchased');
}
 }
 function tep_remove_product($product_id) {
$product_image_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " where products_id = '" . (int)$product_id . "'");
$product_image = tep_db_fetch_array($product_image_query);
$duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_image = '" . tep_db_input($product_image['products_image']) . "'");
$duplicate_image = tep_db_fetch_array($duplicate_image_query);
if ($duplicate_image['total'] < 2) {
  if (file_exists(DIR_FS_CATALOG_IMAGES . $product_image['products_image'])) {
	@unlink(DIR_FS_CATALOG_IMAGES . $product_image['products_image']);
  }
}
tep_db_query("delete from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_PRODUCTS . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . (int)$product_id . "' or products_id like '" . (int)$product_id . "{%'");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . (int)$product_id . "' or products_id like '" . (int)$product_id . "{%'");
// START: Extra Fields Contribution
tep_db_query("delete from " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " where products_id = " . (int)$product_id);
// END: Extra Fields Contribution
$product_reviews_query = tep_db_query("select reviews_id from " . TABLE_REVIEWS . " where products_id = '" . (int)$product_id . "'");
while ($product_reviews = tep_db_fetch_array($product_reviews_query)) {
  tep_db_query("delete from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . (int)$product_reviews['reviews_id'] . "'");
}
tep_db_query("delete from " . TABLE_REVIEWS . " where products_id = '" . (int)$product_id . "'");
if (USE_CACHE == 'true') {
  tep_reset_cache_block('categories');
  tep_reset_cache_block('also_purchased');
}
 }
 function tep_remove_order($order_id, $restock = false) {
if ($restock == 'on') {
  $order_query = tep_db_query("select products_id, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'");
  while ($order = tep_db_fetch_array($order_query)) {
	tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity + " . $order['products_quantity'] . ", products_ordered = products_ordered - " . $order['products_quantity'] . " where products_id = '" . (int)$order['products_id'] . "'");
  }
}
tep_db_query("delete from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'");
tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "'");
tep_db_query("delete from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . (int)$order_id . "'");
tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$order_id . "'");
 // *** BEGIN GOOGLE CHECKOUT ***
require_once(DIR_FS_CATALOG . 'googlecheckout/inserts/admin/includes/functions/general.php');
// *** END GOOGLE CHECKOUT ***
 }
 function tep_reset_cache_block($cache_block) {
global $cache_blocks;
for ($i=0, $n=sizeof($cache_blocks); $i<$n; $i++) {
  if ($cache_blocks[$i]['code'] == $cache_block) {
	if ($cache_blocks[$i]['multiple']) {
	  if ($dir = @opendir(DIR_FS_CACHE)) {
		while ($cache_file = readdir($dir)) {
		  $cached_file = $cache_blocks[$i]['file'];
		  $languages = tep_get_languages();
		  for ($j=0, $k=sizeof($languages); $j<$k; $j++) {
			$cached_file_unlink = ereg_replace('-language', '-' . $languages[$j]['directory'], $cached_file);
			if (ereg('^' . $cached_file_unlink, $cache_file)) {
			  @unlink(DIR_FS_CACHE . $cache_file);
			}
		  }
		}
		closedir($dir);
	  }
	} else {
	  $cached_file = $cache_blocks[$i]['file'];
	  $languages = tep_get_languages();
	  for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
		$cached_file = ereg_replace('-language', '-' . $languages[$i]['directory'], $cached_file);
		@unlink(DIR_FS_CACHE . $cached_file);
	  }
	}
	break;
  }
}
 }
 function tep_get_file_permissions($mode) {
// determine type
if ( ($mode & 0xC000) == 0xC000) { // unix domain socket
  $type = 's';
} elseif ( ($mode & 0x4000) == 0x4000) { // directory
  $type = 'd';
} elseif ( ($mode & 0xA000) == 0xA000) { // symbolic link
  $type = 'l';
} elseif ( ($mode & 0x8000) == 0x8000) { // regular file
  $type = '-';
} elseif ( ($mode & 0x6000) == 0x6000) { //bBlock special file
  $type = 'b';
} elseif ( ($mode & 0x2000) == 0x2000) { // character special file
  $type = 'c';
} elseif ( ($mode & 0x1000) == 0x1000) { // named pipe
  $type = 'p';
} else { // unknown
  $type = '?';
}
// determine permissions
$owner['read']	= ($mode & 00400) ? 'r' : '-';
$owner['write']   = ($mode & 00200) ? 'w' : '-';
$owner['execute'] = ($mode & 00100) ? 'x' : '-';
$group['read']	= ($mode & 00040) ? 'r' : '-';
$group['write']   = ($mode & 00020) ? 'w' : '-';
$group['execute'] = ($mode & 00010) ? 'x' : '-';
$world['read']	= ($mode & 00004) ? 'r' : '-';
$world['write']   = ($mode & 00002) ? 'w' : '-';
$world['execute'] = ($mode & 00001) ? 'x' : '-';
// adjust for SUID, SGID and sticky bit
if ($mode & 0x800 ) $owner['execute'] = ($owner['execute'] == 'x') ? 's' : 'S';
if ($mode & 0x400 ) $group['execute'] = ($group['execute'] == 'x') ? 's' : 'S';
if ($mode & 0x200 ) $world['execute'] = ($world['execute'] == 'x') ? 't' : 'T';
return $type .
	   $owner['read'] . $owner['write'] . $owner['execute'] .
	   $group['read'] . $group['write'] . $group['execute'] .
	   $world['read'] . $world['write'] . $world['execute'];
 }
 function tep_remove($source) {
global $messageStack, $tep_remove_error;
if (isset($tep_remove_error)) $tep_remove_error = false;
if (is_dir($source)) {
  $dir = dir($source);
  while ($file = $dir->read()) {
	if ( ($file != '.') && ($file != '..') ) {
	  if (is_writeable($source . '/' . $file)) {
		tep_remove($source . '/' . $file);
	  } else {
		$messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source . '/' . $file), 'error');
		$tep_remove_error = true;
	  }
	}
  }
  $dir->close();
  if (is_writeable($source)) {
	rmdir($source);
  } else {
	$messageStack->add(sprintf(ERROR_DIRECTORY_NOT_REMOVEABLE, $source), 'error');
	$tep_remove_error = true;
  }
} else {
  if (is_writeable($source)) {
	unlink($source);
  } else {
	$messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source), 'error');
	$tep_remove_error = true;
  }
}
 }
////
// Output the tax percentage with optional padded decimals
 function tep_display_tax_value($value, $padding = TAX_DECIMAL_PLACES) {
if (strpos($value, '.')) {
  $loop = true;
  while ($loop) {
	if (substr($value, -1) == '0') {
	  $value = substr($value, 0, -1);
	} else {
	  $loop = false;
	  if (substr($value, -1) == '.') {
		$value = substr($value, 0, -1);
	  }
	}
  }
}
if ($padding > 0) {
  if ($decimal_pos = strpos($value, '.')) {
	$decimals = strlen(substr($value, ($decimal_pos+1)));
	for ($i=$decimals; $i<$padding; $i++) {
	  $value .= '0';
	}
  } else {
	$value .= '.';
	for ($i=0; $i<$padding; $i++) {
	  $value .= '0';
	}
  }
}
return $value;
 }
 function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
if (SEND_EMAILS != 'true') return false;
// Instantiate a new mail object
$message = new email(array('X-Mailer: osCommerce'));
// Build the text version
$text = strip_tags($email_text);
if (EMAIL_USE_HTML == 'true') {
  $message->add_html($email_text, $text);
} else {
  $message->add_text($text);
}
// Send message
$message->build_message();
$message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);
 }
 function tep_get_tax_class_title($tax_class_id) {
if ($tax_class_id == '0') {
  return TEXT_NONE;
} else {
  $classes_query = tep_db_query("select tax_class_title from " . TABLE_TAX_CLASS . " where tax_class_id = '" . (int)$tax_class_id . "'");
  $classes = tep_db_fetch_array($classes_query);
  return $classes['tax_class_title'];
}
 }
 function tep_banner_image_extension() {
if (function_exists('imagetypes')) {
  if (imagetypes() & IMG_PNG) {
	return 'png';
  } elseif (imagetypes() & IMG_JPG) {
	return 'jpg';
  } elseif (imagetypes() & IMG_GIF) {
	return 'gif';
  }
} elseif (function_exists('imagecreatefrompng') && function_exists('imagepng')) {
  return 'png';
} elseif (function_exists('imagecreatefromjpeg') && function_exists('imagejpeg')) {
  return 'jpg';
} elseif (function_exists('imagecreatefromgif') && function_exists('imagegif')) {
  return 'gif';
}
return false;
 }
////
// Wrapper function for round() for php3 compatibility
 function tep_round($value, $precision) {
if (PHP_VERSION < 4) {
  $exp = pow(10, $precision);
  return round($value * $exp) / $exp;
} else {
  return round($value, $precision);
}
 }
////
// Add tax to a products price
 function tep_add_tax($price, $tax, $override = false) {
if ( ( (DISPLAY_PRICE_WITH_TAX == 'true') || ($override == true) ) && ($tax > 0) ) {
  return $price + tep_calculate_tax($price, $tax);
} else {
  return $price;
}
 }
// Calculates Tax rounding the result
 function tep_calculate_tax($price, $tax) {
return $price * $tax / 100;
 }
////
// 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 = 0;
  while ($tax = tep_db_fetch_array($tax_query)) {
	$tax_multiplier += $tax['tax_rate'];
  }
  return $tax_multiplier;
} else {
  return 0;
}
 }
////
// Returns the tax rate for a tax class
// TABLES: tax_rates
 function tep_get_tax_rate_value($class_id) {
$tax_query = tep_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " where tax_class_id = '" . (int)$class_id . "' group by tax_priority");
if (tep_db_num_rows($tax_query)) {
  $tax_multiplier = 0;
  while ($tax = tep_db_fetch_array($tax_query)) {
	$tax_multiplier += $tax['tax_rate'];
  }
  return $tax_multiplier;
} else {
  return 0;
}
 }
 function tep_call_function($function, $parameter, $object = '') {
if ($object == '') {
  return call_user_func($function, $parameter);
} elseif (PHP_VERSION < 4) {
  return call_user_method($function, $object, $parameter);
} else {
  return call_user_func(array($object, $function), $parameter);
}
 }
 function tep_get_zone_class_title($zone_class_id) {
if ($zone_class_id == '0') {
  return TEXT_NONE;
} else {
  $classes_query = tep_db_query("select geo_zone_name from " . TABLE_GEO_ZONES . " where geo_zone_id = '" . (int)$zone_class_id . "'");
  $classes = tep_db_fetch_array($classes_query);
  return $classes['geo_zone_name'];
}
 }
 function tep_cfg_pull_down_zone_classes($zone_class_id, $key = '') {
$name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value');
$zone_class_array = array(array('id' => '0', 'text' => TEXT_NONE));
$zone_class_query = tep_db_query("select geo_zone_id, geo_zone_name from " . TABLE_GEO_ZONES . " order by geo_zone_name");
while ($zone_class = tep_db_fetch_array($zone_class_query)) {
  $zone_class_array[] = array('id' => $zone_class['geo_zone_id'],
							  'text' => $zone_class['geo_zone_name']);
}
return tep_draw_pull_down_menu($name, $zone_class_array, $zone_class_id);
 }
 function tep_cfg_pull_down_order_statuses($order_status_id, $key = '') {
global $languages_id;
$name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value');
$statuses_array = array(array('id' => '0', 'text' => TEXT_DEFAULT));
$statuses_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_name");
while ($statuses = tep_db_fetch_array($statuses_query)) {
  $statuses_array[] = array('id' => $statuses['orders_status_id'],
							'text' => $statuses['orders_status_name']);
}
return tep_draw_pull_down_menu($name, $statuses_array, $order_status_id);
 }
 function tep_get_order_status_name($order_status_id, $language_id = '') {
global $languages_id;
if ($order_status_id < 1) return TEXT_DEFAULT;
if (!is_numeric($language_id)) $language_id = $languages_id;
$status_query = tep_db_query("select orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id = '" . (int)$order_status_id . "' and language_id = '" . (int)$language_id . "'");
$status = tep_db_fetch_array($status_query);
return $status['orders_status_name'];
 }
////
// Return a random value
 function tep_rand($min = null, $max = null) {
static $seeded;
if (!$seeded) {
  mt_srand((double)microtime()*1000000);
  $seeded = true;
}
if (isset($min) && isset($max)) {
  if ($min >= $max) {
	return $min;
  } else {
	return mt_rand($min, $max);
  }
} else {
  return mt_rand();
}
 }
// nl2br() prior PHP 4.2.0 did not convert linefeeds on all OSs (it only converted \n)
 function tep_convert_linefeeds($from, $to, $string) {
if ((PHP_VERSION < "4.0.5") && is_array($from)) {
  return ereg_replace('(' . implode('|', $from) . ')', $to, $string);
} else {
  return str_replace($from, $to, $string);
}
 }
 function tep_string_to_int($string) {
return (int)$string;
 }
////
// Parse and secure the cPath parameter values
 function tep_parse_category_path($cPath) {
// make sure the category IDs are integers
$cPath_array = array_map('tep_string_to_int', explode('_', $cPath));
// make sure no duplicate category IDs exist which could lock the server in a loop
$tmp_array = array();
$n = sizeof($cPath_array);
for ($i=0; $i<$n; $i++) {
  if (!in_array($cPath_array[$i], $tmp_array)) {
	$tmp_array[] = $cPath_array[$i];
  }
}
return $tmp_array;
 }

 //BOF SEO images
	// Return the manufacturers NAME
	// TABLES: manufacturers
	  function tep_get_manufacturer_name($manufacturer_id) {
		$manufacturer_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$manufacturer_id . "'");
		$manufacturer = tep_db_fetch_array($manufacturer_query);
		return $manufacturer['manufacturers_name'];
	  }
	//EOF SEO images
//MultiProducts Manager 12/31/2011 //
function tep_array_merge($array1, $array2, $array3 = '') {
if ($array3 == '') $array3 = array();
if (function_exists('array_merge')) {
  $array_merged = array_merge($array1, $array2, $array3);
} else {
  while (list($key, $val) = each($array1)) $array_merged[$key] = $val;
  while (list($key, $val) = each($array2)) $array_merged[$key] = $val;
  if (sizeof($array3) > 0) while (list($key, $val) = each($array3)) $array_merged[$key] = $val;
}
return (array) $array_merged;
 }
?>

 

The code for my tool.php page

 

<?php
/*
 $Id: tools.php 1739 2007-12-20 00:52:16Z hpdl $
 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com
 Copyright © 2002 osCommerce
 Released under the GNU General Public License
*/
?>
<!-- tools //-->
	  <tr>
	    <td>
<?php
 $heading = array();
 $contents = array();
 $heading[] = array('text'  => BOX_HEADING_TOOLS,
				 'link'  => tep_href_link(FILENAME_BACKUP, 'selected_box=tools'));
 if ($selected_box == 'tools') {
   $contents[] = array('text'  => '<a href="' . tep_href_link(FILENAME_BACKUP) . '" class="menuBoxContentLink">' . BOX_TOOLS_BACKUP . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_BANNER_MANAGER) . '" class="menuBoxContentLink">' . BOX_TOOLS_BANNER_MANAGER . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_CACHE) . '" class="menuBoxContentLink">' . BOX_TOOLS_CACHE . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_DEFINE_LANGUAGE) . '" class="menuBoxContentLink">' . BOX_TOOLS_DEFINE_LANGUAGE . '</a><br>'.
							   '<a href="' . tep_href_link(FILENAME_FILE_MANAGER) . '" class="menuBoxContentLink">' . BOX_TOOLS_FILE_MANAGER . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_MAIL) . '" class="menuBoxContentLink">' . BOX_TOOLS_MAIL . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_NEWSLETTERS) . '" class="menuBoxContentLink">' . BOX_TOOLS_NEWSLETTER_MANAGER . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_SERVER_INFO) . '" class="menuBoxContentLink">' . BOX_TOOLS_SERVER_INFO . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_SITEMAP) . '" class="menuBoxContentLink">' . BOX_TOOLS_SITEMAP . '</a><br>' .
							   '<a href="' . tep_href_link(FILENAME_WHOS_ONLINE) . '" class="menuBoxContentLink">' . BOX_TOOLS_WHOS_ONLINE . '</a>');


 }
 $box = new box;
 echo $box->menuBox($heading, $contents);
?>
	    </td>
	  </tr>
<!-- tools_eof //-->

 

Any assistance much appreciated

Edited by kliksys

Knowledge is useless, unless transferred.

Share this post


Link to post
Share on other sites

I am installing to version 2.2. It says to go to catalog/includes/modules/boxes/bm_information.php. I do not have a boxes subfolder in my catalog/includes/modules. Can someone please advise?

Share this post


Link to post
Share on other sites

How do I add the code to the schedule Brasilia or São Paulo Brazil?

 

This is the code

 

<option value=au_cdt>ACDT - Australian Central Daylight Time (Australia)</option>
<option value=au_cst>ACST - Australian Central Standard Time (Australia)</option>
<option value=na_adt>ADT - Atlantic Daylight Time (North America)</option>
<option value=au_edt>AEDT - Australian Eastern Daylight Time (Australia)</option>
<option value=au_est>AEST - Australian Eastern Standard Time (Australia)</option>
<option value=na_akdt>AKDT - Alaska Daylight Time (North America)</option>
<option value=na_akst>AKST - Alaska Standard Time (North America)</option>
<option value=na_ast>AST - Atlantic Standard Time (North America)</option>
<option value=au_wdt>AWDT - Australian Western Daylight Time (Australia)</option>
<option value=au_wst>AWST - Australian Western Standard Time (Australia)</option>
<option value=eu_bst>BST - British Summer Time (Europe)</option>
<option value=na_cdt>CDT - Central Daylight Time (North America)</option>
<option value=eu_cest>CEDT - Central European Daylight Time (Europe)</option>
<option value=eu_cest>CEST - Central European Summer Time (Europe)</option>
<option value=eu_cet>CET - Central European Time (Europe)</option>
<option value=au_cst>CST - Central Standard Time (Australia)</option>
<option value=na_cst>CST - Central Standard Time (North America)</option>
<option value=au_cdt>CST - Central Summer(Daylight) Time (Australia)</option>
<option value=au_cxt>CXT - Christmas Island Time (Australia)</option>
<option value=na_edt>EDT - Eastern Daylight Time (North America)</option>
<option value=eu_eest>EEDT - Eastern European Daylight Time (Europe)</option>
<option value=eu_eest>EEST - Eastern European Summer Time (Europe)</option>
<option value=eu_eet>EET - Eastern European Time (Europe)</option>
<option value=au_est>EST - Eastern Standard Time (Australia)</option>
<option value=na_est>EST - Eastern Standard Time (North America)</option>
<option value=au_edt>EST - Eastern Summer(Daylight) Time (Australia)</option>
<option value=eu_gmt>GMT - Greenwich Mean Time (Europe)</option>
<option value=na_adt>HAA - Heure Avancée de l'Atlantique (North America)</option>
<option value=na_cdt>HAC - Heure Avancée du Centre (North America)</option>
<option value=na_hadt>HADT - Hawaii-Aleutian Daylight Time (North America)</option>
<option value=na_edt>HAE - Heure Avancée de l'Est (North America)</option>
<option value=na_pdt>HAP - Heure Avancée du Pacifique (North America)</option>
<option value=na_mdt>HAR - Heure Avancée des Rocheuses (North America)</option>
<option value=na_hast>HAST - Hawaii-Aleutian Standard Time (North America)</option>
<option value=na_ndt>HAT - Heure Avancée de Terre-Neuve (North America)</option>
<option value=na_akdt>HAY - Heure Avancée du Yukon (North America)</option>
<option value=na_ast>HNA - Heure Normale de l'Atlantique (North America)</option>
<option value=na_cst>HNC - Heure Normale du Centre (North America)</option>
<option value=na_est>HNE - Heure Normale de l'Est (North America)</option>
<option value=na_pst>HNP - Heure Normale du Pacifique (North America)</option>
<option value=na_mst>HNR - Heure Normale des Rocheuses (North America)</option>
<option value=na_nst>HNT - Heure Normale de Terre-Neuve (North America)</option>
<option value=na_akst>HNY - Heure Normale du Yukon (North America)</option>
<option value=eu_ist>IST - Irish Summer Time (Europe)</option>
<option value=na_mdt>MDT - Mountain Daylight Time (North America)</option>
<option value=eu_cest>MESZ - Mitteleuropäische Sommerzeit (Europe)</option>
<option value=eu_cet>MEZ - Mitteleuropäische Zeit (Europe)</option>
<option value=na_mst>MST - Mountain Standard Time (North America)</option>
<option value=na_ndt>NDT - Newfoundland Daylight Time (North America)</option>
<option value=au_nft>NFT - Norfolk (Island) Time (Australia)</option>
<option value=na_nst>NST - Newfoundland Standard Time (North America)</option>
<option value=na_pdt>PDT - Pacific Daylight Time (North America)</option>
<option value=na_pst selected>PST - Pacific Standard Time (North America)</option>
<option value=eu_gmt>UTC - Coordinated Universal Time (Europe)</option>
<option value=eu_west>WEDT - Western European Daylight Time (Europe)</option>
<option value=eu_west>WEST - Western European Summer Time (Europe)</option>
<option value=eu_wet>WET - Western European Time (Europe)</option>
<option value=au_wst>WST - Western Standard Time (Australia)</option>
<option value=au_wdt>WST - Western Summer(Daylight) Time (Australia)</option>

Edited by Nisinho Brazil

Share this post


Link to post
Share on other sites

I am installing to version 2.2. It says to go to catalog/includes/modules/boxes/bm_information.php. I do not have a boxes subfolder in my catalog/includes/modules. Can someone please advise?

 

You need to download the correct set of files for the version of oscommerce you are using.


REMEMBER BACKUP, BACKUP AND BACKUP

Get the latest Responsive osCommerce CE (community edition) here

It's very easy to over complicate what are simple things in life

Share this post


Link to post
Share on other sites

Just installed Dynamic Sitemap v4.1 for my fresh install of Osc 2.3.3

 

Working fine with no errors on both catalog and admin.

Meanwhile in admin side I have very short list of "Files in Catalog"

 

Dynamic_Sitemap.php

checkout_confirmation.php

checkout_payment.php

checkout_payment_address.php

checkout_process.php

checkout_shipping.php

checkout_shipping_address.php

checkout_success.php

create_account_success.php

info_shopping_cart.php

product_info.php

tell_a_friend.php

 

Where are all others? Anybody can confirm this issue and sugest solution.

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

I found time to sort it just for fun.

 

it has IsViewable function adjusted to Osc2.2 version

 

replace it by

function IsViewable($file) {
   if (($fp = @file($file))) {
    for ($idx = 0; $idx < count($fp); ++$idx) {
	    if (strpos($fp[$idx], "template_top.php") !== FALSE) {
		    return true;
	    }   
    }
   } 
   return false;
}

 

The advantage of this contribution is it creates sitemaps for both human and robots when all others do one thing only.

Share this post


Link to post
Share on other sites

Actually, that is the disadvantage and is why I stopped supporting it. It may work fine for your shop but the url's in the map files are not created correctly for all sites and links to secure pages are included in them. It also doesn't have many of the SEO-type features that Sitemap SEO has.

Share this post


Link to post
Share on other sites

Run install.sql on your database. This will add the needed database table, populate it with the default list of excluded files and add the new configuration variables for the catalog side site map.

 

is the only part I don't understand what to do with.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×