return [];
}
- if (empty($condition) || !is_array($condition)) {
- $condition = ['iid' => $pinned];
+ if (!empty($condition)) {
+ $condition = DBA::mergeConditions(['iid' => $pinned], $condition);
} else {
- reset($condition);
- $first_key = key($condition);
- if (!is_int($first_key)) {
- $condition['iid'] = $pinned;
- } else {
- $values_string = substr(str_repeat("?, ", count($pinned)), 0, -2);
- $condition[0] = '(' . $condition[0] . ") AND `iid` IN (" . $values_string . ")";
- $condition = array_merge($condition, $pinned);
- }
+ $condition = ['iid' => $pinned];
}
return self::selectThreadForUser($uid, $selected, $condition, $params);
$items = DBA::toArray($items_stmt);
if ($pager->getStart() == 0 && !empty($a->profile['uid'])) {
- $pinned_items = Item::selectPinned($a->profile['uid'], ['uri', 'pinned']);
+ $condition = ['private' => [Item::PUBLIC, Item::UNLISTED]];
+ if (remote_user()) {
+ $permissionSets = DI::permissionSet()->selectByContactId(remote_user(), $a->profile['uid']);
+ if (!empty($permissionSets)) {
+ $condition = ['psid' => array_merge($permissionSets->column('id'),
+ [DI::permissionSet()->getIdFromACL($a->profile['uid'], '', '', '', '')])];
+ }
+ } elseif ($a->profile['uid'] == local_user()) {
+ $condition = [];
+ }
+
+ $pinned_items = Item::selectPinned($a->profile['uid'], ['uri', 'pinned'], $condition);
$pinned = Item::inArray($pinned_items);
$items = array_merge($items, $pinned);
}