Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

I am getting a curreny error when I click on


emailanj

Recommended Posts

Posted

My site was working fine and now I get this error when clicking on products my site isMy Webpage

 

Fatal error: Cannot redeclare class currencies in /home/proshowe/public_html/store/includes/classes/currencies.php on line 16

 

here is the code but I have not done anything to it nor can I see any changes?

<?php
/*
 $Id: currencies.php,v 1.16 2003/06/05 23:16:46 hpdl Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

////
// Class to handle currencies
// TABLES: currencies
 class currencies {
   var $currencies;

// class constructor
   function currencies() {
     $this->currencies = array();
     $currencies_query = tep_db_query("select code, title, symbol_left, symbol_right, decimal_point, thousands_point, decimal_places, value from " . TABLE_CURRENCIES);
     while ($currencies = tep_db_fetch_array($currencies_query)) {
       $this->currencies[$currencies['code']] = array('title' => $currencies['title'],
                                                      'symbol_left' => $currencies['symbol_left'],
                                                      'symbol_right' => $currencies['symbol_right'],
                                                      'decimal_point' => $currencies['decimal_point'],
                                                      'thousands_point' => $currencies['thousands_point'],
                                                      'decimal_places' => $currencies['decimal_places'],
                                                      'value' => $currencies['value']);
     }
   }

// class methods
   function format($number, $calculate_currency_value = true, $currency_type = '', $currency_value = '') {
     global $currency;

     if (empty($currency_type)) $currency_type = $currency;

     if ($calculate_currency_value == true) {
       $rate = (tep_not_null($currency_value)) ? $currency_value : $this->currencies[$currency_type]['value'];
       $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number * $rate, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
// if the selected currency is in the european euro-conversion and the default currency is euro,
// the currency will displayed in the national currency and euro currency
       if ( (DEFAULT_CURRENCY == 'EUR') && ($currency_type == 'DEM' || $currency_type == 'BEF' || $currency_type == 'LUF' || $currency_type == 'ESP' || $currency_type == 'FRF' || $currency_type == 'IEP' || $currency_type == 'ITL' || $currency_type == 'NLG' || $currency_type == 'ATS' || $currency_type == 'PTE' || $currency_type == 'FIM' || $currency_type == 'GRD') ) {
         $format_string .= ' <small>[' . $this->format($number, true, 'EUR') . ']</small>';
       }
     } else {
       $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
     }

     return $format_string;
   }

   function is_set($code) {
     if (isset($this->currencies[$code]) && tep_not_null($this->currencies[$code])) {
       return true;
     } else {
       return false;
     }
   }

   function get_value($code) {
     return $this->currencies[$code]['value'];
   }

   function get_decimal_places($code) {
     return $this->currencies[$code]['decimal_places'];
   }

   function display_price($products_price, $products_tax, $quantity = 1) {
     return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
   }
 }
?>

 

 

I did install the Header Tags Controller v2.5.4 contribution

hhttp://www.oscommerce.com/community/contributions,207 But all seemed to go well and that seems to be working...

 

Thanks for any and all help...I have no idea on this one and the search results came up with nothing...

 

anj

Posted
My site was working fine and now I get this error when clicking on products my site isMy Webpage

 

Fatal error: Cannot redeclare class currencies in /home/proshowe/public_html/store/includes/classes/currencies.php on line 16

 

here is the code but I have not done anything to it nor can I see any changes?

<?php
/*
?$Id: currencies.php,v 1.16 2003/06/05 23:16:46 hpdl Exp $

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

?Copyright (c) 2003 osCommerce

?Released under the GNU General Public License
*/

