use Friendica\Model\Contact;
use Friendica\Model\Group;
use Friendica\Model\Item;
+use Friendica\Model\Post;
use Friendica\Model\Profile;
use Friendica\Model\User;
+use Friendica\Model\Verb;
use Friendica\Module\Contact as ModuleContact;
use Friendica\Module\Security\Login;
+use Friendica\Protocol\Activity;
use Friendica\Util\DateTimeFormat;
class Network extends BaseModule
}
$x = [
- 'is_owner' => true,
- 'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default-location'],
- 'nickname' => $a->user['nickname'],
- 'lockstate' => (self::$groupId || self::$forumContactId || self::$network || (is_array($a->user) &&
- (strlen($a->user['allow_cid']) || strlen($a->user['allow_gid']) ||
- strlen($a->user['deny_cid']) || strlen($a->user['deny_gid']))) ? 'lock' : 'unlock'),
- 'default_perms' => ACL::getDefaultUserPermissions($a->user),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->user, true, $default_permissions),
+ 'lockstate' => self::$groupId || self::$forumContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
+ 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true, $default_permissions),
'bang' => ((self::$groupId || self::$forumContactId || self::$network) ? '!' : ''),
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
'content' => $content,
];
- $o .= status_editor($a, $x);
+ $o .= DI::conversation()->statusEditor($x);
}
if (self::$groupId) {
$ordering = '`commented`';
}
- $o .= conversation(DI::app(), $items, 'network', false, false, $ordering, local_user());
+ $o .= DI::conversation()->create($items, 'network', false, false, $ordering, local_user());
if (DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) {
$o .= HTML::scrollLoader();
$pager = new BoundariesPager(
DI::l10n(),
DI::args()->getQueryString(),
- $items[0][self::$order],
- $items[count($items) - 1][self::$order],
+ $items[0][self::$order] ?? null,
+ $items[count($items) - 1][self::$order] ?? null,
self::$itemsPerPage
);
return;
}
- $unseen = Item::exists($condition);
+ $unseen = Post::exists($condition);
if ($unseen) {
+ /// @todo handle huge "unseen" updates in the background to avoid timeout errors
Item::update(['unseen' => false], $condition);
}
}
self::$forumContactId = $parameters['contact_id'] ?? 0;
- self::$selectedTab = Session::get('network-tab', '');
+ self::$selectedTab = Session::get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', ''));
+
+ self::$order = 'commented';
if (!empty($get['star'])) {
self::$selectedTab = 'star';
+ self::$star = true;
+ } else {
+ self::$star = self::$selectedTab == 'star';
}
if (!empty($get['mention'])) {
self::$selectedTab = 'mention';
+ self::$mention = true;
+ } else {
+ self::$mention = self::$selectedTab == 'mention';
}
if (!empty($get['order'])) {
self::$selectedTab = $get['order'];
+ self::$order = $get['order'];
+ self::$star = false;
+ self::$mention = false;
+ } elseif (in_array(self::$selectedTab, ['received', 'star', 'mention'])) {
+ self::$order = 'received';
}
- Session::set('network-tab', self::$selectedTab);
-
- self::$star = intval($get['star'] ?? 0);
- self::$mention = intval($_GET['mention'] ?? 0);
- self::$order = $get['order'] ?? Session::get('network-order', 'commented');
-
self::$selectedTab = self::$selectedTab ?? self::$order;
+ // Prohibit combined usage of "star" and "mention"
+ if (self::$selectedTab == 'star') {
+ self::$mention = false;
+ } elseif (self::$selectedTab == 'mention') {
+ self::$star = false;
+ }
+
Session::set('network-tab', self::$selectedTab);
- Session::set('network-order', self::$order);
+ DI::pConfig()->set(local_user(), 'network.view', 'selected_tab', self::$selectedTab);
- self::$accountTypeString = $_GET['accounttype'] ?? $parameters['accounttype'] ?? '';
+ self::$accountTypeString = $get['accounttype'] ?? $parameters['accounttype'] ?? '';
self::$accountType = User::getAccountTypeByString(self::$accountTypeString);
self::$network = $get['nets'] ?? '';
DI::config()->get('system', 'itemspage_network'));
}
- self::$min_id = $_GET['min_id'] ?? null;
- self::$max_id = $_GET['max_id'] ?? null;
+ self::$min_id = $get['min_id'] ?? null;
+ self::$max_id = $get['max_id'] ?? null;
switch (self::$order) {
case 'received':
- self::$max_id = $_GET['last_received'] ?? self::$max_id;
- break;
- case 'commented':
- self::$max_id = $_GET['last_commented'] ?? self::$max_id;
+ self::$max_id = $get['last_received'] ?? self::$max_id;
break;
case 'created':
- self::$max_id = $_GET['last_created'] ?? self::$max_id;
+ self::$max_id = $get['last_created'] ?? self::$max_id;
break;
case 'uriid':
- self::$max_id = $_GET['last_uriid'] ?? self::$max_id;
+ self::$max_id = $get['last_uriid'] ?? self::$max_id;
break;
+ default:
+ self::$order = 'commented';
+ self::$max_id = $get['last_commented'] ?? self::$max_id;
}
}
if (self::$groupId) {
$conditionStrings = DBA::mergeConditions($conditionStrings, ["`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", self::$groupId]);
} elseif (self::$forumContactId) {
- $conditionFields['contact-id'] = self::$forumContactId;
+ $conditionStrings = DBA::mergeConditions($conditionStrings,
+ ["((`contact-id` = ?) OR EXISTS(SELECT `uri-id` FROM `post-user-view` WHERE `post-user-view`.`parent-uri-id` = `network-thread-view`.`uri-id` AND (`contact-id` = ? AND `gravity` = ? AND `vid` = ? AND `uid` = ?)))",
+ self::$forumContactId, self::$forumContactId, GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), local_user()]);
}
// Currently only the order modes "received" and "commented" are in use
}
if (DBA::isResult($items)) {
- $parents = array_column($items, 'parent');
+ $parents = array_column($items, 'parent-uri-id');
} else {
$parents = [];
}
$condition = ['unseen' => true, 'uid' => local_user()];
self::setItemsSeenByCondition($condition);
} elseif (!empty($parents)) {
- $condition = ['unseen' => true, 'uid' => local_user(), 'parent' => $parents];
+ $condition = ['unseen' => true, 'uid' => local_user(), 'parent-uri-id' => $parents];
self::setItemsSeenByCondition($condition);
}