From fc944198c116c01ac6b311007551c7d66b45ba11 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Tue, 18 Feb 2020 08:29:17 -0500 Subject: [PATCH] Cleanup copyValues DAO function The $serializeArrays parameter was transitional and is now always enabled. Passing $params by reference was unnecessary and has been removed. Renamed a few variables for readability. --- CRM/Contact/BAO/Group.php | 2 +- CRM/Contact/BAO/SavedSearch.php | 2 +- CRM/Core/BAO/Domain.php | 2 +- CRM/Core/BAO/Mapping.php | 2 +- CRM/Core/BAO/UFJoin.php | 2 +- CRM/Core/DAO.php | 42 ++++++++------------- CRM/Mailing/BAO/MailingJob.php | 2 +- CRM/Member/BAO/MembershipBlock.php | 2 +- CRM/Report/BAO/ReportInstance.php | 2 +- Civi/Api4/Generic/Traits/DAOActionTrait.php | 2 +- api/v3/utils.php | 2 +- 11 files changed, 25 insertions(+), 37 deletions(-) diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index bfc620b835..57692ca8df 100644 --- a/CRM/Contact/BAO/Group.php +++ b/CRM/Contact/BAO/Group.php @@ -401,7 +401,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { } } $group = new CRM_Contact_BAO_Group(); - $group->copyValues($params, TRUE); + $group->copyValues($params); if (empty($params['id']) && !$nameParam diff --git a/CRM/Contact/BAO/SavedSearch.php b/CRM/Contact/BAO/SavedSearch.php index eafb14ccc2..6b64bcc711 100644 --- a/CRM/Contact/BAO/SavedSearch.php +++ b/CRM/Contact/BAO/SavedSearch.php @@ -336,7 +336,7 @@ LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_ */ public static function create(&$params) { $savedSearch = new CRM_Contact_DAO_SavedSearch(); - $savedSearch->copyValues($params, TRUE); + $savedSearch->copyValues($params); $savedSearch->save(); return $savedSearch; diff --git a/CRM/Core/BAO/Domain.php b/CRM/Core/BAO/Domain.php index a8d1d356c2..8cf1de41a1 100644 --- a/CRM/Core/BAO/Domain.php +++ b/CRM/Core/BAO/Domain.php @@ -132,7 +132,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { $hook = empty($params['id']) ? 'create' : 'edit'; CRM_Utils_Hook::pre($hook, 'Domain', CRM_Utils_Array::value('id', $params), $params); $domain = new CRM_Core_DAO_Domain(); - $domain->copyValues($params, TRUE); + $domain->copyValues($params); $domain->save(); CRM_Utils_Hook::post($hook, 'Domain', $domain->id, $domain); return $domain; diff --git a/CRM/Core/BAO/Mapping.php b/CRM/Core/BAO/Mapping.php index e29e071469..b82a0c5dbb 100644 --- a/CRM/Core/BAO/Mapping.php +++ b/CRM/Core/BAO/Mapping.php @@ -1194,7 +1194,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { 'column_number' => $colCnt, ], $v); $saveMappingField = new CRM_Core_DAO_MappingField(); - $saveMappingField->copyValues($saveMappingParams, TRUE); + $saveMappingField->copyValues($saveMappingParams); $saveMappingField->save(); $colCnt++; } diff --git a/CRM/Core/BAO/UFJoin.php b/CRM/Core/BAO/UFJoin.php index 1bad79fd36..caffd2c500 100644 --- a/CRM/Core/BAO/UFJoin.php +++ b/CRM/Core/BAO/UFJoin.php @@ -38,7 +38,7 @@ class CRM_Core_BAO_UFJoin extends CRM_Core_DAO_UFJoin { } $dao = new CRM_Core_DAO_UFJoin(); - $dao->copyValues($params, TRUE); + $dao->copyValues($params); if ($params['uf_group_id']) { $dao->save(); } diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index 70fd10bc8a..53503b1ee2 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -641,28 +641,21 @@ class CRM_Core_DAO extends DB_DataObject { * that belong to this object and initialize the object with said values * * @param array $params - * (reference ) associative array of name/value pairs. - * @param bool $serializeArrays - * Should arrays that are passed in be serialised according to the metadata. - * Eventually this should be always true / gone, but in the interests of caution - * it is being grandfathered in. In general an array is not valid on the DAO - * but there may be instances where this function is called & then some handling - * takes place on the would-be array. + * Array of name/value pairs to save. * * @return bool * Did we copy all null values into the object */ - public function copyValues(&$params, $serializeArrays = FALSE) { - $fields = $this->fields(); + public function copyValues($params) { $allNull = TRUE; - foreach ($fields as $name => $value) { - $dbName = $value['name']; + foreach ($this->fields() as $uniqueName => $field) { + $dbName = $field['name']; if (array_key_exists($dbName, $params)) { - $pValue = $params[$dbName]; + $value = $params[$dbName]; $exists = TRUE; } - elseif (array_key_exists($name, $params)) { - $pValue = $params[$name]; + elseif (array_key_exists($uniqueName, $params)) { + $value = $params[$uniqueName]; $exists = TRUE; } else { @@ -671,26 +664,21 @@ class CRM_Core_DAO extends DB_DataObject { // if there is no value then make the variable NULL if ($exists) { - if ($pValue === '') { + if ($value === '') { $this->$dbName = 'null'; } - elseif ($serializeArrays && is_array($pValue) && !empty($value['serialize'])) { - $this->$dbName = CRM_Core_DAO::serializeField($pValue, $value['serialize']); + elseif (is_array($value) && !empty($field['serialize'])) { + $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']); $allNull = FALSE; } else { - if (!$serializeArrays && is_array($pValue) && !empty($value['serialize'])) { - Civi::log()->warning(ts('use copyParams to serialize arrays (' . __CLASS__ . '.' . $name . ')'), ['civi.tag' => 'deprecated']); - } - $maxLength = CRM_Utils_Array::value('maxlength', $value); - if (!is_array($pValue) && $maxLength && mb_strlen($pValue) > $maxLength - && empty($value['pseudoconstant']) - ) { - Civi::log()->warning(ts('A string for field $dbName has been truncated. The original string was %1', [CRM_Utils_Type::escape($pValue, 'String')])); + $maxLength = CRM_Utils_Array::value('maxlength', $field); + if (!is_array($value) && $maxLength && mb_strlen($value) > $maxLength && empty($field['pseudoconstant'])) { + Civi::log()->warning(ts('A string for field $dbName has been truncated. The original string was %1', [CRM_Utils_Type::escape($value, 'String')])); // The string is too long - what to do what to do? Well losing data is generally bad so lets' truncate - $pValue = CRM_Utils_String::ellipsify($pValue, $maxLength); + $value = CRM_Utils_String::ellipsify($value, $maxLength); } - $this->$dbName = $pValue; + $this->$dbName = $value; $allNull = FALSE; } } diff --git a/CRM/Mailing/BAO/MailingJob.php b/CRM/Mailing/BAO/MailingJob.php index a9cf9c60af..5fc03b14d3 100644 --- a/CRM/Mailing/BAO/MailingJob.php +++ b/CRM/Mailing/BAO/MailingJob.php @@ -54,7 +54,7 @@ class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob { CRM_Utils_Hook::pre($op, 'MailingJob', CRM_Utils_Array::value('id', $params), $params); $jobDAO = new CRM_Mailing_BAO_MailingJob(); - $jobDAO->copyValues($params, TRUE); + $jobDAO->copyValues($params); $jobDAO->save(); if (!empty($params['mailing_id']) && empty('is_calling_function_updated_to_reflect_deprecation')) { CRM_Mailing_BAO_Mailing::getRecipients($params['mailing_id']); diff --git a/CRM/Member/BAO/MembershipBlock.php b/CRM/Member/BAO/MembershipBlock.php index 11c234ab95..f70ef619d3 100644 --- a/CRM/Member/BAO/MembershipBlock.php +++ b/CRM/Member/BAO/MembershipBlock.php @@ -38,7 +38,7 @@ class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock { $hook = empty($params['id']) ? 'create' : 'edit'; CRM_Utils_Hook::pre($hook, 'MembershipBlock', CRM_Utils_Array::value('id', $params), $params); $dao = new CRM_Member_DAO_MembershipBlock(); - $dao->copyValues($params, TRUE); + $dao->copyValues($params); $dao->id = CRM_Utils_Array::value('id', $params); $dao->save(); CRM_Utils_Hook::post($hook, 'MembershipBlock', $dao->id, $dao); diff --git a/CRM/Report/BAO/ReportInstance.php b/CRM/Report/BAO/ReportInstance.php index 92f13e17b7..2c7f103428 100644 --- a/CRM/Report/BAO/ReportInstance.php +++ b/CRM/Report/BAO/ReportInstance.php @@ -61,7 +61,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance { } $instance = new CRM_Report_DAO_ReportInstance(); - $instance->copyValues($params, TRUE); + $instance->copyValues($params); if (CRM_Core_Config::singleton()->userFramework == 'Joomla') { $instance->permission = 'null'; diff --git a/Civi/Api4/Generic/Traits/DAOActionTrait.php b/Civi/Api4/Generic/Traits/DAOActionTrait.php index 451e31f7f2..39bc4388f5 100644 --- a/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -186,7 +186,7 @@ trait DAOActionTrait { \CRM_Utils_Hook::pre($hook, $this->getEntityName(), $params['id'] ?? NULL, $params); /** @var \CRM_Core_DAO $instance */ $instance = new $baoName(); - $instance->copyValues($params, TRUE); + $instance->copyValues($params); $instance->save(); \CRM_Utils_Hook::post($hook, $this->getEntityName(), $instance->id, $instance); diff --git a/api/v3/utils.php b/api/v3/utils.php index 5b7ed12668..65fe0128da 100644 --- a/api/v3/utils.php +++ b/api/v3/utils.php @@ -1357,7 +1357,7 @@ function _civicrm_api3_basic_create_fallback($bao_name, &$params) { CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params); $instance = new $dao_name(); - $instance->copyValues($params, TRUE); + $instance->copyValues($params); $instance->save(); CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance); -- 2.25.1