Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution] Upgrading osC from 2.2 MS2 to 2.2 RC2a


Recommended Posts

No sorry. But why don't you rename .htaccess htaccess.txt and see if that helps.

 

Renamed catalog/.htaccess to catalog/.htaccess.txt

Did not help. Still blank pages.

 

Also tried to delete all .htaccess files. No change.

 

Tried to upload some of the old files from my backup before the RC2a upgrade (catalog/index.php, catalog/includes/configure.php, catalog/admin/includes.php) but still blank pages.

 

So my plan now is to try to delet all old sts kode and sts files and see if anything happens.

If still blank pages, it HAS to be something I did wrong with the upgrade, I think.

 

So then I will just have to do it all again.

 

Thank you very much for all your help with this :-) Really appreciate it!

 

PS! I also uploaded an index.html page to my root of my store, and this one is visible on the internet! You can see it here:

 

My link

Edited by kjolebutikken

Best regards

Kjolebutikken

Link to comment
Share on other sites

Renamed catalog/.htaccess to catalog/.htaccess.txt

Did not help. Still blank pages.

 

Also tried to delete all .htaccess files. No change.

 

Tried to upload some of the old files from my backup before the RC2a upgrade (catalog/index.php, catalog/includes/configure.php, catalog/admin/includes.php) but still blank pages.

 

So my plan now is to try to delet all old sts kode and sts files and see if anything happens.

If still blank pages, it HAS to be something I did wrong with the upgrade, I think.

 

So then I will just have to do it all again.

 

Thank you very much for all your help with this :-) Really appreciate it!

 

PS! I also uploaded an index.html page to my root of my store, and this one is visible on the internet! You can see it here:

 

My link

 

 

I am now able to open my store, but not my admin.

I had forgoten some code in the upgrade in the file catalog/includes/functions/cache.php

 

But now strugling with other problems :-)

Just wanted to let you know that I have got access to the store though :-)

Thanks for all previous help!

Best regards

Kjolebutikken

Link to comment
Share on other sites

Hi,

 

After the upgrade I changed the name of my catalog and now it seems I have a problem with the function tep_href_link

It redirects to an url with the old catalog name.

 

Do you know if there is something I could have done wrong with the upgrade to RC2a that would cause this problem, and if so, how I can fix it?

 

Her is the link to my posted problem:

 

http://www.oscommerce.com/forums/topic/358002-wrong-urls-in-shop-startpage-indexphp/page__gopid__1505281entry1505281

 

 

Thanks :-)

Edited by kjolebutikken

Best regards

Kjolebutikken

Link to comment
Share on other sites

Hi,

 

After the upgrade I changed the name of my catalog and now it seems I have a problem with the function tep_href_link

It redirects to an url with the old catalog name.

 

Do you know if there is something I could have done wrong with the upgrade to RC2a that would cause this problem, and if so, how I can fix it?

 

Her is the link to my posted problem:

 

http://www.oscommerce.com/forums/topic/358002-wrong-urls-in-shop-startpage-indexphp/page__gopid__1505281entry1505281

 

 

Thanks :-)

 

 

Fixed it :-)

Very silly mistake.

Had done the canges, but forgot to make the file writable first, so the changes was not saved :-)

Best regards

Kjolebutikken

Link to comment
Share on other sites

  • 1 month later...

Hello, first of all; thanks for this great way to update the shop without having to install a new shop without any contributions.

 

I've changed all the files and the shop is working like a charm but there's one problem. When customers are paying via iDeal, they won't receive the orderconfirmation. Neither do the people who are in the 'send extra order emails to' part in the admin area.

 

The email is send from the file catalog/checkout_process.php, I've tried to find a solution myself. I thought I solved it because one line of code was referring to admin/ideal_mail.php whilst I just renamed the admin folder to something else. But it's still not working.

 

Please note, emails are being sent just fine when the customer pays via one of the other methods (Paypal or prepaid). It's just the iDeal part.

 

I used the idealm contribution from the addons-site, no problems with it so far. I think it must be with some lines in the checkout_process.php file that need to be changed to be compatible with the rc2a upgrade. Here are some lines from the checkout_Process.php file that handle the email for iDeal. I really hope you can help me.

 

