public function contactDetailsToJSON(array $contactDetails = array())
 {
     $byType = array();
     foreach ($contactDetails as $contactDetailData) {
         if ($contactDetailData instanceof ContactDetail) {
             $contactDetailInstance = $contactDetailData;
         } elseif (\is_array($contactDetailData)) {
             // hydrated as array
             $contactDetailInstance = new ContactDetail();
             $contactDetailInstance->setCountryCode($contactDetailData['countryCode']);
             $contactDetailInstance->setAreaCode($contactDetailData['areaCode']);
             $contactDetailInstance->setNumber($contactDetailData['number']);
             $contactDetailInstance->setType($contactDetailData['type']);
         } else {
             // unknown type that we can't handle
             continue;
         }
         $byType[$contactDetailInstance->getType()] = array('type' => ContactDetailTypes::getTypeLabel($contactDetailInstance->getType()), 'number' => $contactDetailInstance->__toString());
     }
     if (!\count($byType)) {
         return null;
     }
     return \json_encode($byType);
 }
 public function contactDetailToString($contactDetail)
 {
     $contactDetailInstance = null;
     if ($contactDetail instanceof ContactDetail) {
         $contactDetailInstance = $contactDetail;
     } elseif (\is_array($contactDetail)) {
         // hydrated as array
         $contactDetailInstance = new ContactDetail();
         $contactDetailInstance->setCountryCode($contactDetail['countryCode']);
         $contactDetailInstance->setAreaCode($contactDetail['areaCode']);
         $contactDetailInstance->setNumber($contactDetail['number']);
         $contactDetailInstance->setType($contactDetail['type']);
     }
     return $contactDetailInstance ? $contactDetailInstance->__toString() : null;
 }
 private function doCleanUp(ContactDetail $contactDetail, $oldContactNumber = null, Country $country = null)
 {
     if ($oldContactNumber) {
         $oldContactDetail = $contactDetail->__toString();
         $parts = \json_decode($oldContactNumber, true);
         if ($parts) {
             $countryCode = isset($parts['country_code']) ? $parts['country_code'] : null;
             $areaCode = isset($parts['area_code']) ? $parts['area_code'] : null;
             $contactDetail->setCountryCode($countryCode);
             $contactDetail->setAreaCode($areaCode);
             $number = $parts['number'];
         }
     } else {
         // this data must have been entered through the new widget, we need them to verify this data
         $contactDetail->setFromNewWidget(true);
         $number = $contactDetail->getNumber();
     }
     if (!\is_numeric($number)) {
         $number = \preg_replace('/\\D/', '', $number);
     }
     $number = (int) $number;
     $contactDetail->setNumber($number);
     if (!$number || strlen($number) < 5) {
         $contactDetail->setIsInvalid(true);
     }
 }