Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Fatal Error


ladyneuromancer

Recommended Posts

Hi.

 

I get the following error:

 

Fatal error: Cannot redeclare class payflowpro in /usr/local/www/virtual3/66/175/14/125/html/catalog/includes/modules/payment/payflowpro.php on line 0

 

How do I fix it?

 

Thank you

 

Hello,

 

Can you attach a code sample of the payflowpro.php file? It appears for some reason the class is trying to instanciate twice. Have you done much modification to the other files in your cart? My guess is that you might have missed a step installing the module, it happens believe me lol or you might have created a typo somewhere if you needed to modify some code by hand.

 

Regards,

 

Tina

If you're not having fun you're not doing it right

 

Teach a person to fish rather than give them a loaf of bread or however that saying goes.

Link to comment
Share on other sites

Hello,

 

Can you attach a code sample of the payflowpro.php file? It appears for some reason the class is trying to instanciate twice. Have you done much modification to the other files in your cart? My guess is that you might have missed a step installing the module, it happens believe me lol or you might have created a typo somewhere if you needed to modify some code by hand.

 

Regards,

 

Tina

Link to comment
Share on other sites

Hi Tina,

 

Thank you for replying, here is my code:

 

<?php

/*

$Id: payflowpro.php,v 1.0 2002/05/10 01:22:51 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

*/

class payflowpro {

var $code, $title, $description, $enabled;

 

// class constructor

function payflowpro() {

$this->code = 'payflowpro';

$this->title = MODULE_PAYMENT_PAYFLOWPRO_TEXT_TITLE;

$this->description = MODULE_PAYMENT_PAYFLOWPRO_TEXT_DESCRIPTION;

$this->enabled = MODULE_PAYMENT_PAYFLOWPRO_STATUS;

}

 

// class methods

function javascript_validation() {

$validation_string = 'if (payment_value == "' . $this->code . '") {' . "\n" .

' var cc_number = document.checkout_payment.payflowpro_cc_number.value;' . "\n" .

' if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .

' error_message = error_message + "' . MODULE_PAYMENT_PAYFLOWPRO_TEXT_JS_CC_NUMBER . '";' . "\n" .

' error = 1;' . "\n" .

' }' . "\n" .

'}' . "\n";

if (MODULE_PAYMENT_PAYFLOWPRO_CSC=="1"){

$validation_string .= 'if (payment_value== "' . $this->code . '" && document.checkout_payment.payflowpro_cc_csc.value==""){ ' . "\n" .

' error_message = error_message + " You must provide a CSC ";' . "\n".

' error=1;} ' . "\n";}

return $validation_string;

}

 

function selection() {

for ($i=1; $i < 13; $i++) {

$expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%m',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)));

}

 

$fields[0]=array('title' => '</td><tr><td colspan=6 class=main><B>'.MODULE_PAYMENT_PAYFLOWPRO_TEXT_TITLE1.'<a href="'.tep_href_link(FILENAME_PRIVACY, '', 'NONSSL').'">'. MODULE_PAYMENT_PAYFLOWPRO_TEXT_TITLE2 .'</a> </B>' ,

'field' => '</td>');

 

$fields[1]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_NUMBER,

'field' => tep_draw_input_field('payflowpro_cc_number','','valign=Center') .' '.

tep_image(DIR_WS_IMAGES.'cclogos.gif'));

 

$fields[2]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_EXPIRES ,

'field' => tep_draw_pull_down_menu('payflowpro_cc_expires_month', $expires_month) . '  ' . tep_draw_pull_down_menu('payflowpro_cc_expires_year', $expires_year));

 