Around line 89

// IDEAL AANPASSING
$do_email = true;
if (is_object($$payment)) {
$payment_class = $$payment;
if ($payment_class->code == 'idealm') {
if ((!tep_session_is_registered('trans')) || ($trans != 'success'))
$do_email = false;
}
}

if ((tep_session_is_registered('paymentid')) && ($payment_class->code != 'idealm')) {
tep_db_query("UPDATE ".TABLE_IDEAL_PAYMENTS." SET payment_status='".MODULE_PAYMENT_IDEALM_ORDER_CANCELLED_STATUS_ID."', date_last_check=now() WHERE payment_id='" . $paymentid."'");
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}

if (!tep_session_is_registered('paymentid')) { 
// EINDE IDEAL AANPASSING

 

Please note that above this piece of code, I've added a new line as was mentioned in the upgrade package, this is the line:

// load the before_process function from the payment modules
 $payment_modules->before_process();

 

More iDeal related lines:

 

Around line 175:

// IDEAL AANPASSING
$customer_notification = '0';
if ($payment_class->code == 'idealm') {
if ($do_email)
$customer_notification = '1'; 
} else {
$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
}
// EINDE IDEAL AANPASSING

 

Around line 333:

// IDEAL AANPASSING
}
if (($do_email) && ($payment_class->code != 'idealm')) {
// EINDE IDEAAL AANPASSING

 

Around line 435:

// IDEAL AANPASSING
} elseif ($do_email) {
$orderid = tep_db_query("SELECT order_id FROM " . TABLE_IDEAL_PAYMENTS . " WHERE payment_id='" . $paymentid . "'"); 
$orderid = tep_db_fetch_array($orderid);
$order = new order($orderid['order_id']);
$insert_id = $orderid['order_id'];
$customer_id = $order->customer['id'];
require_once('admin/idealm_email.php');
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}

if ((!$do_email) && ($trans != 'pending')) {
$payment_modules->after_process();
}

// EINDE IDEAL AANPASSING

 

Around line 472 (I think this is from the first ideal addon I tried, didn't want to remove it because I have (had) no problems with that piece there so far.

/* IDEAAL/IDEAL AANPASSING */
if ((($payment_class->code == 'moneyorder') && (MODULE_PAYMENT_IDEAAL_STATUS != 'True'))
&& (MODULE_PAYMENT_MONEYORDER_INTERNETBANKING == 'True')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS_IDEAAL . '?amount=' . $order_totals[$i-1]['value'] . '&ref=' . $insert_id, '', 'SSL'));
} elseif ((($payment_class->code == 'idealm')) && (($trans == 'pending') || ($trans == 'success'))) {
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
} else {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
}
/* EINDE IDEAAL/IDEAL AANPASSING */

 

I've placed the full checkout_process.php in this spoiler below, maybe that will come in handy?

 

 

<?php
/*
$Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
[url=http://www.oscommerce.com]http://www.oscommerce.com[/url]

Copyright � 2003 osCommerce

Released under the GNU General Public License
*/

include('includes/application_top.php');

// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

// if there is nothing in the customers cart, redirect them to the shopping cart page
 if ($cart->count_contents() < 1) {
   tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
 }

// if no shipping method has been selected, redirect the customer to the shipping method selection page
 if (!tep_session_is_registered('shipping') || !tep_session_is_registered('sendto')) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
 }

if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
}

include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($payment);

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($shipping);

require(DIR_WS_CLASSES . 'order.php');
$order = new order;

// Stock Check
 $any_out_of_stock = false;
 if (STOCK_CHECK == 'true') {
   for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
     if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
       $any_out_of_stock = true;
     }
   }
   // Out of Stock
   if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
     tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
   }
 }

 $payment_modules->update_status();

 if ( ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
 }

require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;

$order_totals = $order_total_modules->process();

// load the before_process function from the payment modules
 $payment_modules->before_process();

// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
// IDEAL AANPASSING
$do_email = true;
if (is_object($$payment)) {
$payment_class = $$payment;
if ($payment_class->code == 'idealm') {
if ((!tep_session_is_registered('trans')) || ($trans != 'success'))
$do_email = false;
}
}

