New Install - 1.5.3
I have a requirement to send additional order confirmation & order update emails to manufacturers whose products have been ordered.
I added manufacturers_name & manufacturers_email to order_products table and changed insert in includes/classes/order.php and data is being populated correctly when order is saved.
I also changed admin/orders.php to send additional email to manufacturers whenever order is updated and this is also working correctly.
But I am having a problem sending additional email to manufacturers from includes/classes/order.php
I have changed the "send additional emails" section in function send_order_email() as follows
(new code I added is shown in red)
php error I'm getting on db->Execute is:
12-Oct-2014 16:24:19 UTC] PHP Fatal error: Call to a member function Execute() on a non-object in C:\Development\wamp\www\store\includes\classes\order.php on line 1107
Code:
// send additional emails
if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
$extra_info = email_collect_extra_info('', '', $this->customer['firstname'] . ' ' . $this->customer['lastname'], $this->customer['email_address'], $this->customer['telephone']);
$html_msg['EXTRA_INFO'] = $extra_info['HTML'];
// include authcode and transaction id in admin-copy of email
if ($GLOBALS[$_SESSION['payment']]->auth_code || $GLOBALS[$_SESSION['payment']]->transaction_id) {
$pmt_details = ($GLOBALS[$_SESSION['payment']]->auth_code != '' ? 'AuthCode: ' . $GLOBALS[$_SESSION['payment']]->auth_code . ' ' : '') . ($GLOBALS[$_SESSION['payment']]->transaction_id != '' ? 'TransID: ' . $GLOBALS[$_SESSION['payment']]->transaction_id : '') . "\n\n";
$email_order = $pmt_details . $email_order;
$html_msg['EMAIL_TEXT_HEADER'] = nl2br($pmt_details) . $html_msg['EMAIL_TEXT_HEADER'];
}
// Add extra heading stuff via observer class
$this->extra_header_text = '';
$this->notify('NOTIFY_ORDER_INVOICE_CONTENT_FOR_ADDITIONAL_EMAILS', array('zf_insert_id' => $zf_insert_id, 'text_email' => $email_order, 'html_email' => $html_msg));
$email_order = $this->extra_header_text . $email_order;
$html_msg['EMAIL_TEXT_HEADER'] = nl2br($this->extra_header_text) . $html_msg['EMAIL_TEXT_HEADER'];
zen_mail('', SEND_EXTRA_ORDER_EMAILS_TO, SEND_EXTRA_NEW_ORDERS_EMAILS_TO_SUBJECT . ' ' . EMAIL_TEXT_SUBJECT . EMAIL_ORDER_NUMBER_SUBJECT . $zf_insert_id,
$email_order . $extra_info['TEXT'], STORE_NAME, EMAIL_FROM, $html_msg, 'checkout_extra', $this->attachArray, $this->customer['firstname'] . ' ' . $this->customer['lastname'], $this->customer['email_address']);
// get manufacturers_email from orders_products and send additional emails
$manufacturers = $db->Execute("select distinct manufacturers_email from " . TABLE_ORDERS_PRODUCTS . "
where orders_id = " . (int)$zf_insert_id );
while (!$manufacturers->EOF) {
$sendExtraEmails = $manufacturers->fields['manufacturers_email'];
zen_mail('', $sendExtraEmails, SEND_EXTRA_NEW_ORDERS_EMAILS_TO_SUBJECT . ' ' . EMAIL_TEXT_SUBJECT . EMAIL_ORDER_NUMBER_SUBJECT .
$zf_insert_id,
$email_order . $extra_info['TEXT'], STORE_NAME, EMAIL_FROM, $html_msg, 'checkout_extra', $this->attachArray, $this->customer['firstname'] . ' ' . $this->customer['lastname'], $this->customer['email_address']);
$manufacturers->MoveNext();
}
// end of extra manufacturers_email
}
the code I added into admin/orders.php that works is below:
Code:
//send extra emails
if (SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO_STATUS == '1' and SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO != '') {
zen_mail('', SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO, SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO_SUBJECT . ' ' . EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status_extra');
// get manufacturers_email from orders_products and send extra emails
$manufacturers = $db->Execute("select distinct manufacturers_email from " . TABLE_ORDERS_PRODUCTS . "
where orders_id = " . (int)$oID );
while (!$manufacturers->EOF) {
$sendExtraEmails = $manufacturers->fields['manufacturers_email'];
zen_mail('', $sendExtraEmails, SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO_SUBJECT . ' ' . EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status_extra');
$manufacturers->MoveNext();
}
//
}
If anyone can point me in the right direction to correct this error, I'd appreciate it.
Bookmarks