/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'double'); // Fixed precision and scale numeric data from -10^38 -1 through 10^38 -1. $this->metadata['scale'] = (int) $metadata['scale']; // the scale (i.e. the number of digits that can be stored following the decimal point) if ($this->metadata['scale'] == 0) { $this->metadata['type'] = 'integer'; } $this->metadata['precision'] = (int) $metadata['precision']; // the precision (i.e. the number of significant digits that are stored for values) if ($this->metadata['type'] == 'double') { $this->metadata['precision'] += 1; } if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } if (isset($metadata['enum'])) { $this->metadata['enum'] = (array) $metadata['enum']; } if (isset($metadata['control'])) { $this->metadata['control'] = (string) $metadata['control']; } if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable']) { $default = isset($this->metadata['enum']) ? $this->metadata['enum'][0] : 0.0; } else { $default = (isset($this->metadata['enum']) and !in_array(NULL, $this->metadata['enum'])) ? $this->metadata['enum'][0] : NULL; } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { settype($default, $this->metadata['type']); } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'string'); if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } if (isset($metadata['enum'])) { $this->metadata['enum'] = (array) $metadata['enum']; } if (isset($metadata['control'])) { $this->metadata['control'] = (string) $metadata['control']; } if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (isset($this->metadata['enum'])) { $default = $this->metadata['enum'][0]; } else { if (!$this->metadata['nullable']) { $default = isset($this->metadata['enum']) ? $this->metadata['enum'][0] : '0000-00-00'; } else { $default = (isset($this->metadata['enum']) and !in_array(NULL, $this->metadata['enum'])) ? $this->metadata['enum'][0] : NULL; } } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { if (is_integer($default)) { $default = date('Y-m-d', $default); } else { $date = date_parse((string) $default); $default = date('Y-m-d', mktime($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year'])); } } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'string'); $this->metadata['max_length'] = (int) $metadata['max_length']; // the maximum length of the string if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } if (isset($metadata['enum'])) { $this->metadata['enum'] = (array) $metadata['enum']; } if (isset($metadata['regex'])) { $this->metadata['regex'] = (string) $metadata['regex']; } if (isset($metadata['control'])) { $this->metadata['control'] = (string) $metadata['control']; } if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable']) { $default = isset($this->metadata['enum']) ? $this->metadata['enum'][0] : ''; } else { $default = (isset($this->metadata['enum']) and !in_array(NULL, $this->metadata['enum'])) ? $this->metadata['enum'][0] : NULL; } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { settype($default, $this->metadata['type']); } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'boolean'); if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } $this->metadata['control'] = 'checkbox'; if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable']) { $default = FALSE; } else { $default = NULL; } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { if (is_string($default)) { $default = strtolower($default); if (in_array($default, array('true', 't', 'yes', 'y', '1'))) { $default = TRUE; } else { if (in_array($default, array('false', 'f', 'no', 'n', '0'))) { $default = FALSE; } } } settype($default, $this->metadata['type']); } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'string'); if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } $this->metadata['control'] = 'textarea'; if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable']) { $default = ''; } else { $default = NULL; } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { settype($default, $this->metadata['type']); } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'BitField'); if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } $this->metadata['control'] = 'text'; if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } $this->metadata['pattern'] = isset($metadata['pattern']) ? (array) $metadata['pattern'] : array('bits' => PHP_INT_SIZE == 8 ? 64 : 32); if (isset($metadata['default'])) { $default = $metadata['default'] !== NULL ? new BitField($this->metadata['pattern'], $metadata['default']) : NULL; } else { if (!$this->metadata['nullable']) { $default = new BitField($this->metadata['pattern'], 0); } else { $default = NULL; } } if (!$default instanceof DB_SQL_Expression) { if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'double'); $max_digits = 1; if (isset($metadata['max_decimals'])) { $this->metadata['max_decimals'] = abs((int) $metadata['max_decimals']); // the number of digits that may be after the decimal point $max_digits = $this->metadata['max_decimals'] + 1; } if (isset($metadata['max_digits'])) { $this->metadata['max_digits'] = max(abs((int) $metadata['max_digits']), $max_digits); // the total number of digits that may be stored } $this->metadata['unsigned'] = isset($metadata['unsigned']) ? (bool) $metadata['unsigned'] : FALSE; $default = 0.0; if (isset($metadata['range'])) { // http://firebirdsql.org/manual/migration-mssql-data-types.html $this->metadata['range']['lower_bound'] = (double) $metadata['range'][0]; // float: -1.79E + 308 double: -3.40E + 38 $default = max($default, $this->metadata['range']['lower_bound']); $this->metadata['range']['upper_bound'] = (double) $metadata['range'][1]; // float: 1.79E + 308 double: 3.40E + 38 } if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } if (isset($metadata['enum'])) { $this->metadata['enum'] = (array) $metadata['enum']; } if (isset($metadata['control'])) { $this->metadata['control'] = (string) $metadata['control']; } if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable'] and isset($this->metadata['enum'])) { $default = $this->metadata['enum'][0]; } else { if ($this->metadata['nullable']) { $default = (isset($this->metadata['enum']) and !in_array(NULL, $this->metadata['enum'])) ? $this->metadata['enum'][0] : NULL; } } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { settype($default, $this->metadata['type']); } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }
/** * This constructor initializes the class. * * @access public * @param DB_ORM_Model $model a reference to the implementing model * @param array $metadata the field's metadata * @throws Throwable_Validation_Exception indicates that the specified value does * not validate */ public function __construct(DB_ORM_Model $model, array $metadata = array()) { parent::__construct($model, 'integer'); if (isset($metadata['max_length'])) { $this->metadata['max_length'] = (int) $metadata['max_length']; // the maximum length of the integer } $this->metadata['unsigned'] = isset($metadata['unsigned']) ? (bool) $metadata['unsigned'] : FALSE; if (isset($this->metadata['max_length']) and $this->metadata['max_length'] >= 11) { if (PHP_INT_SIZE === 4) { $this->metadata['int8fix'] = TRUE; $this->metadata['range']['lower_bound'] = $this->metadata['unsigned'] ? '0' : '-9223372036854775808'; $this->metadata['range']['upper_bound'] = '9223372036854775807'; } else { $this->metadata['range']['lower_bound'] = $this->metadata['unsigned'] ? 0 : -9.223372036854776E+18; $this->metadata['range']['upper_bound'] = 9.223372036854776E+18; } } else { $this->metadata['range']['lower_bound'] = $this->metadata['unsigned'] ? 0 : -2147483648.0; $this->metadata['range']['upper_bound'] = 2147483647; } if (isset($metadata['range'])) { if (isset($this->metadata['int8fix'])) { $this->metadata['range']['lower_bound'] = bccomp(strval($metadata['range'][0]), $this->metadata['range']['lower_bound'] === 1) ? strval($metadata['range'][0]) : $this->metadata['range']['lower_bound']; $this->metadata['range']['upper_bound'] = bccomp(strval($metadata['range'][1]), $this->metadata['range']['lower_bound'] === -1) ? strval($metadata['range'][0]) : $this->metadata['range']['upper_bound']; } else { $this->metadata['range']['lower_bound'] = max((int) $metadata['range'][0], $this->metadata['range']['lower_bound']); $this->metadata['range']['upper_bound'] = min((int) $metadata['range'][1], $this->metadata['range']['upper_bound']); } } if (isset($metadata['savable'])) { $this->metadata['savable'] = (bool) $metadata['savable']; } if (isset($metadata['nullable'])) { $this->metadata['nullable'] = (bool) $metadata['nullable']; } if (isset($metadata['filter'])) { $this->metadata['filter'] = (string) $metadata['filter']; } if (isset($metadata['callback'])) { $this->metadata['callback'] = (string) $metadata['callback']; } if (isset($metadata['enum'])) { $this->metadata['enum'] = (array) $metadata['enum']; } if (isset($metadata['control'])) { $this->metadata['control'] = (string) $metadata['control']; } if (isset($metadata['label'])) { $this->metadata['label'] = (string) $metadata['label']; } if (isset($metadata['default'])) { $default = $metadata['default']; } else { if (!$this->metadata['nullable']) { if (isset($this->metadata['enum'])) { $default = $this->metadata['enum'][0]; } else { if (isset($this->metadata['int8fix'])) { $default = bccomp($this->metadata['range']['lower_bound'], '0') === 1 ? $this->metadata['range']['lower_bound'] : '0'; if (bccomp($default, '-2147483648') !== -1 or bccomp($default, '2147483647') !== 1) { $default = (int) $default; } } else { $default = max(0, $this->metadata['range']['lower_bound']); } } } else { $default = (isset($this->metadata['enum']) and !in_array(NULL, $this->metadata['enum'])) ? $this->metadata['enum'][0] : NULL; } } if (!$default instanceof DB_SQL_Expression) { if ($default !== NULL) { if (PHP_INT_SIZE !== 4 or !is_string($default) or !preg_match('/^-?[0-9]+$/D', $default) or bccomp($default, '-2147483648') !== -1 and bccomp($default, '2147483647') !== 1) { settype($default, $this->metadata['type']); } } if (!$this->validate($default)) { throw new Throwable_Validation_Exception('Message: Unable to set default value for field. Reason: Value :value failed to pass validation constraints.', array(':value' => $default)); } } $this->metadata['default'] = $default; $this->value = $default; }