if ((tep_session_is_registered('paymentid')) && ($payment_class->code != 'idealm')) {
tep_db_query("UPDATE ".TABLE_IDEAL_PAYMENTS." SET payment_status='".MODULE_PAYMENT_IDEALM_ORDER_CANCELLED_STATUS_ID."', date_last_check=now() WHERE payment_id='" . $paymentid."'");
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}

if (!tep_session_is_registered('paymentid')) { 
// EINDE IDEAL AANPASSING

// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end

$sql_data_array = array('customers_id' => $customer_id,
'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
'customers_company' => $order->customer['company'],
'customers_street_address' => $order->customer['street_address'],
'customers_suburb' => $order->customer['suburb'],
'customers_city' => $order->customer['city'],
'customers_postcode' => $order->customer['postcode'],
'customers_state' => $order->customer['state'],
'customers_country' => $order->customer['country']['title'],
'customers_telephone' => $order->customer['telephone'],
'customers_email_address' => $order->customer['email_address'],
'customers_address_format_id' => $order->customer['format_id'],
'delivery_name' => trim($order->delivery['firstname'] . ' ' . $order->delivery['lastname']),
'delivery_company' => $order->delivery['company'],
'delivery_street_address' => $order->delivery['street_address'],
'delivery_suburb' => $order->delivery['suburb'],
'delivery_city' => $order->delivery['city'],
'delivery_postcode' => $order->delivery['postcode'],
'delivery_state' => $order->delivery['state'],
'delivery_country' => $order->delivery['country']['title'],
'delivery_address_format_id' => $order->delivery['format_id'],
'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
'billing_company' => $order->billing['company'],
'billing_street_address' => $order->billing['street_address'],
'billing_suburb' => $order->billing['suburb'],
'billing_city' => $order->billing['city'],
'billing_postcode' => $order->billing['postcode'],
'billing_state' => $order->billing['state'],
'billing_country' => $order->billing['country']['title'],
'billing_address_format_id' => $order->billing['format_id'],
'payment_method' => $order->info['payment_method'],
'cc_type' => $order->info['cc_type'],
'cc_owner' => $order->info['cc_owner'],
'cc_number' => $order->info['cc_number'],
'cc_expires' => $order->info['cc_expires'],
'date_purchased' => 'now()',
'orders_status' => $order->info['order_status'],
'currency' => $order->info['currency'],
'currency_value' => $order->info['currency_value']);
tep_db_perform(TABLE_ORDERS, $sql_data_array);
$insert_id = tep_db_insert_id();
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $order_totals[$i]['title'],
'text' => $order_totals[$i]['text'],
'value' => $order_totals[$i]['value'],
'class' => $order_totals[$i]['code'],
'sort_order' => $order_totals[$i]['sort_order']);
tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
}
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
// IDEAL AANPASSING
$customer_notification = '0';
if ($payment_class->code == 'idealm') {
if ($do_email)
$customer_notification = '1'; 
} else {
$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
}
// EINDE IDEAL AANPASSING
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
$sql_data_array = array('orders_id' => $insert_id,
'orders_status_id' => $order->info['order_status'],
'date_added' => 'now()',
'customer_notified' => $customer_notification,
'comments' => $order->info['comments']);
tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

