Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

sorry guys another problem!


Guest

Recommended Posts

just upgraded to the new version of oscommerce however i get the following warning in my control panel!

 

Warning: call_user_func(tep_cfg_get_zone_name): First argument is expected to be a valid callback in /home/sourcem/public_html/shop/admin/includes/functions/general.php on line 1214

 

 

can someone shed some light!

 

many thanks!

Link to comment
Share on other sites

If your previous problem was solved, please go back to that thread and say so.... it helps other people to know there was a solution and what it was..... :shock:

 

Did you run the install script which updates the database?

Link to comment
Share on other sites

Any help on this error message would be great as I just installed the PayPal IPN lastnight and I'm getting the exact same error message. I keep removing a trailing space at the end of the general.php, but it keeps coming back.

 

Thanks!

Terri

Help me I'm lost in PHP and I don't have a map!

Link to comment
Share on other sites

If I got an error like this, the first thing that I would do if I got an error like this is look at line 1214 in context. I'd try doing that for you, but I do not know if my general.php matches yours. It might be a different version (I'm using 2.2MS1), or there may be customizations that change the line numbering. If you post the code with context, someone might be able to help better, e.g.

 

context

context

context

1214:note which one is line 1214, so we can tell it from the context

context

context

context

 

On a unix box, I would do this with

tail +1211 general.php | head -7

copy and paste, and add the 1214: manually.

 

Hope this helps,

Matt

I love deadlines. I like the whooshing sound they make as they fly by. ---Douglas Adams

Link to comment
Share on other sites

This has got to be a common problem... 2 in the same day! I never touched the general.php with the PayPal IPN contrib and the only problem I see is the recuring trailing space at the end of all the code that keeps coming back no matter how many time I remove it.

Help me I'm lost in PHP and I don't have a map!

Link to comment
Share on other sites

Sorry I was a bit short and testy. I'm very cross eyed right now. This is driving me nuts. I'm going to include my whole general.php here and I hope someone can see what the problem is.

I've never been in this file and I'm so new to php that I don't know what I'm looking for.

 

<?php

 

/*

 

 $Id: general.php,v 1.148 2002/11/25 10:41:34 dgw_ Exp $

 

 

 

 osCommerce, Open Source E-Commerce Solutions

 

 http://www.oscommerce.com

 

 

 

 Copyright (c) 2002 osCommerce

 

 

 

 Released under the GNU General Public License

 

*/

 

 

 

////

 

