Do not pass by reference for createRelatedMemberships
authoreileen <emcnaughton@wikimedia.org>
Mon, 24 Aug 2020 01:11:07 +0000 (13:11 +1200)
committereileen <emcnaughton@wikimedia.org>
Mon, 24 Aug 2020 01:11:07 +0000 (13:11 +1200)
There are 2 parameters passed by reference to this function
1) dao - this is not altered
2) params - this IS altered but the calling function (create) does not use it again. While it's
possible a function that calls create uses it again the idea that they would want the params
to have been altered to refer to a different related relationship does not seem probable.

Tests on this are in JobTest & apiv3_MembershipTest

CRM/Member/BAO/Membership.php

index 4f2f491ec6e7b2a77a133cd56e72a58be53c3101..1030eaae1c9beb702129cc844f5531357d9668c0 100644 (file)
@@ -1324,7 +1324,7 @@ WHERE  civicrm_membership.contact_id = civicrm_contact.id
    * @throws \CRM_Core_Exception
    * @throws \CiviCRM_API3_Exception
    */
-  public static function createRelatedMemberships(&$params, &$dao, $reset = FALSE) {
+  public static function createRelatedMemberships($params, $dao, $reset = FALSE) {
     // CRM-4213 check for loops, using static variable to record contacts already processed.
     if (!isset(\Civi::$statics[__CLASS__]['related_contacts'])) {
       \Civi::$statics[__CLASS__]['related_contacts'] = [];