// initialized for the email confirmation
$products_ordered = '';
$subtotal = 0;
$total_tax = 0;

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
if (STOCK_LIMITED == 'true') {
if (DOWNLOAD_ENABLED == 'true') {
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
FROM " . TABLE_PRODUCTS . " p
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
ON p.products_id=pa.products_id
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
ON pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
$products_attributes = $order->products[$i]['attributes'];
if (is_array($products_attributes)) {
$stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
}
$stock_query = tep_db_query($stock_query_raw);
} else {
$stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
if (tep_db_num_rows($stock_query) > 0) {
$stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
$stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];


// Version: 02-20-04 (BOF) 02/20/2004 - Low Stock Level Email Author: Emmett (yesUdo.com) and Jai (kynet.co.uk) 

$warning_stock = STOCK_REORDER_LEVEL;
$current_stock = $stock_left;

// Jai @ kynet.co.uk made the following change on 20-02-04
// Dynamic store url - Replaced [' http://www.YOURDOMAIN.com/] with [. HTTP_SERVER . DIR_WS_CATALOG . ']

$low_stock_email = '<b>Het volgende product is zojuist besteld en daardoor (bijna) niet meer op voorraad:</b>' . "\n\n" . 'Productnaam:</b> ' . $order->products[$i]['name'] . "\n" . '<b>Artikel model:</b> ' . $order->products[$i]['model'] . "\n" . '<b>Huidige voorraad:</b> ' . $stock_left  . "\n" . '<b>Link naar product: </b>' . HTTP_SERVER . DIR_WS_CATALOG . 'product_info.php?products_id='. $order->products[$i]['id'] . "\n\n" . '<b>Deze waarschuwing wordt verzonden omdat het huidige product een voorraad heeft van minder dan ' . $warning_stock . ' stuks.</b>';
$low_stock_subject = 'Waarschuwing productvoorraad: ' .  $order->products[$i]['name'];

if ($current_stock <= $warning_stock) {
  tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, $low_stock_subject, $low_stock_email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); }

// (EOF) 02/20/2004 - Low Stock Level Email Author: Emmett (yesUdo.com) and Jai (kynet.co.uk)


} else {
$stock_left = $stock_values['products_quantity'];
}
tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
}
}

// Update products_ordered (for bestsellers list)
tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

$sql_data_array = array('orders_id' => $insert_id,
'products_id' => tep_get_prid($order->products[$i]['id']),
'products_model' => $order->products[$i]['model'],
'products_name' => $order->products[$i]['name'],
'products_price' => $order->products[$i]['price'],
'final_price' => $order->products[$i]['final_price'],
'products_tax' => $order->products[$i]['tax'],
'products_quantity' => $order->products[$i]['qty']);
tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
$order_products_id = tep_db_insert_id();

//------insert customer choosen option to order--------
$attributes_exist = '0';
$products_ordered_attributes = '';
if (isset($order->products[$i]['attributes'])) {
$attributes_exist = '1';
for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
if (DOWNLOAD_ENABLED == 'true') {
$attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
on pa.products_attributes_id=pad.products_attributes_id
where pa.products_id = '" . $order->products[$i]['id'] . "'
and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . $languages_id . "'
and poval.language_id = '" . $languages_id . "'";
$attributes = tep_db_query($attributes_query);
} else {
$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
}
$attributes_values = tep_db_fetch_array($attributes);

$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'products_options' => $attributes_values['products_options_name'],
'products_options_values' => $attributes_values['products_options_values_name'],
'options_values_price' => $attributes_values['options_values_price'],
'price_prefix' => $attributes_values['price_prefix']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'orders_products_filename' => $attributes_values['products_attributes_filename'],
'download_maxdays' => $attributes_values['products_attributes_maxdays'],
'download_count' => $attributes_values['products_attributes_maxcount']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
}
$products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
}
}
//------insert customer choosen option eof ----
$total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
$total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
$total_cost += $total_products_price;

