Index: branches/5.2.x/constants.php =================================================================== diff -u -N -r14641 -r15020 --- branches/5.2.x/constants.php (.../constants.php) (revision 14641) +++ branches/5.2.x/constants.php (.../constants.php) (revision 15020) @@ -1,6 +1,6 @@ Application->recallObject($this->getPrefixSpecial()); + $object =& $this->getObject($params); + /* @var $object kDBItem */ $opt_helper =& $this->Application->recallObject('kProductOptionsHelper'); + /* @var $opt_helper kProductOptionsHelper */ $parsed = $opt_helper->ExplodeOptionValues($object->GetFieldValues()); if ( !$parsed ) { @@ -35,8 +37,11 @@ $mode = $this->SelectParam($params, 'mode'); $combination_prefix = $this->SelectParam($params, 'combination_prefix'); $combination_field = $this->SelectParam($params, 'combination_field'); - if ($mode == 'selected') { + + if ( $mode == 'selected' ) { $comb =& $this->Application->recallObject($combination_prefix); + /* @var $comb kDBItem */ + $options = unserialize($comb->GetDBField($combination_field)); } @@ -45,22 +50,26 @@ $block_params['pass_params'] = 1; $lang =& $this->Application->recallObject('lang.current'); + /* @var $lang LanguagesItem */ $o = ''; $first_selected = false; + foreach ($values as $option) { // list($val, $label) = explode('|', $option); $val = $option; - if (getArrayValue($params, 'js')) { + + if ( getArrayValue($params, 'js') ) { $block_params['id'] = addslashes($val); $block_params['value'] = htmlspecialchars($val); } else { $block_params['id'] = htmlspecialchars($val); $block_params['value'] = htmlspecialchars($val); } - if ($conv_prices[$val]) { - if ($conv_price_types[$val] == '$' && !getArrayValue($params, 'js') && !getArrayValue($params, 'no_currency')) { + + if ( $conv_prices[$val] ) { + if ( $conv_price_types[$val] == '$' && !getArrayValue($params, 'js') && !getArrayValue($params, 'no_currency') ) { $iso = $this->GetISO($params['currency']); $value = sprintf("%.2f", $this->ConvertCurrency($conv_prices[$val], $iso)); @@ -70,7 +79,7 @@ $block_params['sign'] = ''; //sign is included in the formatted value } else { - $block_params['price'] = isset($params['js']) ? $conv_prices[$val] : $lang->formatNumber($conv_prices[$val],2); + $block_params['price'] = isset($params['js']) ? $conv_prices[$val] : $lang->formatNumber($conv_prices[$val], 2); $block_params['price_type'] = $conv_price_types[$val]; $block_params['sign'] = $conv_prices[$val] >= 0 ? '+' : '-'; } @@ -82,25 +91,30 @@ } /*if ($mode == 'selected') { - $selected = $combination[$object->GetId()] == $val; + $selected = $combination[$object->GetID()] == $val; } else*/ $selected = false; - if (!$options && isset($params['preselect_first']) && $params['preselect_first'] && !$first_selected) { + + if ( !$options && isset($params['preselect_first']) && $params['preselect_first'] && !$first_selected ) { $selected = true; $first_selected = true; } - if (is_array($options)) { - if ($object->GetDBField('OptionType') == 6) { // checkboxeS - $selected = in_array(htmlspecialchars($val), $options[$object->GetId()]); + + if ( is_array($options) ) { + $option_value = array_key_exists($object->GetID(), $options) ? $options[$object->GetID()] : ''; + + if ( $object->GetDBField('OptionType') == OptionType::CHECKBOX ) { + $selected = is_array($option_value) && in_array(htmlspecialchars($val), $option_value); } else { // radio buttons ? - $selected = kUtil::unhtmlentities($options[$object->GetId()]) == $val; + $selected = kUtil::unhtmlentities($option_value) == $val; } } - if ($selected) { - if ($mode == 'selected') { - if ($object->GetDBField('OptionType') != 6) { + + if ( $selected ) { + if ( $mode == 'selected' ) { + if ( $object->GetDBField('OptionType') != OptionType::CHECKBOX ) { $block_params['selected'] = ' selected="selected" '; } else { @@ -109,11 +123,11 @@ } else { switch ($object->GetDBField('OptionType')) { - case 1: //drop-down + case OptionType::DROPDOWN: $block_params['selected'] = ' selected="selected" '; break; - case 3: //radio - case 6: //checkboxes + case OptionType::RADIO: + case OptionType::CHECKBOX: $block_params['selected'] = ' checked="checked" '; break; } @@ -147,8 +161,11 @@ function OptionData($params) { $object =& $this->getObject($params); + /* @var $object kDBItem */ + $options =& $this->GetOptions(); - return getArrayValue($options, $object->GetId()); + + return getArrayValue($options, $object->GetID()); } function ListOptions($params)