Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

FATAL ERROR


Terry_dZi

Recommended Posts

Fatal error: Call to undefined function: tep_not_null() in /home/dzi_web/public_html/includes/functions/html_output.php on line 23

 

if (!tep_not_null($page)) {

die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>');

}

 

I think the problem is in my general.php file, but can't figure out where. I foolishly used the online text editor which corrputed my file and am now in the process of trying to get things back to where they were.

Link to comment
Share on other sites

I've looked through my code several times so maybe new eyes will be able to help me find the problem.

I continue to get this error:

 

Fatal error: Call to undefined function: tep_not_null() in /home/dzi_web/public_html/includes/functions/html_output.php on line 23

 

I am certain the problem though lies in my general.php file.

<?php
/*
 $Id: general.php,v 1.203 2002/12/13 17:33:09 thomasamoulton Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2002 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();
 }

////
// Error message wrapper
// When optional parameters are provided, it closes the application
// (ie, halts the current application execution task)
 function tep_error_message($error_message, $close_application = false, $close_application_error = '') {
   echo $error_message;

   if ($close_application == true) {
     die($close_application_error);
   }
 }

////
// 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) {
   global $languages_id;

   $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $product_id . "' and language_id = '" . $languages_id . "'");
   $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 = '" . $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 = '" . $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;
 }

////
// Check if the required stock is available
// If insufficent stock is available return an out of stock message
 function tep_check_stock_new($products_id, $products_attibutes, $products_quantity)
 {
   global $languages_id;
   if (preg_match("/^(\d+)/",$products_id,$m)) $products_id=$m[1];
   ksort($products_attibutes);
   $arr1=array();
   while(list($v1,$v2)=each($products_attibutes))
   {
     $arr1[]=$v1;
   }
   $arr1=implode(",",$arr1);
   $q=tep_db_query("select products_options_id as id,special from products_options where products_options_id in ($arr1) and language_id=$languages_id");
   while($rec=tep_db_fetch_array($q))
   {
     $special[$rec[id]]=$rec[special];
   }
   $attr=array();
   reset($products_attibutes);
   while(list($v1,$v2)=each($products_attibutes))
   {
     if (!$special[$v1]) $attr[]="$v1-$v2";
   }
   $attr=implode(",",$attr);

   $q=tep_db_query("select products_stock_quantity as quantity from products_stock where products_id=$products_id and products_stock_attributes='$attr'");
   if (tep_db_num_rows($q))
   {
     $rec=tep_db_fetch_array($q);
     $quantity=$rec[quantity];
   }
   else
   {
     $quantity=0;
   }
   $stock_left=$quantity-$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; $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;
 }

////
// Return all HTTP GET variables, except those passed as a parameter
 function tep_get_all_get_params($exclude_array = '') {
   global $HTTP_GET_VARS;

   if ($exclude_array == '') $exclude_array = array();

   $get_url = '';
   if (is_array($HTTP_GET_VARS)) {
     reset($HTTP_GET_VARS);
     while (list($key, $value) = each($HTTP_GET_VARS)) {
       if ((strlen($value) > 0) && ($key != session_name()) && ($key != 'error') && (!in_array($key, $exclude_array))) {
         $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 ($countries_id) {
     if ($with_iso_codes) {
       $countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . $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 = '" . $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 ($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 = '" . $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 = '" . $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;

   $result = stristr($HTTP_USER_AGENT, $component);

   return $result;
 }

////
// 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 = '" . $country_id . "' and zone_id = '" . $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() 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);
   }
 }

////
// 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 = '" . $country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . $zone_id . "') AND tr.tax_class_id = '" . $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;
   }
 }

////
// Return the tax description for a zone / class
// TABLES: tax_rates;
 function tep_get_tax_description($zone_id, $class_id) {
   $tax_query = tep_db_query("select tax_description from " . TABLE_TAX_RATES . " where tax_zone_id = '" . $zone_id . "' and tax_class_id = '" . $class_id . "'");
   if (tep_db_num_rows($tax_query)) {
     $tax = tep_db_fetch_array($tax_query);
     return $tax['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) {
     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) {
     $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 = '" . $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 = '" . $category_id . "'");
   }
   $products = tep_db_fetch_array($products_query);
   $products_count += $products['total'];

   if (USE_RECURSIVE_COUNT == 'true') {
     $child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . $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 = '" . $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 = '" . $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 = '" . $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;
 }

////
// 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 = '" . $customers_id . "' and address_book_id = '" . $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);
 }

////
// Return a formatted address
// TABLES: address_book, address_format
 function tep_address_summary($customers_id, $address_id) {
   $customers_id = tep_db_prepare_input($customers_id);
   $address_id = tep_db_prepare_input($address_id);

   $address_query = tep_db_query("select ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_state, ab.entry_country_id, ab.entry_zone_id, c.countries_name, c.address_format_id from " . TABLE_ADDRESS_BOOK . " ab, " . TABLE_COUNTRIES . " c where ab.address_book_id = '" . tep_db_input($address_id) . "' and ab.customers_id = '" . tep_db_input($customers_id) . "' and ab.entry_country_id = c.countries_id");
   $address = tep_db_fetch_array($address_query);

   $street_address = $address['entry_street_address'];
   $suburb = $address['entry_suburb'];
   $postcode = $address['entry_postcode'];
   $city = $address['entry_city'];
   $state = tep_get_zone_code($address['entry_country_id'], $address['entry_zone_id'], $address['entry_state']);
   $country = $address['countries_name'];

   $address_format_query = tep_db_query("select address_summary from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . $address['address_format_id'] . "'");
   $address_format = tep_db_fetch_array($address_format_query);

//    eval("\$address = \"{$address_format['address_summary']}\";");
   $address_summary = $address_format['address_summary'];
   eval("\$address = \"$address_summary\";");

   return $address;
 }

 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;

   $parent_id = tep_db_prepare_input($parent_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 = '" . tep_db_input($parent_id) . "' and c.categories_id = cd.categories_id and cd.language_id = '" . $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_top_categories($categories_array = '', $parent_id = '0', $indent = '') {
   global $languages_id;

   $parent_id = tep_db_prepare_input($parent_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 c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id = '" . $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']);
   }

   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 = '" . $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') || ($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.
*/