//CustomerDiscount start
$products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price_nodiscount($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
//CustomerDiscount end

}
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
// IDEAL AANPASSING
}
if (($do_email) && ($payment_class->code != 'idealm')) {
// EINDE IDEAAL AANPASSING
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end

// MEDEDELING
$mededeling_query = tep_db_query("select * from " . TABLE_MEDEDELING . " where status = '1'");
$mededeling = tep_db_fetch_array($mededeling_query);
if ($mededeling['status'] == 0) {

} else {
if ($language == 'dutch') {
$mededeling_mail = '<font face="Verdana" size="2"><b>Mededeling: </b> ' .  $mededeling['bericht_nl']   .   '</font>';
} elseif ($language == 'english') {
$mededeling_mail = '<font face="Verdana" size="2"><b>Announcement: </b> ' .  $mededeling['bericht_en']   .   '</font>';
} else {
$mededeling_mail = '<font face="Verdana" size="2"><b>Mededeling: </b> ' .  $mededeling['bericht_nl']   .   '</font>';
}
}
// END MEDEDELING

// lets start with the email confirmation
//---  Beginning of addition: Ultimate HTML Emails  ---//
if (EMAIL_USE_HTML == 'true') {
require(DIR_WS_MODULES . 'UHtmlEmails/'. ULTIMATE_HTML_EMAIL_LAYOUT .'/checkout_process.php');
$email_order = $html_email;
}else{//Send text email
//---  End of addition: Ultimate HTML Emails  ---//
$email_order = STORE_NAME . "\n\n" .
EMAIL_SEPARATOR . "\n" .

// MEDEDELING
$email_order = $mededeling . "\n" .
EMAIL_SEPARATOR . "\n\n" .
// END MEDEDELING

EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
if ($order->info['comments']) {
$email_order .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
EMAIL_SEPARATOR . "\n" .
$products_ordered .
EMAIL_SEPARATOR . "\n";

for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
}

if ($order->content_type != 'virtual') {
$email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
}

$email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
if (is_object($$payment)) {
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n";
$payment_class = $$payment;
$email_order .= $order->info['payment_method'] . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}
//---  Beginning of addition: Ultimate HTML Emails  ---//
}

if(ULTIMATE_HTML_EMAIL_DEVELOPMENT_MODE === 'true'){
//Save the contents of the generated html email to the harddrive in .htm file. This can be practical when developing a new layout.
$TheFileName = 'Last_mail_from_checkout_process.php.htm';
$TheFileHandle = fopen($TheFileName, 'w') or die("can't open error log file");
fwrite($TheFileHandle, $email_order);
fclose($TheFileHandle);
}
//---  End of addition: Ultimate HTML Emails  ---//
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

// load the after_process function from the payment modules
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
// IDEAL AANPASSING
} elseif ($do_email) {
$orderid = tep_db_query("SELECT order_id FROM " . TABLE_IDEAL_PAYMENTS . " WHERE payment_id='" . $paymentid . "'"); 
$orderid = tep_db_fetch_array($orderid);
$order = new order($orderid['order_id']);
$insert_id = $orderid['order_id'];
$customer_id = $order->customer['id'];
require_once('office/idealm_email.php');
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}

if ((!$do_email) && ($trans != 'pending')) {
$payment_modules->after_process();
}

// EINDE IDEAL AANPASSING
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end
$payment_modules->after_process();

$cart->reset(true);
// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end

/* IDEAAL/IDEAL AANPASSING */
if ((($payment_class->code == 'moneyorder') && (MODULE_PAYMENT_IDEAAL_STATUS != 'True'))
&& (MODULE_PAYMENT_MONEYORDER_INTERNETBANKING == 'True')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS_IDEAAL . '?amount=' . $order_totals[$i-1]['value'] . '&ref=' . $insert_id, '', 'SSL'));
} elseif ((($payment_class->code == 'idealm')) && (($trans == 'pending') || ($trans == 'success'))) {
tep_session_unregister('paymentid');
tep_session_unregister('trans');
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
} else {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
}
/* EINDE IDEAAL/IDEAL AANPASSING */

// Coupons by Ingo, begin
if (isset($ot_coupon) && is_object($ot_coupon) && $ot_coupon->redeem==true) {
tep_db_query("insert into " . TABLE_COUPONS_SALES . " (coupons_code, customers_id, orders_id, date_purchased) values ('" . tep_db_input($ot_coupon->coupons_code) . "', '" . (int)$customer_id . "', '" . (int)$insert_id . "', now())");
tep_session_unregister('coupon_code_code');
tep_session_unregister('coupon_code_value');
}
// Coupons by Ingo, end

// unregister session variables used during checkout
tep_session_unregister('sendto');
tep_session_unregister('billto');
tep_session_unregister('shipping');
tep_session_unregister('payment');
tep_session_unregister('comments');


tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

 

Edited by Jan Zonjee
Link to comment
Share on other sites

I've changed all the files and the shop is working like a charm but there's one problem. When customers are paying via iDeal, they won't receive the orderconfirmation. Neither do the people who are in the 'send extra order emails to' part in the admin area.

 

