Changeset 534 for trunk/bin/module_maker/validation.cli.php
- Timestamp:
- Jul 27, 2015 7:56:08 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bin/module_maker/validation.cli.php
r533 r534 73 73 $field = $col[0]; 74 74 $title = ucfirst(str_replace('_', ' ', $field)); 75 $type = preg_replace('/^(\w+).*$/', '\\1', $col[1]); 75 $type = preg_replace('/^(\w+).*$/', '$1', $col[1]); 76 $max_dig = preg_replace('/^\w+\((\d+)(?:,\d+)?\).*$/', '$1', $col[1]); 77 $max_dec = preg_replace('/^\w+\((?:\d+)(?:,(\d+))?\).*$/', '$1', $col[1]); 76 78 $is_primary_key = ('PRI' == $col[3]); 77 79 $unsigned = preg_match('/\s+unsigned\s*$/i', $col[1]); … … 110 112 case 'varchar' : 111 113 $len_type = 'string'; 112 $max_length = 255;114 $max_length = '' != $max_dig ? $max_dig : 255; 113 115 break; 114 116 … … 131 133 break; 132 134 135 case 'bit' : 136 $len_type = 'num'; 137 $min = 0; 138 $max = '' != $max_dig ? $max_dig : 64; 139 break; 140 133 141 case 'tinyint' : 134 case 'bit' :135 142 case 'bool' : 136 143 $len_type = 'num'; … … 191 198 case 'float' : 192 199 $len_type = 'num'; 193 $min = -3.40282E+38; 194 $max = 3.40282E+38; 200 if ($unsigned) { 201 $min = 0; 202 $max = 3.40282E+38; 203 } else { 204 $min = -3.40282E+38; 205 $max = 3.40282E+38; 206 } 195 207 break; 196 208 197 209 case 'double' : 198 210 case 'double precision' : 211 $len_type = 'num'; 212 if ($unsigned) { 213 $min = 0; 214 $max = 1.7976931348623157E+308; 215 } else { 216 $min = -1.7976931348623157E+308; 217 $max = 1.7976931348623157E+308; 218 } 219 break; 220 199 221 case 'real' : 200 222 case 'decimal' : 201 223 case 'dec' : 202 224 case 'numeric' : 203 $len_type = 'num'; 204 $min = -1.79769E+308; 205 $max = 1.79769E+308; 225 case 'fixed' : 226 $len_type = 'decimal'; // This doesn't match anything, on purpose. 206 227 break; 207 228 … … 255 276 256 277 case 'float' : 257 case 'float' :258 278 case 'double' : 259 case 'double' : 279 $negative_ok = $unsigned ? '' : ', true'; 280 $o[] = "\$fv->isFloat('$field', sprintf(_(\"%s must be a valid number.\"), _(\"$title\"))$negative_ok);"; 281 break; 282 260 283 case 'real' : 261 284 case 'decimal' : 262 285 case 'dec' : 263 286 case 'numeric' : 264 $negative_ok = $unsigned ? '' : ', true'; 265 $o[] = "\$fv->isFloat('$field', sprintf(_(\"%s must be a valid number.\"), _(\"$title\"))$negative_ok);"; 287 case 'float' : 288 $max = str_repeat('9', $max_dig - $max_dec); 289 if ($max_dec > 0) { 290 $max .= '.' . str_repeat('9', $max_dec); 291 } 292 if ($unsigned) { 293 $negative_ok = 'false'; 294 $min = 0; 295 } else { 296 $negative_ok = 'true'; 297 $min = -$max; 298 } 299 $negative_ok = $unsigned ? 'false' : 'true'; 300 $o[] = "\$fv->isDecimal('$field', sprintf(_(\"%s must be a number between %d and %d.\"), _(\"$title\"), $min, $max), $negative_ok, $max_dig, $max_dec);"; 266 301 break; 267 302
Note: See TracChangeset
for help on using the changeset viewer.