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

Ticket #4384 - Timeline: Add 'For you' feed.

AntonLV 3 лет назад
Родитель
Сommit
375e47ebb4

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

@@ -209,6 +209,8 @@
     <string name="_bx_timeline_menu_item_title_channels"><![CDATA[Каналы]]></string>
     <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Хроника]]></string>
     <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Хроника]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed_and_hot"><![CDATA[Хроника и Популярное]]></string>
+    <string name="_bx_timeline_menu_item_title_feed_and_hot"><![CDATA[Для тебя]]></string>
     <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Публичное]]></string>
     <string name="_bx_timeline_menu_item_title_public"><![CDATA[Публичное]]></string>
     <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Популярное]]></string>

+ 14 - 2
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -688,10 +688,15 @@ class BxTimelineDb extends BxBaseModNotificationsDb
             $aSqlParts[] = !$bCount ? $sSqlPart : (int)$this->$sMethod($sSqlPart);
         }
 
-        return $bCount ? array_sum($aSqlParts) : $this->$sMethod(bx_replace_markers('(' . implode(') UNION (', $aSqlParts) . ') {order} {limit}', [
+        if($bCount)
+            return array_sum($aSqlParts);
+
+        $sSql = bx_replace_markers('(' . implode(') UNION (', $aSqlParts) . ') {order} {limit}', [
             'order' => str_replace("`{$sTableAlias}`.", '', $sOrderClause),
             'limit' => str_replace("`{$sTableAlias}`.", '', $sLimitClause),
-        ]));
+        ]);
+
+        return $this->$sMethod($sSql);
     }
 
     protected function _getFilterAddon($iOwnerId, $sFilter)
@@ -1048,6 +1053,7 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
             //--- Feed: Profile + Profile Connections to Non-Channel contexts
             case BX_TIMELINE_TYPE_FEED:
+            case BX_TIMELINE_TYPE_FEED_AND_HOT:
                 if(empty($aParams['owner_id']))
                     break;
 
@@ -1085,6 +1091,12 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
                 //--- Select Promoted posts.
                 $mixedWhereSubclause['p4'] = "`{$sTableAlias}`.`promoted` <> '0'";
+
+                //--- Select Hot posts.
+                if($aParams['type'] == BX_TIMELINE_TYPE_FEED_AND_HOT) {
+                    $mixedJoinClause['p5'] = "INNER JOIN `{$this->_sTableHotTrack}` ON `{$sTableAlias}`.`id`=`{$this->_sTableHotTrack}`.`event_id`";
+                    $mixedWhereSubclause['p5'] = "1";
+                }
                 break;
 
             //--- Feed: Profile + All Profile Connections

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

@@ -32,6 +32,7 @@ define('BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS', 'owner_and_connections');
 define('BX_TIMELINE_TYPE_CHANNELS', 'channels'); //--- Followed channels only.
 define('BX_TIMELINE_TYPE_FEED', 'feed'); //--- Owner and folloved contexts excluding channels.
 define('BX_TIMELINE_TYPE_HOT', 'hot'); //--- Aggrigated hot content.
+define('BX_TIMELINE_TYPE_FEED_AND_HOT', 'feed_and_hot'); 
 define('BX_TIMELINE_TYPE_DEFAULT', BX_BASE_MOD_NTFS_TYPE_OWNER);
 
 define('BX_TIMELINE_VIEW_ITEM', 'item');

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

@@ -221,6 +221,8 @@
     <string name="_bx_timeline_menu_item_title_channels"><![CDATA[Channels]]></string>
     <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Feed]]></string>
     <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed_and_hot"><![CDATA[Feed and Hot]]></string>
+    <string name="_bx_timeline_menu_item_title_feed_and_hot"><![CDATA[For You]]></string>
     <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Public]]></string>
     <string name="_bx_timeline_menu_item_title_public"><![CDATA[Public]]></string>
     <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Hot]]></string>

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

@@ -111,7 +111,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_timeline_menu_view', 'bx_timeline', 'feed', '_bx_timeline_menu_item_title_system_feed', '_bx_timeline_menu_item_title_feed', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''feed'')', '_self', '', '', 2147483647, 1, 0, 1),
 ('bx_timeline_menu_view', 'bx_timeline', 'public', '_bx_timeline_menu_item_title_system_public', '_bx_timeline_menu_item_title_public', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''public'')', '_self', '', '', 2147483647, 1, 0, 2),
 ('bx_timeline_menu_view', 'bx_timeline', 'channels', '_bx_timeline_menu_item_title_system_channels', '_bx_timeline_menu_item_title_channels', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''channels'')', '_self', '', '', 2147483647, 0, 0, 3),
-('bx_timeline_menu_view', 'bx_timeline', 'hot', '_bx_timeline_menu_item_title_system_hot', '_bx_timeline_menu_item_title_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''hot'')', '_self', '', '', 2147483647, 1, 0, 4);
+('bx_timeline_menu_view', 'bx_timeline', 'hot', '_bx_timeline_menu_item_title_system_hot', '_bx_timeline_menu_item_title_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''hot'')', '_self', '', '', 2147483647, 1, 0, 4),
+('bx_timeline_menu_view', 'bx_timeline', 'feed_and_hot', '_bx_timeline_menu_item_title_system_feed_and_hot', '_bx_timeline_menu_item_title_feed_and_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''feed_and_hot'')', '_self', '', '', 2147483647, 0, 0, 5);
 
 -- MENU: Feeds
 INSERT INTO `sys_menu_templates` (`id`, `template`, `title`, `visible`) VALUES