////
// Class to handle currencies
// TABLES: currencies
?class currencies {
? ?var $currencies;

// class constructor
? ?function currencies() {
? ? ?$this->currencies = array();
? ? ?$currencies_query = tep_db_query("select code, title, symbol_left, symbol_right, decimal_point, thousands_point, decimal_places, value from " . TABLE_CURRENCIES);
? ? ?while ($currencies = tep_db_fetch_array($currencies_query)) {
? ? ? ?$this->currencies[$currencies['code']] = array('title' => $currencies['title'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'symbol_left' => $currencies['symbol_left'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'symbol_right' => $currencies['symbol_right'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'decimal_point' => $currencies['decimal_point'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'thousands_point' => $currencies['thousands_point'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'decimal_places' => $currencies['decimal_places'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'value' => $currencies['value']);
? ? ?}
? ?}

// class methods
? ?function format($number, $calculate_currency_value = true, $currency_type = '', $currency_value = '') {
? ? ?global $currency;

? ? ?if (empty($currency_type)) $currency_type = $currency;

? ? ?if ($calculate_currency_value == true) {
? ? ? ?$rate = (tep_not_null($currency_value)) ? $currency_value : $this->currencies[$currency_type]['value'];
? ? ? ?$format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number * $rate, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
// if the selected currency is in the european euro-conversion and the default currency is euro,
// the currency will displayed in the national currency and euro currency
? ? ? ?if ( (DEFAULT_CURRENCY == 'EUR') && ($currency_type == 'DEM' || $currency_type == 'BEF' || $currency_type == 'LUF' || $currency_type == 'ESP' || $currency_type == 'FRF' || $currency_type == 'IEP' || $currency_type == 'ITL' || $currency_type == 'NLG' || $currency_type == 'ATS' || $currency_type == 'PTE' || $currency_type == 'FIM' || $currency_type == 'GRD') ) {
? ? ? ? ?$format_string .= ' <small>[' . $this->format($number, true, 'EUR') . ']</small>';
? ? ? ?}
? ? ?} else {
? ? ? ?$format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
? ? ?}

? ? ?return $format_string;
? ?}

? ?function is_set($code) {
? ? ?if (isset($this->currencies[$code]) && tep_not_null($this->currencies[$code])) {
? ? ? ?return true;
? ? ?} else {
? ? ? ?return false;
? ? ?}
? ?}

? ?function get_value($code) {
? ? ?return $this->currencies[$code]['value'];
? ?}

? ?function get_decimal_places($code) {
? ? ?return $this->currencies[$code]['decimal_places'];
? ?}

? ?function display_price($products_price, $products_tax, $quantity = 1) {
? ? ?return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
? ?}
?}
?>

I did install the Header Tags Controller v2.5.4 contribution

hhttp://www.oscommerce.com/community/contributions,207  But all seemed to go well and that seems to be working...

 

Thanks for any and all help...I have no idea on this one and the search results came up with nothing...

 

anj

 

you need to read the error message more carefully, it says :

 

Cannot redeclare class currencies

 

which means that your class is ok but you are declaring the class more than once.

Treasurer MFC

Posted

Thanks you so much for your anwser...I guess..Well..My newness is showing through huh...Buy chance know where I can correct this? Which file and what should I look for?

anj

 

you need to read the error message more carefully, it says :

 

Cannot redeclare class currencies

 

which means that your class is ok but you are declaring the class more than once.

Posted
Thanks you so much for your anwser...I guess..Well..My newness is showing through huh...Buy chance know where I can correct this? Which file and what should I look for?

anj

 

well, the class currencies is normally only "declared" (included) in application top with :

 

// include currencies class and create an instance

require(DIR_WS_CLASSES . 'currencies.php');

$currencies = new currencies();

 

so make sure that the contributions you install do not add

 

require(DIR_WS_CLASSES . 'currencies.php');

 

to the code elsewhere or that you add code that is supposed to go in the code sections to the language sections.

Treasurer MFC

Posted

I can't find any error...GR. I did a search for currencies class through all of the code the header contribution told me to change and I came up with nothing...GRRR. This morning everything worked great :'(

Have any Idea's

here is my code just in case I missed something.

<?php
/*
 $Id: application_top.php,v 1.280 2003/07/12 09:38:07 hpdl Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

// start the timer for the page parse time log
 define('PAGE_PARSE_START_TIME', microtime());

// set the level of error reporting
 error_reporting(E_ALL & ~E_NOTICE);

// check if register_globals is enabled.
// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
 if (function_exists('ini_get')) {
   ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');
 }

// Set the local configuration parameters - mainly for developers
 if (file_exists('includes/local/configure.php')) include('includes/local/configure.php');

// include server parameters
 require('includes/configure.php');

 if (strlen(DB_SERVER) < 1) {
   if (is_dir('install')) {
     header('Location: install/index.php');
   }
 }

// define the project version
 define('PROJECT_VERSION', 'osCommerce 2.2-MS2');

// set the type of request (secure or not)
 $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';

// set php_self in the local scope
 if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];

 if ($request_type == 'NONSSL') {
   define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);
 } else {
   define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);
 }

// include the list of project filenames
 require(DIR_WS_INCLUDES . 'filenames.php');

// include the list of project database tables
 require(DIR_WS_INCLUDES . 'database_tables.php');

// customization for the design layout
 define('BOX_WIDTH', 150); // how wide the boxes should be in pixels (default: 125)

// include the database functions
 require(DIR_WS_FUNCTIONS . 'database.php');

// make a connection to the database... now
 tep_db_connect() or die('Unable to connect to database server!');

// set the application parameters
 $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
 while ($configuration = tep_db_fetch_array($configuration_query)) {
   define($configuration['cfgKey'], $configuration['cfgValue']);
 }

// if gzip_compression is enabled, start to buffer the output
 if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) {
   if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {
     if (PHP_VERSION >= '4.0.4') {
       ob_start('ob_gzhandler');
     } else {
       include(DIR_WS_FUNCTIONS . 'gzip_compression.php');
       ob_start();
       ob_implicit_flush();
     }
   } else {
     ini_set('zlib.output_compression_level', GZIP_LEVEL);
   }
 }

// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled
 if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') {
   if (strlen(getenv('PATH_INFO')) > 1) {
     $GET_array = array();
     $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
     $vars = explode('/', substr(getenv('PATH_INFO'), 1));
     for ($i=0, $n=sizeof($vars); $i<$n; $i++) {
       if (strpos($vars[$i], '[]')) {
         $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
       } else {
         $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];
       }
       $i++;
     }

     if (sizeof($GET_array) > 0) {
       while (list($key, $value) = each($GET_array)) {
         $HTTP_GET_VARS[$key] = $value;
       }
     }
   }
 }

// define general functions used application-wide
 require(DIR_WS_FUNCTIONS . 'general.php');
 require(DIR_WS_FUNCTIONS . 'html_output.php');

// set the cookie domain
 $cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);
 $cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);

// include cache functions if enabled
 if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php');

// include shopping cart class
 require(DIR_WS_CLASSES . 'shopping_cart.php');

// include navigation history class
 require(DIR_WS_CLASSES . 'navigation_history.php');

// some code to solve compatibility issues
 require(DIR_WS_FUNCTIONS . 'compatibility.php');

// check if sessions are supported, otherwise use the php3 compatible session class
 if (!function_exists('session_start')) {
   define('PHP_SESSION_NAME', 'osCsid');
   define('PHP_SESSION_PATH', $cookie_path);
   define('PHP_SESSION_DOMAIN', $cookie_domain);
   define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY);

   include(DIR_WS_CLASSES . 'sessions.php');
 }

// define how the session functions will be used
 require(DIR_WS_FUNCTIONS . 'sessions.php');

// set the session name and save path
 tep_session_name('osCsid');
 tep_session_save_path(SESSION_WRITE_DIRECTORY);

// set the session cookie parameters
  if (function_exists('session_set_cookie_params')) {
   session_set_cookie_params(0, $cookie_path, $cookie_domain);
 } elseif (function_exists('ini_set')) {
   ini_set('session.cookie_lifetime', '0');
   ini_set('session.cookie_path', $cookie_path);
   ini_set('session.cookie_domain', $cookie_domain);
 }

// set the session ID if it exists
  if (isset($HTTP_POST_VARS[tep_session_name()])) {
    tep_session_id($HTTP_POST_VARS[tep_session_name()]);
  } elseif ( ($request_type == 'SSL') && isset($HTTP_GET_VARS[tep_session_name()]) ) {
    tep_session_id($HTTP_GET_VARS[tep_session_name()]);
  }

// start the session
 $session_started = false;
 if (SESSION_FORCE_COOKIE_USE == 'True') {
   tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);

   if (isset($HTTP_COOKIE_VARS['cookie_test'])) {
     tep_session_start();
     $session_started = true;
   }
 } elseif (SESSION_BLOCK_SPIDERS == 'True') {
   $user_agent = strtolower(getenv('HTTP_USER_AGENT'));
   $spider_flag = false;

   if (tep_not_null($user_agent)) {
     $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');

     for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
       if (tep_not_null($spiders[$i])) {
         if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
           $spider_flag = true;
           break;
         }
       }
     }
   }

   if ($spider_flag == false) {
     tep_session_start();
     $session_started = true;
   }
 } else {
   tep_session_start();
   $session_started = true;
 }

// set SID once, even if empty
 $SID = (defined('SID') ? SID : '');

// verify the ssl_session_id if the feature is enabled
 if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) {
   $ssl_session_id = getenv('SSL_SESSION_ID');
   if (!tep_session_is_registered('SSL_SESSION_ID')) {
     $SESSION_SSL_ID = $ssl_session_id;
     tep_session_register('SESSION_SSL_ID');
   }

   if ($SESSION_SSL_ID != $ssl_session_id) {
     tep_session_destroy();
     tep_redirect(tep_href_link(FILENAME_SSL_CHECK));
   }
 }

// verify the browser user agent if the feature is enabled
 if (SESSION_CHECK_USER_AGENT == 'True') {
   $http_user_agent = getenv('HTTP_USER_AGENT');
   if (!tep_session_is_registered('SESSION_USER_AGENT')) {
     $SESSION_USER_AGENT = $http_user_agent;
     tep_session_register('SESSION_USER_AGENT');
   }

   if ($SESSION_USER_AGENT != $http_user_agent) {
     tep_session_destroy();
     tep_redirect(tep_href_link(FILENAME_LOGIN));
   }
 }

// verify the IP address if the feature is enabled
 if (SESSION_CHECK_IP_ADDRESS == 'True') {
   $ip_address = tep_get_ip_address();
   if (!tep_session_is_registered('SESSION_IP_ADDRESS')) {
     $SESSION_IP_ADDRESS = $ip_address;
     tep_session_register('SESSION_IP_ADDRESS');
   }

   if ($SESSION_IP_ADDRESS != $ip_address) {
     tep_session_destroy();
     tep_redirect(tep_href_link(FILENAME_LOGIN));
   }
 }

// create the shopping cart & fix the cart if necesary
 if (tep_session_is_registered('cart') && is_object($cart)) {
   if (PHP_VERSION < 4) {
     $broken_cart = $cart;
     $cart = new shoppingCart;
     $cart->unserialize($broken_cart);
   }
 } else {
   tep_session_register('cart');
   $cart = new shoppingCart;
 }

// include currencies class and create an instance
 require(DIR_WS_CLASSES . 'currencies.php');
 $currencies = new currencies();

// include the mail classes
 require(DIR_WS_CLASSES . 'mime.php');
 require(DIR_WS_CLASSES . 'email.php');

// set the language
 if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) {
   if (!tep_session_is_registered('language')) {
     tep_session_register('language');
     tep_session_register('languages_id');
   }

   include(DIR_WS_CLASSES . 'language.php');
   $lng = new language();

   if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) {
     $lng->set_language($HTTP_GET_VARS['language']);
   } else {
     $lng->get_browser_language();
   }

   $language = $lng->language['directory'];
   $languages_id = $lng->language['id'];
 }

// include the language translations
 require(DIR_WS_LANGUAGES . $language . '.php');

// currency
 if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) {
   if (!tep_session_is_registered('currency')) tep_session_register('currency');

   if (isset($HTTP_GET_VARS['currency'])) {
     if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
   } else {
     $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
   }
 }

// navigation history
 if (tep_session_is_registered('navigation')) {
   if (PHP_VERSION < 4) {
     $broken_navigation = $navigation;
     $navigation = new navigationHistory;
     $navigation->unserialize($broken_navigation);
   }
 } else {
   tep_session_register('navigation');
   $navigation = new navigationHistory;
 }
 $navigation->add_current_page();

// Shopping cart actions
 if (isset($HTTP_GET_VARS['action'])) {
// redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled
   if ($session_started == false) {
     tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE));
   }

   if (DISPLAY_CART == 'true') {
     $goto =  FILENAME_SHOPPING_CART;
     $parameters = array('action', 'cPath', 'products_id', 'pid');
   } else {
     $goto = basename($PHP_SELF);
     if ($HTTP_GET_VARS['action'] == 'buy_now') {
       $parameters = array('action', 'pid', 'products_id');
     } else {
       $parameters = array('action', 'pid');
     }
   }
   switch ($HTTP_GET_VARS['action']) {
     // customer wants to update the product quantity in their shopping cart
     case 'update_product' : for ($i=0, $n=sizeof($HTTP_POST_VARS['products_id']); $i<$n; $i++) {
                               if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) {
                                 $cart->remove($HTTP_POST_VARS['products_id'][$i]);
                               } else {
                                 if (PHP_VERSION < 4) {
                                   // if PHP3, make correction for lack of multidimensional array.
                                   reset($HTTP_POST_VARS);
                                   while (list($key, $value) = each($HTTP_POST_VARS)) {
                                     if (is_array($value)) {
                                       while (list($key2, $value2) = each($value)) {
                                         if (ereg ("(.*)\]\[(.*)", $key2, $var)) {
                                           $id2[$var[1]][$var[2]] = $value2;
                                         }
                                       }
                                     }
                                   }
                                   $attributes = ($id2[$HTTP_POST_VARS['products_id'][$i]]) ? $id2[$HTTP_POST_VARS['products_id'][$i]] : '';
                                 } else {
                                   $attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : '';
                                 }
                                 $cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false);
                               }
                             }
                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                             break;
     // customer adds a product from the products page
     case 'add_product' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {
                               $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']);
                             }
                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                             break;
     // performed by the 'buy now' button in product listings and review page
     case 'buy_now' :        if (isset($HTTP_GET_VARS['products_id'])) {
                               if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) {
                                 tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id']));
                               } else {
                                 $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1);
                               }
                             }
                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                             break;
     case 'notify' :         if (tep_session_is_registered('customer_id')) {
                               if (isset($HTTP_GET_VARS['products_id'])) {
                                 $notify = $HTTP_GET_VARS['products_id'];
                               } elseif (isset($HTTP_GET_VARS['notify'])) {
                                 $notify = $HTTP_GET_VARS['notify'];
                               } elseif (isset($HTTP_POST_VARS['notify'])) {
                                 $notify = $HTTP_POST_VARS['notify'];
                               } else {
                                 tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
                               }
                               if (!is_array($notify)) $notify = array($notify);
                               for ($i=0, $n=sizeof($notify); $i<$n; $i++) {
                                 $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and customers_id = '" . $customer_id . "'");
                                 $check = tep_db_fetch_array($check_query);
                                 if ($check['count'] < 1) {
                                   tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . $notify[$i] . "', '" . $customer_id . "', now())");
                                 }
                               }
                               tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
                             } else {
                               $navigation->set_snapshot();
                               tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
                             }
                             break;
     case 'notify_remove' :  if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) {
                               $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");
                               $check = tep_db_fetch_array($check_query);
                               if ($check['count'] > 0) {
                                 tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");
                               }
                               tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action'))));
                             } else {
                               $navigation->set_snapshot();
                               tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
                             }
                             break;
     case 'cust_order' :     if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) {
                               if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) {
                                 tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid']));
                               } else {
                                 $cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1);
                               }
                             }
                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                             break;
   }
 }

// include the who's online functions
 require(DIR_WS_FUNCTIONS . 'whos_online.php');
 tep_update_whos_online();

// include the password crypto functions
 require(DIR_WS_FUNCTIONS . 'password_funcs.php');

// include validation functions (right now only email address)
 require(DIR_WS_FUNCTIONS . 'validations.php');

// split-page-results
 require(DIR_WS_CLASSES . 'split_page_results.php');

// infobox
 require(DIR_WS_CLASSES . 'boxes.php');

// auto activate and expire banners
 require(DIR_WS_FUNCTIONS . 'banner.php');
 tep_activate_banners();
 tep_expire_banners();

// auto expire special products
 require(DIR_WS_FUNCTIONS . 'specials.php');
 tep_expire_specials();

// calculate category path
 if (isset($HTTP_GET_VARS['cPath'])) {
   $cPath = $HTTP_GET_VARS['cPath'];
 } elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) {
   $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']);
 } else {
   $cPath = '';
 }

 if (tep_not_null($cPath)) {
   $cPath_array = tep_parse_category_path($cPath);
   $cPath = implode('_', $cPath_array);
   $current_category_id = $cPath_array[(sizeof($cPath_array)-1)];
 } else {
   $current_category_id = 0;
 }

// include the breadcrumb class and start the breadcrumb trail
 require(DIR_WS_CLASSES . 'breadcrumb.php');
 $breadcrumb = new breadcrumb;

 $breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER);
 $breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT));

// add category names or the manufacturer name to the breadcrumb trail
 if (isset($cPath_array)) {
   for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {
     $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");
     if (tep_db_num_rows($categories_query) > 0) {
       $categories = tep_db_fetch_array($categories_query);
       $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1)))));
     } else {
       break;
     }
   }
 } elseif (isset($HTTP_GET_VARS['manufacturers_id'])) {
   $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
   if (tep_db_num_rows($manufacturers_query)) {
     $manufacturers = tep_db_fetch_array($manufacturers_query);
     $breadcrumb->add($manufacturers['manufacturers_name'], tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id']));
   }
 }

// add the products model to the breadcrumb trail
 if (isset($HTTP_GET_VARS['products_id'])) {
   $model_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");
   if (tep_db_num_rows($model_query)) {
     $model = tep_db_fetch_array($model_query);
     $breadcrumb->add($model['products_model'], tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $HTTP_GET_VARS['products_id']));
   }
 }

// initialize the message stack for output messages
 require(DIR_WS_CLASSES . 'message_stack.php');
 $messageStack = new messageStack;

// set which precautions should be checked
 define('WARN_INSTALL_EXISTENCE', 'true');
 define('WARN_CONFIG_WRITEABLE', 'true');
 define('WARN_SESSION_DIRECTORY_NOT_WRITEABLE', 'true');
 define('WARN_SESSION_AUTO_START', 'true');
 define('WARN_DOWNLOAD_DIRECTORY_NOT_READABLE', 'true');
// BOF: WebMakers.com Added: Header Tags Controller v2.5.2
 require(DIR_WS_FUNCTIONS . 'header_tags.php');
// Clean out HTML comments from ALT tags etc.
 require(DIR_WS_FUNCTIONS . 'clean_html_comments.php');
// EOF: WebMakers.com Added: Header Tags Controller v2.5.2

?>

 

well, the class currencies is normally only "declared" (included) in application top with :

 

// include currencies class and create an instance

  require(DIR_WS_CLASSES . 'currencies.php');

  $currencies = new currencies();

 

so make sure that the contributions you install do not add

 

require(DIR_WS_CLASSES . 'currencies.php');

 

to the code elsewhere or that you add code that is supposed to go in the code sections to the language sections.

Posted

The file that has this class has been included twice.

So where ever you find include or require currencies.php just change it to include_once or require_once.

Instantiaiting a class twice will not result in this bug.

if you still need further assistance you can drop Me a line.

 

Satish Mantri

Ask/Skype for Free osCommerce value addon/SEO suggestion tips for your site.

 

Check My About US For who am I and what My company does.

Posted

Thanks for your response, I am not quite sure of what you mean? Is there particular files that I should look for something in?

 

Anj

 

The file that has this class has been included twice.

So where ever you find include or require currencies.php just change it to include_once or require_once.

Instantiaiting a class twice will not result in this bug.

if you still need further assistance you can drop Me a line.

 

Satish Mantri

Posted
My site was working fine and now I get this error when clicking on products my site isMy Webpage

 

Fatal error: Cannot redeclare class currencies in /home/proshowe/public_html/store/includes/classes/currencies.php on line 16

 

here is the code but I have not done anything to it nor can I see any changes?

<?php
/*
 $Id: currencies.php,v 1.16 2003/06/05 23:16:46 hpdl Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

////
// Class to handle currencies
// TABLES: currencies
 class currencies {
   var $currencies;

// class constructor
   function currencies() {
     $this->currencies = array();
     $currencies_query = tep_db_query("select code, title, symbol_left, symbol_right, decimal_point, thousands_point, decimal_places, value from " . TABLE_CURRENCIES);
     while ($currencies = tep_db_fetch_array($currencies_query)) {
       $this->currencies[$currencies['code']] = array('title' => $currencies['title'],
                                                      'symbol_left' => $currencies['symbol_left'],
                                                      'symbol_right' => $currencies['symbol_right'],
                                                      'decimal_point' => $currencies['decimal_point'],
                                                      'thousands_point' => $currencies['thousands_point'],
                                                      'decimal_places' => $currencies['decimal_places'],
                                                      'value' => $currencies['value']);
     }
   }

// class methods
   function format($number, $calculate_currency_value = true, $currency_type = '', $currency_value = '') {
     global $currency;

     if (empty($currency_type)) $currency_type = $currency;

     if ($calculate_currency_value == true) {
       $rate = (tep_not_null($currency_value)) ? $currency_value : $this->currencies[$currency_type]['value'];
       $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number * $rate, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
// if the selected currency is in the european euro-conversion and the default currency is euro,
// the currency will displayed in the national currency and euro currency
       if ( (DEFAULT_CURRENCY == 'EUR') && ($currency_type == 'DEM' || $currency_type == 'BEF' || $currency_type == 'LUF' || $currency_type == 'ESP' || $currency_type == 'FRF' || $currency_type == 'IEP' || $currency_type == 'ITL' || $currency_type == 'NLG' || $currency_type == 'ATS' || $currency_type == 'PTE' || $currency_type == 'FIM' || $currency_type == 'GRD') ) {
         $format_string .= ' <small>[' . $this->format($number, true, 'EUR') . ']</small>';
       }
     } else {
       $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
     }

     return $format_string;
   }

   function is_set($code) {
     if (isset($this->currencies[$code]) && tep_not_null($this->currencies[$code])) {
       return true;
     } else {
       return false;
     }
   }

   function get_value($code) {
     return $this->currencies[$code]['value'];
   }

   function get_decimal_places($code) {
     return $this->currencies[$code]['decimal_places'];
   }

   function display_price($products_price, $products_tax, $quantity = 1) {
     return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
   }
 }
?>

I did install the Header Tags Controller v2.5.4 contribution

hhttp://www.oscommerce.com/community/contributions,207  But all seemed to go well and that seems to be working...

 

Thanks for any and all help...I have no idea on this one and the search results came up with nothing...

 

anj

 

As the error occurs in product_info.php it might be you did some changes there ?!

Maybe included application_top.php twice or included something for a contribution which calls application_top.php again ?

Posted

I am thinking you have something here?? I opened product_info and saw the

 

require(DIR_WS_CLASSES . 'currencies.php');

$currencies = new currencies();

 

I deleted it and saved the file. I was able to open my product page. everything was very out of wack and my page width was twice its normal size but I was very happy to be able to open it. I recieved the following error: Probably because I deleted an important code??

Fatal error: Call to undefined function: tep_get_category_tree() in /home/proshowe/public_html/store/product_info.php on line 759

 

Should I post this code?

 

I changed this: in 35 of my store files. (in the same directory as index.php)

In each file of /catalog/ you will need to make the following modification:

 

"Replace the existing two lines in all files that you want to use the Header Tags Controller:

 

Old Lines:

 

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

 

New Lines:

 

<?php

// BOF: WebMakers.com Changed: Header Tag Controller v2.5.2

// Replaced by header_tags.php

if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {

require(DIR_WS_INCLUDES . 'header_tags.php');

} else {

?>

<title><?php echo TITLE; ?></title>

<?php

}

// EOF: WebMakers.com Changed: Header Tag Controller v2.5.2

?>"

 

Any suggestions? do you know what I should exactly search for? or is this a problem that can have many anwsers? I looked though the 60 pages on the header contribution board and could not find anything on this problem after install. and the contribution seems to be working.

 

Thanks for any and all.

anj

Posted
I am thinking you have something here?? I opened product_info and saw the

 

require(DIR_WS_CLASSES . 'currencies.php');

? $currencies = new currencies();

 

I deleted it and saved the file. I was able to open my product page. everything was very out of wack and my page width was twice its normal size but I was very happy to be able to open it. I recieved the following error: Probably because I deleted an important code??

Fatal error: Call to undefined function: tep_get_category_tree() in /home/proshowe/public_html/store/product_info.php on line 759

 

Should I post this code?

 

I changed this: in 35 of my store files. (in the same directory as index.php)

In each file of /catalog/ you will need to make the following modification:

 

"Replace the existing two lines in all files that you want to use the Header Tags Controller:

 

Old Lines:

 

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

 

New Lines:

 

<?php

// BOF: WebMakers.com Changed: Header Tag Controller v2.5.2

// Replaced by header_tags.php

if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {

? require(DIR_WS_INCLUDES . 'header_tags.php');

} else {

?>

? <title><?php echo TITLE; ?></title>

<?php

}

// EOF: WebMakers.com Changed: Header Tag Controller v2.5.2

?>"

 

Any suggestions? do you know what I should exactly search for? or is this a problem that can have many anwsers? I looked though the 60 pages on the header contribution board and could not find anything on this problem after install. and the contribution seems to be working.

 

Thanks for any and all.

anj

 

I still get the currency class error when trying to look at your website's products but maybe you changed it only locally for now.

I use the header tag control also and those changes should have no interference with what you are experiencing now.

The question is how the currency class define has gotten into your product_info.php as it should not be there. Also that tep_get_category_tree function is from the general.php in your admin/includes/functions and should not be referenced in the catalog side of your shop.

Somehow things seem to have get mixed up with your files ?!

Has someone else access to your files and/or can you remember what changes you made in between the shop working and the state it is now ?

Posted

I am the only one that has access to my files so its all me...

 

I only installed the header contribution. I don't know if you have this one but it was a tough one. I made changes to quite a few files. My site was working fine this morning and I even posted to the board looking for volunteers to have a look as I felt I was going to go live today. Some one noticed I did'nt have much for Meta tags and recommended the header contribution. Its really a great one but lots to install.

Its in my Mysql and from the board its very difficult to uninstall. I would like to get it fixed. Is there softwear that can go through my files and note any problems? I am learning and I really injoy this cart...But I have lots to learn and I don't know if would know how to fix this one by looking at all of the files without having much of a clue what to look for. It does not appear its very black and white. I was supposed to have this live for Monday morning. (Actually last Monday morning :-" )

 

Thanks for any direction.

the contribution # is

http://www.oscommerce.com/community/contributions,207

Header Tags Controller v2.5.4

for future searches......

I still get the currency class error when trying to look at your website's products but maybe you changed it only locally for now.

I use the header tag control also and those changes should have no interference with what you are experiencing now.

The question is how the currency class define has gotten into your product_info.php as it should not be there. Also that tep_get_category_tree function is from the general.php in your admin/includes/functions and should not be referenced in the catalog side of your shop.

Somehow things seem to have get mixed up with your files ?!

Has someone else access to your files and/or can you remember what changes you made in between the shop working and the state it is now ?

Posted
I am the only one that has access to my files so its all me...

 

I only installed the header contribution. I don't know if you have this one but it was a tough one. I made changes to quite a few files. My site was working fine this morning and I even posted to the board looking for volunteers to have a look as I felt I was going to go live today. Some one noticed I did'nt have much for Meta tags and recommended the header contribution. Its really a great one but lots to install.

Its in my Mysql and from the board its very difficult to uninstall. I would like to get it fixed. Is there softwear that can go through my files and note any problems? I am learning and I really injoy this cart...But I have lots to learn and I don't know if would know how to fix this one by looking at all of the files without having much of a clue what to look for. It does not appear its very black and white. I was supposed to have this live for Monday morning. (Actually last Monday morning :-" )

 

Thanks for any direction.

the contribution # is

http://www.oscommerce.com/community/contributions,207

Header Tags Controller v2.5.4

for future searches......

 

I am using a different header tag contribution, cDynamic, which is a lot easier to install but the one change you mentioned is indeed the same with the one you used.

I am afraid there is not much to help from here as if the header tag contribution is the only change you made in between the working and not working shop and you didn't make any backups of the files changed you will have a hard time to reverse back. Probably you should first go through the installation steps for that contribution again and see if you missed or misplaced something. That tep_get_category_tree functions orignally comes from the admin but maybe the header tag contrib wants it in the catalog general.php also. I don't know this contrib but look for that kind of things which are easily missed with a 'not so easy' to install contrib.

Have to go now but I hope you will find the problem without too much hassle !

Posted

I would like to thank you very much for all of your time. I think the best thing for me to do is just restore my back up...I am so glad I do them often. I hope That you all do too. Back up even periodically even if you have not installed a contribution...You just never know. ;)

 

My problem looks to be: "a require(DIR_WS_CLASSES . 'currencies.php'); somewhere with my mods - this is called in application_top.php and should never be called elsewhere." I had altered so many files with the header contribution that it woud be like finding a needle in a haystalk. As I do changes to files I back up every one...I am thinking what happened is I pasted a whole extra file somewhere. I am going to just scrap this one and try the one wheel of time Uses.

 

I have a question. The last backup I did was through the admin. I have never restored from there before.(I usually ftp them) but I just happen to have my last back up there. My question is: In the Admin page it stats:

If possible, use the mysql client.

 

For example:

 

mysql -hlocalhost -uXXXXXX_XXXXXXX -X XXXXXXXX_store < /home/proshowe/public_html/store/ad min/backups/db_proshowe_store-XXXXX 82XXXX058.sql

 

(after unpacking the file from the archive)s states "

 

I am a bit confused? Am I supposed to type in that address after I hit the restore button? Sorry for such a simple question....I am just a little nervious and want to make sure I don't set off a nucular bomb when I hit the restore button...LOL

 

Thanks for everything :D

Anj

 

 

I am using a different header tag contribution, cDynamic, which is a lot easier to install but the one change you mentioned is indeed the same with the one you used.

I am afraid there is not much to help from here as if the header tag contribution is the only change you made in between the working and not working shop and you didn't make any backups of the files changed you will have a hard time to reverse back. Probably you should first go through the installation steps for that contribution again and see if you missed or misplaced something. That tep_get_category_tree functions orignally comes from the admin but maybe the header tag contrib wants it in the catalog general.php also. I don't know this contrib but look for that kind of things which are easily missed with a 'not so easy' to install contrib.

Have to go now but I hope you will find the problem without too much hassle !

Posted
I would like to thank you very much for all of your time. I think the best thing for me to do is just restore my back up...I am so glad I do them  often. I hope That you all do too. Back up even periodically even if you have not installed a contribution...You just never know. ;)

 

My problem looks to be: "a require(DIR_WS_CLASSES . 'currencies.php'); somewhere with my mods - this is called in application_top.php and should never be called elsewhere."  I had altered so many files with the header contribution that it woud be like finding a needle in a haystalk. As I do changes to files I back up every one...I am thinking what happened is I pasted a whole extra file somewhere. I am going to just scrap this one and try the one wheel of time Uses.

 

I have a question. The last backup I did was through the admin. I have never restored from there before.(I usually ftp them) but I just happen to have my last back up there. My question is:  In the Admin page it stats:

I am a bit confused? Am I supposed to type in that address after I hit the restore button? Sorry for such a simple question....I am just a little nervious and want to make sure I don't set off a nucular bomb when I hit the restore button...LOL

 

Thanks for everything :D

Anj

 

Anj,

 

I doubt you will need to do a restore for your database ?! Your problem lies in the file changes and not neccessarily in the SQL statements you imported for this contrib. If you have a backup for the files you changed it should be easy to revert back by simply replacing the changed ones with your backup files. Those database statements from the header contrib won't hurt if you leave them and you can always delete them by hand through your phpMyAdmin interface. Look at the installation instructions from the contrib which SQL statements you have done for that, look those up in the database and delete them.

The cDynamic Meta Tags contribution is mostly automated and therefore you can not influence it very much yourself (only by making good descriptions) but I think that is enough most of the time.

Archived

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

×
×
  • Create New...