Fixes for CRM_Utils_Type
authorColeman Watts <coleman@civicrm.org>
Sun, 27 Sep 2015 15:24:25 +0000 (11:24 -0400)
committermonishdeb <monish.deb@webaccessglobal.com>
Wed, 30 Sep 2015 12:50:57 +0000 (18:20 +0530)
CRM/Utils/Type.php

index 35baff8e204911c00bf1d533403423b7ea45dde5..be390ae230c9e51ee8d6509385aea855fea7d9ff 100644 (file)
@@ -165,37 +165,33 @@ class CRM_Utils_Type {
         break;
 
       case 'Positive':
-        // CRM-8925 the 3 below are for custom fields of this type
+        if (CRM_Utils_Rule::positiveInteger($data)) {
+          return (int) $data;
+        }
+        break;
+
+      // CRM-8925 for custom fields of this type
       case 'Country':
       case 'StateProvince':
-        // Checked for multi valued state/country value
         if (is_array($data)) {
-          $returnData = TRUE;
-          // @todo Reuse of the $data variable = asking for trouble.
-          // @todo This code will always return the last item in the array. Intended?
-          foreach ($data as $data) {
-            if (CRM_Utils_Rule::positiveInteger($data) || CRM_Core_DAO::escapeString($data)) {
-              $returnData = TRUE;
-            }
-            else {
-              $returnData = FALSE;
+          $valid = TRUE;
+          foreach ($data as $item) {
+            if (!CRM_Utils_Rule::positiveInteger($item)) {
+              $valid = FALSE;
             }
           }
-          if ($returnData) {
+          if ($valid) {
             return $data;
           }
         }
-        elseif (!is_numeric($data) && CRM_Core_DAO::escapeString($data)) {
-          return $data;
-        }
         elseif (CRM_Utils_Rule::positiveInteger($data)) {
-          return $data;
+          return (int) $data;
         }
         break;
 
       case 'File':
         if (CRM_Utils_Rule::positiveInteger($data)) {
-          return $data;
+          return (int) $data;
         }
         break;