wholeSize = is_int($wholeSize) ? $wholeSize : 9; $this->decimalSize = is_int($decimalSize) ? $decimalSize : 2; $this->defaultValue = number_format((float) $defaultValue, $decimalSize);; parent::__construct($name); } /** * @return float */ public function Nice() { return number_format($this->value, $this->decimalSize); } /** * @return int */ public function Int() { return floor($this->value); } public function requireField() { $parts = array( 'datatype' => 'decimal', 'precision' => "$this->wholeSize,$this->decimalSize", 'default' => $this->defaultValue, 'arrayValue' => $this->arrayValue ); $values = array( 'type' => 'decimal', 'parts' => $parts ); DB::requireField($this->tableName, $this->name, $values); } /** * @param DataObject $dataObject */ public function saveInto($dataObject) { $fieldName = $this->name; if($fieldName) { $dataObject->$fieldName = (float)preg_replace('/[^0-9.\-\+]/', '', $this->value); } else { user_error("DBField::saveInto() Called on a nameless '" . get_class($this) . "' object", E_USER_ERROR); } } /** * @param string $title * @param array $params * * @return NumericField */ public function scaffoldFormField($title = null, $params = null) { return new NumericField($this->name, $title); } /** * @return float */ public function nullValue() { return "0.00"; } /** * Return an encoding of the given value suitable for inclusion in a SQL * statement. If necessary, this should include quotes. * * @param float $value * * @return mixed */ public function prepValueForDB($value) { if($value === true) { return 1; } if(!$value || !is_numeric($value)) { if(strpos($value, '[') === false) { return '0'; } else { return Convert::raw2sql($value); } } else { return Convert::raw2sql($value); } } }