AntonLV před 5 roky
rodič
revize
b4e20d2971

+ 19 - 0
modules/boonex/timeline/classes/BxTimelineConfig.php

@@ -572,6 +572,25 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
         return parent::getPerPage($sType);
     }
 
+    public function getExtenalsEvery($sType = 'default')
+    {
+        if($this->isInfiniteScroll())
+            $sType = 'preload';
+
+        $iExtenalsEvery = (int)getParam($this->getPrefix('option') . 'extenals_every_' . $sType);
+        if(!$iExtenalsEvery)
+            return $iExtenalsEvery;
+
+        $iPerPage = $this->getPerPage($sType);
+        if(empty($iPerPage))
+            $iPerPage = $this->getPerPage();
+
+        if($iExtenalsEvery > $iPerPage)
+            $iExtenalsEvery = $iPerPage;
+
+        return $iExtenalsEvery;
+    }
+
     public function getAutoPreloads()
     {
         return $this->_iInfScrollAutoPreloads;

+ 16 - 0
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -1689,6 +1689,22 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         return $oGrid->getCode();
     }
 
+    public function serviceGetPost($mixedEvent, $aParams = array())
+    {
+        if(!empty($mixedEvent) && !is_array($mixedEvent))
+            $mixedEvent = $this->_oDb->getContentInfoById((int)$mixedEvent);
+
+        if(empty($mixedEvent) || !is_array($mixedEvent))
+            return '';
+
+        $aParams = $this->_prepareParams(array_merge(array(
+            'view' => BX_TIMELINE_VIEW_ITEM, 
+            'type' => BX_TIMELINE_TYPE_ITEM
+        ), $aParams));
+
+        return $this->_oTemplate->getPost($mixedEvent, $aParams);
+    }
+
     public function serviceGetTimelineRepostAllowedView($aEvent)
     {
         return isset($aEvent['content']['allowed_view']) ? $aEvent['content']['allowed_view'] : CHECK_ACTION_RESULT_ALLOWED;

+ 15 - 0
modules/boonex/timeline/classes/BxTimelineTemplate.php

@@ -594,7 +594,10 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
             }
         }
 
+        $iExtenalsEvery = $this->_oConfig->getExtenalsEvery($aParams['type']);
+
         $bFirst = true;
+        $iEventIndex = 0;
         $mixedEvents = $bReturnArray ? array() : '';
         foreach($aEvents as $aEvent) {
             $iEvent = (int)$aEvent['id'];
@@ -616,6 +619,18 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
 
             $mixedEvents .= $bViewTimeline ? $this->getDivider($iDays, $aEvent) : '';
             $mixedEvents .= $sEvent;
+
+            $iEventIndex++;
+            if($iExtenalsEvery > 0 && $iEventIndex % $iExtenalsEvery == 0) {
+                $sExternalPost = false;
+                bx_alert($this->_oConfig->getName(), 'get_external_post', 0, 0, array(
+                    'params' => $aParams,
+                    'override_result' => &$sExternalPost,
+                ));
+
+                if($sExternalPost !== false)
+                    $mixedEvents .= $sExternalPost;
+            }
         }
 
         if($bReturnArray)