// Redirect to another page or site

 

 function tep_redirect($url) {

 

   global $logger;

 

 

 

   header('Location: ' . $url);

 

 

 

   if (STORE_PAGE_PARSE_TIME == 'true') {

 

     if (!is_object($logger)) $logger = new logger;

 

     $logger->timer_stop();

 

   }

 

 

 

   exit;

 

 }

 

 

 

 function tep_customers_name($customers_id) {

 

   $customers = tep_db_query("select customers_firstname, customers_lastname from " . TABLE_CUSTOMERS . " where customers_id = '" . $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 = '" . $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 = '" . $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') && (!tep_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 (@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_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;

 

 }

 

 

 

 function tep_in_array($lookup_value, $lookup_array) {

 

   if (function_exists('in_array')) {

 

     if (in_array($lookup_value, $lookup_array)) return true;

 

   } else {

 

     reset($lookup_array);

 

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

 

       if ($value == $lookup_value) return true;

 

     }

 

   }

 

 

 

   return false;

 

 }

 

 

 

 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 = '" . $languages_id . "' and cd.categories_id = '" . $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 = '" . $languages_id . "' and c.parent_id = '" . $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 = '" . $languages_id . "' order by products_name");

 

   while ($products = tep_db_fetch_array($products_query)) {

 

     if (!tep_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 = '" . $options_id . "' and language_id = '" . $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 = '" . $values_id . "' and language_id = '" . $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 ( ($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; $i < strlen($string); $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 = '" . $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($zone_id) {

 

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

 

 

 

   if (!tep_db_num_rows($zone_query)) {

 

     return $zone_id;

 

   } else {

 

     $zone = tep_db_fetch_array($zone_query);

 

     return $zone['zone_name'];

 

   }

 

 }

 

 

 

 function tep_not_null($value) {

 

   if (is_array($value)) {

 

     if (sizeof($value) > 0) {

 

       return true;

 

     } else {

 

       return false;

 

     }

 

   } else {

 

     if (($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 = '" . $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_format_address

 

//

 

// Arguments : customers_id, address_id, html

 

//

 

// Return : properly formatted address

 

//

 

// Description : This function will lookup the Addres format from the countries database

 

//    and properly format the address label.

 

//

 

//////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 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 = '" . $address_format_id . "'");

 

   $address_format = tep_db_fetch_array($address_format_query);

 

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

   $country_id = $address['country_id'];

 

   $zone_id = $address['zone_id'];

 

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

 

   $zip = $postcode;

 

   $country = tep_get_country_name($country_id);

 

   $state = tep_get_zone_code($country_id, $zone_id, $state);

 

 

 

   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 ($firstname == '') $firstname = addslashes($address['name']);

 

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

 

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

 

 

 

   $fmt = $address_format['format'];

 

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

 

   $address = stripslashes($address);

 

 

 

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

 

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

 

   }

 

 

 

   return $boln . $address . $eoln;

 

 }

 

 

 

 ////////////////////////////////////////////////////////////////////////////////////////////////

 

 //

 

 // 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 = '" . $country . "' and zone_id = '" . $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 = '" . $category_id . "' and language_id = '" . $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 = '" . $orders_status_id . "' and language_id = '" . $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 = '" . $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 = '" . $product_id . "' and language_id = '" . $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 = '" . $product_id . "' and language_id = '" . $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 = '" . $product_id . "' and language_id = '" . $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 = '" . $manufacturer_id . "' and languages_id = '" . $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 = '" . $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 = '" . $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 = '" . $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 = '" . $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 = '" . $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 = tep_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;

 

 }

 

 

 

////

 

// 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);

 

 }

 

 

 

////

 

// 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 = '" . $products_id . "'");

 

   } elseif ($status == '0') {

 

     return tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0', products_last_modified = now() where products_id = '" . $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 = '" . $specials_id . "'");

 

   } elseif ($status == '0') {

 

     return tep_db_query("update " . TABLE_SPECIALS . " set status = '0', date_status_change = now() where specials_id = '" . $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 = '') {

 

   for ($i = 0, $n = sizeof($select_array); $i < $n; $i++) {

 

     $name = (($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_get_uploaded_file($filename) {

 

   if (isset($_FILES[$filename])) {

 

     $uploaded_file = array('name' => $_FILES[$filename]['name'],

 

                            'type' => $_FILES[$filename]['type'],

 

                            'size' => $_FILES[$filename]['size'],

 

                            'tmp_name' => $_FILES[$filename]['tmp_name']);

 

   } elseif (isset($GLOBALS['HTTP_POST_FILES'][$filename])) {

 

     global $HTTP_POST_FILES;

 

 

 

     $uploaded_file = array('name' => $HTTP_POST_FILES[$filename]['name'],

 

                            'type' => $HTTP_POST_FILES[$filename]['type'],

 

                            'size' => $HTTP_POST_FILES[$filename]['size'],

 

                            'tmp_name' => $HTTP_POST_FILES[$filename]['tmp_name']);

 

   } else {

 

     $uploaded_file = array('name' => $GLOBALS[$filename . '_name'],

 

                            'type' => $GLOBALS[$filename . '_type'],

 

                            'size' => $GLOBALS[$filename . '_size'],

 

                            'tmp_name' => $GLOBALS[$filename]);

 

   }

 

 

 

   return $uploaded_file;

 

 }

 

 

 

// the $filename parameter is an array with the following elements:

 

// name, type, size, tmp_name

 

 function tep_copy_uploaded_file($filename, $target) {

 

   if (substr($target, -1) != '/') $target .= '/';

 

 

 

   $target .= $filename['name'];

 

 

 

   move_uploaded_file($filename['tmp_name'], $target);

 

 }

 

 

 

// return a local directory path (without trailing slash)

 

 function tep_get_local_path($path) {

 

   if (substr($path, -1) == '/') $path = substr($path, 0, -1);

 

 

 

   return $path;

 

 }

 

 

 

 function tep_array_shift(&$array) {

 

   if (function_exists('array_shift')) {

 

     return array_shift($array);

 

   } else {

 

     $i = 0;

 

     $shifted_array = array();

 

     reset($array);

 

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

 

       if ($i > 0) {

 

         $shifted_array[$key] = $value;

 

       } else {

 

         $return = $array[$key];

 

       }

 

       $i++;

 

     }

 

     $array = $shifted_array;

 

 

 

     return $return;

 

   }

 

 }

 

 

 

 function tep_array_reverse($array) {

 

   if (function_exists('array_reverse')) {

 

     return array_reverse($array);

 

   } else {

 

     $reversed_array = array();

 

     for ($i=sizeof($array)-1; $i>=0; $i--) {

 

       $reversed_array[] = $array[$i];

 

     }

 

     return $reversed_array;

 

   }

 

 }

 

 

 

 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 = '" . $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 = '" . $categories['categories_id'] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . $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] = tep_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 = '" . $id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . $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_remove_category($category_id) {

 

   $category_image_query = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . tep_db_input($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 = '" . tep_db_input($category_id) . "'");

 

   tep_db_query("delete from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . tep_db_input($category_id) . "'");

 

   tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . tep_db_input($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 = '" . tep_db_input($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 = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . tep_db_input($product_id) . "'");

 

   tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . tep_db_input($product_id) . "'");

 

 

 

   $product_reviews_query = tep_db_query("select reviews_id from " . TABLE_REVIEWS . " where products_id = '" . tep_db_input($product_id) . "'");

 

   while ($product_reviews = tep_db_fetch_array($product_reviews_query)) {

 

     tep_db_query("delete from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . $product_reviews['reviews_id'] . "'");

 

   }

 

   tep_db_query("delete from " . TABLE_REVIEWS . " where products_id = '" . tep_db_input($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 = '" . tep_db_input($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 = '" . $order['products_id'] . "'");

 

     }

 

   }

 

 

 

   tep_db_query("delete from " . TABLE_ORDERS . " where orders_id = '" . tep_db_input($order_id) . "'");

 

   tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . tep_db_input($order_id) . "'");

 

   tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . tep_db_input($order_id) . "'");

 

   tep_db_query("delete from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . tep_db_input($order_id) . "'");

 

   tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . tep_db_input($order_id) . "'");

 

 }

 

 

 

 function tep_reset_cache_block($cache_block) {

 

   global $cache_blocks;

 

 


Help me I'm lost in PHP and I don't have a map!

Link to comment
Share on other sites

My zones are set.. have been, but I reset them anyways. Still not working. Am I missing a zone setting somewhere other than my NY state zone?

Terri

Help me I'm lost in PHP and I don't have a map!

Link to comment
Share on other sites

I am so, soooo sorry... my error message is different. :oops:

Just a little bit different, but here it is.... told ya all I was getting cross eyed.

Warning: call_user_func(tep_get_order_status_name) [function.call-user-func]: First argument is expected to be a valid callback in /home2/thistlem/public_html/shoppingcart/admin/includes/functions/general.php on line 1232

 

Anyhelp would be great!

Terri

Help me I'm lost in PHP and I don't have a map!

Link to comment
Share on other sites

  • 2 months later...

I am getting an error in my admin panel after installing the order without account. I did did not change the general.php page but it is giving me an error. This is the error

Warning: call_user_func(Null): First argument is expected to be a valid callback in /home/u5/catalog/admin/includes/functions/general.php on line 1269

 

Any suggestions?

 

Chris

 

I am also going to include the code from that pge incase it helps.

 

<?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 ( (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;

 

   }

 

 }

 

 

 

////

 

// 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($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)));

 

   }

 

 }

 

 

 

////

 

// Parse search string into indivual objects

 

 function tep_parse_search_string($search_str = '', &$objects) {

 

   $search_str = trim(strtolower($search_str));

 

 

 

// Break up $search_str on whitespace; quoted string will be reconstructed later

 

   $pieces = split('[[:space:]]+', $search_str);

 

   $objects = array();

 

   $tmpstring = '';

 

   $flag = '';

 

 

 

   for ($k=0; $k<count($pieces); $k++) {

 

     while (substr($pieces[$k], 0, 1) == '(') {

 

       $objects[] = '(';

 

       if (strlen($pieces[$k]) > 1) {

 

         $pieces[$k] = substr($pieces[$k], 1);

 

       } else {

 

         $pieces[$k] = '';

 

       }

 

     }

 

 

 

     $post_objects = array();

 

 

 

     while (substr($pieces[$k], -1) == ')')  {

 

       $post_objects[] = ')';

 

       if (strlen($pieces[$k]) > 1) {

 

         $pieces[$k] = substr($pieces[$k], 0, -1);

 

       } else {

 

         $pieces[$k] = '';

 

       }

 

     }

 

 

 

// Check individual words

 

 

 

     if ( (substr($pieces[$k], -1) != '"') && (substr($pieces[$k], 0, 1) != '"') ) {

 

       $objects[] = trim($pieces[$k]);

 

 

 

       for ($j=0; $j<count($post_objects); $j++) {

 

         $objects[] = $post_objects[$j];

 

       }

 

     } else {

 

/* This means that the $piece is either the beginning or the end of a string.

 

  So, we'll slurp up the $pieces and stick them together until we get to the

 

  end of the string or run out of pieces.

 

*/

 

 

 

// Add this word to the $tmpstring, starting the $tmpstring

 

       $tmpstring = trim(ereg_replace('"', ' ', $pieces[$k]));

 

 

 

// Check for one possible exception to the rule. That there is a single quoted word.

 

       if (substr($pieces[$k], -1 ) == '"') {

 

// Turn the flag off for future iterations

 

         $flag = 'off';

 

 

 

         $objects[] = trim($pieces[$k]);

 

 

 

         for ($j=0; $j<count($post_objects); $j++) {

 

           $objects[] = $post_objects[$j];

 

         }

 

 

 

         unset($tmpstring);

 

 

 

// Stop looking for the end of the string and move onto the next word.

 

         continue;

 

       }

 

 

 

// Otherwise, turn on the flag to indicate no quotes have been found attached to this word in the string.

 

       $flag = 'on';

 

 

 

// Move on to the next word

 

       $k++;

 

 

 

// Keep reading until the end of the string as long as the $flag is on

 

 

 

       while ( ($flag == 'on') && ($k < count($pieces)) ) {

 

         while (substr($pieces[$k], -1) == ')') {

 

           $post_objects[] = ')';

 

           if (strlen($pieces[$k]) > 1) {

 

             $pieces[$k] = substr($pieces[$k], 0, -1);

 

           } else {

 

             $pieces[$k] = '';

 

           }

 

         }

 

 

 

// If the word doesn't end in double quotes, append it to the $tmpstring.

 

         if (substr($pieces[$k], -1) != '"') {

 

// Tack this word onto the current string entity

 

           $tmpstring .= ' ' . $pieces[$k];

 

 

 

// Move on to the next word

 

           $k++;

 

           continue;

 

         } else {

 

/* If the $piece ends in double quotes, strip the double quotes, tack the

 

  $piece onto the tail of the string, push the $tmpstring onto the $haves,

 

  kill the $tmpstring, turn the $flag "off", and return.

 

*/

 

           $tmpstring .= ' ' . trim(ereg_replace('"', ' ', $pieces[$k]));

 

 

 

// Push the $tmpstring onto the array of stuff to search for

 

           $objects[] = trim($tmpstring);

 

 

 

           for ($j=0; $j<count($post_objects); $j++) {

 

             $objects[] = $post_objects[$j];

 

           }

 

 

 

           unset($tmpstring);

 

 

 

// Turn off the flag to exit the loop

 

           $flag = 'off';

 

         }

 

       }

 

     }

 

   }

 

 

 

// add default logical operators if needed

 

   $temp = array();

 

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

 

     $temp[] = $objects[$i];

 

     if ( ($objects[$i] != 'and') &&

 

          ($objects[$i] != 'or') &&

 

          ($objects[$i] != '(') &&

 

          ($objects[$i+1] != 'and') &&

 

          ($objects[$i+1] != 'or') &&

 

          ($objects[$i+1] != ')') ) {

 

       $temp[] = ADVANCED_SEARCH_DEFAULT_OPERATOR;

 

     }

 

   }

 

   $temp[] = $objects[$i];

 

   $objects = $temp;

 

 

 

   $keyword_count = 0;

 

   $operator_count = 0;

 

   $balance = 0;

 

   for($i=0; $i<count($objects); $i++) {

 

     if ($objects[$i] == '(') $balance --;

 

     if ($objects[$i] == ')') $balance ++;

 

     if ( ($objects[$i] == 'and') || ($objects[$i] == 'or') ) {

 

       $operator_count ++;

 

     } elseif ( ($objects[$i]) && ($objects[$i] != '(') && ($objects[$i] != ')') ) {

 

       $keyword_count ++;

 

     }

 

   }

 

 

 

   if ( ($operator_count < $keyword_count) && ($balance == 0) ) {

 

     return true;

 

   } else {

 

     return false;

 

   }

 

 }

 

 

 

////

 

// Check date

 

 function tep_checkdate($date_to_check, $format_string, &$date_array) {

 

   $separator_idx = -1;

 

 

 

   $separators = array('-', ' ', '/', '.');

 

   $month_abbr = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');

 

   $no_of_days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

 

 

 

   $format_string = strtolower($format_string);

 

 

 

   if (strlen($date_to_check) != strlen($format_string)) {

 

     return false;

 

   }

 

 

 

   $size = sizeof($separators);

 

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

 

     $pos_separator = strpos($date_to_check, $separators[$i]);

 

     if ($pos_separator != false) {

 

       $date_separator_idx = $i;

 

       break;

 

     }

 

   }

 

 

 

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

 

     $pos_separator = strpos($format_string, $separators[$i]);

 

     if ($pos_separator != false) {

 

       $format_separator_idx = $i;

 

       break;

 

     }

 

   }

 

 

 

   if ($date_separator_idx != $format_separator_idx) {

 

     return false;

 

   }

 

 

 

   if ($date_separator_idx != -1) {

 

     $format_string_array = explode( $separators[$date_separator_idx], $format_string );

 

     if (sizeof($format_string_array) != 3) {

 

       return false;

 

     }

 

 

 

     $date_to_check_array = explode( $separators[$date_separator_idx], $date_to_check );

 

     if (sizeof($date_to_check_array) != 3) {

 

       return false;

 

     }

 

 

 

     $size = sizeof($format_string_array);

 

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

 

       if ($format_string_array[$i] == 'mm' || $format_string_array[$i] == 'mmm') $month = $date_to_check_array[$i];

 

       if ($format_string_array[$i] == 'dd') $day = $date_to_check_array[$i];

 

       if ( ($format_string_array[$i] == 'yyyy') || ($format_string_array[$i] == 'aaaa') ) $year = $date_to_check_array[$i];

 

     }

 

   } else {

 

     if (strlen($format_string) == 8 || strlen($format_string) == 9) {

 

       $pos_month = strpos($format_string, 'mmm');

 

       if ($pos_month != false) {

 

         $month = substr( $date_to_check, $pos_month, 3 );

 

         $size = sizeof($month_abbr);

 

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

 

           if ($month == $month_abbr[$i]) {

 

             $month = $i;

 

             break;

 

           }

 

         }

 

       } else {

 

         $month = substr($date_to_check, strpos($format_string, 'mm'), 2);

 

       }

 

     } else {

 

       return false;

 

     }

 

 

 

     $day = substr($date_to_check, strpos($format_string, 'dd'), 2);

 

     $year = substr($date_to_check, strpos($format_string, 'yyyy'), 4);

 

   }

 

 

 

   if (strlen($year) != 4) {

 

     return false;

 

   }

 

 

 

   if (!settype($year, 'integer') || !settype($month, 'integer') || !settype($day, 'integer')) {

 

     return false;

 

   }

 

 

 

   if ($month > 12 || $month < 1) {

 

     return false;

 

   }

 

 

 

   if ($day < 1) {

 

     return false;

 

   }

 

 

 

   if (tep_is_leap_year($year)) {

 

     $no_of_days[1] = 29;

 

   }

 

 

 

   if ($day > $no_of_days[$month - 1]) {

 

     return false;

 

   }

 

 

 

   $date_array = array($year, $month, $day);

 

 

 

   return true;

 

 }

 

 

 

