pleasehelp Posted December 6, 2004 Posted December 6, 2004 Fatal error: Cannot redeclare class Hey Guys, I'm new to PHP. I have an issue where it looks like a class got declared, but it's destructor was never called. (Or however you want to word it, like I said, I'm new to this, but am learning there are no destructors in PHP 4). How do I fix this? Additonally, you'll see I tried re-naming the file so it wouldn't load (obviously that's not a workable solution, but even if I rename it back OScommerce looks for the previously renamed version). So, how do I fix the class redeclaration error, and how can I get it to simply look for the authoriznet.php file instead of !authorizenet.php. Thanks in advance! Payment Modules Fatal error: Cannot redeclare class authorizenet in /hsphere/local/home/<path removed>/catalog/includes/modules/payment/!authorizenet.php on line 11 --------------------------- <?php /* Copyright © 2003 PayJunction Inc. 3 West Carrillo Santa Barbara, CA 93101 Released under the GNU General Public License */ class authorizenet { var $code, $title, $description, $enabled; // class constructor function authorizenet() { global $order; $this->code = 'authorizenet'; $this->title = 'PayJunction Payment Module'; $this->description = 'PayJunction.com Gateway Module. Where increased sales and lower costs meet. http://www.PayJunction'; $this->enabled = ((MODULE_PAYMENT_PAYJUNCTION_STATUS == 'True') ? true : false); $this->sort_order = MODULE_PAYMENT_PAYJUNCTION_SORT_ORDER; if ((int)MODULE_PAYMENT_PAYJUNCTION_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_PAYJUNCTION_ORDER_STATUS_ID; } if (is_object($order)) $this->update_status(); $this->form_action_url = 'https://payjunction.com/live/vendor/special/authorize_net'; } // class methods function update_status() { global $order; if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYJUNCTION_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYJUNCTION_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } function javascript_validation() { $js = ' if (payment_value == "' . $this->code . '") {' . "\n" . ' var cc_owner = document.checkout_payment.authorizenet_cc_owner.value;' . "\n" . ' var cc_number = document.checkout_payment.authorizenet_cc_number.value;' . "\n" . ' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" . ' error_message = error_message + "' . MODULE_PAYMENT_PAYJUNCTION_TEXT_JS_CC_OWNER . '";' . "\n" . ' error = 1;' . "\n" . ' }' . "\n" . ' if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" . ' error_message = error_message + "' . MODULE_PAYMENT_PAYJUNCTION_TEXT_JS_CC_NUMBER . '";' . "\n" . ' error = 1;' . "\n" . ' }' . "\n" . ' }' . "\n"; return $js; } function selection() { global $order; for ($i=1; $i<13; $i++) { $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000))); } $today = getdate(); for ($i=$today['year']; $i < $today['year']+10; $i++) { $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i))); } $selection = array('id' => $this->code, 'module' => $this->title, 'fields' => array(array('title' => 'Name on Credit Card', 'field' => tep_draw_input_field('authorizenet_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])), array('title' => 'Credit Card Number', 'field' => tep_draw_input_field('authorizenet_cc_number')), array('title' => 'Expiration Date', 'field' => tep_draw_pull_down_menu('authorizenet_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('authorizenet_cc_expires_year', $expires_year)))); return $selection; } function pre_confirmation_check() { global $HTTP_POST_VARS; include(DIR_WS_CLASSES . 'cc_validation.php'); $cc_validation = new cc_validation(); $result = $cc_validation->validate($HTTP_POST_VARS['authorizenet_cc_number'], $HTTP_POST_VARS['authorizenet_cc_expires_month'], $HTTP_POST_VARS['authorizenet_cc_expires_year']); $error = ''; switch ($result) { case -1: $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4)); break; case -2: case -3: case -4: $error = TEXT_CCVAL_ERROR_INVALID_DATE; break; case false: $error = TEXT_CCVAL_ERROR_INVALID_NUMBER; break; } if ( ($result == false) || ($result < 1) ) { $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&authorizenet_cc_owner=' . urlencode($HTTP_POST_VARS['authorizenet_cc_owner']) . '&authorizenet_cc_expires_month=' . $HTTP_POST_VARS['authorizenet_cc_expires_month'] . '&authorizenet_cc_expires_year=' . $HTTP_POST_VARS['authorizenet_cc_expires_year']; tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false)); } $this->cc_card_type = $cc_validation->cc_type; $this->cc_card_number = $cc_validation->cc_number; $this->cc_expiry_month = $cc_validation->cc_expiry_month; $this->cc_expiry_year = $cc_validation->cc_expiry_year; } function confirmation() { global $HTTP_POST_VARS; $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type, 'fields' => array(array('title' => 'Name on Credit Card', 'field' => $HTTP_POST_VARS['authorizenet_cc_owner']), array('title' => 'Credit Card Number', 'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)), array('title' => 'Expiration Date', 'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['authorizenet_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['authorizenet_cc_expires_year']))))); return $confirmation; } function process_button() { global $HTTP_SERVER_VARS, $order, $customer_id; $sequence = rand(1, 1000); $process_button_string = tep_draw_hidden_field('x_Login', MODULE_PAYMENT_PAYJUNCTION_LOGIN) . tep_draw_hidden_field('x_Password', MODULE_PAYMENT_PAYJUNCTION_PASSWORD ) . tep_draw_hidden_field('x_Card_Num', $this->cc_card_number) . tep_draw_hidden_field('x_Exp_Date', $this->cc_expiry_month . substr($this->cc_expiry_year, -2)) . tep_draw_hidden_field('x_Amount', number_format($order->info['total'], 2)) . tep_draw_hidden_field('x_Relay_URL', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false)) . tep_draw_hidden_field('x_Relay_Response', 'True') . tep_draw_hidden_field('x_Version', '3.0') . tep_draw_hidden_field('x_Cust_ID', $customer_id) . tep_draw_hidden_field('x_first_name', $order->billing['firstname']) . tep_draw_hidden_field('x_last_name', $order->billing['lastname']) . tep_draw_hidden_field('x_address', $order->billing['street_address']) . tep_draw_hidden_field('x_city', $order->billing['city']) . tep_draw_hidden_field('x_state', $order->billing['state']) . tep_draw_hidden_field('x_zip', $order->billing['postcode']) . tep_draw_hidden_field('x_country', $order->billing['country']['title']) . tep_draw_hidden_field('x_phone', $order->customer['telephone']) . tep_draw_hidden_field('x_email', $order->customer['email_address']) . tep_draw_hidden_field('x_ship_to_first_name', $order->delivery['firstname']) . tep_draw_hidden_field('x_ship_to_last_name', $order->delivery['lastname']) . tep_draw_hidden_field('x_ship_to_address', $order->delivery['street_address']) . tep_draw_hidden_field('x_ship_to_city', $order->delivery['city']) . tep_draw_hidden_field('x_ship_to_state', $order->delivery['state']) . tep_draw_hidden_field('x_ship_to_zip', $order->delivery['postcode']) . tep_draw_hidden_field('x_ship_to_country', $order->delivery['country']['title']) . tep_draw_hidden_field('x_Customer_IP', $HTTP_SERVER_VARS['REMOTE_ADDR']) . tep_draw_hidden_field('x_type', 'auth_capture'); if (MODULE_PAYMENT_PAYJUNCTION_TESTMODE == 'Test') $process_button_string .= tep_draw_hidden_field('x_Test_Request', 'TRUE'); $process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id()); return $process_button_string; } function before_process() { global $HTTP_POST_VARS; if ($HTTP_POST_VARS['x_response_code'] == '1') return; if ($HTTP_POST_VARS['x_response_code'] == '2') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_PAYJUNCTION_TEXT_DECLINED_MESSAGE), 'SSL', true, false)); } // Code 3 is an error - but anything else is an error too (IMHO) tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_PAYJUNCTION_TEXT_ERROR_MESSAGE), 'SSL', true, false)); } function after_process() { return false; } function get_error() { global $HTTP_GET_VARS; $error = array('title' => MODULE_PAYMENT_PAYJUNCTION_TEXT_ERROR, 'error' => stripslashes(urldecode($HTTP_GET_VARS['error']))); return $error; } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYJUNCTION_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayJunction Module', 'MODULE_PAYMENT_PAYJUNCTION_STATUS', 'True', 'Do you want to accept PayJunction payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login Username', 'MODULE_PAYMENT_PAYJUNCTION_LOGIN', '', 'The login username used for the PayJunction service', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_PAYJUNCTION_TESTMODE', 'Test', 'Transaction mode used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Test\', \'Production\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYJUNCTION_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYJUNCTION_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYJUNCTION_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())"); } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_PAYMENT_PAYJUNCTION_STATUS', 'MODULE_PAYMENT_PAYJUNCTION_LOGIN', 'MODULE_PAYMENT_PAYJUNCTION_TESTMODE', 'MODULE_PAYMENT_PAYJUNCTION_ZONE', 'MODULE_PAYMENT_PAYJUNCTION_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYJUNCTION_SORT_ORDER'); } } ?>
pleasehelp Posted December 6, 2004 Author Posted December 6, 2004 Please delete. I'm turning myself in for double posting. I tried to delete this one myself, but don't see the option. Thanks & sorry.
pleasehelp Posted December 6, 2004 Author Posted December 6, 2004 Hmmm, at least I thought I double posted, but now can't find the other one, so.... I still need help! :rolleyes: Has anyone seen this before? What's the fix?
Guest Posted December 6, 2004 Posted December 6, 2004 it means you have the class defined twice in your code, search for the class and then you can find where it is declared twice or remove it from !authorizenet.php on line 11 by commenting it out. this isnt necessarily the best way, but at least it will allow you to do further testing.
pleasehelp Posted December 6, 2004 Author Posted December 6, 2004 it means you have the class defined twice in your code, search for the class and then you can find where it is declared twice or remove it from !authorizenet.php on line 11 by commenting it out.? this isnt necessarily the best way, but at least it will allow you to do further testing. Commenting it out won't really solve anything, b/c I need it to load! :) I should state that the code worked at one point. And there shouldn't be anything wrong with the file, b/c I've re-loaded it from a known good copy. I think I somehow need to kill the "zombie" instance of it. Any ideas? <{POST_SNAPBACK}>
♥Vger Posted December 6, 2004 Posted December 6, 2004 Follow Mibble's advice - commenting out one instance of this piece of code won't stop it from working, but it will stop the double declaration of it. Also, delete your browsers' history files, temporary internet files and all 'offline content' and set your browser to always look for the latest version of a page you are viewing. Vger
Recommended Posts
Archived
This topic is now archived and is closed to further replies.