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

Ticket #5285 - Recommendations: Update data for newly created profile immediately after creation.

AntonLV 11 месяцев назад
Родитель
Сommit
0f10eef2d2

+ 19 - 7
inc/classes/BxDolRecommendation.php

@@ -66,7 +66,7 @@ class BxDolRecommendation extends BxDolFactory implements iBxDolFactoryObject
         return ($GLOBALS['bxDolClasses']['BxDolRecommendation!' . $sObject] = $o);
         return ($GLOBALS['bxDolClasses']['BxDolRecommendation!' . $sObject] = $o);
     }
     }
 
 
-    public static function updateData($iProfileId = 0)
+    public static function updateData($iProfileId = 0, $bImmediate = false)
     {
     {
         if(!$iProfileId) {
         if(!$iProfileId) {
             if(isLogged())
             if(isLogged())
@@ -75,13 +75,25 @@ class BxDolRecommendation extends BxDolFactory implements iBxDolFactoryObject
                 return false;
                 return false;
         }
         }
 
 
-        $oCronQuery = BxDolCronQuery::getInstance();
+        $mixedResult = true;
+        if($bImmediate) {
+            $mixedResult = [];
+
+            $aObjects = BxDolRecommendationQuery::getObjects();
+            foreach($aObjects as $aObject)
+                if(($oRecommendation = BxDolRecommendation::getObjectInstance($aObject['name'])) !== false)
+                    $mixedResult[] = [
+                        'object' => $aObject['name'],
+                        'items' => $oRecommendation->processCriteria($iProfileId)
+                    ];
+        }
+        else {
+            $sName = 'recommendations_for_' . $iProfileId;
+            if(($oCronQuery = BxDolCronQuery::getInstance()) && !$oCronQuery->isTransientJobService($sName))
+                $oCronQuery->addTransientJobService($sName, ['system', 'update_data', [$iProfileId], 'TemplServiceRecommendations']);
+        }
 
 
-        $sName = 'recommendations_for_' . $iProfileId;
-        if(!$oCronQuery->isTransientJobService($sName))
-            $oCronQuery->addTransientJobService($sName, ['system', 'update_data', [$iProfileId], 'TemplServiceRecommendations']);
-        
-        return true;
+        return $mixedResult;
     }
     }
 
 
     public static function getContextName($sObject)
     public static function getContextName($sObject)

+ 1 - 1
modules/base/profile/classes/BxBaseModProfileFormsEntryHelper.php

@@ -236,7 +236,7 @@ class BxBaseModProfileFormsEntryHelper extends BxBaseModGeneralFormsEntryHelper
             $oAccount->updateProfileContext($iProfileId);
             $oAccount->updateProfileContext($iProfileId);
 
 
             //update recomedations
             //update recomedations
-            BxDolRecommendation::updateData($iProfileId);
+            BxDolRecommendation::updateData($iProfileId, true);
 
 
             // update content filters
             // update content filters
             BxDolContentFilter::getInstance()->updateValuesByProfile($oProfile->getInfo());
             BxDolContentFilter::getInstance()->updateValuesByProfile($oProfile->getInfo());

+ 5 - 19
template/scripts/BxBaseServiceRecommendations.php

@@ -19,25 +19,11 @@ class BxBaseServiceRecommendations extends BxDol
 
 
     public function serviceUpdateData($iProfileId, $bVerbose = false)
     public function serviceUpdateData($iProfileId, $bVerbose = false)
     {
     {
-        $aResults = [];
-
-        if(!$iProfileId) {
-            if(isLogged())
-                $iProfileId = bx_get_logged_profile_id();
-            else
-                return $aResults;
-        }
-
-        $aObjects = BxDolRecommendationQuery::getObjects();
-        foreach($aObjects as $aObject)
-            if(($oRecommendation = BxDolRecommendation::getObjectInstance($aObject['name'])) !== false)
-                $aResults[] = [
-                    'object' => $aObject['name'],
-                    'items' => $oRecommendation->processCriteria($iProfileId)
-                ];
-
-        if($bVerbose)
-            return $aResults;
+        $aResults = BxDolRecommendation::updateData($iProfileId, true);
+        if($aResults === false)
+            return false;
+
+        return $bVerbose ? $aResults : true;
     }
     }
 
 
     /**
     /**