Просмотр исходного кода

#5214 Profile unit cache isn't correct sometimes

Alex Trofimov 1 год назад
Родитель
Сommit
c75d122f80
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      modules/base/profile/classes/BxBaseModProfileTemplate.php

+ 7 - 2
modules/base/profile/classes/BxBaseModProfileTemplate.php

@@ -58,13 +58,18 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
     {
         $CNF = &$this->_oConfig->CNF;
 
-        list($sTemplate) = is_array($mixedTemplate) ? $mixedTemplate : array($mixedTemplate);
+        list($sTemplate, $sTemplateSize) = is_array($mixedTemplate) ? $mixedTemplate : array($mixedTemplate, false);
 
         if(!empty($aParams['template_name']))
             $sTemplate = $aParams['template_name'];
         if(empty($sTemplate))
             $sTemplate = $this->_sUnitDefault;
 
+        if(!empty($aParams['template_size']))
+            $sTemplateSize = $aParams['template_size'];
+        if(empty($sTemplateSize))
+            $sTemplateSize = $this->_getUnitSize($aData, $sTemplate);
+
         /**
          * Allow use separate template for private profiles. 
          * These templates will be used if privacy field "Visible to" don't allow to view content.
@@ -101,7 +106,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         $iProfile = $oProfile->id();
 
         // try to get template variables from cache
-        $sCacheKey = 'sprofile_unit_vars:' . $iProfile . ':onl' . ($oProfile->isOnline() ? 1 : 0) . ':' . $sTemplate . ':avci' . ($isAllowedViewCoverImage ? '1' : '0') . ':avpi' . ($isAllowedViewProfileImage ? '1' : '0') . ':pp' . ($isProfilePublic ? '1' : '0') . (isset($aParams['template_size']) ? ':' . $aParams['template_size'] : '');
+        $sCacheKey = 'sprofile_unit_vars:' . $iProfile . ':' . $sTemplateSize . ':onl' . ($oProfile->isOnline() ? 1 : 0) . ':' . $sTemplate . ':avci' . ($isAllowedViewCoverImage ? '1' : '0') . ':avpi' . ($isAllowedViewProfileImage ? '1' : '0') . ':pp' . ($isProfilePublic ? '1' : '0');
         $aVars = bx_content_cache_get($sCacheKey);
         if (null === $aVars) {
             // get template variables if not found in cache