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

Ticket #4690 - Timeline: Add Channels in For You Feed.

AntonLV 2 лет назад
Родитель
Сommit
94c2f31e30

+ 1 - 0
modules/boonex/russian/data/langs/bx_timeline/ru.xml

@@ -80,6 +80,7 @@
     <string name="_bx_timeline_option_for_you_sources"><![CDATA[Лента 'Для Вас' состоит из]]></string>
     <string name="_bx_timeline_option_for_you_sources_err"><![CDATA[Для фида должен быть включен хотя бы один источник.]]></string>
     <string name="_bx_timeline_option_for_you_sources_feed"><![CDATA[Лента контекст (профиль) + подписки]]></string>
+    <string name="_bx_timeline_option_for_you_sources_channels"><![CDATA[Каналы]]></string>
     <string name="_bx_timeline_option_for_you_sources_hot"><![CDATA['Горячая' хроника]]></string>
     <string name="_bx_timeline_option_for_you_sources_recom_friends"><![CDATA[Ленты пользователей из списка 'Предложения друзей']]></string>
     <string name="_bx_timeline_option_for_you_sources_recom_subscriptions"><![CDATA[Ленты пользователей из списка 'На кого подписываться']]></string>

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

@@ -218,6 +218,7 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
                 'option_hfs_comment' => '_bx_timeline_option_hot_sources_comment',
                 'option_hfs_vote' => '_bx_timeline_option_hot_sources_vote',
                 'option_fyfs_feed' => '_bx_timeline_option_for_you_sources_feed',
+                'option_fyfs_channels' => '_bx_timeline_option_for_you_sources_channels',
                 'option_fyfs_hot' => '_bx_timeline_option_for_you_sources_hot',
                 'option_fyfs_recom_friends' => '_bx_timeline_option_for_you_sources_recom_friends',
                 'option_fyfs_recom_subscriptions' => '_bx_timeline_option_for_you_sources_recom_subscriptions',
@@ -414,6 +415,7 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
 
         $this->_aForYouSourcesList = [
             BX_TIMELINE_FYFS_FEED,
+            BX_TIMELINE_TYPE_CHANNELS,
             BX_TIMELINE_FYFS_HOT,
             BX_TIMELINE_FYFS_RECOM_FRIENDS,
             BX_TIMELINE_FYFS_RECOM_SUBSCRIPTIONS

+ 18 - 6
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -1216,10 +1216,22 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                     $mixedWhereSubclause['p4'] = "`{$sTableAlias}`.`promoted` <> '0'";
                 }
 
+                //--- 'For You' feed only: Channels
+                if($bForYou && in_array(BX_TIMELINE_FYFS_CHANNELS, $aForYouSources)) {
+                    $oConnection = BxDolConnection::getObjectInstance($this->_oConfig->getObject('conn_subscriptions'));
+
+                    //--- Join System posts received by following channels.
+                    $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($sTableAlias, 'owner_id', $aParams['owner_id']);
+                    $aJoin1 = $aQueryParts['join'];
+
+                    $mixedJoinSubclause['p5'] = "INNER JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON " . $aJoin1['condition'];
+                    $mixedWhereSubclause['p5'] = "`{$sTableAlias}`.`type`='bx_channels'";
+                }
+                
                 //--- 'For You' feed only: Add Hot posts
                 if($bForYou && in_array(BX_TIMELINE_FYFS_HOT, $aForYouSources)) {
-                    $mixedJoinSubclause['p5'] = "INNER JOIN `{$this->_sTableHotTrack}` ON `{$sTableAlias}`.`id`=`{$this->_sTableHotTrack}`.`event_id`";
-                    $mixedWhereSubclause['p5'] = "1";
+                    $mixedJoinSubclause['p6'] = "INNER JOIN `{$this->_sTableHotTrack}` ON `{$sTableAlias}`.`id`=`{$this->_sTableHotTrack}`.`event_id`";
+                    $mixedWhereSubclause['p6'] = "1";
                 }
 
                 //--- 'For You' feed only: Add posts from recommended friends
