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); } }