// Make sure the $tmpstring is empty
       $tmpstring = '';

// 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[sizeof($temp)] = $objects[$i];

     if ( ($objects[$i] != 'and') &&
          ($objects[$i] != 'or') &&
          ($objects[$i] != '(') &&
          ($objects[$i] != ')') &&
          ($objects[$i+1] != 'and') &&
          ($objects[$i+1] != 'or') &&
          ($objects[$i+1] != '(') &&
          ($objects[$i+1] != ')') ) {
       $temp[sizeof($temp)] = ADVANCED_SEARCH_DEFAULT_OPERATOR;
     }
   }
   $temp[sizeof($temp)] = $objects[$i];
   $objects = $temp;

   $keyword_count = 0;
   $operator_count = 0;
   for($i=0; $i<count($objects); $i++) {
     if ( ($objects[$i] == 'and') || ($objects[$i] == 'or') ) {
       $operator_count ++;
     } elseif ( ($objects[$i]) && ($objects[$i] != '(') && ($objects[$i] != ')') ) {
       $keyword_count ++;
     }
   }

   if ($operator_count < $keyword_count) {
     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;
   }

}

Link to comment
Share on other sites

Yup, thats general.php alright, make sure this is in there:

 

  function tep_not_null($value) {
   if (is_array($value)) {
     if (sizeof($value) > 0) {
       return true;
     } else {
       return false;
     }
   } else {
     if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
       return true;
     } else {
       return false;
     }
   }
 }

9 times out of 10 its a PEBCAK Error (Problem exists between chair and keyboard)

 

Replace that and you're fine...

Link to comment
Share on other sites

Hi,

 

Check that lines 1066 to 1080 of /catalog/includes/functions/general.php is

 

1066    function tep_not_null($value) {
1067      if (is_array($value)) {
1068        if (sizeof($value) > 0) {
1069          return true;
1070        } else {
1071          return false;
1072        }
1073      } else {
1074        if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
1075          return true;
1076        } else {
1077          return false;
1078        }
1079      }
1080    }

 

Peter

Link to comment
Share on other sites

When it says "FATAL ERROR" it does not mean you are going to die! :P

 

This was not so urgent that you should crosspost a few minutes apart - please be nice :)

 

Matti

Link to comment
Share on other sites

Thanks Matti

I have answered to several posts with regards to these issues all relating to the general.php which has been corrupted by the use of the file manager.

I did advise that the general.php be replaced to resolve most of the issues.

No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P

Is your Osc dated try Phoenix  raising oscommerce from the ashes.

Link to comment
Share on other sites

Back again!! LOL!!! Seems like I live here now. I have now encountered the following error when I click on links under categories:

 

Fatal error: Call to undefined function: tep_parse_category_path() in /home/dzi_web/public_html/includes/application_top.php on line 571

 

I'm unsure how to define this function. Still correcting the issues after having a corrupted general.php file which is the problem.

Any assistance again would be appreciated.

Thanks for you time.

Link to comment
Share on other sites

the easy solution is to upload a clean general.php file or at least have one to hand to reference all the broken functions that you have in your general.php

No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P

Is your Osc dated try Phoenix  raising oscommerce from the ashes.

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...