Index: branches/5.2.x/units/orders/orders_event_handler.php =================================================================== diff -u -N -r14677 -r14702 --- branches/5.2.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 14677) +++ branches/5.2.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 14702) @@ -1,6 +1,6 @@ $payment_result, 'data'=>$gateway_object->parsed_responce, 'gw_data' => $gw_data, 'error_msg'=>$gateway_object->getErrorMsg()); } + /** + * Returns parameters, used to send order-related e-mails + * + * @param OrdersItem $order + * @return array + */ 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 InvetnoryAction + $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; @@ -377,11 +383,15 @@ function OnCompleteOrder(&$event) { $this->LockTables($event); - if (!$this->CheckQuantites($event)) return; + if ( !$this->CheckQuantites($event) ) { + return; + } $this->ReserveItems($event); $order =& $event->getObject(); + /* @var $order OrdersItem */ + $charge_result = $this->ChargeOrder($order); if (!$charge_result['result']) { @@ -399,6 +409,8 @@ // call CompleteOrder events for items in order BEFORE SplitOrder (because ApproveEvents are called there) $order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) ); + /* @var $order_items kDBList */ + $order_items->linkToParent($order->Special); $order_items->Query(true); $order_items->GoFirst(); @@ -416,8 +428,8 @@ $this->PrepareCoupons($event, $order); } - $email_event_user =& $this->Application->EmailEventUser('ORDER.SUBMIT', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order)); - $email_event_admin =& $this->Application->EmailEventAdmin('ORDER.SUBMIT'); + $this->Application->EmailEventUser('ORDER.SUBMIT', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order)); + $this->Application->EmailEventAdmin('ORDER.SUBMIT'); } if ($shipping_control === false || $shipping_control == SHIPPING_CONTROL_PREAUTH ) { @@ -464,16 +476,24 @@ function setBillingAddress(&$event) { $object =& $event->getObject(); - if ($object->HasTangibleItems()) { - if ($this->Application->GetVar('same_address')) { + /* @var $object OrdersItem */ + + if ( $object->HasTangibleItems() ) { + if ( $this->Application->GetVar('same_address') ) { // copy shipping address to billing $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); list($id, $field_values) = each($items_info); - $address_fields = Array('To', 'Company', 'Phone', 'Fax', 'Email', 'Address1', 'Address2', 'City', 'State', 'Zip', 'Country'); + $address_fields = Array ( + 'To', 'Company', 'Phone', 'Fax', 'Email', + 'Address1', 'Address2', 'City', 'State', + 'Zip', 'Country' + ); + foreach ($address_fields as $address_field) { - $items_info[$id]['Billing'.$address_field] = $object->GetDBField('Shipping'.$address_field); + $items_info[$id]['Billing' . $address_field] = $object->GetDBField('Shipping' . $address_field); } + $this->Application->SetVar($event->getPrefixSpecial(true), $items_info); } } @@ -563,20 +583,22 @@ */ function OnProceedToBilling(&$event) { - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if ($items_info) { + $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); + if ( $items_info ) { list($id, $field_values) = each($items_info); $object =& $event->getObject(); + /* @var $object kDBItem */ + $payment_type_id = $object->GetDBField('PaymentType'); - if (!$payment_type_id) { + if ( !$payment_type_id ) { $default_type = $this->_getDefaultPaymentType(); - if ($default_type) { + if ( $default_type ) { $field_values['PaymentType'] = $default_type; $items_info[$id] = $field_values; - $this->Application->SetVar( $event->getPrefixSpecial(true), $items_info ); + $this->Application->SetVar($event->getPrefixSpecial(true), $items_info); } } } @@ -585,13 +607,21 @@ $event->redirect = $this->Application->GetVar('next_step_template'); } - function OnCancelRecurring(&$event) + /** + * Removes reoccurring mark from the order + * + * @param kEvent $event + * @return void + */ + protected function OnCancelRecurring(&$event) { - $order =& $event->GetObject(); + $order =& $event->getObject(); + /* @var $order OrdersItem */ + $order->SetDBField('IsRecurringBilling', 0); $order->Update(); - if ($this->Application->GetVar('cancelrecurring_ok_template')) - { + + if ( $this->Application->GetVar('cancelrecurring_ok_template') ) { $event->redirect = $this->Application->GetVar('cancelrecurring_ok_template'); } } @@ -653,35 +683,42 @@ */ function createMissingAddresses(&$event) { - if (!$this->Application->LoggedIn()) { - return false; + if ( !$this->Application->LoggedIn() ) { + return ; } $object =& $event->getObject(); - $addr_list =& $this->Application->recallObject('addr', 'addr_List', Array('per_page'=>-1, 'skip_counting'=>true) ); + $addr_list =& $this->Application->recallObject('addr', 'addr_List', Array ('per_page' => -1, 'skip_counting' => true)); + /* @var $addr_list kDBList */ + $addr_list->Query(); - $address_dummy =& $this->Application->recallObject('addr.-item', null, Array('skip_autoload' => true)); + $address_dummy =& $this->Application->recallObject('addr.-item', null, Array ('skip_autoload' => true)); + /* @var $address_dummy AddressesItem */ - $address_prefixes = Array('Billing', 'Shipping'); - $address_fields = Array('To','Company','Phone','Fax','Email','Address1','Address2','City','State','Zip','Country'); + $address_prefixes = Array ('Billing', 'Shipping'); + $address_fields = Array ( + 'To', 'Company', 'Phone', 'Fax', 'Email', 'Address1', + 'Address2', 'City', 'State', 'Zip', 'Country' + ); + foreach ($address_prefixes as $address_prefix) { - $address_id = $this->Application->GetVar(strtolower($address_prefix).'_address_id'); + $address_id = $this->Application->GetVar(strtolower($address_prefix) . '_address_id'); - if (!$this->Application->GetVar('check_'.strtolower($address_prefix).'_address')) { + if ( !$this->Application->GetVar('check_' . strtolower($address_prefix) . '_address') ) { // form type doesn't match check type, e.g. shipping check on billing form continue; } - if ($address_id > 0) { + if ( $address_id > 0 ) { $address_dummy->Load($address_id); } else { - $address_dummy->SetDBField('PortalUserId', $this->Application->RecallVar('user_id') ); + $address_dummy->SetDBField('PortalUserId', $this->Application->RecallVar('user_id')); } foreach ($address_fields as $address_field) { - $address_dummy->SetDBField($address_field, $object->GetDBField($address_prefix.$address_field)); + $address_dummy->SetDBField($address_field, $object->GetDBField($address_prefix . $address_field)); } $address_dummy->MarkAddress($address_prefix, false); @@ -690,10 +727,18 @@ } } - function OnUpdateCart(&$event) + /** + * Updates shopping cart content + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnUpdateCart(&$event) { $this->Application->HandleEvent($items_event, 'orditems:OnUpdate'); - return $event->CallSubEvent('OnRecalculateItems'); + + $event->CallSubEvent('OnRecalculateItems'); } /** @@ -1406,12 +1451,13 @@ return; } - $order =& $event->GetObject(); + $order =& $event->getObject(); + /* @var $order OrdersItem */ $ses_user = $this->Application->RecallVar('user_id'); - if ($order->GetDBField('PortalUserId') != $ses_user) { - if ($ses_user == 0) { + if ( $order->GetDBField('PortalUserId') != $ses_user ) { + if ( $ses_user == 0 ) { $ses_user = USER_GUEST; } @@ -1835,7 +1881,10 @@ 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP, 'OnOrderProcess' => ORDER_STATUS_TOSHIP, ); + $order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) ); + /* @var $order_items kDBList */ + $order_items->linkToParent('-inv'); $order_items->Query(); $order_items->GoFirst(); @@ -1878,6 +1927,7 @@ $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] ); $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] ); + /* @var $gateway_object kGWBase */ $charge_result = $gateway_object->Charge($object->GetFieldValues(), $gw_data['gw_params']); $sql = 'UPDATE %s SET GWResult2 = %s WHERE %s = %s'; @@ -1887,6 +1937,8 @@ if ($charge_result) { $product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true)); + /* @var $product_object ProductsItem */ + foreach ($order_items->Records as $product_item) { if (!$product_item['ProductId']) { // product may have been deleted @@ -3141,21 +3193,24 @@ { $id = array_shift( $this->StoreSelectedIDs($event) ); - $idfield = $this->Application->getUnitOption($event->Prefix,'IDField'); + $id_field = $this->Application->getUnitOption($event->Prefix,'IDField'); $table = $this->Application->getUnitOption($event->Prefix,'TableName'); $sql = 'SELECT Status FROM %s WHERE %s = %s'; - $order_status = $this->Conn->GetOne( sprintf($sql, $table, $idfield, $id) ); + $order_status = $this->Conn->GetOne( sprintf($sql, $table, $id_field, $id) ); $prefix_special = $event->Prefix.'.'.$this->getSpecialByType($order_status); $orders_list =& $this->Application->recallObject($prefix_special, $event->Prefix.'_List', Array('per_page'=>-1) ); + /* @var $orders_list kDBList */ + $orders_list->Query(); - foreach($orders_list->Records as $row_num => $record) - { - if( $record[$idfield] == $id ) break; + foreach ($orders_list->Records as $row_num => $record) { + if ( $record[$id_field] == $id ) { + break; + } } $per_page = $this->getPerPage( new kEvent($prefix_special.':OnDummy') ); @@ -3168,27 +3223,26 @@ /** * Reset's any selected order state to pending * - * @param unknown_type $event + * @param kEvent $event */ function OnResetToPending(&$event) { $object =& $event->getObject( Array('skip_autoload' => true) ); + /* @var $object kDBItem */ - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if($items_info) - { - foreach($items_info as $id => $field_values) - { + $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); + + if ( $items_info ) { + foreach ($items_info as $id => $field_values) { $object->Load($id); $object->SetDBField('Status', ORDER_STATUS_PENDING); - if( $object->Update() ) - { - $event->status=kEvent::erSUCCESS; + + if ( $object->Update() ) { + $event->status = kEvent::erSUCCESS; } - else - { - $event->status=kEvent::erFAIL; - $event->redirect=false; + else { + $event->status = kEvent::erFAIL; + $event->redirect = false; break; } } @@ -3535,7 +3589,9 @@ } $object =& $event->getObject(); - if (!$object->isLoaded()) { + /* @var $object kDBItem */ + + if ( !$object->isLoaded() ) { return true; }