Attached Files |
Dont_send_ORDERDENY_E-mail.patch [^] (3,678 bytes) 2011-11-13 16:56
[Show Content]
Index: units/orders/orders_event_handler.php
===================================================================
--- units/orders/orders_event_handler.php (revision 14764)
+++ units/orders/orders_event_handler.php (working copy)
@@ -1878,16 +1878,16 @@
}
$event_status_map = Array(
- 'OnMassOrderApprove' => ORDER_STATUS_TOSHIP,
- 'OnOrderApprove' => ORDER_STATUS_TOSHIP,
- 'OnMassOrderDeny' => ORDER_STATUS_DENIED,
- 'OnOrderDeny' => ORDER_STATUS_DENIED,
- 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED,
- 'OnOrderArchive' => ORDER_STATUS_ARCHIVED,
- 'OnMassOrderShip' => ORDER_STATUS_PROCESSED,
- 'OnOrderShip' => ORDER_STATUS_PROCESSED,
- 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP,
- 'OnOrderProcess' => ORDER_STATUS_TOSHIP,
+ 'OnMassOrderApprove' => ORDER_STATUS_TOSHIP,
+ 'OnOrderApprove' => ORDER_STATUS_TOSHIP,
+ 'OnMassOrderDeny' => ORDER_STATUS_DENIED,
+ 'OnOrderDeny' => ORDER_STATUS_DENIED,
+ 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED,
+ 'OnOrderArchive' => ORDER_STATUS_ARCHIVED,
+ 'OnMassOrderShip' => ORDER_STATUS_PROCESSED,
+ 'OnOrderShip' => ORDER_STATUS_PROCESSED,
+ 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP,
+ 'OnOrderProcess' => ORDER_STATUS_TOSHIP,
);
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
@@ -1905,6 +1905,9 @@
return ;
}
+ // save original order status
+ $original_order_status = $object->GetDBField('Status');
+
// preparing new status, but not setting it yet
$object->SetDBField('Status', $event_status_map[$event->Name]);
@@ -1990,16 +1993,21 @@
}
$this->raiseProductEvent('Deny', $product_item['ProductId'], $product_item);
}
- $email_event_user =& $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
+
+ if ( ($original_order_status != ORDER_STATUS_INCOMPLETE ) &&
+ ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) {
- if ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') {
+ $email_event_user =& $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
+
// inform payment gateway that order was declined
$gw_data = $object->getGatewayData();
- $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
- $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
+ if ( $gw_data ) {
+ $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile'] );
+ $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
- $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']);
+ $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']);
+ }
}
// !!! LOOK HERE !!!
Index: units/orders/orders_item.php
===================================================================
--- units/orders/orders_item.php (revision 14764)
+++ units/orders/orders_item.php (working copy)
@@ -37,6 +37,11 @@
// get Gateway fields
if (!isset($pt_id) || !$pt_id) {
$pt_id = $this->GetDBField('PaymentType');
+
+ if ( !$pt_id ) {
+ // no Payment Type Id found for this order - escape SQL fatal below
+ return false;
+ }
}
$pt_table = $this->Application->getUnitOption('pt','TableName');
$sql = 'SELECT GatewayId FROM %s WHERE PaymentTypeId = %s';
Dont_send_ORDERDENY_E-mail_php5.patch [^] (5,701 bytes) 2011-11-30 08:52
[Show Content]
Index: orders_event_handler.php
===================================================================
--- orders_event_handler.php (revision 14808)
+++ orders_event_handler.php (working copy)
@@ -1870,16 +1870,16 @@
}
$event_status_map = Array(
- 'OnMassOrderApprove' => ORDER_STATUS_TOSHIP,
- 'OnOrderApprove' => ORDER_STATUS_TOSHIP,
- 'OnMassOrderDeny' => ORDER_STATUS_DENIED,
- 'OnOrderDeny' => ORDER_STATUS_DENIED,
- 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED,
- 'OnOrderArchive' => ORDER_STATUS_ARCHIVED,
- 'OnMassOrderShip' => ORDER_STATUS_PROCESSED,
- 'OnOrderShip' => ORDER_STATUS_PROCESSED,
- 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP,
- 'OnOrderProcess' => ORDER_STATUS_TOSHIP,
+ 'OnMassOrderApprove' => ORDER_STATUS_TOSHIP,
+ 'OnOrderApprove' => ORDER_STATUS_TOSHIP,
+ 'OnMassOrderDeny' => ORDER_STATUS_DENIED,
+ 'OnOrderDeny' => ORDER_STATUS_DENIED,
+ 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED,
+ 'OnOrderArchive' => ORDER_STATUS_ARCHIVED,
+ 'OnMassOrderShip' => ORDER_STATUS_PROCESSED,
+ 'OnOrderShip' => ORDER_STATUS_PROCESSED,
+ 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP,
+ 'OnOrderProcess' => ORDER_STATUS_TOSHIP,
);
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
@@ -1897,6 +1897,9 @@
return ;
}
+ // save original order status
+ $original_order_status = $object->GetDBField('Status');
+
// preparing new status, but not setting it yet
$object->SetDBField('Status', $event_status_map[$event->Name]);
@@ -1982,16 +1985,19 @@
}
$this->raiseProductEvent('Deny', $product_item['ProductId'], $product_item);
}
- $email_event_user =& $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
- if ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') {
+ if ( ($original_order_status != ORDER_STATUS_INCOMPLETE ) && ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) {
+ $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
+
// inform payment gateway that order was declined
$gw_data = $object->getGatewayData();
- $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
- $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
+ if ( $gw_data ) {
+ $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile'] );
+ $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
- $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']);
+ $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']);
+ }
}
// !!! LOOK HERE !!!
Index: orders_item.php
===================================================================
--- orders_item.php (revision 14805)
+++ orders_item.php (working copy)
@@ -30,33 +30,48 @@
/**
* Returns gateway data based on payment type used in order
*
+ * @param int $pt_id
* @return Array
+ * @access public
*/
- function getGatewayData($pt_id = null)
+ public function getGatewayData($pt_id = null)
{
// get Gateway fields
- if (!isset($pt_id) || !$pt_id) {
+ if ( !isset($pt_id) || !$pt_id ) {
$pt_id = $this->GetDBField('PaymentType');
+
+ if ( !$pt_id ) {
+ // no Payment Type Id found for this order - escape SQL fatal below
+ return false;
+ }
}
- $pt_table = $this->Application->getUnitOption('pt','TableName');
- $sql = 'SELECT GatewayId FROM %s WHERE PaymentTypeId = %s';
- $gw_id = $this->Conn->GetOne( sprintf($sql, $pt_table, $pt_id) );
- $sql = 'SELECT * FROM %s WHERE GatewayId = %s';
- $ret = $this->Conn->GetRow( sprintf($sql, TABLE_PREFIX.'Gateways', $gw_id) );
+ $pt_table = $this->Application->getUnitOption('pt', 'TableName');
+ $sql = 'SELECT GatewayId
+ FROM %s
+ WHERE PaymentTypeId = %s';
+ $gw_id = $this->Conn->GetOne(sprintf($sql, $pt_table, $pt_id));
+
+ $sql = 'SELECT *
+ FROM %s
+ WHERE GatewayId = %s';
+ $ret = $this->Conn->GetRow(sprintf($sql, TABLE_PREFIX . 'Gateways', $gw_id));
+
// get Gateway parameters based on payment type
- $gwf_table = $this->Application->getUnitOption('gwf','TableName');
- $gwfv_table = $this->Application->getUnitOption('gwfv','TableName');
+ $gwf_table = $this->Application->getUnitOption('gwf', 'TableName');
+ $gwfv_table = $this->Application->getUnitOption('gwfv', 'TableName');
+
$sql = 'SELECT gwfv.Value, gwf.SystemFieldName
FROM %s gwf
LEFT JOIN %s gwfv ON gwf.GWConfigFieldId = gwfv.GWConfigFieldId
WHERE gwfv.PaymentTypeId = %s AND gwf.GatewayId = %s';
- $ret['gw_params'] = $this->Conn->GetCol( sprintf($sql, $gwf_table, $gwfv_table, $pt_id, $gw_id), 'SystemFieldName' );
+ $ret['gw_params'] = $this->Conn->GetCol(sprintf($sql, $gwf_table, $gwfv_table, $pt_id, $gw_id), 'SystemFieldName');
+
$ret['gw_params']['gateway_id'] = $gw_id;
- if ($this->GetDBField('IsRecurringBilling') && $this->Application->ConfigValue('Comm_AutoProcessRecurringOrders')) {
- if (isset($ret['gw_params']['shipping_control'])) {
+ if ( $this->GetDBField('IsRecurringBilling') && $this->Application->ConfigValue('Comm_AutoProcessRecurringOrders') ) {
+ if ( isset($ret['gw_params']['shipping_control']) ) {
$ret['gw_params']['shipping_control'] = SHIPPING_CONTROL_DIRECT;
}
}
|