Exemplo n.º 1
0
	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;
		}
	}
Exemplo n.º 2
0
 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;
     }
 }