Index: branches/5.2.x/units/brackets/brackets_event_handler.php =================================================================== diff -u -N -r14677 -r14872 --- branches/5.2.x/units/brackets/brackets_event_handler.php (.../brackets_event_handler.php) (revision 14677) +++ branches/5.2.x/units/brackets/brackets_event_handler.php (.../brackets_event_handler.php) (revision 14872) @@ -1,6 +1,6 @@ Array('subitem' => 'add|edit'), - 'OnInfinity' => Array('subitem' => 'add|edit'), - 'OnArrange' => Array('subitem' => 'add|edit'), - ); + + $permissions = Array ( + 'OnMoreBrackets' => Array ('subitem' => 'add|edit'), + 'OnInfinity' => Array ('subitem' => 'add|edit'), + 'OnArrange' => Array ('subitem' => 'add|edit'), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); } @@ -70,38 +72,37 @@ function prepareBrackets(&$event) { $lang_object =& $this->Application->recallObject('lang.current'); + /* @var $lang_object LanguagesItem */ + $shipping_object =& $this->Application->recallObject('s'); - if($lang_object->GetDBField('UnitSystem') != 2 || $shipping_object->GetDBField('Type') != 1) - { + /* @var $shipping_object kDBItem */ + + if ( $lang_object->GetDBField('UnitSystem') != 2 || $shipping_object->GetDBField('Type') != 1 ) { return; } $item_info = $this->Application->GetVar( $event->getPrefixSpecial() ); - foreach($item_info as $id => $item_data) - { - if($item_info[$id]['Start_a'] === '' && $item_info[$id]['Start_b'] === '') - { + + foreach ($item_info as $id => $item_data) { + if ( $item_info[$id]['Start_a'] === '' && $item_info[$id]['Start_b'] === '' ) { $item_info[$id]['Start'] = ''; } - else - { + else { $item_info[$id]['Start'] = kUtil::Pounds2Kg($item_info[$id]['Start_a'], $item_info[$id]['Start_b']); } - if($item_info[$id]['End_a'] == '∞' || $item_info[$id]['End_a'] == '∞') - { + if ( $item_info[$id]['End_a'] == '∞' || $item_info[$id]['End_a'] == '∞' ) { $item_info[$id]['End'] = '∞'; } - elseif($item_info[$id]['End_a'] === '' && $item_info[$id]['End_b'] === '') - { + elseif ( $item_info[$id]['End_a'] === '' && $item_info[$id]['End_b'] === '' ) { $item_info[$id]['End'] = ''; } - else - { + else { $item_info[$id]['End'] = kUtil::Pounds2Kg($item_info[$id]['End_a'], $item_info[$id]['End_b']); } } - $this->Application->SetVar( $event->getPrefixSpecial(), $item_info ); + + $this->Application->SetVar($event->getPrefixSpecial(), $item_info); } /** @@ -111,15 +112,8 @@ */ function OnMoreBrackets(&$event) { - $shipping_object =& $this->Application->recallObject('s'); - $default_start = ($shipping_object->GetDBField('Type') == 1) ? 0 : 1; + $brackets_helper =& $this->getHelper($event); - $this->prepareBrackets($event); - - $event->redirect = false; - - $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - $brackets_helper->InitHelper('Start', 'End', Array(), $default_start ); $brackets_helper->OnMoreBrackets($event); } @@ -130,17 +124,8 @@ */ function OnArrange(&$event) { - $shipping_object =& $this->Application->recallObject('s'); - $default_start = ($shipping_object->GetDBField('Type') == 1) ? 0 : 1; + $brackets_helper =& $this->getHelper($event); - $this->prepareBrackets($event); - - $event->redirect = false; - $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - /* @var $brackets_helper kBracketsHelper */ - - $brackets_helper->InitHelper('Start', 'End', Array(), $default_start); - $brackets_helper->arrangeBrackets($event); $event->CallSubEvent('OnPreSaveBrackets'); } @@ -152,24 +137,43 @@ */ function OnInfinity(&$event) { - $shipping_object =& $this->Application->recallObject('s'); - $default_start = ($shipping_object->GetDBField('Type') == 1) ? 0 : 1; + $brackets_helper =& $this->getHelper($event); - $this->prepareBrackets($event); - - $event->redirect = false; - $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - $brackets_helper->InitHelper('Start', 'End', Array(), $default_start ); $brackets_helper->arrangeBrackets($event); - $event->CallSubEvent('OnPreSaveBrackets'); $brackets_helper->OnInfinity($event); - $event->CallSubEvent('OnPreSaveBrackets'); } /** + * Initializes kBracketsHelper class based on event + * + * @param kEvent $event + * @param bool $event_readonly + * @return kBracketsHelper + */ + protected function &getHelper(&$event, $event_readonly = false) + { + $shipping_object =& $this->Application->recallObject('s'); + /* @var $shipping_object kDBItem */ + + $default_start = $shipping_object->GetDBField('Type') == 1 ? 0 : 1; + + if ( !$event_readonly ) { + $this->prepareBrackets($event); + $event->redirect = false; + } + + $brackets_helper =& $this->Application->recallObject('BracketsHelper'); + /* @var $brackets_helper kBracketsHelper */ + + $brackets_helper->InitHelper('Start', 'End', Array (), $default_start); + + return $brackets_helper; + } + + /** * Occurs before updating item * * @param kEvent $event @@ -180,21 +184,13 @@ { 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'); - /* @var $brackets_helper kBracketsHelper */ - - $brackets_helper->InitHelper('Start', 'End', Array (), $default_start); + $brackets_helper =& $this->getHelper($event, true); $brackets_helper->replaceInfinity($event); } @@ -206,28 +202,26 @@ function OnPreSaveBrackets(&$event) { $lang_object =& $this->Application->recallObject('lang.current'); + /* @var $lang_object LanguagesItem */ + $shipping_object =& $this->Application->recallObject('s'); - if($lang_object->GetDBField('UnitSystem') == 2 && $shipping_object->GetDBField('Type') == 1) - { - $item_info = $this->Application->GetVar( $event->getPrefixSpecial() ); - if(is_array($item_info)) - { - foreach($item_info as $id => $values) - { - if($values['End'] == -1) - { + /* @var $shipping_object kDBItem */ + + if ( $lang_object->GetDBField('UnitSystem') == 2 && $shipping_object->GetDBField('Type') == 1 ) { + $item_info = $this->Application->GetVar($event->getPrefixSpecial()); + + if ( is_array($item_info) ) { + foreach ($item_info as $id => $values) { + if ( $values['End'] == -1 ) { $item_info[$id]['End_a'] = -1 / kUtil::POUND_TO_KG; $item_info[$id]['End_b'] = 0; } } - $this->Application->SetVar( $event->getPrefixSpecial(), $item_info ); + $this->Application->SetVar($event->getPrefixSpecial(), $item_info); } } - $default_start = ($shipping_object->GetDBField('Type') == 1) ? 0 : 1; - - $brackets_helper =& $this->Application->recallObject('BracketsHelper'); - $brackets_helper->InitHelper('Start', 'End', Array(), $default_start ); + $brackets_helper =& $this->getHelper($event, true); $brackets_helper->OnPreSaveBrackets($event); }