if (MODULE_PAYMENT_PAYFLOWPRO_CSC=="1"){

$fields[3]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_CSC,

'field' => '<table border="0" cellpadding="2" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="100%">'.

'<tr><td >'.tep_draw_input_field('payflowpro_cc_csc','','size="4" maxlenght="4" valign="center"') . ' </td>'.

'<td valign="center"><a href=java script:{}; onclick="java script:{window.open(\'./csc.htm\',\'test\',\'height=550,width=800,top=100,left=100\');false}">'.tep_image(DIR_WS_IMAGES.'csc.gif').'</a></td>'.

'<td><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%"><tr>'.

'<td class="main" >'.MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_CSC_TEXT.'</td>'.

'<td class="main" ><a href=java script:{}; onclick="java script:{window.open(\'./csc.htm\',\'test\',\'height=550,width=800,top=100,left=100\');false}">'.MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_CSC_HELP.'</a></td>'.

'<td class="main" > | </td>'.

'<td class="main" align="left"><a href=java script:{}; onclick="java script:{window.open(\'./csc_amex.htm\',\'test\',\'height=550,width=800,top=100,left=100\');false}">'.MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_CSC_AMEX.'</a></td>'.

'</tr></table></tr></table>');}

 

 

$selection = array('id' => $this->code,

'module' => $this->title,

'fields' => $fields);

return $selection;

}

 

