Changeset 5091

Show
Ignore:
Timestamp:
10/15/08 20:45:35 (9 months ago)
Author:
jwage
Message:

[1.0, 1.1] fixes #1528 - issue with unsigned validator and float/string values

Location:
branches
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/1.0/lib/Doctrine/Validator/Unsigned.php

    r3884 r5091  
    3434{ 
    3535    /** 
    36      * checks if given value is a valid unsigned integer 
     36     * checks if given value is a valid unsigned integer or float 
     37     * 
     38     * valid values: null, '', 5, '5', 5.9, '5.9' 
     39     * invalid values: -5, '-5', 'five', -5.9, '-5.9', '5.5.5' 
    3740     * 
    3841     * @param mixed $value 
     
    4144    public function validate($value) 
    4245    { 
    43         $int = (int) $value; 
     46        if(is_null($value) || $value == '') 
     47        { 
     48            return true; 
     49        } 
    4450 
    45         if ($int != $value || $int < 0) { 
     51        if (preg_match('/[^0-9\-\.]/', $value)) { 
    4652            return false; 
    4753        } 
    48         return true; 
     54 
     55        if(strpos($value, '.') === false) 
     56        { 
     57            $number = (int) $value; 
     58        } else { 
     59            $number = (float) $value; 
     60        } 
     61 
     62        if ((string) $number == $value && $number >= 0) 
     63        { 
     64            return true; 
     65        } 
     66 
     67        return false; 
    4968    } 
    5069} 
  • branches/1.1/lib/Doctrine/Validator/Unsigned.php

    r3884 r5091  
    3434{ 
    3535    /** 
    36      * checks if given value is a valid unsigned integer 
     36     * checks if given value is a valid unsigned integer or float 
     37     * 
     38     * valid values: null, '', 5, '5', 5.9, '5.9' 
     39     * invalid values: -5, '-5', 'five', -5.9, '-5.9', '5.5.5' 
    3740     * 
    3841     * @param mixed $value 
     
    4144    public function validate($value) 
    4245    { 
    43         $int = (int) $value; 
     46        if(is_null($value) || $value == '') 
     47        { 
     48            return true; 
     49        } 
    4450 
    45         if ($int != $value || $int < 0) { 
     51        if (preg_match('/[^0-9\-\.]/', $value)) { 
    4652            return false; 
    4753        } 
    48         return true; 
     54 
     55        if(strpos($value, '.') === false) 
     56        { 
     57            $number = (int) $value; 
     58        } else { 
     59            $number = (float) $value; 
     60        } 
     61 
     62        if ((string) $number == $value && $number >= 0) 
     63        { 
     64            return true; 
     65        } 
     66 
     67        return false; 
    4968    } 
    5069}