function exportValue(&$submitValues, $assoc = false) { $val = parent::exportValue($submitValues, $assoc); $currency_field_name = '__'.str_replace(array('[',']'),'',$this->getName()).'__currency'; if(isset($submitValues[$currency_field_name])) $currency = $submitValues[$currency_field_name]; else return null; if ($assoc) { if (!isset($val[$this->getName()])) { $key = explode('[', $this->getName()); $key[1] = str_replace(']','',$key[1]); $val = $val[$key[0]][$key[1]]; } else $val = $val[$this->getName()]; } $cur = explode(Utils_CurrencyFieldCommon::get_decimal_point(), $val); if (!isset($cur[1])) $ret = $cur[0]; else { $this->dec_digits = DB::GetOne('SELECT decimals FROM utils_currency WHERE id=%d', array($currency)); $cur[1] = str_pad($cur[1], $this->dec_digits, '0'); $cur[1] = substr($cur[1], 0, $this->dec_digits); $ret = $cur[0] + (($cur[0]<0?-1:1)*$cur[1]/pow(10,$this->dec_digits)); } $ret .= '__'.$currency; if($assoc) { $val = array(); if (isset($key)) { $val[$key[0]][$key[1]] = $ret; } else $val[$this->getName()] = $ret; return $val; } else { return $ret; } }
function exportValue(&$submitValues, $assoc = false) { $val = parent::exportValue($submitValues, $assoc); if ($val === null) { return null; } if ($assoc) { if (!isset($val[$this->getName()])) { $key = explode('[', $this->getName()); $key[1] = str_replace(']', '', $key[1]); $val = $val[$key[0]][$key[1]]; } else { $val = $val[$this->getName()]; } } $tmp = explode('__', $val); if (count($tmp) != 2) { return null; } //invalid value - ignore... list($val, $currency) = $tmp; $cur = explode(Utils_CurrencyFieldCommon::get_decimal_point($currency), $val); if (!isset($cur[1])) { $ret = $cur[0]; } else { $this->dec_digits = DB::GetOne('SELECT decimals FROM utils_currency WHERE id=%d', array($currency)); $cur[1] = str_pad($cur[1], $this->dec_digits, '0'); $cur[1] = substr($cur[1], 0, $this->dec_digits); $ret = $cur[0] + ($cur[0] < 0 ? -1 : 1) * $cur[1] / pow(10, $this->dec_digits); if (strpos(trim($cur[0]), '-') === 0 && $ret > 0) { $ret = -$ret; } } $ret .= '__' . $currency; if ($assoc) { $val = array(); if (isset($key)) { $val[$key[0]][$key[1]] = $ret; } else { $val[$this->getName()] = $ret; } return $val; } else { return $ret; } }