function pre_confirmation_check() {

global $payment, $HTTP_POST_VARS;

 

include(DIR_WS_CLASSES . 'cc_validation.php');

 

$cc_validation = new cc_validation();

$result = $cc_validation->validate($HTTP_POST_VARS['payflowpro_cc_number'], $HTTP_POST_VARS['payflowpro_cc_expires_month'], $HTTP_POST_VARS['payflowpro_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) . '&cc_expires_month=' .$HTTP_POST_VARS['payflowpro_cc_expires_month']. '&shipping_selected=' . $HTTP_POST_VARS['shipping_selected'] . '&cc_expires_year=' . $HTTP_POST_VARS['payflowpro_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, $CardName, $CardNumber, $checkout_form_action;

 

 

$fields[0]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_NUMBER ,

'field' => $this->cc_card_number );

if (MODULE_PAYMENT_PAYFLOWPRO_CSC=="1"){

$fields[1]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_CSC ,

'field' => $HTTP_POST_VARS['payflowpro_cc_csc'] );

}else{

$fields[1]=array('title' => '' ,

'field' => '' );

}

$fields[2]=array('title' => MODULE_PAYMENT_PAYFLOWPRO_TEXT_CREDIT_CARD_EXPIRES ,

'field' => strftime('%B/%Y', mktime(0,0,0,$HTTP_POST_VARS['payflowpro_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['payflowpro_cc_expires_year'])) );

 

$confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,

'fields' => $fields);

 

return $confirmation;

}

 

function process_button() {

global $HTTP_POST_VARS, $CardName, $CardNumber, $order;

 

$process_button_string = tep_draw_hidden_field('cc_expires', $this->cc_expiry_month . $this->cc_expiry_year) .

tep_draw_hidden_field('cc_type', $this->cc_card_type) .

tep_draw_hidden_field('cc_number', $this->cc_card_number) ;

if (MODULE_PAYMENT_PAYFLOWPRO_CSC=="1"){

$process_button_string .= tep_draw_hidden_field('CSC', $HTTP_POST_VARS['payflowpro_cc_csc']);

}

$process_button_string .= tep_draw_hidden_field('AMT', number_format($order->info['total'], 2, '', '')).

tep_draw_hidden_field('FREIGHTAMT', number_format($order->info['shipping_cost'], 2, '', '')).

tep_draw_hidden_field('TAXAMT', number_format($order->info['tax'], 2, '', '')).

tep_draw_hidden_field('FIRSTNAME', $order->customer['firstname']) .

tep_draw_hidden_field('LASTNAME', $order->customer['lastname']) .

tep_draw_hidden_field('STREET', $order->customer['street_address']) .

tep_draw_hidden_field('CITY', $order->customer['city']) .

tep_draw_hidden_field('STATE', $order->customer['state']) .

tep_draw_hidden_field('ZIP', $order->customer['postcode']) .

tep_draw_hidden_field('COUNTRY', $order->customer['country']['title']) .

tep_draw_hidden_field('EMAIL', $order->customer['email_address']) .

tep_draw_hidden_field('SHIPTOFIRSTNAME', $order->delivery['firstname']) .

tep_draw_hidden_field('SHIPTOLASTNAME', $order->delivery['lastname']) .

tep_draw_hidden_field('SHIPTOSTREET', $order->delivery['street_address']) .

tep_draw_hidden_field('SHIPTOCITY', $order->delivery['city']) .

tep_draw_hidden_field('SHIPTOSTATE', $order->delivery['state']) .

tep_draw_hidden_field('SHIPTOZIP', $order->delivery['postcode']) ;

$process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id());

return $process_button_string;

}

 

function before_process() {

global $HTTP_POST_VARS,$order;

//include(DIR_WS_FUNCTIONS . 'php_pfpro.php');

pfpro_init();

$transaction = array(USER => trim(MODULE_PAYMENT_PAYFLOWPRO_USER),

VENDOR => trim(MODULE_PAYMENT_PAYFLOWPRO_VENDOR),

PARTNER => trim(MODULE_PAYMENT_PAYFLOWPRO_PARTNER),

PWD => trim(MODULE_PAYMENT_PAYFLOWPRO_PWD),

TRXTYPE => trim(MODULE_PAYMENT_PAYFLOWPRO_TRXTYPE),

TENDER => trim(MODULE_PAYMENT_PAYFLOWPRO_TENDER),

AMT => $HTTP_POST_VARS['AMT'],

ACCT => $HTTP_POST_VARS['cc_number'],

EXPDATE => $HTTP_POST_VARS['cc_expires'],

FREIGHTAMT => $HTTP_POST_VARS['FREIGHTAMT'],

TAXAMT => $HTTP_POST_VARS['TAXAMT'],

FIRSTNAME => $HTTP_POST_VARS['FIRSTNAME'],

LASTNAME => $HTTP_POST_VARS['LASTNAME'],

STREET => $HTTP_POST_VARS['STREET'],

CITY => $HTTP_POST_VARS['CITY'],

STATE => $HTTP_POST_VARS['STATE'],

ZIP => $HTTP_POST_VARS['ZIP'],

COUNTRY => $HTTP_POST_VARS['COUNTRY'],

EMAIL => $HTTP_POST_VARS['EMAIL'],

SHIPTOFIRSTNAME => $HTTP_POST_VARS['SHIPTOFIRSTNAME'],

SHIPTOLASTNAME => $HTTP_POST_VARS['SHIPTOLASTNAME'],

SHIPTOSTREET => $HTTP_POST_VARS['SHIPTOSTREET'],

SHIPTOCITY => $HTTP_POST_VARS['SHIPTOCITY'],

SHIPTOSTATE => $HTTP_POST_VARS['SHIPTOSTATE'],

SHIPTOZIP => $HTTP_POST_VARS['SHIPTOZIP'],

CSC => $HTTP_POST_VARS['CSC']

);

 

$response = pfpro_process($transaction);

if (!$response||$response[RESULT]!=0) {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_PAYFLOWPRO_TEXT_ERROR.' '.$response[RESPMSG]), 'SSL', true, false));

}

 

}

 

function after_process() {

return false;

}

 

/* function output_error() {

global $HTTP_GET_VARS;

 

$output_error_string = '<table border="0" cellspacing="0" cellpadding="0" width="100%">' . "\n" .

' <tr>' . "\n" .

' <td class="main"> <font color="#FF0000"><b>' . MODULE_PAYMENT_PAYFLOWPRO_TEXT_ERROR . '</b></font><br> ' . stripslashes($HTTP_GET_VARS['cc_val']) . ' </td>' . "\n" .

' </tr>' . "\n" .

'</table>' . "\n";

 

return $output_error_string;

}*/

