if ($contact->contact_type === 'Individual') {
$allNull = FALSE;
- // @todo allow the lines below to be overridden by input or hooks & add tests,
- // as has been done for households and organizations.
- // Format individual fields.
+ // @todo get rid of this - most of this formatting should
+ // be done by time we get here - maybe start with some
+ // deprecation notices.
CRM_Contact_BAO_Individual::format($params, $contact);
}
* The end result is that all fields will be & this will go but for now it is
* opt in.
*
- * @var array
+ * @var string[]
*/
protected $metadataHandledFields = [
- 'gender_id',
'contact_type',
'contact_sub_type',
+ 'gender_id',
+ 'birth_date',
+ 'deceased_date',
+ 'is_deceased',
];
/**
}
}
}
-
- if ($key == 'birth_date' && $val) {
- CRM_Utils_Date::convertToDefaultDate($params, $dateType, $key);
- }
- elseif ($key == 'deceased_date' && $val) {
- CRM_Utils_Date::convertToDefaultDate($params, $dateType, $key);
- $params['is_deceased'] = 1;
- }
- elseif ($key == 'is_deceased' && $val) {
- $params[$key] = CRM_Utils_String::strtoboolstr($val);
- }
}
//now format custom data.
$errors[] = $this->getFieldMetadata($key)['title'];
}
if ($value) {
- $session = CRM_Core_Session::singleton();
- $dateType = $session->get("dateTypes");
switch ($key) {
- case 'birth_date':
- if (CRM_Utils_Date::convertToDefaultDate($params, $dateType, $key)) {
- if (!CRM_Utils_Rule::date($params[$key])) {
- $errors[] = ts('Birth Date');
- }
- }
- else {
- $errors[] = ts('Birth-Date');
- }
- break;
-
- case 'deceased_date':
- if (CRM_Utils_Date::convertToDefaultDate($params, $dateType, $key)) {
- if (!CRM_Utils_Rule::date($params[$key])) {
- $errors[] = ts('Deceased Date');
- }
- }
- else {
- $errors[] = ts('Deceased Date');
- }
- break;
-
- case 'is_deceased':
- if (CRM_Utils_String::strtoboolstr($value) === FALSE) {
- $errors[] = ts('Deceased');
- }
- break;
-
case 'preferred_communication_method':
$preffComm = [];
$preffComm = explode(',', $value);
if (empty($importedValue) || !in_array($fieldName, $this->metadataHandledFields, TRUE)) {
return $importedValue;
}
+ $fieldMetadata = $this->getFieldMetadata($fieldName);
+ if ($fieldMetadata['type'] === CRM_Utils_Type::T_BOOLEAN) {
+ $value = CRM_Utils_String::strtoboolstr($importedValue);
+ if ($value !== FALSE) {
+ return (bool) $value;
+ }
+ return 'invalid_import_value';
+ }
+ if ($fieldMetadata['type'] === CRM_Utils_Type::T_DATE) {
+ $value = CRM_Utils_Date::formatDate($importedValue, $this->getSubmittedValue('dateFormats'));
+ return ($value) ?: 'invalid_import_value';
+ }
return $this->getFieldOptions($fieldName)[$importedValue] ?? 'invalid_import_value';
}