////

 

// Check if year is a leap year

 

 function tep_is_leap_year($year) {

 

   if ($year % 100 == 0) {

 

     if ($year % 400 == 0) return true;

 

   } else {

 

     if (($year % 4) == 0) return true;

 

   }

 

 

 

   return false;

 

 }

 

 

 

////

 

// Return table heading with sorting capabilities

 

 function tep_create_sort_heading($sortby, $colnum, $heading) {

 

   global $PHP_SELF;

 

 

 

   $sort_prefix = '';

 

   $sort_suffix = '';

 

 

 

   if ($sortby) {

 

     $sort_prefix = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . tep_output_string(TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading) . '" class="productListing-heading">';

 

     $sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? '+' : '-') : '') . '</a>';

 

   }

 

 

 

   return $sort_prefix . $heading . $sort_suffix;

 

 }

 

 

 

////

 

// Recursively go through the categories and retreive all parent categories IDs

 

// TABLES: categories

 

 function tep_get_parent_categories(&$categories, $categories_id) {

 

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

 

   while ($parent_categories = tep_db_fetch_array($parent_categories_query)) {

 

     if ($parent_categories['parent_id'] == 0) return true;

 

     $categories[sizeof($categories)] = $parent_categories['parent_id'];

 

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

 

       tep_get_parent_categories($categories, $parent_categories['parent_id']);

 

     }

 

   }

 

 }

 

 

 

