Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
 /**
  * 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;
 }
Example #7
0
 /**
  * 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;
 }
Example #8
0
 /**
  * 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;
 }