@@ -1229,8 +1241,8 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                     ]);
 
                     if(!empty($aList) && is_array($aList)) {
-                        $mixedJoinSubclause['p6'] = "";
-                        $mixedWhereSubclause['p6'] = "`{$sTableAlias}`.`owner_id` IN (" . $this->implode_escape(array_keys($aList)) . ")";
+                        $mixedJoinSubclause['p7'] = "";
+                        $mixedWhereSubclause['p7'] = "`{$sTableAlias}`.`owner_id` IN (" . $this->implode_escape(array_keys($aList)) . ")";
                     }
                 }
 
@@ -1241,8 +1253,8 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                     ]);
 
                     if(!empty($aList) && is_array($aList)) {
-                        $mixedJoinSubclause['p7'] = "";
-                        $mixedWhereSubclause['p7'] = "`{$sTableAlias}`.`owner_id` IN (" . $this->implode_escape(array_keys($aList)) . ")";
+                        $mixedJoinSubclause['p8'] = "";
+                        $mixedWhereSubclause['p8'] = "`{$sTableAlias}`.`owner_id` IN (" . $this->implode_escape(array_keys($aList)) . ")";
                     }
                 }
                 break;

+ 2 - 1
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -78,6 +78,7 @@ define('BX_TIMELINE_HFS_VOTE', 'vote');
 
 //--- For You Feed sources
 define('BX_TIMELINE_FYFS_FEED', 'feed');
+define('BX_TIMELINE_FYFS_CHANNELS', 'channels');
 define('BX_TIMELINE_FYFS_HOT', 'hot');
 define('BX_TIMELINE_FYFS_RECOM_FRIENDS', 'recom_friends');
 define('BX_TIMELINE_FYFS_RECOM_SUBSCRIPTIONS', 'recom_subscriptions');
@@ -3912,7 +3913,7 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         }
 
         if($oForm->isSubmittedAndValid()) {
-            $aContent = [];
+            $aContent = unserialize($aEvent['content']);
 
             //--- Process Text ---//
             $sText = $oForm->getCleanValue('text');

+ 1 - 0
modules/boonex/timeline/install/langs/en.xml

@@ -80,6 +80,7 @@
     <string name="_bx_timeline_option_for_you_sources"><![CDATA['For You' feed consists of]]></string>
     <string name="_bx_timeline_option_for_you_sources_err"><![CDATA[At least one source should be enabled for the feed.]]></string>
     <string name="_bx_timeline_option_for_you_sources_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_option_for_you_sources_channels"><![CDATA[Channels]]></string>
     <string name="_bx_timeline_option_for_you_sources_hot"><![CDATA[Hot feed]]></string>
     <string name="_bx_timeline_option_for_you_sources_recom_friends"><![CDATA[Suggested friends feeds]]></string>
     <string name="_bx_timeline_option_for_you_sources_recom_subscriptions"><![CDATA[Who to follow feeds]]></string>

+ 1 - 1
modules/boonex/timeline/install/sql/enable.sql

@@ -396,7 +396,7 @@ VALUES (@iTypeId, 'bx_timeline_feed_for_you', '_bx_timeline_options_category_fee
 SET @iCategId = LAST_INSERT_ID();
 
 INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
-('bx_timeline_for_you_sources', 'feed,hot,recom_friends,recom_subscriptions', @iCategId, '_bx_timeline_option_for_you_sources', 'list', 'Avail', '', '_bx_timeline_option_for_you_sources_err', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:29:"get_for_you_sources_checklist";}', 1),
+('bx_timeline_for_you_sources', 'feed,channels,hot,recom_friends,recom_subscriptions', @iCategId, '_bx_timeline_option_for_you_sources', 'list', 'Avail', '', '_bx_timeline_option_for_you_sources_err', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:29:"get_for_you_sources_checklist";}', 1),
 ('bx_timeline_for_you_threshold_recom_friends', '1', @iCategId, '_bx_timeline_option_for_you_threshold_recom_friends', 'digit', '', '', '', '', 10),
 ('bx_timeline_for_you_threshold_recom_subscriptions', '1', @iCategId, '_bx_timeline_option_for_you_threshold_recom_subscriptions', 'digit', '', '', '', '', 11);