Cleanup copyValues DAO function
authorColeman Watts <coleman@civicrm.org>
Tue, 18 Feb 2020 13:29:17 +0000 (08:29 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 18 Feb 2020 13:29:17 +0000 (08:29 -0500)
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
CRM/Contact/BAO/SavedSearch.php
CRM/Core/BAO/Domain.php
CRM/Core/BAO/Mapping.php
CRM/Core/BAO/UFJoin.php
CRM/Core/DAO.php
CRM/Mailing/BAO/MailingJob.php
CRM/Member/BAO/MembershipBlock.php
CRM/Report/BAO/ReportInstance.php
Civi/Api4/Generic/Traits/DAOActionTrait.php
api/v3/utils.php

index bfc620b835dbb34b2cf3f33451ef8a10413d2c57..57692ca8df16fbf590ad3ac1078db5ec4efa90f5 100644 (file)
@@ -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
index eafb14ccc242b6d855c189123b5efab8ffb7f9d4..6b64bcc711ee87f62bed83f96a9bd2e381996c48 100644 (file)
@@ -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;
index a8d1d356c2c112e81f1419b4dadd26538cc29501..8cf1de41a12249de2026d45de3849f504ec3cb67 100644 (file)
@@ -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;
index e29e071469b48e39bbe29573e33720908877e314..b82a0c5dbb34cfe2e844bb9cd2d3217e139b5571 100644 (file)
@@ -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++;
         }
index 1bad79fd369872679160d1d7762ef60fb32d613b..caffd2c500cd22179bfd06e588d93f94259ab5c9 100644 (file)
@@ -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();
     }
index 70fd10bc8a638277cd960052ab7370c86bc13691..53503b1ee2619a0d7c90042acc9cbc2628a552c0 100644 (file)
@@ -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;
         }
       }
index a9cf9c60afdefe533a4e440e476b9ba6cd25e64a..5fc03b14d3d896aaad4033e40b37a85f9a8c2f24 100644 (file)
@@ -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']);
index 11c234ab95d7750785300f625141949fc963490e..f70ef619d3bcacc738cfce8e69cb19f3144048d2 100644 (file)
@@ -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);
index 92f13e17b7bd3513fdac4589b5f10cb16349b69c..2c7f1034288d0738f002d63d36921fbb3bf502c4 100644 (file)
@@ -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';
index 451e31f7f264270b63001383050a1897514f0d91..39bc4388f5eec65000e1840316a0b908be4639ea 100644 (file)
@@ -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);
 
index 5b7ed126680a93ff998d96c72ad930c48bbcc33b..65fe0128da644190210b43379f0efa653048b7ef 100644 (file)
@@ -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);