00001 <?php
00002
00003
00004
00005
00006
00007
00008 class DBFieldFloat extends DBField {
00009 const UNSIGNED = 2;
00010
00011 public function __construct($name, $default_value = 0, $policy = self::NOT_NULL) {
00012 parent::__construct($name, $default_value, $policy);
00013 }
00014
00015
00016
00017
00018
00019
00020
00021 public function validate($value) {
00022 if ($value === '') {
00023 $value = null;
00024 }
00025
00026 $ret = parent::validate($value);
00027
00028 if ($ret->is_ok() && !is_null($value)) {
00029 if ($this->has_policy(self::UNSIGNED)) {
00030 if (!Validation::is_double($value, 0)) {
00031 $ret->append(tr(
00032 '%field must be a positive number',
00033 'core',
00034 array(
00035 '%field' => $this->get_field_name_translation()
00036 )
00037 ));
00038 }
00039 }
00040 else if (!Validation::is_double($value)) {
00041 $ret->append(tr(
00042 '%field must be a number',
00043 'core',
00044 array(
00045 '%field' => tr($this->get_field_name(), 'global'),
00046 )
00047 ));
00048 }
00049 }
00050
00051 return $ret;
00052 }
00053
00054
00055
00056
00057
00058
00059
00060 protected function do_format_not_null($value) {
00061 return number_format($value, 10, '.', '');
00062 }
00063
00064
00065
00066
00067 public function read_from_array($arr) {
00068 $ret = parent::read_from_array($arr);
00069 if (!empty($ret)) {
00070 $ret = String::delocalize_number($ret);
00071 }
00072 return $ret;
00073 }
00074 }