The email is send from the file catalog/checkout_process.php, I've tried to find a solution myself. I thought I solved it because one line of code was referring to admin/ideal_mail.php whilst I just renamed the admin folder to something else. But it's still not working.

 

Please note, emails are being sent just fine when the customer pays via one of the other methods (Paypal or prepaid). It's just the iDeal part.

 

I used the idealm contribution from the addons-site, no problems with it so far. I think it must be with some lines in the checkout_process.php file that need to be changed to be compatible with the rc2a upgrade.

 

Judging from your code the iDEAL contribution seems to be 3759. This includes a file located in the admin in checkout_process.php. Personally I would assume you can't do that when that directory is protected with an .htaccess file. So my first suggestion would be to move that file to the includes directory and see if that works better or different.

Second thing that this is a new file that is included and since register_globals might be set to off now that file won't work because it doesn't declare $insert_id a global in that file, neither $customer_id and probably you would need to declare $order a global in there too.

 

$comments is probably not working either because it is $order->info['comments'] that is needed (see the checkout_process.php).

 

Adding the idealm_email.php to the includes folder seems like a security risk too. When "calling" that file directly in your browser I would assume it firing off those emails too.

 

I would assume more Dutch people would have had this problem and the contribution having been updated. Maybe that is why some people don't like RC2a in the Dutch forums? :)

Link to comment
Share on other sites

Judging from your code the iDEAL contribution seems to be 3759. This includes a file located in the admin in checkout_process.php.

That's correct.

 

Personally I would assume you can't do that when that directory is protected with an .htaccess file. So my first suggestion would be to move that file to the includes directory and see if that works better or different.
Could this explain the fact that it is working fine when I make an iDeal testorder myself? Because I'm then also logged in in the admin area?

 

Second thing that this is a new file that is included and since register_globals might be set to off now that file won't work because it doesn't declare $insert_id a global in that file, neither $customer_id and probably you would need to declare $order a global in there too.
According to the Server Info in the admin area, register_globals is set to on. But I do want to mention that although I've upgraded to RC2a my host is still running PHP Version 4.4.9-0.dotdeb.1 , would setting it to PHP5 solve the issue?

 

$comments is probably not working either because it is $order->info['comments'] that is needed (see the checkout_process.php).
Well, when the emails were still send, comments were not included in the email, same for the customer name. The mail started with "Beste ," instead of "Beste Voornaam Achternaam,"

 

Thanks for your information Jan. I hope we can find a solution for this.

Link to comment
Share on other sites

Could this explain the fact that it is working fine when I make an iDeal testorder myself? Because I'm then also logged in in the admin area?

Reasonable assumption.

According to the Server Info in the admin area, register_globals is set to on. But I do want to mention that although I've upgraded to RC2a my host is still running PHP Version 4.4.9-0.dotdeb.1 , would setting it to PHP5 solve the issue?

No, PHP5 is probably even stricter.

Well, when the emails were still send, comments were not included in the email, same for the customer name. The mail started with "Beste ," instead of "Beste Voornaam Achternaam,"

Likely caused by not declaring a number of things global in that file....

 

Personally, I would rather wrap that code into a function with variables from checkout_process.php. Then it would be much harder to do anything with that file by (would-be) hackers when you put it in the catalog/includes folder.

Link to comment
Share on other sites

can I replace this line from checkout_process.php:

require_once('office/idealm_email.php');

with the actual contents from the idealm_php file?

Yes, I think you can do that. Can't think of why not although my first inclination was to say no.

Link to comment
Share on other sites

I've tried two things:

 

1) I uploaded the admin/idealm_email.php file to the catalog folder and in the checkout_process.php file I changed:

require_once('admin/idealm_email.php');

into

require_once('idealm_email.php');

 

2) I changed in the checkout_process.php file:

require_once('admin/idealm_email.php');

into

// require_once('admin/idealm_email.php');

and then I placed all code from admin/idealm_email.php directly under it.

 

Both fixes did not work, still no email sent.

 

But... I hope I can explain this correctly;

 

I logged in with my emailaddress and password. Then I placed a product into my basked. I paid the order using iDeal. > No email was sent.

