use Friendica\Object\Post as PostObject;
use Friendica\Object\Thread;
use Friendica\Protocol\Activity;
+use Friendica\User\Settings\Entity\UserGServer;
+use Friendica\User\Settings\Repository;
use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Profiler;
private $mode;
/** @var IHandleUserSessions */
private $session;
+ /** @var Repository\UserGServer */
+ private $userGServer;
- public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app, IHandleUserSessions $session)
+ public function __construct(Repository\UserGServer $userGServer, LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app, IHandleUserSessions $session)
{
- $this->activity = $activity;
- $this->item = $item;
- $this->config = $config;
- $this->mode = $mode;
- $this->baseURL = $baseURL;
- $this->profiler = $profiler;
- $this->logger = $logger;
- $this->l10n = $l10n;
- $this->args = $args;
- $this->pConfig = $pConfig;
- $this->page = $page;
- $this->app = $app;
- $this->session = $session;
+ $this->activity = $activity;
+ $this->item = $item;
+ $this->config = $config;
+ $this->mode = $mode;
+ $this->baseURL = $baseURL;
+ $this->profiler = $profiler;
+ $this->logger = $logger;
+ $this->l10n = $l10n;
+ $this->args = $args;
+ $this->pConfig = $pConfig;
+ $this->page = $page;
+ $this->app = $app;
+ $this->session = $session;
+ $this->userGServer = $userGServer;
}
/**
$live_update_div = '';
+ $userGservers = $this->userGServer->listIgnoredByUser($this->session->getLocalUserId());
+
+ $ignoredGsids = array_map(function (UserGServer $userGServer) {
+ return $userGServer->gsid;
+ }, $userGservers->getArrayCopy());
+
if ($mode === self::MODE_NETWORK) {
- $items = $this->addChildren($items, false, $order, $uid, $mode);
+ $items = $this->addChildren($items, false, $order, $uid, $mode, $ignoredGsids);
if (!$update) {
/*
* The special div is needed for liveUpdate to kick in for this page.
. "'; </script>\r\n";
}
} elseif ($mode === self::MODE_PROFILE) {
- $items = $this->addChildren($items, false, $order, $uid, $mode);
+ $items = $this->addChildren($items, false, $order, $uid, $mode, $ignoredGsids);
if (!$update) {
$tab = !empty($_GET['tab']) ? trim($_GET['tab']) : 'posts';
. "; var netargs = '?f='; </script>\r\n";
}
} elseif ($mode === self::MODE_DISPLAY) {
- $items = $this->addChildren($items, false, $order, $uid, $mode);
+ $items = $this->addChildren($items, false, $order, $uid, $mode, $ignoredGsids);
if (!$update) {
$live_update_div = '<div id="live-display"></div>' . "\r\n"
. "</script>";
}
} elseif ($mode === self::MODE_COMMUNITY) {
- $items = $this->addChildren($items, true, $order, $uid, $mode);
+ $items = $this->addChildren($items, true, $order, $uid, $mode, $ignoredGsids);
if (!$update) {
$live_update_div = '<div id="live-community"></div>' . "\r\n"
. "'; </script>\r\n";
}
} elseif ($mode === self::MODE_CONTACTS) {
- $items = $this->addChildren($items, false, $order, $uid, $mode);
+ $items = $this->addChildren($items, false, $order, $uid, $mode, $ignoredGsids);
if (!$update) {
$live_update_div = '<div id="live-contact"></div>' . "\r\n"
*
* @param array $parents Parent items
* @param bool $block_authors
- * @param bool $order
+ * @param string $order Either "received" or "commented"
* @param int $uid
- * @param string $mode
+ * @param string $mode One of self::MODE_*
+ * @param array $ignoredGsids List of ids of servers ignored by the user
* @return array items with parents and comments
- * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @throws InternalServerErrorException
*/
- private function addChildren(array $parents, bool $block_authors, string $order, int $uid, string $mode): array
+ private function addChildren(array $parents, bool $block_authors, string $order, int $uid, string $mode, array $ignoredGsids = []): array
{
$this->profiler->startRecording('rendering');
if (count($parents) > 1) {
continue;
}
+ if (in_array($row['author-gsid'], $ignoredGsids)
+ || in_array($row['owner-gsid'], $ignoredGsids)
+ || in_array($row['causer-gsid'], $ignoredGsids)
+ ) {
+ continue;
+ }
+
if (($mode != self::MODE_CONTACTS) && !$row['origin']) {
$row['featured'] = false;
}