Index: branches/5.2.x/units/destinations/dst_event_handler.php =================================================================== diff -u -r14625 -r14872 --- branches/5.2.x/units/destinations/dst_event_handler.php (.../dst_event_handler.php) (revision 14625) +++ branches/5.2.x/units/destinations/dst_event_handler.php (.../dst_event_handler.php) (revision 14872) @@ -1,6 +1,6 @@ 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) - { - $object->SetFieldsFromHash($field_values); - $this->customProcessing($event, 'before'); + // creates multiple db records from single request (OnCreate event only creates 1 record) + $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); - if ( $object->Create() ) { - $this->customProcessing($event, 'after'); - $event->status = kEvent::erSUCCESS; - } - else { - $event->status = kEvent::erFAIL; - $event->redirect = false; - $this->Application->SetVar($event->getPrefixSpecial().'_SaveEvent','OnCreate'); - $object->setID(0); - } + if ( !$items_info ) { + return; + } + + foreach ($items_info as $field_values) { + $object->SetFieldsFromHash($field_values); + $this->customProcessing($event, 'before'); + + if ( $object->Create() ) { + $this->customProcessing($event, 'after'); + $event->status = kEvent::erSUCCESS; } + else { + $event->status = kEvent::erFAIL; + $event->redirect = false; + $this->Application->SetVar($event->getPrefixSpecial() . '_SaveEvent', 'OnCreate'); + $object->setID(0); + } } } Index: branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php =================================================================== diff -u -r14677 -r14872 --- branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14677) +++ branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14872) @@ -1,6 +1,6 @@ getObject( Array('skip_autoload' => true) ); + $object =& $event->getObject(Array ('skip_autoload' => true)); + /* @var $object kDBItem */ + $zones_object =& $this->Application->recallObject('z'); - $sql = 'SELECT ZoneID FROM '.$zones_object->TableName.' WHERE ShippingTypeID='.$this->Application->GetVar('s_id'); + $sql = 'SELECT ZoneID + FROM ' . $zones_object->TableName . ' + WHERE ShippingTypeID = ' . $this->Application->GetVar('s_id'); $res = $this->Conn->GetCol($sql); - $sql = 'DELETE FROM '.$object->TableName.' WHERE ZoneID IN ('.implode(',', $res).')'; + + $sql = 'DELETE FROM ' . $object->TableName . ' + WHERE ZoneID IN (' . implode(',', $res) . ')'; $this->Conn->Query($sql); - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if($items_info) - { - foreach($items_info as $id => $field_values) - { - $object->SetFieldsFromHash($field_values); - $this->customProcessing($event,'before'); + // creates multiple db records from single request (OnCreate event only creates 1 record) + $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); - if( $object->Create() ) { - $this->customProcessing($event,'after'); - $event->status = kEvent::erSUCCESS; - } - else { - $event->status = kEvent::erFAIL; - $event->redirect = false; - $this->Application->SetVar($event->getPrefixSpecial().'_SaveEvent','OnCreate'); - $object->setID(0); - } + if ( !$items_info ) { + return; + } + + foreach ($items_info as $field_values) { + $object->SetFieldsFromHash($field_values); + $this->customProcessing($event, 'before'); + + if ( $object->Create() ) { + $this->customProcessing($event, 'after'); + $event->status = kEvent::erSUCCESS; } + else { + $event->status = kEvent::erFAIL; + $event->redirect = false; + $this->Application->SetVar($event->getPrefixSpecial() . '_SaveEvent', 'OnCreate'); + $object->setID(0); + } } } @@ -179,21 +187,22 @@ */ protected function customProcessing(&$event, $type) { - if( $type == 'before' && $this->Application->GetVar('sc') ) - { + if ( $type == 'before' && $this->Application->GetVar('sc') ) { $shipping_obj =& $this->Application->recallObject('s'); - $cost =& $event->getObject(); + /* @var $shipping_obj kDBItem */ + + $object =& $event->getObject(); + /* @var $object kDBItem */ + $zero_if_empty = $shipping_obj->GetDBField('ZeroIfEmpty'); - if($cost->GetDBField('Flat') == '') - { + if ( $object->GetDBField('Flat') == '' ) { $flat = $zero_if_empty ? 0 : null; - $cost->SetDBField('Flat', $flat); + $object->SetDBField('Flat', $flat); } - if($cost->GetDBField('PerUnit') == '') - { + if ( $object->GetDBField('PerUnit') == '' ) { $per_unit = $zero_if_empty ? 0 : null; - $cost->SetDBField('PerUnit', $per_unit); + $object->SetDBField('PerUnit', $per_unit); } } } Index: branches/5.2.x/units/brackets/brackets_event_handler.php =================================================================== diff -u -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); } Index: branches/5.2.x/install/upgrades.php =================================================================== diff -u -r14582 -r14872 --- branches/5.2.x/install/upgrades.php (.../upgrades.php) (revision 14582) +++ branches/5.2.x/install/upgrades.php (.../upgrades.php) (revision 14872) @@ -1,6 +1,6 @@ Conn->GetOne($sql); - - $ml_formatter =& $this->Application->recallObject('kMultiLanguage'); - /* @var $ml_formatter kMultiLanguage */ - - $field = $ml_formatter->LangFieldName('cust_' . $custom_field_id, true); - - $sql = 'UPDATE ' . TABLE_PREFIX . 'CategoryCustomData - SET ' . $field . ' = "' . $to_template . '" - WHERE ' . $field . ' = "' . $from_template . '"'; - $this->Conn->Query($sql); - } - - /** * Update to 5.0.1, update details template * * @param string $mode when called mode {before, after) Index: branches/5.2.x/units/products/products_tag_processor.php =================================================================== diff -u -r14702 -r14872 --- branches/5.2.x/units/products/products_tag_processor.php (.../products_tag_processor.php) (revision 14702) +++ branches/5.2.x/units/products/products_tag_processor.php (.../products_tag_processor.php) (revision 14872) @@ -1,6 +1,6 @@ GetList($params); - $sorting_field_selected = $this->Application->RecallVar($list->getPrefixSpecial().$params['sorting_select_name']); + $sorting_field_selected = $this->Application->RecallVar($list->getPrefixSpecial() . $params['sorting_select_name']); - if (!$sorting_field_selected){ + if ( !$sorting_field_selected ) { $sorting_field_selected = $this->Application->ConfigValue('product_OrderProductsBy'); } @@ -363,18 +363,16 @@ $field_list = explode(',', $field_list_plain); $o = ''; + $option_params = $this->prepareTagParams($params); - foreach ($field_list as $key=>$field){ + foreach ($field_list as $field) { list($fieldname, $fieldlabel) = explode('=', $field); - $option_params = $this->prepareTagParams($params); + $option_params['fieldname'] = $fieldname; $option_params['fieldlabel'] = $this->Application->Phrase($fieldlabel); $option_params['name'] = $params['block_options']; - if ($fieldname == $sorting_field_selected){ - $option_params['selected'] = 'selected'; - }else{ - $option_params['selected'] = ''; - } + $option_params['selected'] = $fieldname == $sorting_field_selected ? 'selected' : ''; + $o .= $this->Application->ParseBlock($option_params); } @@ -385,29 +383,24 @@ { $list =& $this->GetList($params); - $sorting_dir_selected = $this->Application->RecallVar($list->getPrefixSpecial().$params['sorting_select_name']); + $sorting_dir_selected = $this->Application->RecallVar($list->getPrefixSpecial() . $params['sorting_select_name']); - if (!$sorting_dir_selected){ + if ( !$sorting_dir_selected ) { $sorting_dir_selected = $this->Application->ConfigValue('product_OrderProductsByDir'); } $o = ''; - $field_list = array('asc' => 'lu_Ascending', 'desc' => 'lu_Descending'); + $field_list = array ('asc' => 'lu_Ascending', 'desc' => 'lu_Descending'); + $option_params = $this->prepareTagParams($params); - foreach ($field_list as $fieldname=>$fieldlabel){ - - $option_params = $this->prepareTagParams($params); + foreach ($field_list as $fieldname => $fieldlabel) { $option_params['fieldname'] = $fieldname; $option_params['fieldlabel'] = $this->Application->Phrase($fieldlabel); $option_params['name'] = $params['block_options']; - if ($fieldname == $sorting_dir_selected){ - $option_params['selected'] = 'selected'; - }else{ - $option_params['selected'] = ''; - } - $o .= $this->Application->ParseBlock($option_params); + $option_params['selected'] = $fieldname == $sorting_dir_selected ? 'selected' : ''; + $o .= $this->Application->ParseBlock($option_params); } return $o; Index: branches/5.2.x/units/orders/order_calculator.php =================================================================== diff -u -r14796 -r14872 --- branches/5.2.x/units/orders/order_calculator.php (.../order_calculator.php) (revision 14796) +++ branches/5.2.x/units/orders/order_calculator.php (.../order_calculator.php) (revision 14872) @@ -1,6 +1,6 @@ Application->recallObject('kProductOptionsHelper'); /* @var $opt_helper kProductOptionsHelper */ @@ -557,42 +557,41 @@ $parsed = $opt_helper->ExplodeOptionValues($data); - if (!$parsed) { + if ( !$parsed ) { continue; } - $conv_prices = $parsed['Prices']; - $conv_price_types = $parsed['PriceTypes']; - if ( is_array($val) ) { foreach ($val as $a_val) { - $a_val = kUtil::unhtmlentities($a_val); - - if ( isset($conv_prices[$a_val]) && $conv_prices[$a_val] ) { - if ( $conv_price_types[$a_val] == '$' ) { - $addtion += $conv_prices[$a_val]; - } - elseif ($conv_price_types[$a_val] == '%') { - $addtion += $price * $conv_prices[$a_val] / 100; - } - } + $addition += $this->formatPrice($a_val, $price, $parsed); } } else { - $a_val = kUtil::unhtmlentities($val); + $addition += $this->formatPrice($val, $price, $parsed); + } + } - if ( isset($conv_prices[$a_val]) && $conv_prices[$a_val] ) { - if ($conv_price_types[$a_val] == '$') { - $addtion += $conv_prices[$a_val]; - } - elseif ($conv_price_types[$a_val] == '%') { - $addtion += $price * $conv_prices[$a_val] / 100; - } - } + return $addition; + } + + protected function formatPrice($a_val, $price, $parsed) + { + $a_val = kUtil::unhtmlentities($a_val); + + $addition = 0; + $conv_prices = $parsed['Prices']; + $conv_price_types = $parsed['PriceTypes']; + + if ( isset($conv_prices[$a_val]) && $conv_prices[$a_val] ) { + if ($conv_price_types[$a_val] == '$') { + $addition += $conv_prices[$a_val]; } + elseif ($conv_price_types[$a_val] == '%') { + $addition += $price * $conv_prices[$a_val] / 100; + } } - return $addtion; + return $addition; } /**