And then, 15 minutes later when I was still logged in, I placed another order, paid via iDeal and when I clicked to the final step I got an iDeal order that some variables were missing. But strangely enough an email was sent succesully after placing the 2nd order, but the email was from the first order, according to the ordernumber and product I ordered.

 

Maybe it has something to do with the session? How could I fix this then?

Link to comment
Share on other sites

I've tried two things:

 

1) I uploaded the admin/idealm_email.php file to the catalog folder and in the checkout_process.php file I changed:

require_once('admin/idealm_email.php');

into

require_once('idealm_email.php');

 

2) I changed in the checkout_process.php file:

require_once('admin/idealm_email.php');

into

// require_once('admin/idealm_email.php');

and then I placed all code from admin/idealm_email.php directly under it.

 

Both fixes did not work, still no email sent.

 

But... I hope I can explain this correctly;

 

I logged in with my emailaddress and password. Then I placed a product into my basked. I paid the order using iDeal. > No email was sent.

And then, 15 minutes later when I was still logged in, I placed another order, paid via iDeal and when I clicked to the final step I got an iDeal order that some variables were missing. But strangely enough an email was sent succesully after placing the 2nd order, but the email was from the first order, according to the ordernumber and product I ordered.

 

Maybe it has something to do with the session? How could I fix this then?

 

osC cannot hold an email for 15 minutes so this must have been underway.

 

Actually, I cannot see much difference between the idealm_email.php and the code that checkout_process.php is using. So why the distinction between mail for when the payment class is not idealm and when it is?

 

I personally would try to change the code (on line 336) :

