Index: branches/5.2.x/units/product_option_combinations/product_option_formatters.php =================================================================== --- branches/5.2.x/units/product_option_combinations/product_option_formatters.php (revision 16672) +++ branches/5.2.x/units/product_option_combinations/product_option_formatters.php (revision 16673) @@ -1,143 +1,143 @@ GetFieldOptions($field_name); if ( isset($format) ) $options['format'] = $format; $data = unserialize($value); $opt_helper = $this->Application->recallObject('kProductOptionsHelper'); $top_prefix = $this->Application->GetTopmostPrefix($object->Prefix); $use_temp = substr($this->Application->GetVar($top_prefix.'_mode'), 0, 1) == 't'; foreach ($data as $key=>$val) { $conv_key = $opt_helper->ConvertKey($key, $object->GetDBField('ProductId'),$use_temp); if (is_array($val)) { $val = join(',', $val); } $o .= sprintf($options['format'], $conv_key['Name'], $val); } return $o; } /** * Performs basic type validation on form field value * * @param mixed $value * @param string $field_name * @param kDBItem $object * @return mixed * @access public */ public function Parse($value, $field_name, &$object) { if ( !is_array($value) ) { $object->SetError($field_name, 'required'); return ''; } else { if ( $object->isRequired($field_name) ) { foreach ($value as $key => $val) { if ( $val == '' ) { $object->SetError($field_name, 'required'); } } } } return serialize($value); } } class kCombPriceFormatter extends kFormatter { /** * Formats value of a given field * * @param string $value * @param string $field_name * @param kDBItem|kDBList $object * @param string $format * @return string */ - function Format($value, $field_name, $object, $format=null) + function Format($value, $field_name, &$object, $format=null) { $options = $object->GetFieldOptions($field_name); $converted = array_key_exists('converted', $options) ? $options['converted'] : false; if ($converted) { $lang = $this->Application->recallObject('lang.current'); return $lang->formatNumber($object->GetDBField($field_name), 2); } $data = unserialize($object->GetDBField('Combination')); $opt_helper = $this->Application->recallObject('kProductOptionsHelper'); $price = $object->GetDBField('BasePrice'); $addition = 0; $top_prefix = $this->Application->GetTopmostPrefix($object->Prefix); $use_temp = substr($this->Application->GetVar($top_prefix.'_mode'), 0, 1) == 't'; foreach ($data as $key=>$val) { $conv_key = $opt_helper->ConvertKey($key, $object->GetDBField('ProductId'), $use_temp); $parsed = $opt_helper->ExplodeOptionValues($conv_key); if (!$parsed) continue; $conv_prices = $parsed['Prices']; $conv_price_types = $parsed['PriceTypes']; if ($conv_price_types[$val] == '$') { $addition += $conv_prices[$val]; } elseif ($conv_price_types[$val] == '%') { $addition += $price * $conv_prices[$val] / 100; } } $price += $addition; $price_type = $object->GetDBField('PriceType'); $price_mod = $object->GetDBField('Price'); switch ($price_type) { case 1: // = override $price = $price_mod; break; case 2: // flat $price = $price + $price_mod; break; case 3: // percent $price = $price * (1 + $price_mod / 100); break; } return $price; } - } \ No newline at end of file + }