Index: branches/5.3.x/units/orders/orders_event_handler.php =================================================================== diff -u -N -r15492 -r15671 --- branches/5.3.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 15492) +++ branches/5.3.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 15671) @@ -1,6 +1,6 @@ Application->getUnitOption($event->Prefix, 'StatusField')); + $status_field = $order_dummy->getStatusField(); + if ( isset($field_values[$status_field]) && $order_dummy->GetDBField($status_field) != $field_values[$status_field] ) { // user can't change status by himself return false; @@ -371,13 +372,19 @@ function OrderEmailParams(&$order) { $billing_email = $order->GetDBField('BillingEmail'); - $user_email = $this->Conn->GetOne(' SELECT Email FROM '.$this->Application->getUnitOption('u', 'TableName').' - WHERE PortalUserId = '.$order->GetDBField('PortalUserId')); - $email_params = Array(); - $email_params['_user_email'] = $user_email; //for use when shipping vs user is required in InventoryAction - $email_params['to_email'] = $billing_email ? $billing_email : $user_email; - $email_params['to_name'] = $order->GetDBField('BillingTo'); - return $email_params; + + $sql = 'SELECT Email + FROM ' . $this->Application->getUnitOption('u', 'TableName') . ' + WHERE PortalUserId = ' . $order->GetDBField('PortalUserId'); + $user_email = $this->Conn->GetOne($sql); + + $ret = Array ( + '_user_email' => $user_email, // for use when shipping vs user is required in InventoryAction + 'to_name' => $order->GetDBField('BillingTo'), + 'to_email' => $billing_email ? $billing_email : $user_email, + ); + + return $ret; } function PrepareCoupons($event, &$order) @@ -480,8 +487,8 @@ $this->PrepareCoupons($event, $order); } - $this->Application->EmailEventUser('ORDER.SUBMIT', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order)); - $this->Application->EmailEventAdmin('ORDER.SUBMIT'); + $this->Application->emailUser('ORDER.SUBMIT', null, $this->OrderEmailParams($order)); + $this->Application->emailAdmin('ORDER.SUBMIT'); } if ($shipping_control === false || $shipping_control == SHIPPING_CONTROL_PREAUTH ) { @@ -1609,7 +1616,7 @@ $this->setNextOrderNumber($event); - $object->SetDBField('OrderIP', $_SERVER['REMOTE_ADDR']); + $object->SetDBField('OrderIP', $this->Application->getClientIp()); $order_type = $this->getTypeBySpecial( $this->Application->GetVar('order_type') ); $object->SetDBField('Status', $order_type); @@ -2107,11 +2114,12 @@ $this->PrepareCoupons($event, $object); $this->SplitOrder($event, $object); - if ($object->GetDBField('IsRecurringBilling') != 1) { - $this->Application->EmailEventUser('ORDER.APPROVE', $object->GetDBField('PortalUserId'), $email_params); + if ( $object->GetDBField('IsRecurringBilling') != 1 ) { + $this->Application->emailUser('ORDER.APPROVE', null, $email_params); + // Mask credit card with XXXX - if ($this->Application->ConfigValue('Comm_MaskProcessedCreditCards')) { + if ( $this->Application->ConfigValue('Comm_MaskProcessedCreditCards') ) { $this->maskCreditCard($object, 'PaymentAccount'); $set_new_status = 1; } @@ -2130,15 +2138,15 @@ $this->raiseProductEvent('Deny', $product_item['ProductId'], $product_item); } - if ( ($original_order_status != ORDER_STATUS_INCOMPLETE ) && ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) { - $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params); + if ( ($original_order_status != ORDER_STATUS_INCOMPLETE) && ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) { + $this->Application->emailUser('ORDER.DENY', null, $email_params); // inform payment gateway that order was declined $gw_data = $object->getGatewayData(); if ( $gw_data ) { - $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile'] ); - $gateway_object = $this->Application->recallObject( $gw_data['ClassName'] ); + $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']); } @@ -2180,19 +2188,19 @@ if ( !array_key_exists('error_number', $ret) ) { $set_new_status = $this->approveOrder($order_items); - // $set_new_status = $this->shipOrder($order_items); +// $set_new_status = $this->shipOrder($order_items); $object->SetDBField('ShippingDate', adodb_mktime()); $object->UpdateFormattersSubFields(); $shipping_email = $object->GetDBField('ShippingEmail'); $email_params['to_email'] = $shipping_email ? $shipping_email : $email_params['_user_email']; - $this->Application->EmailEventUser('ORDER.SHIP', $object->GetDBField('PortalUserId'), $email_params); + $this->Application->emailUser('ORDER.SHIP', null, $email_params); // inform payment gateway that order was shipped $gw_data = $object->getGatewayData(); - $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] ); - $gateway_object = $this->Application->recallObject( $gw_data['ClassName'] ); + $this->Application->registerClass($gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile']); + $gateway_object = $this->Application->recallObject($gw_data['ClassName']); $gateway_object->OrderShipped($object->GetFieldValues(), $gw_data['gw_params']); } @@ -2207,17 +2215,22 @@ case 'OnMassOrderProcess': case 'OnOrderProcess': - if ($this->ReadyToProcess($object->GetID())) { + if ( $this->ReadyToProcess($object->GetID()) ) { $event->CallSubEvent('OnReserveItems'); - if ($event->status == kEvent::erSUCCESS) $set_new_status = true; - $this->Application->EmailEventUser('BACKORDER.PROCESS', $object->GetDBField('PortalUserId'), $email_params); - } else { + + if ( $event->status == kEvent::erSUCCESS ) { + $set_new_status = true; + } + + $this->Application->emailUser('BACKORDER.PROCESS', null, $email_params); + } + else { $event->status = kEvent::erFAIL; } break; } - if ($set_new_status) { + if ( $set_new_status ) { $object->Update(); } } @@ -2426,7 +2439,7 @@ $this->CheckUser($event); if ( !$object->GetDBField('OrderIP') ) { - $object->SetDBField('OrderIP', $_SERVER['REMOTE_ADDR']); + $object->SetDBField('OrderIP', $this->Application->getClientIp()); } $shipping_option = $this->Application->GetVar('OriginalShippingOption'); @@ -2872,8 +2885,8 @@ $sub_order->SetDBField('Status', ORDER_STATUS_BACKORDERS); if ($event->Special != 'recurring') { // just in case if admin uses tangible backordered products in recurring orders - $this->Application->EmailEventUser('BACKORDER.ADD', $sub_order->GetDBField('PortalUserId'), $this->OrderEmailParams($sub_order)); - $this->Application->EmailEventAdmin('BACKORDER.ADD'); + $this->Application->emailUser('BACKORDER.ADD', null, $this->OrderEmailParams($sub_order)); + $this->Application->emailAdmin('BACKORDER.ADD'); } } else { @@ -3389,7 +3402,7 @@ */ function OnGoToOrder($event) { - $id = array_shift( $this->StoreSelectedIDs($event) ); + $id = current($this->StoreSelectedIDs($event)); $id_field = $this->Application->getUnitOption($event->Prefix,'IDField'); $table = $this->Application->getUnitOption($event->Prefix,'TableName'); @@ -3511,15 +3524,15 @@ if ($complete_event->status == kEvent::erSUCCESS) { //send recurring ok email - $this->Application->EmailEventUser('ORDER.RECURRING.PROCESSED', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order)); - $this->Application->EmailEventAdmin('ORDER.RECURRING.PROCESSED'); + $this->Application->emailUser('ORDER.RECURRING.PROCESSED', null, $this->OrderEmailParams($order)); + $this->Application->emailAdmin('ORDER.RECURRING.PROCESSED'); } else { //send Recurring failed event $order->SetDBField('Status', ORDER_STATUS_DENIED); $order->Update(); - $this->Application->EmailEventUser('ORDER.RECURRING.DENIED', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order)); - $this->Application->EmailEventAdmin('ORDER.RECURRING.DENIED'); + $this->Application->emailUser('ORDER.RECURRING.DENIED', null, $this->OrderEmailParams($order)); + $this->Application->emailAdmin('ORDER.RECURRING.DENIED'); } } @@ -3690,6 +3703,12 @@ } $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); + + $user_forms = $this->Application->getUnitOption('u', 'Forms'); + + $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); + $virtual_fields['UserPassword']['hashing_method'] = $user_forms['default']['Fields']['PasswordHashingMethod']['default']; + $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); } /**