function get_error() {

global $HTTP_GET_VARS;

 

$error = array('title' => MODULE_PAYMENT_PAYFLOWPRO_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_PAYFLOWPRO_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, date_added) values ('Allow PayflowPro', 'MODULE_PAYMENT_PAYFLOWPRO_STATUS', '1', 'Do you want to accept PlayfowPro payments?', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Currency', 'MODULE_PAYMENT_PAYFLOWPRO_CURRENCY', 'USD', 'Currency', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Host Address', 'MODULE_PAYMENT_PAYFLOWPRO_HOSTADDRESS', 'test-payflow.verisign.com', 'Verisign Host Name', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Host Port', 'MODULE_PAYMENT_PAYFLOWPRO_HOSTPORT', '443', 'Verisign Host Port Number', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Transaction Type', 'MODULE_PAYMENT_PAYFLOWPRO_TRXTYPE', 'S', 'Indicates type of transaction effecting the cardholder?s account (S = sale)', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Transaction Tender', 'MODULE_PAYMENT_PAYFLOWPRO_TENDER', 'C', 'Indicates type of tender being used (C = credit card)', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Partner', 'MODULE_PAYMENT_PAYFLOWPRO_PARTNER', 'PartnerId', 'VeriSign Your partner ID is provided to you by the authorized VeriSign Reseller who signed you up for the Payflow Pro service. If you signed up yourself, use VeriSign.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Vendor', 'MODULE_PAYMENT_PAYFLOWPRO_VENDOR', 'login', 'Your case-sensitive login that you defined at registration.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro User', 'MODULE_PAYMENT_PAYFLOWPRO_USER', 'login', 'For now you must use your login for this parameter.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Password', 'MODULE_PAYMENT_PAYFLOWPRO_PWD', 'password', 'Case-sensitive password.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayflowPro Transaction Timeout', 'MODULE_PAYMENT_PAYFLOWPRO_TIMEOUT', '45', 'This value specifies a timeout period for the transaction. If not specified, the timeout value will default to 45 seconds. The minimum recommended timeout value is 30 seconds. The VeriSign client will begin tracking the timeout value from the point that it actually sends the transaction request to the VeriSign server.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Proxy Address', 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_ADDRESS', '', 'Proxy server address.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Proxy Port', 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_PORT', '', 'Proxy server port.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Proxy Logon', 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_LOGON', '', 'Proxy server logon ID.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Proxy Password', 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_PASSWORD', '', 'Proxy server logon password.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('CSC', 'MODULE_PAYMENT_PAYFLOWPRO_CSC', '1', 'Allow CSC', '6', '0', now())");

}

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_STATUS'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_CURRENCY'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_HOSTADDRESS'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_HOSTPORT'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_TRXTYPE'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_TENDER'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PARTNER'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_VENDOR'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_USER'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PWD'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_TIMEOUT'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_ADDRESS'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_PORT'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PROXY_LOGON'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_PWD'");

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYFLOWPRO_CSC'");

}

 

function keys() {

$keys = array('MODULE_PAYMENT_PAYFLOWPRO_STATUS', 'MODULE_PAYMENT_PAYFLOWPRO_CURRENCY', 'MODULE_PAYMENT_PAYFLOWPRO_HOSTADDRESS', 'MODULE_PAYMENT_PAYFLOWPRO_HOSTPORT', 'MODULE_PAYMENT_PAYFLOWPRO_TRXTYPE', 'MODULE_PAYMENT_PAYFLOWPRO_TENDER', 'MODULE_PAYMENT_PAYFLOWPRO_PARTNER','MODULE_PAYMENT_PAYFLOWPRO_VENDOR','MODULE_PAYMENT_PAYFLOWPRO_USER','MODULE_PAYMENT_PAYFLOWPRO_PWD','MODULE_PAYMENT_PAYFLOWPRO_TIMEOUT','MODULE_PAYMENT_PAYFLOWPRO_PROXY_ADDRESS','MODULE_PAYMENT_PAYFLOWPRO_PROXY_PORT','MODULE_PAYMENT_PAYFLOWPRO_PROXY_LOGON','MODULE_PAYMENT_PAYFLOWPRO_PWD','MODULE_PAYMENT_PAYFLOWPRO_CSC');

 

return $keys;

}

}

?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...