if (($do_email) && ($payment_class->code != 'idealm')) {

to:

if ($do_email) {

and comment out the lines from and including (from line 437-448)

} elseif ($do_email) {

and see how that works.

Link to comment
Share on other sites

Thanks for all your help. The above fix gives an PHP error (Unexpected $end on line 495) that line is empty though. Maybe I deleted too much lines? I don't have a good editor like Notepad++ here so I had to count lines myself :-)

Edited by Remco Leuven
Link to comment
Share on other sites

Ahm, forgot to note that. I am working from 8:30 untill 5.

 

I do have access to my website (FTP and admin panel) here ar work but I don't have the rights to install software.So I just downloaded the file, looked for the code and deleted the lines.

 

This weekend I will try it at home again.

 

Any idea what the 'unexected $end' means?

Link to comment
Share on other sites

I do have access to my website (FTP and admin panel) here ar work but I don't have the rights to install software.So I just downloaded the file, looked for the code and deleted the lines.

You do have kept a backup did you? If you're not 100% sure everything will keep working it is better to comment lines out instead of deleting them.

Also the start of the commenting out should be after the first closing parenthesis in this line:

} elseif ($do_email) {
  $orderid = tep_db_query("SELECT order_id FROM " . TABLE_IDEAL_PAYMENTS . " WHERE payment_id='" . $paymentid . "'"); 

so it should read:

} /* elseif ($do_email) {
  $orderid = tep_db_query("SELECT order_id FROM " . TABLE_IDEAL_PAYMENTS . " WHERE payment_id='" . $paymentid . "'"); 

Any idea what the 'unexected $end' means?

I'm not sure on how to generate that. Probably something to do with the number of opening and closing parentheses not being the same or it could be a semi-colon ([bold];[/bold]) missing.

 

In a lot of PHP editors you can double-click next to a parenthesis and find out where the counterpart is. If it doesn't, it usually means there is something wrong with the code.

Link to comment
Share on other sites

I backup every file before I start changing code.

 

No unexpected $end now :-) That was because I did remove the } in the

} elseif ($do_email) {
  $orderid = tep_db_query("SELECT order_id FROM " . TABLE_IDEAL_PAYMENTS . " WHERE payment_id='" . $paymentid . "'");

how stupid of me.

 

But iDeal order proceeds fine now, but still no email :-(

Link to comment
Share on other sites

first off thanks for all patience as I am very new at this.

I need to upgrade our osc site because host turned off global registry. I cannot see the site or get into admin.

I am using 2.2 ms2 cvs ... so I think I first need to upgrade to 2.2 ms2 060817? then to the current osc?

and I am using this link: http://www.oscommerce.com/ext/extras/update-20060817.txt

and as far as I can tell, I need to do this manually if I want to keep modifications.

if you could just let em know I'm on the right path I would so appreciate it!

Thanks!

Link to comment
Share on other sites

I need to upgrade our osc site because host turned off global registry. I cannot see the site or get into admin.

I am using 2.2 ms2 cvs ... so I think I first need to upgrade to 2.2 ms2 060817? then to the current osc?

and I am using this link: http://www.oscommerce.com/ext/extras/update-20060817.txt

and as far as I can tell, I need to do this manually if I want to keep modifications.

if you could just let em know I'm on the right path I would so appreciate it!

With the update-20060817.txt you end up somewhere in the middle of the upgrade path in between 2.2 Milestone 2 (the version that was around for many years unchanged after 2.2 ms2 cvs [although your cvs might well be identical or close to Milestone 2 - ms2]). No point in using that first.

 

There is no upgrade path for the cvs version you might have to ms2 so this complicates matters. Instead of comparing every file in your installation with a new version to see if and where there are changes it might be quicker to see what contributions have been added to the shop and add those to a fresh install.

 

Then comparing the databases and making the changes to the old database to get to the latest version (there haven't been any major changes in ms2 to rc2a although I remember something about customer data tables changed).

Link to comment
Share on other sites

With the update-20060817.txt you end up somewhere in the middle of the upgrade path in between 2.2 Milestone 2 (the version that was around for many years unchanged after 2.2 ms2 cvs [although your cvs might well be identical or close to Milestone 2 - ms2]). No point in using that first.

 

There is no upgrade path for the cvs version you might have to ms2 so this complicates matters. Instead of comparing every file in your installation with a new version to see if and where there are changes it might be quicker to see what contributions have been added to the shop and add those to a fresh install.

 

Then comparing the databases and making the changes to the old database to get to the latest version (there haven't been any major changes in ms2 to rc2a although I remember something about customer data tables changed).

 

thank you for your quick reply! I am glad I asked...so I should do a fresh install, make adjustments and then compare the old database with new.

wish me luck! We had someone else setup our website so I am hoping I can do this.

thank you so much again for your help!!!

Link to comment
Share on other sites

so I should do a fresh install, make adjustments and then compare the old database with new.

Of course you shouldn't do this on your live shop... Better on your own computer. Compare the database structure by making a backup without the data. Also from the backup of a fresh install. Then you can compare the differences. MySQL backups are text files so can you use a file comparison program to quickly spot differences.

 

Try to find out what contributions were installed on the old shop. Often the code of contributions is commented in the file that is changed so you get an idea what contribution that was. Most if not all contributions will still be around in the addon section for comparison.

Link to comment
Share on other sites

  • 1 month later...

Hi,

Thanks for this excellent contribution.

One thing that I can't seem to get fixed on my site is if I change currency from the base US$ to JPY (which doesn't have any decimals) then the currency is converted to an incorrect amount.I've put a zero in the decimals entry in admin like was suggested earlier in this thread and tried other combinations,but it keeps converting the price completely wrong.The only way to get the amount correct is to add a decimal place to the currency.

The currencies.php file is the same as the RC2a one.All the other currencies which have decimal places are fine - does anyone have any ideas what could be causing this,or a fix?

Thanks for any help.

Link to comment
Share on other sites

but it keeps converting the price completely wrong.

Like how and with what exchange rate? And was it working beforehand?

 

Never really looked at currency exchange rates so I don't know if I can be of help. But if nobody can recreate your problem the chances on a useful answer are even less...

Link to comment
Share on other sites

Hi Jan,

Yes,it was working before.It's just the Japanese yen which doesn't have any decimals.The exchange figures are wayout.The only way for it to work correctly is if it is set it to 2 decimal places.Then it's fine.

If no one else is having this problem then please don't worry as it could be one of my contributions ..maybe salemaker or something.I'll let you know if I find out what was causing it.

Thanks for your quick reply.

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...