dev/core#1677 Fix multisite regression on domain membership types
authoreileen <emcnaughton@wikimedia.org>
Tue, 31 Mar 2020 05:12:33 +0000 (18:12 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 31 Mar 2020 05:15:07 +0000 (18:15 +1300)
Fixes a regression where membership types bleed between domains

CRM/Member/BAO/MembershipType.php

index add9aacac30a8e32d5731033f7648fc2f639b263..b1d5044a0803812caf72d83b3ac1e278cd78d4b1 100644 (file)
@@ -814,10 +814,14 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
    *
    * Since this is used from the batched script caching helps.
    *
+   * Caching is by domain - if that hits any issues we should add a new function getDomainMembershipTypes
+   * or similar rather than 'just add another param'! but this is closer to earlier behaviour so 'should' be OK.
+   *
    * @throws \CiviCRM_API3_Exception
    */
   public static function getAllMembershipTypes() {
-    if (!Civi::cache('metadata')->has(__CLASS__ . __FUNCTION__)) {
+    $cacheString = __CLASS__ . __FUNCTION__ . CRM_Core_Config::domainID();
+    if (!Civi::cache('metadata')->has($cacheString)) {
       $types = civicrm_api3('MembershipType', 'get', ['options' => ['limit' => 0, 'sort' => 'weight']])['values'];
       $taxRates = CRM_Core_PseudoConstant::getTaxRates();
       $keys = ['description', 'relationship_type_id', 'relationship_direction', 'max_related'];
@@ -840,9 +844,9 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
         }
         $types[$id]['minimum_fee_with_tax'] = (float) $types[$id]['minimum_fee'] * $multiplier;
       }
-      Civi::cache('metadata')->set(__CLASS__ . __FUNCTION__, $types);
+      Civi::cache('metadata')->set($cacheString, $types);
     }
-    return Civi::cache('metadata')->get(__CLASS__ . __FUNCTION__);
+    return Civi::cache('metadata')->get($cacheString);
   }
 
   /**