use Friendica\Model\Contact;
use Friendica\Model\Group;
use Friendica\Model\Item;
+use Friendica\Model\Post\Category;
use Friendica\Model\Profile;
-use Friendica\Model\Term;
use Friendica\Module\Security\Login;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Proxy as ProxyUtils;
$group_id = (($a->argc > 1 && is_numeric($a->argv[1])) ? intval($a->argv[1]) : 0);
$cid = 0;
- if (!empty($_GET['cid'])) {
- $cid = $_GET['cid'];
+ if (!empty($_GET['contactid'])) {
+ $cid = $_GET['contactid'];
$_GET['nets'] = '';
$group_id = 0;
}
'order=activity', //all
'order=post', //postord
'conv=1', //conv
- 'new=1', //new
'star=1', //starred
- 'bmark=1', //bookmarked
];
$k = array_search('active', $last_sel_tabs);
* '/network?order=activity' => $activity_active = 'active'
* '/network?order=post' => $postord_active = 'active'
* '/network?conv=1', => $conv_active = 'active'
- * '/network?new=1', => $new_active = 'active'
* '/network?star=1', => $starred_active = 'active'
- * '/network?bmark=1', => $bookmarked_active = 'active'
*
* @param App $a
- * @return array ($no_active, $activity_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active);
+ * @return array ($no_active, $activity_active, $postord_active, $conv_active, $starred_active);
*/
function network_query_get_sel_tab(App $a)
{
$no_active = '';
$starred_active = '';
- $new_active = '';
- $bookmarked_active = '';
$all_active = '';
$conv_active = '';
$postord_active = '';
- if (!empty($_GET['new'])) {
- $new_active = 'active';
- }
-
if (!empty($_GET['star'])) {
$starred_active = 'active';
}
- if (!empty($_GET['bmark'])) {
- $bookmarked_active = 'active';
- }
-
if (!empty($_GET['conv'])) {
$conv_active = 'active';
}
- if (($new_active == '') && ($starred_active == '') && ($bookmarked_active == '') && ($conv_active == '')) {
+ if (($starred_active == '') && ($conv_active == '')) {
$no_active = 'active';
}
}
}
- return [$no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active];
+ return [$no_active, $all_active, $postord_active, $conv_active, $starred_active];
}
function network_query_get_sel_group(App $a)
$arr = ['query' => DI::args()->getQueryString()];
Hook::callAll('network_content_init', $arr);
- if (!empty($_GET['new']) || !empty($_GET['file'])) {
+ if (!empty($_GET['file'])) {
$o = networkFlatView($a, $update);
} else {
$o = networkThreadedView($a, $update, $parent);
networkPager($a, $pager, $update);
- $item_params = ['order' => ['id' => true]];
if (strlen($file)) {
- $term_condition = ["`term` = ? AND `otype` = ? AND `type` = ? AND `uid` = ?",
- $file, Term::OBJECT_TYPE_POST, Term::FILE, local_user()];
- $term_params = ['order' => ['tid' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
- $result = DBA::select('term', ['oid'], $term_condition, $term_params);
+ $item_params = ['order' => ['uri-id' => true]];
+ $term_condition = ['name' => $file, 'type' => Category::FILE, 'uid' => local_user()];
+ $term_params = ['order' => ['uri-id' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
+ $result = DBA::select('category-view', ['uri-id'], $term_condition, $term_params);
$posts = [];
while ($term = DBA::fetch($result)) {
- $posts[] = $term['oid'];
+ $posts[] = $term['uri-id'];
}
DBA::close($result);
if (count($posts) == 0) {
return '';
}
- $item_condition = ['uid' => local_user(), 'id' => $posts];
+ $item_condition = ['uid' => local_user(), 'uri-id' => $posts];
} else {
+ $item_params = ['order' => ['id' => true]];
$item_condition = ['uid' => local_user()];
$item_params['limit'] = [$pager->getStart(), $pager->getItemsPerPage()];
$o = '';
- $cid = intval($_GET['cid'] ?? 0);
- $star = intval($_GET['star'] ?? 0);
- $bmark = intval($_GET['bmark'] ?? 0);
- $conv = intval($_GET['conv'] ?? 0);
+ $cid = intval($_GET['contactid'] ?? 0);
+ $star = intval($_GET['star'] ?? 0);
+ $conv = intval($_GET['conv'] ?? 0);
$order = Strings::escapeTags(($_GET['order'] ?? '') ?: 'activity');
- $nets = $_GET['nets'] ?? '';
+ $nets = $_GET['nets'] ?? '';
$allowedCids = [];
if ($cid) {
$sql_post_table = '';
$sql_options = ($star ? " AND `thread`.`starred` " : '');
- $sql_options .= ($bmark ? sprintf(" AND `thread`.`post-type` = %d ", Item::PT_PAGE) : '');
$sql_extra = $sql_options;
$sql_extra2 = '';
$sql_extra3 = '';
}
if ($order === 'post') {
// Only show toplevel posts when updating posts in this order mode
- $sql_extra4 .= " AND `item`.`id` = `item`.`parent`";
+ $sql_extra4 .= " AND `item`.`gravity` = " . GRAVITY_PARENT;
}
}
$top_limit = DateTimeFormat::utcNow();
}
+ // Handle bad performance situations when the distance between top and bottom is too high
+ // See issue https://github.com/friendica/friendica/issues/8619
+ if (strtotime($top_limit) - strtotime($bottom_limit) > 86400) {
+ // Set the bottom limit to one day in the past at maximum
+ $bottom_limit = DateTimeFormat::utc(date('c', strtotime($top_limit) - 86400));
+ }
+
$items = DBA::p("SELECT `item`.`parent-uri` AS `uri`, 0 AS `item_id`, `item`.$ordering AS `order_date`, `author`.`url` AS `author-link` FROM `item`
- STRAIGHT_JOIN (SELECT `oid` FROM `term` WHERE `term` IN
- (SELECT SUBSTR(`term`, 2) FROM `search` WHERE `uid` = ? AND `term` LIKE '#%') AND `otype` = ? AND `type` = ? AND `uid` = 0) AS `term`
- ON `item`.`id` = `term`.`oid`
+ STRAIGHT_JOIN (SELECT `uri-id` FROM `tag-search-view` WHERE `name` IN
+ (SELECT SUBSTR(`term`, 2) FROM `search` WHERE `uid` = ? AND `term` LIKE '#%') AND `uid` = 0) AS `tag-search`
+ ON `item`.`uri-id` = `tag-search`.`uri-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `item`.`author-id`
WHERE `item`.`uid` = 0 AND `item`.$ordering < ? AND `item`.$ordering > ? AND `item`.`gravity` = ?
AND NOT `author`.`hidden` AND NOT `author`.`blocked`" . $sql_tag_nets,
- local_user(), TERM_OBJ_POST, TERM_HASHTAG,
- $top_limit, $bottom_limit, GRAVITY_PARENT);
+ local_user(), $top_limit, $bottom_limit, GRAVITY_PARENT);
$data = DBA::toArray($items);
// item filter tabs
/// @TODO fix this logic, reduce duplication
/// DI::page()['content'] .= '<div class="tabs-wrapper">';
- list($no_active, $all_active, $post_active, $conv_active, $new_active, $starred_active, $bookmarked_active) = network_query_get_sel_tab($a);
+ list($no_active, $all_active, $post_active, $conv_active, $starred_active) = network_query_get_sel_tab($a);
// if no tabs are selected, defaults to activitys
if ($no_active == 'active') {
$cmd = DI::args()->getCommand();
$def_param = [];
- if (!empty($_GET['cid'])) {
- $def_param['cid'] = $_GET['cid'];
+ if (!empty($_GET['contactid'])) {
+ $def_param['contactid'] = $_GET['contactid'];
}
// tabs
'accesskey' => 'r',
];
- if (Feature::isEnabled(local_user(), 'new_tab')) {
- $tabs[] = [
- 'label' => DI::l10n()->t('New'),
- 'url' => $cmd . '?' . http_build_query(array_merge($def_param, ['new' => true])),
- 'sel' => $new_active,
- 'title' => DI::l10n()->t('Activity Stream - by date'),
- 'id' => 'activitiy-by-date-tab',
- 'accesskey' => 'w',
- ];
- }
-
- if (Feature::isEnabled(local_user(), 'link_tab')) {
- $tabs[] = [
- 'label' => DI::l10n()->t('Shared Links'),
- 'url' => $cmd . '?' . http_build_query(array_merge($def_param, ['bmark' => true])),
- 'sel' => $bookmarked_active,
- 'title' => DI::l10n()->t('Interesting Links'),
- 'id' => 'shared-links-tab',
- 'accesskey' => 'b',
- ];
- }
-
$tabs[] = [
'label' => DI::l10n()->t('Starred'),
'url' => $cmd . '?' . http_build_query(array_merge($def_param, ['star' => true])),
// save selected tab, but only if not in file mode
if (empty($_GET['file'])) {
DI::pConfig()->set(local_user(), 'network.view', 'tab.selected', [
- $all_active, $post_active, $conv_active, $new_active, $starred_active, $bookmarked_active
+ $all_active, $post_active, $conv_active, $starred_active
]);
}