Browse Source

[ZF-11639]
fixed issue with phone numbers that start with + but are numeric
added test

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24349 44c647ce-9c0f-0410-b52a-842ac1e357ba

sgehrig 14 years ago
parent
commit
6e59a93512
2 changed files with 23 additions and 2 deletions
  1. 5 0
      library/Zend/Ldap/Converter.php
  2. 18 2
      tests/Zend/Ldap/ConverterTest.php

+ 5 - 0
library/Zend/Ldap/Converter.php

@@ -219,6 +219,11 @@ class Zend_Ldap_Converter
                 break;
             default:
                 if (is_numeric($value)) {
+                    // specialized handling of phone numbers that start with +
+                    // ZF-11639
+                    if ($value[0] === '+') {
+                        return $value;
+                    }
                     return (float)$value;
                 } else if ('TRUE' === $value || 'FALSE' === $value) {
                     return self::fromLdapBoolean($value);

+ 18 - 2
tests/Zend/Ldap/ConverterTest.php

@@ -181,8 +181,6 @@ class Zend_Ldap_ConverterTest extends PHPUnit_Framework_TestCase
 
     public function fromLdapDateTimeProvider ()
     {
-        $tz = new DateTimeZone('UTC');
-        $tz = null;
         return array (
                 array(new DateTime('2010-12-24 08:00:23+0300'),'20101224080023+0300', false),
                 array(new DateTime('2010-12-24 08:00:23+0300'),'20101224080023+03\'00\'', false),
@@ -219,5 +217,23 @@ class Zend_Ldap_ConverterTest extends PHPUnit_Framework_TestCase
                 array('20101231235959+1160'),
             );
     }
+
+	/**
+     * @dataProvider fromLdapProvider
+     */
+    public function testFromLdap($expect, $value, $type, $dateTimeAsUtc){
+        $this->assertSame($expect, Zend_Ldap_Converter::fromLdap($value, $type, $dateTimeAsUtc));
+    }
+
+    public function fromLdapProvider(){
+        return array(
+           array(1.0, '1', 0, true),
+           array(0.0, '0', 0, true),
+           array(true, 'TRUE', 0, true),
+           array(false, 'FALSE', 0, true),
+           array(123456789.0, '123456789', 0, true),
+           array('+123456789', '+123456789', 0, true),
+        );
+    }
 }