////

 

// Construct a category path to the product

 

// TABLES: products_to_categories

 

 function tep_get_product_path($products_id) {

 

   $cPath = '';

 

 

 

   $category_query = tep_db_query("select p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = '" . (int)$products_id . "' and p.products_status = '1' and p.products_id = p2c.products_id limit 1");

 

   if (tep_db_num_rows($category_query)) {

 

     $category = tep_db_fetch_array($category_query);

 

 

 

     $categories = array();

 

     tep_get_parent_categories($categories, $category['categories_id']);

 

 

 

     $categories = array_reverse($categories);

 

 

 

     $cPath = implode('_', $categories);

 

 

 

     if (tep_not_null($cPath)) $cPath .= '_';

 

     $cPath .= $category['categories_id'];

 

   }

 

 

 

   return $cPath;

 

 }

 

 

 

////

 

// Return a product ID with attributes

 

 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;

 

 }

 

 

 

////

 

// Return a product ID from a product ID with attributes

 

 function tep_get_prid($uprid) {

 

   $pieces = explode('{', $uprid);

 

 

 

   return $pieces[0];

 

 }

 

 

 

////

 

// Return a customer greeting

 

 function tep_customer_greeting() {

 

   global $customer_id, $customer_first_name;

 

 

 

   if (tep_session_is_registered('customer_first_name') && tep_session_is_registered('customer_id')) {

 

     $greeting_string = sprintf(TEXT_GREETING_PERSONAL, tep_output_string_protected($customer_first_name), tep_href_link(FILENAME_PRODUCTS_NEW));

 

   } else {

 

     $greeting_string = sprintf(TEXT_GREETING_GUEST, tep_href_link(FILENAME_LOGIN, '', 'SSL'), tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

 

   }

 

 

 

   return $greeting_string;

 

 }

 

 

 

 

 

////

 

//! Send email (text/html) using MIME

 

// This is the central mail function. The SMTP Server should be configured

 

// correct in php.ini

 

// Parameters:

 

// $to_name           The name of the recipient, e.g. "Jan Wildeboer"

 

// $to_email_address  The eMail address of the recipient,

 

//                    e.g. [email protected]

 

// $email_subject     The subject of the eMail

 

// $email_text        The text of the eMail, may contain HTML entities

 

// $from_email_name   The name of the sender, e.g. Shop Administration

 

// $from_email_adress The eMail address of the sender,

 

//                    e.g. [email protected]

 

 

 

 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 Mailer'));

 

 

 

   // 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);

 

 }

 

 

 

