]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Conversation.php
Reverted some changes that won't work with PHP7.3
[friendica.git] / src / Content / Conversation.php
index 0f0259aaac812e63e009913eb85843a8683263df..da9aee87b00aee1090954c904e1bda589abcdc4d 100644 (file)
@@ -32,7 +32,7 @@ use Friendica\Core\L10n;
 use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
-use Friendica\Core\Session;
+use Friendica\Core\Session\Capability\IHandleUserSessions;
 use Friendica\Core\Theme;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -77,8 +77,10 @@ class Conversation
        private $page;
        /** @var App\Mode */
        private $mode;
+       /** @var IHandleUserSessions */
+       private $session;
 
-       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)
+       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)
        {
                $this->activity = $activity;
                $this->item     = $item;
@@ -92,6 +94,7 @@ class Conversation
                $this->pConfig  = $pConfig;
                $this->page     = $page;
                $this->app      = $app;
+               $this->session  = $session;
        }
 
        /**
@@ -143,7 +146,7 @@ class Conversation
                                        'url'     => $activity['author-link']
                                ];
                                $url = Contact::magicLinkByContact($author);
-                               if (strpos($url, 'redir/') === 0) {
+                               if (strpos($url, 'contact/redir/') === 0) {
                                        $sparkle = ' class="sparkle" ';
                                }
 
@@ -168,7 +171,7 @@ class Conversation
                                        continue;
                                }
 
-                               if (public_contact() == $activity['author-id']) {
+                               if ($this->session->getPublicContactId() == $activity['author-id']) {
                                        $conv_responses[$mode][$activity['thr-parent-id']]['self'] = 1;
                                }
 
@@ -261,7 +264,7 @@ class Conversation
                                        break;
                        }
 
-                       $expanded .= "\t" . '<p class="wall-item-' . $verb . '-expanded" id="' . $verb . 'list-' . $id . '" style="display: none;" >' . $explikers . EOL . '</p>';
+                       $expanded .= "\t" . '<p class="wall-item-' . $verb . '-expanded" id="' . $verb . 'list-' . $id . '" style="display: none;" >' . $explikers . '</p>';
                }
 
                $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('voting_fakelink.tpl'), [
@@ -293,7 +296,7 @@ class Conversation
                $x['bang']             = $x['bang']             ?? '';
                $x['visitor']          = $x['visitor']          ?? 'block';
                $x['is_owner']         = $x['is_owner']         ?? true;
-               $x['profile_uid']      = $x['profile_uid']      ?? local_user();
+               $x['profile_uid']      = $x['profile_uid']      ?? $this->session->getLocalUserId();
 
 
                $geotag = !empty($x['allow_location']) ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : '';
@@ -328,7 +331,7 @@ class Conversation
                        $created_at = '';
                }
 
-               $tpl = Renderer::getMarkupTemplate("jot.tpl");
+               $tpl = Renderer::getMarkupTemplate('jot.tpl');
 
                $o .= Renderer::replaceMacros($tpl, [
                        '$new_post'            => $this->l10n->t('New Post'),
@@ -356,7 +359,7 @@ class Conversation
                        '$title'               => $x['title'] ?? '',
                        '$placeholdertitle'    => $this->l10n->t('Set title'),
                        '$category'            => $x['category'] ?? '',
-                       '$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? $this->l10n->t("Categories \x28comma-separated list\x29") : '',
+                       '$placeholdercategory' => Feature::isEnabled($this->session->getLocalUserId(), 'categories') ? $this->l10n->t("Categories \x28comma-separated list\x29") : '',
                        '$scheduled_at'        => Temporal::getDateTimeField(
                                new \DateTime(),
                                new \DateTime('now + 6 months'),
@@ -369,7 +372,7 @@ class Conversation
                        '$permset'      => $this->l10n->t('Permission settings'),
                        '$shortpermset' => $this->l10n->t('Permissions'),
                        '$wall'         => $notes_cid ? 0 : 1,
-                       '$posttype'     => $notes_cid ? Item::PT_PERSONAL_NOTE : Item::PT_ARTICLE,
+                       '$posttype'     => $notes_cid ? ItemModel::PT_PERSONAL_NOTE : ItemModel::PT_ARTICLE,
                        '$content'      => $x['content'] ?? '',
                        '$post_id'      => $x['post_id'] ?? '',
                        '$baseurl'      => $this->baseURL->get(true),
@@ -393,7 +396,8 @@ class Conversation
                        '$message' => $this->l10n->t('Message'),
                        '$browser' => $this->l10n->t('Browser'),
 
-                       '$compose_link_title' => $this->l10n->t('Open Compose page'),
+                       '$compose_link_title'  => $this->l10n->t('Open Compose page'),
+                       '$always_open_compose' => $this->pConfig->get($this->session->getLocalUserId(), 'frio', 'always_open_compose', false),
                ]);
 
 
@@ -432,7 +436,7 @@ class Conversation
                $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css'));
                $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css'));
 
-               $ssl_state = (local_user() ? true : false);
+               $ssl_state = (bool)$this->session->getLocalUserId();
 
                $live_update_div = '';
 
@@ -484,19 +488,19 @@ class Conversation
                                }
                        }
                } elseif ($mode === 'notes') {
-                       $items = $this->addChildren($items, false, $order, local_user(), $mode);
+                       $items = $this->addChildren($items, false, $order, $this->session->getLocalUserId(), $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-notes"></div>' . "\r\n"
-                                       . "<script> var profile_uid = " . local_user()
-                                       . "; var netargs = '/?f='; </script>\r\n";
+                                       . "<script> var profile_uid = " . $this->session->getLocalUserId()
+                                       . "; var netargs = '?f='; </script>\r\n";
                        }
                } elseif ($mode === 'display') {
                        $items = $this->addChildren($items, false, $order, $uid, $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-display"></div>' . "\r\n"
-                                       . "<script> var profile_uid = " . Session::get('uid', 0) . ";"
+                                       . "<script> var profile_uid = " . ($this->session->getLocalUserId() ?: 0) . ";"
                                        . "</script>";
                        }
                } elseif ($mode === 'community') {
@@ -516,13 +520,13 @@ class Conversation
                        if (!$update) {
                                $live_update_div = '<div id="live-contact"></div>' . "\r\n"
                                        . "<script> var profile_uid = -1; var netargs = '" . substr($this->args->getCommand(), 8)
-                                       ."/?f='; </script>\r\n";
+                                       ."?f='; </script>\r\n";
                        }
                } elseif ($mode === 'search') {
                        $live_update_div = '<div id="live-search"></div>' . "\r\n";
                }
 
-               $page_dropping = ((local_user() && local_user() == $uid) ? true : false);
+               $page_dropping = $this->session->getLocalUserId() && $this->session->getLocalUserId() == $uid;
 
                if (!$update) {
                        $_SESSION['return_path'] = $this->args->getQueryString();
@@ -542,7 +546,7 @@ class Conversation
                        'announce'    => [],
                ];
 
-               if ($this->pConfig->get(local_user(), 'system', 'hide_dislike')) {
+               if ($this->pConfig->get($this->session->getLocalUserId(), 'system', 'hide_dislike')) {
                        unset($conv_responses['dislike']);
                }
 
@@ -560,7 +564,7 @@ class Conversation
                                $writable = $items[0]['writable'] || ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED);
                        }
 
-                       if (!local_user()) {
+                       if (!$this->session->getLocalUserId()) {
                                $writable = false;
                        }
 
@@ -593,7 +597,7 @@ class Conversation
                                        $threadsid++;
 
                                        // prevent private email from leaking.
-                                       if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) {
+                                       if ($item['network'] === Protocol::MAIL && $this->session->getLocalUserId() != $item['uid']) {
                                                continue;
                                        }
 
@@ -608,7 +612,7 @@ class Conversation
                                        $profile_link = Contact::magicLinkByContact($author);
 
                                        $sparkle = '';
-                                       if (strpos($profile_link, 'redir/') === 0) {
+                                       if (strpos($profile_link, 'contact/redir/') === 0) {
                                                $sparkle = ' sparkle';
                                        }
 
@@ -637,17 +641,17 @@ class Conversation
                                                'announce' => null,
                                        ];
 
-                                       if ($this->pConfig->get(local_user(), 'system', 'hide_dislike')) {
+                                       if ($this->pConfig->get($this->session->getLocalUserId(), 'system', 'hide_dislike')) {
                                                unset($likebuttons['dislike']);
                                        }
 
-                                       $body_html = Item::prepareBody($item, true, $preview);
+                                       $body_html = ItemModel::prepareBody($item, true, $preview);
 
-                                       [$categories, $folders] = $this->item->determineCategoriesTerms($item, local_user());
+                                       [$categories, $folders] = $this->item->determineCategoriesTerms($item, $this->session->getLocalUserId());
 
                                        if (!empty($item['title'])) {
                                                $title = $item['title'];
-                                       } elseif (!empty($item['content-warning']) && $this->pConfig->get(local_user(), 'system', 'disable_cw', false)) {
+                                       } elseif (!empty($item['content-warning']) && $this->pConfig->get($this->session->getLocalUserId(), 'system', 'disable_cw', false)) {
                                                $title = ucfirst($item['content-warning']);
                                        } else {
                                                $title = '';
@@ -698,7 +702,7 @@ class Conversation
                                                'owner_name'           => '',
                                                'owner_url'            => '',
                                                'owner_photo'          => $this->baseURL->remove($this->item->getOwnerAvatar($item)),
-                                               'plink'                => Item::getPlink($item),
+                                               'plink'                => ItemModel::getPlink($item),
                                                'edpost'               => false,
                                                'pinned'               => $pinned,
                                                'isstarred'            => 'unstarred',
@@ -741,7 +745,7 @@ class Conversation
                                        $this->builtinActivityPuller($item, $conv_responses);
 
                                        // Only add what is visible
-                                       if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) {
+                                       if ($item['network'] === Protocol::MAIL && $this->session->getLocalUserId() != $item['uid']) {
                                                continue;
                                        }
 
@@ -786,11 +790,11 @@ class Conversation
 
        private function getBlocklist(): array
        {
-               if (!local_user()) {
+               if (!$this->session->getLocalUserId()) {
                        return [];
                }
 
-               $str_blocked = str_replace(["\n", "\r"], ",", $this->pConfig->get(local_user(), 'system', 'blocked'));
+               $str_blocked = str_replace(["\n", "\r"], ",", $this->pConfig->get($this->session->getLocalUserId(), 'system', 'blocked'));
                if (empty($str_blocked)) {
                        return [];
                }
@@ -826,7 +830,7 @@ class Conversation
 
                if (!empty($activity)) {
                        if (($row['gravity'] == ItemModel::GRAVITY_PARENT)) {
-                               $row['post-reason'] = Item::PR_ANNOUNCEMENT;
+                               $row['post-reason'] = ItemModel::PR_ANNOUNCEMENT;
 
                                $row     = array_merge($row, $activity);
                                $contact = Contact::getById($activity['causer-id'], ['url', 'name', 'thumb']);
@@ -841,26 +845,26 @@ class Conversation
                }
 
                switch ($row['post-reason']) {
-                       case Item::PR_TO:
+                       case ItemModel::PR_TO:
                                $row['direction'] = ['direction' => 7, 'title' => $this->l10n->t('You had been addressed (%s).', 'to')];
                                break;
-                       case Item::PR_CC:
+                       case ItemModel::PR_CC:
                                $row['direction'] = ['direction' => 7, 'title' => $this->l10n->t('You had been addressed (%s).', 'cc')];
                                break;
-                       case Item::PR_BTO:
+                       case ItemModel::PR_BTO:
                                $row['direction'] = ['direction' => 7, 'title' => $this->l10n->t('You had been addressed (%s).', 'bto')];
                                break;
-                       case Item::PR_BCC:
+                       case ItemModel::PR_BCC:
                                $row['direction'] = ['direction' => 7, 'title' => $this->l10n->t('You had been addressed (%s).', 'bcc')];
                                break;
-                       case Item::PR_FOLLOWER:
+                       case ItemModel::PR_FOLLOWER:
                                $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('You are following %s.', $row['causer-name'] ?: $row['author-name'])];
                                break;
-                       case Item::PR_TAG:
+                       case ItemModel::PR_TAG:
                                $row['direction'] = ['direction' => 4, 'title' => $this->l10n->t('You subscribed to one or more tags in this post.')];
                                break;
-                       case Item::PR_ANNOUNCEMENT:
-                               if (!empty($row['causer-id']) && $this->pConfig->get(local_user(), 'system', 'display_resharer')) {
+                       case ItemModel::PR_ANNOUNCEMENT:
+                               if (!empty($row['causer-id']) && $this->pConfig->get($this->session->getLocalUserId(), 'system', 'display_resharer')) {
                                        $row['owner-id']     = $row['causer-id'];
                                        $row['owner-link']   = $row['causer-link'];
                                        $row['owner-avatar'] = $row['causer-avatar'];
@@ -874,34 +878,34 @@ class Conversation
                                }
                                $row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Reshared') : $this->l10n->t('Reshared by %s <%s>', $row['causer-name'], $row['causer-link']))];
                                break;
-                       case Item::PR_COMMENT:
+                       case ItemModel::PR_COMMENT:
                                $row['direction'] = ['direction' => 5, 'title' => $this->l10n->t('%s is participating in this thread.', $row['author-name'])];
                                break;
-                       case Item::PR_STORED:
+                       case ItemModel::PR_STORED:
                                $row['direction'] = ['direction' => 8, 'title' => $this->l10n->t('Stored for general reasons')];
                                break;
-                       case Item::PR_GLOBAL:
+                       case ItemModel::PR_GLOBAL:
                                $row['direction'] = ['direction' => 9, 'title' => $this->l10n->t('Global post')];
                                break;
-                       case Item::PR_RELAY:
+                       case ItemModel::PR_RELAY:
                                $row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Sent via an relay server') : $this->l10n->t('Sent via the relay server %s <%s>', $row['causer-name'], $row['causer-link']))];
                                break;
-                       case Item::PR_FETCHED:
+                       case ItemModel::PR_FETCHED:
                                $row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Fetched') : $this->l10n->t('Fetched because of %s <%s>', $row['causer-name'], $row['causer-link']))];
                                break;
-                       case Item::PR_COMPLETION:
+                       case ItemModel::PR_COMPLETION:
                                $row['direction'] = ['direction' => 2, 'title' => $this->l10n->t('Stored because of a child post to complete this thread.')];
                                break;
-                       case Item::PR_DIRECT:
+                       case ItemModel::PR_DIRECT:
                                $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('Local delivery')];
                                break;
-                       case Item::PR_ACTIVITY:
+                       case ItemModel::PR_ACTIVITY:
                                $row['direction'] = ['direction' => 2, 'title' => $this->l10n->t('Stored because of your activity (like, comment, star, ...)')];
                                break;
-                       case Item::PR_DISTRIBUTE:
+                       case ItemModel::PR_DISTRIBUTE:
                                $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('Distributed')];
                                break;
-                       case Item::PR_PUSHED:
+                       case ItemModel::PR_PUSHED:
                                $row['direction'] = ['direction' => 1, 'title' => $this->l10n->t('Pushed to us')];
                                break;
                }
@@ -966,7 +970,7 @@ class Conversation
                }
 
                $condition = DBA::mergeConditions($condition,
-                       ["`uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW)]);
+                       ["`uid` IN (0, ?) AND (NOT `vid` IN (?, ?) OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW), Verb::getID(Activity::VIEW)]);
 
                $thread_parents = Post::select(['uri-id', 'causer-id'], $condition, ['order' => ['uri-id' => false, 'uid']]);
 
@@ -979,7 +983,7 @@ class Conversation
 
                $params = ['order' => ['uri-id' => true, 'uid' => true]];
 
-               $thread_items = Post::selectForUser($uid, array_merge(Item::DISPLAY_FIELDLIST, ['featured', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params);
+               $thread_items = Post::selectForUser($uid, array_merge(ItemModel::DISPLAY_FIELDLIST, ['featured', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params);
 
                $items = [];
 
@@ -1212,7 +1216,7 @@ class Conversation
                        $parents[$i]['children'] = $this->sortItemChildren($parents[$i]['children']);
                }
 
-               if (!$this->pConfig->get(local_user(), 'system', 'no_smart_threading', 0)) {
+               if (!$this->pConfig->get($this->session->getLocalUserId(), 'system', 'no_smart_threading', 0)) {
                        foreach ($parents as $i => $parent) {
                                $parents[$i] = $this->smartFlattenConversation($parent);
                        }