Index: branches/5.2.x/units/coupons/coupons_event_handler.php =================================================================== diff -u -N -r14587 -r14625 --- branches/5.2.x/units/coupons/coupons_event_handler.php (.../coupons_event_handler.php) (revision 14587) +++ branches/5.2.x/units/coupons/coupons_event_handler.php (.../coupons_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ SetDBField('DefaultExpiration_time', $default_expiration); } - - function OnBeforeClone(&$event) + /** + * Occurs before an item has been cloned + * Id of newly created item is passed as event' 'id' param + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeClone(&$event) { parent::OnBeforeClone($event); @@ -206,33 +213,69 @@ } /** - * Enter description here... + * Prepare temp tables for creating new item + * but does not create it. Actual create is + * done in OnPreSaveCreated * * @param kEvent $event + * @return void + * @access protected */ - function OnPreCreate(&$event){ - + protected function OnPreCreate(&$event) + { parent::OnPreCreate($event); - $object = &$event->getObject(); - $exp_date = adodb_mktime(); + $object =& $event->getObject(); + /* @var $object kDBItem */ + $exp_date = adodb_mktime(); $default_duration = $this->Application->ConfigValue('Comm_DefaultCouponDuration'); - if ($default_duration && $default_duration>0){ - $exp_date += (int)$default_duration*86400; + if ( $default_duration && $default_duration > 0 ) { + $exp_date += (int)$default_duration * 86400; } + $object->SetDBField('Expiration_date', $exp_date); } - function OnBeforeItemUpdate(&$event) + /** + * Occurs before updating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemUpdate(&$event) { - $object =& $event->getObject(); - $object->SetDBField( 'Amount', abs($object->GetDBField('Amount')) ); + parent::OnBeforeItemUpdate($event); + + $this->itemChanged($event); } - function OnBeforeItemCreate(&$event) + /** + * Occurs before creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemCreate(&$event) { - $this->OnBeforeItemUpdate($event); + parent::OnBeforeItemCreate($event); + + $this->itemChanged($event); } + + /** + * Occurs before item is changed + * + * @param kEvent $event + */ + function itemChanged(&$event) + { + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $object->SetDBField('Amount', abs($object->GetDBField('Amount'))); + } } \ No newline at end of file Index: branches/5.2.x/units/destinations/dst_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/destinations/dst_event_handler.php (.../dst_event_handler.php) (revision 14258) +++ branches/5.2.x/units/destinations/dst_event_handler.php (.../dst_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ SetError($field_name, 'required'); return ''; } else { if ( $object->isRequired($field_name) ) { - foreach ($value as $key=>$val) - { - if ($val == '') { + foreach ($value as $key => $val) { + if ( $val == '' ) { $object->SetError($field_name, 'required'); } } @@ -69,11 +78,11 @@ class kCombPriceFormatter extends kFormatter { /** - * Enter description here... + * Formats value of a given field * - * @param mixed $value + * @param string $value * @param string $field_name - * @param kDBItem $object + * @param kDBItem|kDBList $object * @param string $format * @return string */ Index: branches/5.2.x/units/affiliate_payment_types/affiliate_payment_types_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/affiliate_payment_types/affiliate_payment_types_event_handler.php (.../affiliate_payment_types_event_handler.php) (revision 14258) +++ branches/5.2.x/units/affiliate_payment_types/affiliate_payment_types_event_handler.php (.../affiliate_payment_types_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Special == 'active') - { + if ( !$this->Application->isAdmin ) { $object =& $event->getObject(); - $object->addFilter('active', '%1$s.Status = 1'); + /* @var $object kDBList */ + + $object->addFilter('active', '%1$s.Status = ' . STATUS_ACTIVE); } } @@ -38,51 +47,74 @@ /** - * Enter description here... + * Ensures, that user have only one "use as billing" / "use as shipping" address * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { + parent::OnBeforeItemUpdate($event); + + $this->itemChanged($event); + } + + /** + * Occurs before creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemCreate(&$event) + { + parent::OnBeforeItemCreate($event); + + $this->itemChanged($event); + } + + /** + * Occurs before item is changed + * + * @param kEvent $event + */ + function itemChanged(&$event) + { $object =& $event->getObject(); + /* @var $object kDBItem */ - if ($object->GetDBField('IsPrimary') && $object->Validate()) { - $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); - $sql = 'UPDATE '.$table_name.' SET IsPrimary = 0'; + if ( $object->GetDBField('IsPrimary') && $object->Validate() ) { + $sql = 'UPDATE ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' + SET IsPrimary = 0'; $this->Conn->Query($sql); - $status_field = array_shift( $this->Application->getUnitOption($event->Prefix,'StatusField') ); + $status_field = array_shift( $this->Application->getUnitOption($event->Prefix, 'StatusField') ); $object->SetDBField($status_field, 1); } } - function OnBeforeItemCreate(&$event) + /** + * Don't allow to delete primary affiliate payment type + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) { - $this->OnBeforeItemUpdate($event); - } + if ( $event->Name == 'OnMassDelete' && $type == 'before' ) { + $ids = $event->getEventParam('ids'); - function OnMassDelete(&$event) - { - if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { - $event->status = kEvent::erFAIL; - return; - } + $sql = 'SELECT ' . $this->Application->getUnitOption($event->Prefix, 'IDField') . ' + FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' + WHERE IsPrimary = 1'; + $primary_id = $this->Conn->GetOne($sql); - $this->StoreSelectedIDs($event); - $event->setEventParam('ids', $this->getSelectedIDs($event) ); - $ids = $event->getEventParam('ids'); + $ids = array_diff($ids, Array ($primary_id)); - $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - - $sql = 'SELECT AffiliatePlanId FROM '.$this->Application->getUnitOption('ap', 'TableName').' - WHERE IsPrimary = 1'; - $primary_id = $this->Conn->GetOne($sql); - $ids = array_diff($ids, Array($primary_id)); - - if($ids) - { - $temp->DeleteItems($event->Prefix, $event->Special, $ids); + $event->setEventParam('ids', $ids); } - $this->clearSelectedIDs($event); } } \ No newline at end of file Index: branches/5.2.x/units/product_options/product_options_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/product_options/product_options_event_handler.php (.../product_options_event_handler.php) (revision 14258) +++ branches/5.2.x/units/product_options/product_options_event_handler.php (.../product_options_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Set($event->getPrefixSpecial().'_GoId', ''); } - function LoadItem(&$event) + /** + * Load item if id is available + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function LoadItem(&$event) { $object =& $event->getObject(); + /* @var $object kDBItem */ + $id = $this->getPassedID($event); - if (!$id) { + + if ( !$id ) { $event->CallSubEvent('OnNew'); + + return ; } - else { - if ($object->Load($id) ) - { - $actions =& $this->Application->recallObject('kActions'); - $actions->Set($event->getPrefixSpecial().'_id', $object->GetId() ); - } - else - { - //$object->setID($id); - } + + if ( $object->Load($id) ) { + $actions =& $this->Application->recallObject('kActions'); + /* @var $actions Params */ + + $actions->Set($event->getPrefixSpecial() . '_id', $object->GetId()); } } @@ -277,8 +288,18 @@ return $special; } - function OnBeforeClone(&$event) + /** + * Occurs before an item has been cloned + * Id of newly created item is passed as event' 'id' param + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeClone(&$event) { + parent::OnBeforeClone($event); + $event->Init($event->Prefix, '-item'); $object =& $event->getObject(); @@ -306,9 +327,13 @@ * Restore back values from live table to temp table before overwriting live with temp * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeDeleteFromLive(&$event) + protected function OnBeforeDeleteFromLive(&$event) { + parent::OnBeforeDeleteFromLive($event); + // check if product inventory management is via options and then proceed $id = $event->getEventParam('id'); @@ -317,24 +342,25 @@ $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); $sql = 'SELECT p.InventoryStatus - FROM '.$products_table.' p - LEFT JOIN '.$table_name.' poc ON poc.ProductId = p.ProductId - WHERE poc.'.$id_field.' = '.$id; + FROM ' . $products_table . ' p + LEFT JOIN ' . $table_name . ' poc ON poc.ProductId = p.ProductId + WHERE poc.' . $id_field . ' = ' . $id; + $inventory_status = $this->Conn->GetOne($sql); - if ($this->Conn->GetOne($sql) == 2) { - $live_object =& $this->Application->recallObject($event->Prefix.'.itemlive', null, Array('skip_autoload' => true)); + if ( $inventory_status == ProductInventory::BY_OPTIONS ) { + $live_object =& $this->Application->recallObject($event->Prefix . '.itemlive', null, Array ('skip_autoload' => true)); /* @var $live_object kDBItem */ $live_object->SwitchToLive(); $live_object->Load($id); - $temp_object =& $this->Application->recallObject($event->Prefix.'.itemtemp', null, Array('skip_autoload' => true)); + $temp_object =& $this->Application->recallObject($event->Prefix . '.itemtemp', null, Array ('skip_autoload' => true)); /* @var $temp_object kDBItem */ $temp_object->SwitchToTemp(); $temp_object->Load($id); - $temp_object->SetDBFieldsFromHash($live_object->GetFieldValues(), Array('QtyInStock','QtyReserved','QtyBackOrdered','QtyOnOrder')); + $temp_object->SetDBFieldsFromHash($live_object->GetFieldValues(), Array ('QtyInStock', 'QtyReserved', 'QtyBackOrdered', 'QtyOnOrder')); $temp_object->Update(); } } Index: branches/5.2.x/units/taxesdestinations/taxes_dst_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/taxesdestinations/taxes_dst_event_handler.php (.../taxes_dst_event_handler.php) (revision 14258) +++ branches/5.2.x/units/taxesdestinations/taxes_dst_event_handler.php (.../taxes_dst_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Special == 'log') return false; + if ( $event->Special == 'log' ) { + return ; + } $parent_info = $object->getLinkedInfo(); + $parent_object =& $this->Application->recallObject($parent_info['ParentPrefix']); + /* @var $parent_object kDBItem */ + $options = $object->getFieldOptions('PaymentTypeId'); - if($parent_object->isLoaded()) - { + if ( $parent_object->isLoaded() ) { $options['default'] = $parent_object->GetDBField('PaymentTypeId'); $object->SetDBField('PaymentTypeId', $parent_object->GetDBField('PaymentTypeId')); } - if($this->Application->GetVar($event->getPrefixSpecial().'_event') != 'OnNew' && $this->Application->GetVar($event->getPrefixSpecial().'_event') != 'OnCreate') - { + if ( $this->Application->GetVar($event->getPrefixSpecial() . '_event') != 'OnNew' && $this->Application->GetVar($event->getPrefixSpecial() . '_event') != 'OnCreate' ) { $options['options'][0] = ''; } @@ -59,38 +66,44 @@ } /** - * Set's day of payment for newly created payments + * Updates Affiliate Record On Successfully payment creation * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnAfterItemCreate(&$event) { - $object =& $event->getObject( Array('skip_autoload'=>true) ); - } + parent::OnAfterItemCreate($event); - /** - * Updates Affiliate Record On Successfuly payment creation - * - * @param kEvent $event - */ - function OnAfterItemCreate(&$event) - { - $object =& $event->getObject( Array('skip_autoload' => true) ); + $object =& $event->getObject(); + /* @var $object kDBItem */ + $parent_info = $object->getLinkedInfo(); - $sql = 'SELECT MAX(PaymentDate) FROM '.$object->TableName.' - WHERE '.$parent_info['ParentTableKey'].' = '.$parent_info['ParentId']; + + $sql = 'SELECT MAX(PaymentDate) + FROM ' . $object->TableName . ' + WHERE ' . $parent_info['ParentTableKey'] . ' = ' . $parent_info['ParentId']; $payment_date = $this->Conn->GetOne($sql); - $amount_payed = $object->GetDBField('Amount'); - $affiliate =& $this->Application->recallObject('affil'); - $affiliate->SetDBField( 'AmountToPay', $affiliate->GetDBField('AmountToPay') - $amount_payed ); + /* @var $affiliate kDBItem */ + + $affiliate->SetDBField('AmountToPay', $affiliate->GetDBField('AmountToPay') - $object->GetDBField('Amount')); $affiliate->SetDBField('LastPaymentDate_date', $payment_date); $affiliate->SetDBField('LastPaymentDate_time', $payment_date); $affiliate->Update(); } - function SetCustomQuery(&$event) + /** + * Apply any custom changes to list's sql query + * + * @param kEvent $event + * @return void + * @access protected + * @see kDBEventHandler::OnListBuild() + */ + protected function SetCustomQuery(&$event) { $object =& $event->getObject(); if($event->Special == 'log') Index: branches/5.2.x/units/order_items/order_items_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/order_items/order_items_event_handler.php (.../order_items_event_handler.php) (revision 14258) +++ branches/5.2.x/units/order_items/order_items_event_handler.php (.../order_items_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Conn->Query($sql); } - function OnAfterItemLoad(&$event) + /** + * Occurs after loading item, 'id' parameter + * allows to get id of item that was loaded + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemLoad(&$event) { + parent::OnAfterItemLoad($event); + $object =& $event->getObject(); - if( $item_info = $object->GetDBField('ItemData') ) - { + /* @var $object kDBItem */ + + if ( $item_info = $object->GetDBField('ItemData') ) { $item_info = unserialize($item_info); $object->SetDBField('DiscountType', getArrayValue($item_info, 'DiscountType')); $object->SetDBField('DiscountId', getArrayValue($item_info, 'DiscountId')); } } - function SetCustomQuery(&$event) + /** + * Apply any custom changes to list's sql query + * + * @param kEvent $event + * @return void + * @access protected + * @see kDBEventHandler::OnListBuild() + */ + protected function SetCustomQuery(&$event) { parent::SetCustomQuery($event); Index: branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php =================================================================== diff -u -N -r14587 -r14625 --- branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14587) +++ branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ status = kEvent::erSUCCESS; } - function customProcessing(&$event, $type) + /** + * Apply custom processing to item + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) { if( $type == 'before' && $this->Application->GetVar('sc') ) { Index: branches/5.2.x/units/brackets/brackets_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/brackets/brackets_event_handler.php (.../brackets_event_handler.php) (revision 14258) +++ branches/5.2.x/units/brackets/brackets_event_handler.php (.../brackets_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ permMapping = array_merge($this->permMapping, $permissions); } - function prepareObject(&$object, &$event) + /** + * Apply some special processing to object being + * recalled before using it in other events that + * call prepareObject + * + * @param kDBItem|kDBList $object + * @param kEvent $event + * @return void + * @access protected + */ + protected function prepareObject(&$object, &$event) { - if($this->Application->GetVar('s_id') === false) - { + if ( $this->Application->GetVar('s_id') === false ) { return; } $shipping_object =& $this->Application->recallObject('s'); + /* @var $shipping_object kDBItem */ + $lang_object =& $this->Application->recallObject('lang.current'); + /* @var $lang_object LanguagesItem */ - if($lang_object->GetDBField('UnitSystem') == 2 && $shipping_object->GetDBField('Type') == 1) - { - $fields = Array('Start', 'End'); + if ( $lang_object->GetDBField('UnitSystem') == 2 && $shipping_object->GetDBField('Type') == 1 ) { + $fields = Array ('Start', 'End'); + $formatter =& $this->Application->recallObject('kUnitFormatter'); - foreach($fields as $field) - { + /* @var $formatter kUnitFormatter */ + + foreach ($fields as $field) { + $object->SetFieldOption($field, 'formatter', 'kUnitFormatter'); $options = $object->GetFieldOptions($field); - $options['formatter'] = 'kUnitFormatter'; - $object->SetFieldOptions($field, $options); + $formatter->prepareOptions($field, $options, $object); } } @@ -156,17 +169,32 @@ $event->CallSubEvent('OnPreSaveBrackets'); } - function OnBeforeItemUpdate(&$event) + /** + * Occurs before updating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemUpdate(&$event) { + parent::OnBeforeItemUpdate($event); + $shipping_object =& $this->Application->recallObject('s'); + /* @var $shipping_object kDBItem */ + $default_start = ($shipping_object->GetDBField('Type') == 1) ? 0 : 1; $object =& $event->getObject(); + /* @var $object kDBItem */ + $linked_info = $object->getLinkedInfo(); $object->SetDBField($linked_info['ParentTableKey'], $linked_info['ParentId']); $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - $brackets_helper->InitHelper('Start', 'End', Array(), $default_start ); + /* @var $brackets_helper kBracketsHelper */ + + $brackets_helper->InitHelper('Start', 'End', Array (), $default_start); $brackets_helper->replaceInfinity($event); } Index: branches/5.2.x/units/payment_type/payment_type_event_handler.php =================================================================== diff -u -N -r14587 -r14625 --- branches/5.2.x/units/payment_type/payment_type_event_handler.php (.../payment_type_event_handler.php) (revision 14587) +++ branches/5.2.x/units/payment_type/payment_type_event_handler.php (.../payment_type_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); + $object =& $event->getObject(); + /* @var $object kDBItem */ - $status_field = array_shift( $this->Application->getUnitOption($event->Prefix,'StatusField') ); + $status_field = array_shift( $this->Application->getUnitOption($event->Prefix, 'StatusField') ); - if($object->GetDBField('IsPrimary')==1 && $object->GetDBField($status_field)==0){ + if ( $object->GetDBField('IsPrimary') == 1 && $object->GetDBField($status_field) == 0 ) { $object->SetDBField($status_field, 1); } $this->convertGroups($event); } /** - * Occurse before creating item + * Occurs before creating item * * @param kEvent $event - * @access public + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnBeforeItemCreate(&$event) { parent::OnBeforeItemCreate($event); @@ -134,11 +137,13 @@ * Disable delete on primary payment type * * @param kEvent $event + * @param string $type + * @return void * @access protected */ - - function customProcessing(&$event, $when){ - if ($event->Name == 'OnMassDelete' && $when == 'before'){ + protected function customProcessing(&$event, $type) + { + if ($event->Name == 'OnMassDelete' && $type == 'before'){ $object = &$event->getObject(); $ids = $event->getEventParam('ids'); @@ -157,9 +162,18 @@ } } - function OnSave(&$event) + /** + * Saves content of temp table into live and + * redirects to event' default redirect (normally grid template) + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnSave(&$event) { $this->Application->StoreVar('check_unused_currencies', 1); + parent::OnSave($event); } @@ -219,11 +233,14 @@ } /** - * Apply system filter to themes list + * Apply any custom changes to list's sql query * * @param kEvent $event + * @return void + * @access protected + * @see kDBEventHandler::OnListBuild() */ - function SetCustomQuery(&$event) + protected function SetCustomQuery(&$event) { parent::SetCustomQuery($event); Index: branches/5.2.x/units/affiliate_plans_brackets/affiliate_plans_brackets_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/affiliate_plans_brackets/affiliate_plans_brackets_event_handler.php (.../affiliate_plans_brackets_event_handler.php) (revision 14258) +++ branches/5.2.x/units/affiliate_plans_brackets/affiliate_plans_brackets_event_handler.php (.../affiliate_plans_brackets_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ CallSubEvent('OnPreSaveBrackets'); } - function OnBeforeItemUpdate(&$event) + /** + * Occurs before updating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemUpdate(&$event) { + parent::OnBeforeItemUpdate($event); + $object =& $event->getObject(); + /* @var $object kDBItem */ + $linked_info = $object->getLinkedInfo(); $object->SetDBField($linked_info['ParentTableKey'], $linked_info['ParentId']); $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - $brackets_helper->InitHelper('FromAmount', 'ToAmount', Array('Percent' => '') ); + /* @var $brackets_helper kBracketsHelper */ + + $brackets_helper->InitHelper('FromAmount', 'ToAmount', Array ('Percent' => '')); $brackets_helper->replaceInfinity($event); } Index: branches/5.2.x/units/shipping/shipping_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/shipping/shipping_event_handler.php (.../shipping_event_handler.php) (revision 14258) +++ branches/5.2.x/units/shipping/shipping_event_handler.php (.../shipping_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Application->isAdminUser) { - return ; + if ( !$this->Application->isAdminUser ) { + return; } $object =& $event->getObject(); + /* @var $object kDBItem */ - $format = '%01.'.$object->GetDBField('PrecisionAfterSep').'f'; // %01.2f + $format = '%01.' . $object->GetDBField('PrecisionAfterSep') . 'f'; // %01.2f $zero_if_empty = $object->GetDBField('ZeroIfEmpty'); $sc_object =& $this->Application->recallObject('sc', null, Array ('raise_warnings' => 0)); @@ -56,10 +59,10 @@ $flat_options['default'] = $zero_if_empty ? 0 : null; $sc_object->SetFieldOptions('Flat', $flat_options); - $perunit_options = $sc_object->GetFieldOptions('PerUnit'); - $perunit_options['format'] = $format; - $perunit_options['default'] = $zero_if_empty ? 0 : null; - $sc_object->SetFieldOptions('PerUnit', $perunit_options); + $per_unit_options = $sc_object->GetFieldOptions('PerUnit'); + $per_unit_options['format'] = $format; + $per_unit_options['default'] = $zero_if_empty ? 0 : null; + $sc_object->SetFieldOptions('PerUnit', $per_unit_options); } /** @@ -140,15 +143,32 @@ $event->status=kEvent::erSUCCESS; } - function OnSave(&$event) + /** + * Saves content of temp table into live and + * redirects to event' default redirect (normally grid template) + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnSave(&$event) { $this->OnAfterItemLoad($event); parent::OnSave($event); } - function OnAfterItemCreate(&$event) + /** + * Occurs after creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemCreate(&$event) { + parent::OnAfterItemCreate($event); + $event->CallSubEvent('OnAnyChange'); } @@ -168,14 +188,22 @@ $this->Conn->Query($sql); } - function OnPreSaveCreated(&$event){ + /** + * Creates a new item in temp table and + * stores item id in App vars and Session on success + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnPreSaveCreated(&$event) + { parent::OnPreSaveCreated($event); - $default_group = $this->Application->ConfigValue('User_LoggedInGroup'); + $object =& $event->getObject( Array ('skip_autoload' => true) ); + /* @var $object kDBItem */ - $object =& $event->getObject( Array('skip_autoload' => true) ); - - $object->SetDBField('PortalGroups', ','.$default_group.','); + $object->SetDBField('PortalGroups', ',' . $this->Application->ConfigValue('User_LoggedInGroup') . ','); } function UpdateGroups(&$event){ @@ -196,8 +224,16 @@ } } - function customProcessing(&$event, $when){ + /** + * Apply custom processing to item + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) + { $this->UpdateGroups($event); - } } \ No newline at end of file Index: branches/5.2.x/units/currencies/currencies_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/currencies/currencies_event_handler.php (.../currencies_event_handler.php) (revision 14258) +++ branches/5.2.x/units/currencies/currencies_event_handler.php (.../currencies_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); - if($object->GetDBField('IsPrimary') && $object->Validate()) - { - $sql = 'UPDATE '.$this->Application->getUnitOption($this->Prefix, 'TableName').' + /* @var $object kDBItem */ + + if ( $object->GetDBField('IsPrimary') && $object->Validate() ) { + $sql = 'UPDATE ' . $this->Application->getUnitOption($this->Prefix, 'TableName') . ' SET IsPrimary = 0 - WHERE CurrencyId <> '.$object->GetDBField('CurrencyId'); + WHERE CurrencyId <> ' . $object->GetDBField('CurrencyId'); $this->Conn->Query($sql); + $object->SetDBField('Status', 1); } - $object->SetDBField('Modified_date', adodb_mktime() ); - $object->SetDBField('Modified_time', adodb_mktime() ); - if($object->GetDBField('Status') == 0) - { - $sql = 'DELETE FROM '.$this->Application->getUnitOption('ptc', 'TableName'). - ' WHERE CurrencyId='.$object->GetDBField('CurrencyId'); + $object->SetDBField('Modified_date', adodb_mktime()); + $object->SetDBField('Modified_time', adodb_mktime()); + + if ( $object->GetDBField('Status') == 0 ) { + $sql = 'DELETE FROM ' . $this->Application->getUnitOption('ptc', 'TableName') . ' + WHERE CurrencyId = ' . $object->GetDBField('CurrencyId'); $this->Conn->Query($sql); } } /** - * Enter description here... + * Apply any custom changes to list's sql query * * @param kEvent $event + * @return void + * @access protected + * @see kDBEventHandler::OnListBuild() */ - function SetCustomQuery(&$event) + protected function SetCustomQuery(&$event) { $object =& $event->getObject(); @@ -115,17 +124,20 @@ } /** - * Enter description here... + * Saves content of temp table into live and + * redirects to event' default redirect (normally grid template) * * @param kEvent $event + * @return void + * @access protected */ - function OnSave(&$event) + protected function OnSave(&$event) { - $this->Application->StoreVar( 'saved_curr_ids', $this->Application->RecallVar($event->Prefix.'_selected_ids') ); + $this->Application->StoreVar('saved_curr_ids', $this->Application->RecallVar($event->Prefix . '_selected_ids')); + parent::OnSave($event); } - /** * Enter description here... * Index: branches/5.2.x/units/products/products_event_handler.php =================================================================== diff -u -N -r14436 -r14625 --- branches/5.2.x/units/products/products_event_handler.php (.../products_event_handler.php) (revision 14436) +++ branches/5.2.x/units/products/products_event_handler.php (.../products_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); + /* @var $object kDBItem */ - $product_approve_events = Array( + $product_approve_events = Array ( 2 => 'p:OnSubscriptionApprove', 4 => 'p:OnDownloadableApprove', 5 => 'p:OnPackageApprove' ); $product_type = $object->GetDBField('Type'); - $type_found = in_array($product_type, array_keys($product_approve_events) ); + $type_found = in_array($product_type, array_keys($product_approve_events)); - if ($type_found && !$object->GetDBField('ProcessingData') ) { - $processing_data = Array('ApproveEvent' => $product_approve_events[$product_type] ); - $object->SetDBField( 'ProcessingData', serialize($processing_data) ); + if ( $type_found && !$object->GetDBField('ProcessingData') ) { + $processing_data = Array ('ApproveEvent' => $product_approve_events[$product_type]); + $object->SetDBField('ProcessingData', serialize($processing_data)); } } @@ -285,22 +288,37 @@ } } - function OnBeforeDeleteFromLive(&$event) + /** + * Occurs before an item is deleted from live table when copying from temp + * (temp handler deleted all items from live and then copy over all items from temp) + * Id of item being deleted is passed as event' 'id' param + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeDeleteFromLive(&$event) { - $id = $event->getEventParam('id'); - $product =& $this->Application->recallObject($event->Prefix.'.itemlive', null, Array('skip_autoload' => true)); + parent::OnBeforeDeleteFromLive($event); + + $product =& $this->Application->recallObject($event->Prefix . '.itemlive', null, Array ('skip_autoload' => true)); /* @var $product kCatDBItem */ $product->SwitchToLive(); - if (!$product->Load($id)) return ; // this will make sure New product will not be overwritten with empty data + $id = $event->getEventParam('id'); - $temp =& $this->Application->recallObject($event->Prefix.'.itemtemp', null, Array('skip_autoload' => true)); + if ( !$product->Load($id) ) { + // this will make sure New product will not be overwritten with empty data + return ; + } + + $temp =& $this->Application->recallObject($event->Prefix . '.itemtemp', null, Array ('skip_autoload' => true)); /* @var $temp kCatDBItem */ $temp->SwitchToTemp(); $temp->Load($id); - $temp->SetDBFieldsFromHash($product->GetFieldValues(), Array('QtyInStock','QtyReserved','QtyBackOrdered','QtyOnOrder')); + $temp->SetDBFieldsFromHash($product->GetFieldValues(), Array ('QtyInStock', 'QtyReserved', 'QtyBackOrdered', 'QtyOnOrder')); $temp->Update(); } @@ -311,23 +329,42 @@ $this->Application->RemoveVar('inventory_actions'); } - function OnSave(&$event) + /** + * Saves content of temp table into live and + * redirects to event' default redirect (normally grid template) + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnSave(&$event) { - $res = parent::OnSave($event); - if ($event->status == kEvent::erSUCCESS) { + parent::OnSave($event); + + if ( $event->status == kEvent::erSUCCESS ) { $this->RunScheduledInventoryActions($event); } - return $res; } - function OnPreCreate(&$event) + /** + * Prepare temp tables for creating new item + * but does not create it. Actual create is + * done in OnPreSaveCreated + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnPreCreate(&$event) { parent::onPreCreate($event); - $object =& $event->GetObject(); - $object->SetDBField('Type', $this->Application->GetVar( $event->getPrefixSpecial(true).'_new_type' )); + + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $object->SetDBField('Type', $this->Application->GetVar($event->getPrefixSpecial(true) . '_new_type')); } - /** * Enter description here... * @@ -865,11 +902,14 @@ } /** - * Checks, that all required product options are filled in before product is saved + * Saves edited item into temp table + * If there is no id, new item is created in temp table * * @param kEvent $event + * @return void + * @access protected */ - function OnPreSave(&$event) + protected function OnPreSave(&$event) { $this->CheckRequiredOptions($event); @@ -880,8 +920,10 @@ * Set new price to ProductsPricing * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemCreate(&$event) + protected function OnAfterItemCreate(&$event) { parent::OnAfterItemCreate($event); @@ -996,15 +1038,23 @@ * * @param kEvent $event */ - function OnAfterItemLoad(&$event) + + /** + * Load price from temp table if product mode is temp table + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemLoad(&$event) { parent::OnAfterItemLoad($event); $object =& $event->getObject(); /* @var $object ProductsItem */ $a_pricing = $object->getPrimaryPricing(); - if (!$a_pricing) { + if ( !$a_pricing ) { // pricing doesn't exist for new products $price = $cost = null; } Index: branches/5.2.x/units/shipping_quote_engines/shipping_quote_engine_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/shipping_quote_engines/shipping_quote_engine_event_handler.php (.../shipping_quote_engine_event_handler.php) (revision 14258) +++ branches/5.2.x/units/shipping_quote_engines/shipping_quote_engine_event_handler.php (.../shipping_quote_engine_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); /* @var $object kDBItem */ - $engine =& $this->Application->recallObject( $object->GetDBField('ClassName') ); + $engine =& $this->Application->recallObject($object->GetDBField('ClassName')); /* @var $engine ShippingQuoteEngine */ $engine_fields = $engine->GetEngineFields(); $properties = $object->GetDBField('Properties'); $properties = $properties ? unserialize($properties) : Array (); // common fields for all shipping quote engines - if ($object->GetDBField('AccountPassword') != '') { + if ( $object->GetDBField('AccountPassword') != '' ) { // don't erase password by accident $engine_fields[] = 'AccountPassword'; } @@ -53,28 +55,28 @@ $from_country = $this->Application->ConfigValue('Comm_Shipping_Country'); $has_states = strlen($from_country) == 3 ? $cs_helper->CountryHasStates($from_country) : false; - $valid_address = $from_country && ($has_states && $this->Application->ConfigValue('Comm_Shipping_State') || !$has_states) && - $this->Application->ConfigValue('Comm_Shipping_City') && $this->Application->ConfigValue('Comm_Shipping_ZIP'); + $valid_address = $from_country && ($has_states && $this->Application->ConfigValue('Comm_Shipping_State') || !$has_states) && $this->Application->ConfigValue('Comm_Shipping_City') && $this->Application->ConfigValue('Comm_Shipping_ZIP'); - if (!function_exists('curl_init')) { + if ( !function_exists('curl_init') ) { $object->SetError('Status', 'curl_not_present'); } - elseif (($object->GetDBField('Status') == STATUS_ACTIVE) && !$valid_address) { + elseif ( ($object->GetDBField('Status') == STATUS_ACTIVE) && !$valid_address ) { $object->SetError('Status', 'from_info_not_filled_in'); } } /** - * Enter description here... + * Apply same processing to each item being selected in grid * * @param kEvent $event + * @return void + * @access protected */ - function iterateItems(&$event) + protected function iterateItems(&$event) { -// $event->setEventParam('SkipProcessing', 1); parent::iterateItems($event); - if($event->Name == 'OnMassApprove') - { + + if ( $event->Name == 'OnMassApprove' ) { $event->status = kEvent::erSUCCESS; $event->redirect = true; } @@ -84,8 +86,10 @@ * Sets virtual fields from serialized properties array * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemLoad(&$event) + protected function OnAfterItemLoad(&$event) { parent::OnAfterItemLoad($event); @@ -94,17 +98,19 @@ $properties = $object->GetDBField('Properties'); - if ($properties) { - $object->SetDBFieldsFromHash( unserialize($properties) ); + if ( $properties ) { + $object->SetDBFieldsFromHash(unserialize($properties)); } } /** * Deletes cached shipping quotes on any setting change * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemCreate(&$event) + protected function OnAfterItemCreate(&$event) { parent::OnAfterItemCreate($event); Index: branches/5.2.x/units/discounts/discounts_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/discounts/discounts_event_handler.php (.../discounts_event_handler.php) (revision 14258) +++ branches/5.2.x/units/discounts/discounts_event_handler.php (.../discounts_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); - $object->SetDBField( 'Amount', abs($object->GetDBField('Amount')) ); + parent::OnBeforeItemUpdate($event); + + $this->itemChanged($event); } - function OnBeforeItemCreate(&$event) + /** + * Occurs before creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemCreate(&$event) { - $this->OnBeforeItemUpdate($event); + parent::OnBeforeItemCreate($event); + + $this->itemChanged($event); } + + /** + * Occurs before item changed + * + * @param kEvent $event + */ + function itemChanged(&$event) + { + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $object->SetDBField('Amount', abs($object->GetDBField('Amount'))); + } } \ No newline at end of file Index: branches/5.2.x/units/addresses/addresses_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/addresses/addresses_event_handler.php (.../addresses_event_handler.php) (revision 14258) +++ branches/5.2.x/units/addresses/addresses_event_handler.php (.../addresses_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Application->isAdminUser) { return ; @@ -76,13 +79,17 @@ * Ensures, that user have only one "use as billing" / "use as shipping" address * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { + parent::OnBeforeItemUpdate($event); + $object =& $event->getObject(); /* @var $object kDBItem */ - if (!$object->isLoaded() || !$this->checkItemStatus($event)) { + if ( !$object->isLoaded() || !$this->checkItemStatus($event) ) { // not trivially loaded object OR not current user address $event->status = kEvent::erPERM_FAIL; return ; @@ -139,8 +146,10 @@ * Fills states for object country * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemLoad(&$event) + protected function OnAfterItemLoad(&$event) { parent::OnAfterItemLoad($event); @@ -284,10 +293,14 @@ * Disables Guest ability to create addresses * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnBeforeItemCreate(&$event) { - if (!$this->Application->LoggedIn()) { + parent::OnBeforeItemCreate($event); + + if ( !$this->Application->LoggedIn() ) { $event->status = kEvent::erPERM_FAIL; return ; } Index: branches/5.2.x/units/manufacturers/manufacturers_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/manufacturers/manufacturers_event_handler.php (.../manufacturers_event_handler.php) (revision 14258) +++ branches/5.2.x/units/manufacturers/manufacturers_event_handler.php (.../manufacturers_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Application->isAdminUser) { return ; @@ -72,14 +75,14 @@ $object->addFilter('category_manufacturer_filter', $manufacturers ? '%1$s.ManufacturerId IN (' . implode(',', $manufacturers) . ')' : 'FALSE'); } - /** - * Prefill states dropdown with correct values + * Pre-fills states dropdown with correct values * * @param kEvent $event - * @access public + * @return void + * @access protected */ - function OnAfterItemLoad(&$event) + protected function OnAfterItemLoad(&$event) { parent::OnAfterItemLoad($event); @@ -93,8 +96,10 @@ * Processes states * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { parent::OnBeforeItemUpdate($event); @@ -109,8 +114,10 @@ * Processes states * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnBeforeItemCreate(&$event) { parent::OnBeforeItemCreate($event); Index: branches/5.2.x/units/affiliates/affiliates_tag_processor.php =================================================================== diff -u -N -r14582 -r14625 --- branches/5.2.x/units/affiliates/affiliates_tag_processor.php (.../affiliates_tag_processor.php) (revision 14582) +++ branches/5.2.x/units/affiliates/affiliates_tag_processor.php (.../affiliates_tag_processor.php) (revision 14625) @@ -1,6 +1,6 @@ Application->recallObject($this->Prefix.'.user', $this->Prefix, Array('skip_autoload'=>true) ); - $object->Load( $this->Application->RecallVar('user_id'), 'PortalUserId' ); - + $object =& $this->Application->recallObject($this->Prefix . '.user'); + /* @var $object kDBItem */ + return $object->isLoaded(); } - function User_AffiliateIsNotActive($params) + /** + * [Aggregated Tag] Checks, that affiliate record for current user exists and is active + * + * @param $params + * @return bool + * @access protected + */ + protected function User_AffiliateIsActive($params) { - $object =& $this->Application->recallObject($this->Prefix.'.user', $this->Prefix, Array('skip_autoload'=>true) ); - $object->Load( $this->Application->RecallVar('user_id'), 'PortalUserId' ); + $object =& $this->Application->recallObject($this->Prefix . '.user'); + /* @var $object kDBItem */ - return $object->isLoaded() && ($object->GetDBField('Status') != 1); + return $object->isLoaded() && ($object->GetDBField('Status') == STATUS_ACTIVE); } /** @@ -115,14 +123,14 @@ function IsAffiliateOrRegisterAsAffiliateAllowed($params) { - $object =& $this->Application->recallObject($this->Prefix.'.user', $this->Prefix, Array('skip_autoload'=>true) ); - $object->Load( $this->Application->RecallVar('user_id'), 'PortalUserId' ); + $object =& $this->Application->recallObject($this->Prefix . '.user'); + /* @var $object kDBItem */ - return ($this->Application->ConfigValue('Comm_RegisterAsAffiliate') || $object->isLoaded()) ? 1 : 0; + return $this->Application->ConfigValue('Comm_RegisterAsAffiliate') || $object->isLoaded() ? 1 : 0; } /** - * [AGGREGATED TAG] Checks if affilite registration is allowed + * [AGGREGATED TAG] Checks if affiliate registration is allowed * * @param Array $params * @return int @@ -135,10 +143,24 @@ function Main_RequireAffiliate($params) { $t = $params['registration_template']; - if( !$this->User_IsAffiliate($params) ) - { - $redirect_params = Array( 'next_template' => $this->Application->GetVar('t') ); + + if ( !$this->User_IsAffiliate($params) ) { + $redirect_params = Array ('next_template' => $this->Application->GetVar('t')); $this->Application->Redirect($t, $redirect_params); } } + + /** + * Calls OnNew event from template, when no other event submitted + * + * @param Array $params + */ + function PresetFormFields($params) + { + $prefix = $this->getPrefixSpecial(); + + if ( !$this->Application->GetVar($prefix . '_event') && !$this->Application->GetVar('u.register_event') ) { + $this->Application->HandleEvent(new kEvent($prefix . ':OnNew')); + } + } } \ No newline at end of file Index: branches/5.2.x/units/gateways/gw_tag_processor.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/gateways/gw_tag_processor.php (.../gw_tag_processor.php) (revision 14258) +++ branches/5.2.x/units/gateways/gw_tag_processor.php (.../gw_tag_processor.php) (revision 14625) @@ -1,6 +1,6 @@ Application->recallObject($this->getPrefixSpecial(),$this->Prefix, $params); + $object =& $this->getObject($params); + /* @var $object kDBItem */ - $value = $this->gwConfigValue($params); - - $options = explode(',', $object->GetDBField('ValueList') ); - $block_params = $this->prepareTagParams($params); - $block_params['name'] = $this->SelectParam($params, 'render_as,block'); $block_params['pass_params'] = 'true'; $o = ''; - foreach ($options as $key_val) - { - list($key,$val) = explode('=', $key_val); + $value = $this->gwConfigValue($params); + $options = explode(',', $object->GetDBField('ValueList')); + + foreach ($options as $key_val) { + list($key, $val) = explode('=', $key_val); $block_params['key'] = $key; $block_params['option'] = $val; - $block_params['selected'] = ( $key == $value ? ' '.$params['selected'] : ''); + $block_params['selected'] = ($key == $value ? ' ' . $params['selected'] : ''); $block_params['PrefixSpecial'] = $this->getPrefixSpecial(); $o .= $this->Application->ParseBlock($block_params, 1); } Index: branches/5.2.x/units/files/files.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/files/files.php (.../files.php) (revision 14258) +++ branches/5.2.x/units/files/files.php (.../files.php) (revision 14625) @@ -1,6 +1,6 @@ Load($id); - $upload_dir = $this->Fields['FilePath']['upload_dir']; - $file_path = FULL_PATH.$upload_dir.$this->GetDBField('FilePath'); - if(file_exists($file_path)) - { - unlink($file_path); - } - return parent::Delete($id); + /** + * Deletes the record from database + * + * @param int $id + * @return bool + * @access public + */ + public function Delete($id = null) + { + $this->Load($id); + $upload_dir = $this->Fields['FilePath']['upload_dir']; + $file_path = FULL_PATH . $upload_dir . $this->GetDBField('FilePath'); + + if ( file_exists($file_path) ) { + unlink($file_path); } - } \ No newline at end of file + + return parent::Delete($id); + } +} \ No newline at end of file Index: branches/5.2.x/units/pricing/pricing_event_handler.php =================================================================== diff -u -N -r14569 -r14625 --- branches/5.2.x/units/pricing/pricing_event_handler.php (.../pricing_event_handler.php) (revision 14569) +++ branches/5.2.x/units/pricing/pricing_event_handler.php (.../pricing_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ getObject(); switch ($type) @@ -372,19 +380,21 @@ } /** - * Resets primary mark for other pricings of given product, when current pricing is primary + * Resets primary mark for other prices of given product, when current pricing is primary * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { parent::OnBeforeItemUpdate($event); $object =& $event->getObject(); /* @var $object kDBItem */ - if ($object->GetDBField('IsPrimary') == 1) { - // make all pricings non primary, when this one is + if ( $object->GetDBField('IsPrimary') == 1 ) { + // make all prices non primary, when this one is $sql = 'UPDATE ' . $object->TableName . ' SET IsPrimary = 0 WHERE (ProductId = ' . $object->GetDBField('ProductId') . ') AND (' . $object->IDField . ' <> ' . $object->GetID() . ')'; @@ -393,35 +403,50 @@ } /** - * Enter description here... + * Occurs before creating item * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnBeforeItemCreate(&$event) { + parent::OnBeforeItemCreate($event); + $object =& $event->getObject(); + /* @var $object kDBItem */ + $table_info = $object->getLinkedInfo($event->Special); - $table_info['ParentId'] = ($table_info['ParentId']?$table_info['ParentId']:0); + $table_info['ParentId'] = ($table_info['ParentId'] ? $table_info['ParentId'] : 0); - if ( $object->GetDBField('IsPrimary') == 1 ){ - $this->Conn->Query('UPDATE '.$object->TableName.' SET IsPrimary = 0 WHERE '.$table_info['ForeignKey'].' = '.$table_info['ParentId']); + if ( $object->GetDBField('IsPrimary') == 1 ) { + $sql = 'UPDATE ' . $object->TableName . ' + SET IsPrimary = 0 + WHERE ' . $table_info['ForeignKey'] . ' = ' . $table_info['ParentId']; + $this->Conn->Query($sql); } else { - $prices_qty = $this->Conn->GetOne('SELECT COUNT(*) FROM '.$object->TableName.' WHERE '.$table_info['ForeignKey'].' = '.$table_info['ParentId']); + $sql = 'SELECT COUNT(*) + FROM ' . $object->TableName . ' + WHERE ' . $table_info['ForeignKey'] . ' = ' . $table_info['ParentId']; + $prices_qty = $this->Conn->GetOne($sql); - if ($prices_qty == 0) { + if ( $prices_qty == 0 ) { $object->SetDBField('IsPrimary', 1); } } } /** - * Enter description here... + * Apply any custom changes to list's sql query * * @param kEvent $event + * @return void + * @access protected + * @see kDBEventHandler::OnListBuild() */ - function SetCustomQuery(&$event) + protected function SetCustomQuery(&$event) { $object =& $event->getObject(); Index: branches/5.2.x/units/zones/zones_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/zones/zones_event_handler.php (.../zones_event_handler.php) (revision 14258) +++ branches/5.2.x/units/zones/zones_event_handler.php (.../zones_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ eventMethods = array_merge($this->eventMethods, $zones_events); } - function customProcessing(&$event, $type) + /** + * Apply custom processing to item + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) { - $zone_object =& $event->GetObject(); - switch($type) - { + $zone_object =& $event->getObject(); + /* @var $zone_object kDBItem */ + + switch ( $type ) { case 'before': - if ($event->Name == 'OnCreate') - { + if ( $event->Name == 'OnCreate' ) { $zone_object->SetDBField('ShippingTypeID', $this->Application->GetVar('s_id')); } break; + case 'after': - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - $dst_object =& $this->Application->RecallObject('dst'); - if ($event->Name == 'OnUpdate') - { - $sql = 'DELETE FROM '.$dst_object->TableName.' WHERE ShippingZoneId='.$zone_object->GetID(); + $dst_object =& $this->Application->recallObject('dst'); + /* @var $dst_object kDBItem */ + + if ( $event->Name == 'OnUpdate' ) { + $sql = 'DELETE FROM ' . $dst_object->TableName . ' + WHERE ShippingZoneId = ' . $zone_object->GetID(); $this->Conn->Query($sql); } - else - { - $temp = $this->Application->GetVar('dst'); - foreach ($temp as $key => $value) - { + else { + $temp = $this->Application->GetVar('dst', Array ()); + foreach ($temp as $key => $value) { $temp[$key]['ShippingZoneId'] = $zone_object->GetID(); } $this->Application->SetVar('dst', $temp); } - $dst_event = new kEvent(); - $dst_event->Init('dst'); - $dst_event->Name = 'OnCreate'; + $dst_event = new kEvent('dst:OnCreate'); $this->Application->HandleEvent($dst_event); break; - - default: } } @@ -200,22 +204,6 @@ } } - function OnMassDelete(&$event) - { - $ids = $this->StoreSelectedIDs($event); - - $event->setEventParam('ids', $ids); - $this->customProcessing($event, 'before'); - $ids = $event->getEventParam('ids'); - $ids = implode(',', $ids); - - $dst =& $this->Application->recallObject('dst'); - $sql = 'DELETE FROM '.$dst->TableName.' WHERE ShippingZoneId IN ('.$ids.')'; - $this->Conn->Query($sql); - - parent::OnMassDelete($event); - } - function OnCountryChange(&$event) { $destinations = &$this->Application->recallObject('dst'); @@ -229,16 +217,29 @@ $event->redirect = false; } - function OnCancel(&$event){ - + /** + * Cancels kDBItem Editing/Creation + * + * @param kEvent $event + * @return void + * @access protected + */ + function OnCancel(&$event) + { parent::OnCancel($event); + $dst_object = &$this->Application->recallObject('dst'); - $delete_zones_sql = 'DELETE FROM '.$dst_object->TableName.' WHERE ShippingZoneId = 0'; + /* @var $dst_object kDBItem */ + + $delete_zones_sql = ' DELETE FROM ' . $dst_object->TableName . ' + WHERE ShippingZoneId = 0'; $this->Conn->Query($delete_zones_sql); // if cancelling after create - if ($this->Application->RecallVar('zone_mode'.$this->Application->GetVar('m_wid')) == 'create') { + if ( $this->Application->RecallVar('zone_mode' . $this->Application->GetVar('m_wid')) == 'create' ) { $zone =& $event->getObject(); + /* @var $zone kDBItem */ + $zone->Delete(); } } Index: branches/5.2.x/units/affiliate_plans/affiliate_plans_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/affiliate_plans/affiliate_plans_event_handler.php (.../affiliate_plans_event_handler.php) (revision 14258) +++ branches/5.2.x/units/affiliate_plans/affiliate_plans_event_handler.php (.../affiliate_plans_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ Special == 'active') { @@ -37,56 +45,80 @@ } /** - * Enter description here... + * Occurs before updating item * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { + parent::OnBeforeItemUpdate($event); + + $this->itemChanged($event); + } + + /** + * Occurs before creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemCreate(&$event) + { + parent::OnBeforeItemCreate($event); + + $this->itemChanged($event); + } + + /** + * Occurs before item is changed + * + * @param kEvent $event + */ + function itemChanged(&$event) + { $object =& $event->getObject(); + /* @var $object kDBItem */ $live_table = $this->Application->getUnitOption($event->Prefix, 'TableName'); - $plans_count = $this->Conn->GetOne('SELECT COUNT(*) FROM '.$live_table); - if(!$plans_count) $object->SetDBField('IsPrimary', 1); + $plans_count = $this->Conn->GetOne('SELECT COUNT(*) FROM ' . $live_table); + if ( !$plans_count ) { + $object->SetDBField('IsPrimary', 1); + } - if( $object->GetDBField('IsPrimary') && $object->Validate() ) - { - $sql = 'UPDATE '.$this->Application->getUnitOption($event->Prefix, 'TableName').' + if ( $object->GetDBField('IsPrimary') && $object->Validate() ) { + $sql = 'UPDATE ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' SET IsPrimary = 0'; $this->Conn->Query($sql); - $status_field = array_shift( $this->Application->getUnitOption($event->Prefix,'StatusField') ); + $status_field = array_shift($this->Application->getUnitOption($event->Prefix, 'StatusField')); $object->SetDBField($status_field, 1); } } - function OnBeforeItemCreate(&$event) + /** + * Don't allow to delete primary affiliate plan + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) { - $this->OnBeforeItemUpdate($event); - } + if ( $event->Name == 'OnMassDelete' && $type == 'before' ) { + $ids = $event->getEventParam('ids'); - function OnMassDelete(&$event) - { - if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { - $event->status = kEvent::erFAIL; - return; - } + $sql = 'SELECT ' . $this->Application->getUnitOption($event->Prefix, 'IDField') . ' + FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' + WHERE IsPrimary = 1'; + $primary_id = $this->Conn->GetOne($sql); - $ids = $this->StoreSelectedIDs($event); - $event->setEventParam('ids', $ids ); - $ids = $event->getEventParam('ids'); + $ids = array_diff($ids, Array ($primary_id)); - $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - - $sql = 'SELECT AffiliatePlanId FROM '.$this->Application->getUnitOption('ap', 'TableName').' - WHERE IsPrimary = 1'; - $primary_id = $this->Conn->GetOne($sql); - $ids = array_diff($ids, Array($primary_id)); - - if($ids) - { - $temp->DeleteItems($event->Prefix, $event->Special, $ids); + $event->setEventParam('ids', $ids); } - $this->clearSelectedIDs($event); } } \ No newline at end of file Index: branches/5.2.x/units/taxes/taxes_event_handler.php =================================================================== diff -u -N -r14258 -r14625 --- branches/5.2.x/units/taxes/taxes_event_handler.php (.../taxes_event_handler.php) (revision 14258) +++ branches/5.2.x/units/taxes/taxes_event_handler.php (.../taxes_event_handler.php) (revision 14625) @@ -1,6 +1,6 @@ eventMethods = array_merge($this->eventMethods, $zones_events); } - function customProcessing(&$event, $type) + /** + * Apply custom processing to item + * + * @param kEvent $event + * @param string $type + * @return void + * @access protected + */ + protected function customProcessing(&$event, $type) { - $zone_object =& $event->GetObject(); - switch($type) - { - case 'before': + $zone_object =& $event->getObject(); + /* @var $zone_object kDBItem */ - break; - case 'after': - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - $dst_object =& $this->Application->RecallObject('taxdst'); - if ($event->Name == 'OnUpdate') - { - $sql = 'DELETE FROM '.$dst_object->TableName.' WHERE TaxZoneId='.$zone_object->GetID(); - $this->Conn->Query($sql); + if ( $type == 'after' ) { + $dst_object =& $this->Application->recallObject('taxdst'); + /* @var $dst_object kDBItem */ + + if ( $event->Name == 'OnUpdate' ) { + $sql = 'DELETE FROM ' . $dst_object->TableName . ' + WHERE TaxZoneId = ' . $zone_object->GetID(); + $this->Conn->Query($sql); + } + else { + $temp = $this->Application->GetVar('taxdst', Array ()); + + foreach ($temp as $key => $value) { + $temp[$key]['TaxZoneId'] = $zone_object->GetID(); } - else - { - $temp = $this->Application->GetVar('taxdst'); - foreach ($temp as $key => $value) - { - $temp[$key]['TaxZoneId'] = $zone_object->GetID(); - } - $this->Application->SetVar('taxdst', $temp); - } - $dst_event = new kEvent(); - $dst_event->Init('taxdst'); - $dst_event->Name = 'OnCreate'; - $this->Application->HandleEvent($dst_event); - break; + $this->Application->SetVar('taxdst', $temp); + } - default: + $dst_event = new kEvent('taxdst:OnCreate'); + $this->Application->HandleEvent($dst_event); } } @@ -222,22 +223,6 @@ $event->CallSubEvent("OnPreSave"); } - function OnMassDelete(&$event) - { - $this->StoreSelectedIDs($event); - - $event->setEventParam('ids', $this->getSelectedIDs($event) ); - $this->customProcessing($event, 'before'); - $ids = $event->getEventParam('ids'); - $ids = implode(',', $ids); - - $dst =& $this->Application->recallObject('taxdst'); - $sql = 'DELETE FROM '.$dst->TableName.' WHERE TaxZoneId IN ('.$ids.')'; - $this->Conn->Query($sql); - - parent::OnMassDelete($event); - } - function OnCountryChange(&$event) { $destinations = &$this->Application->recallObject('taxdst');