////

 

// Check if product has attributes

 

 function tep_has_product_attributes($products_id) {

 

   $attributes_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "'");

 

   $attributes = tep_db_fetch_array($attributes_query);

 

 

 

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

 

     return true;

 

   } else {

 

     return false;

 

   }

 

 }

 

 

 

////

 

// Get the number of times a word/character is present in a string

 

 function tep_word_count($string, $needle) {

 

   $temp_array = split($needle, $string);

 

 

 

   return sizeof($temp_array);

 

 }

 

 

 

 function tep_count_modules($modules = '') {

 

   $count = 0;

 

 

 

   if (empty($modules)) return $count;

 

 

 

   $modules_array = split(';', $modules);

 

 

 

   for ($i=0, $n=sizeof($modules_array); $i<$n; $i++) {

 

     $class = substr($modules_array[$i], 0, strrpos($modules_array[$i], '.'));

 

 

 

     if (is_object($GLOBALS[$class])) {

 

       if ($GLOBALS[$class]->enabled) {

 

         $count++;

 

       }

 

     }

 

   }

 

 

 

 

 

   return $count;

 

 }

 

 

 

 function tep_count_payment_modules() {

 

   return tep_count_modules(MODULE_PAYMENT_INSTALLED);

 

 }

 

 

 

 function tep_count_shipping_modules() {

 

   return tep_count_modules(MODULE_SHIPPING_INSTALLED);

 

 }

 

 

 

 function tep_create_random_value($length, $type = 'mixed') {

 

   if ( ($type != 'mixed') && ($type != 'chars') && ($type != 'digits')) return false;

 

 

 

   $rand_value = '';

 

   while (strlen($rand_value) < $length) {

 

     if ($type == 'digits') {

 

       $char = tep_rand(0,9);

 

     } else {

 

       $char = chr(tep_rand(0,255));

 

     }

 

     if ($type == 'mixed') {

 

       if (eregi('^[a-z0-9]$', $char)) $rand_value .= $char;

 

     } elseif ($type == 'chars') {

 

       if (eregi('^[a-z]$', $char)) $rand_value .= $char;

 

     } elseif ($type == 'digits') {

 

       if (ereg('^[0-9]$', $char)) $rand_value .= $char;

 

     }

 

   }

 

 

 

   return $rand_value;

 

 }

 

 

 

 function tep_array_to_string($array, $exclude = '', $equals = '=', $separator = '&') {

 

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

 

 

 

   $get_string = '';

 

   if (sizeof($array) > 0) {

 

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

 

       if ( (!in_array($key, $exclude)) && ($key != 'x') && ($key != 'y') ) {

 

         $get_string .= $key . $equals . $value . $separator;

osC Contributions I have published.

 

Note: Some I only provided minor changes, updates or additions!

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...