]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Conversation.php
Show only the user's categories on their profile
[friendica.git] / src / Content / Conversation.php
index f0bc405f2e21971e0cc64cb684a770a50f5c2aa6..af96deebdb2b7a9d5f2a1b5f480c8bfd8533f1f2 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,14 +25,11 @@ use Friendica\App;
 use Friendica\App\Arguments;
 use Friendica\App\BaseURL;
 use Friendica\BaseModule;
-use Friendica\Content\ContactSelector;
-use Friendica\Content\Feature;
-use Friendica\Content\Item;
 use Friendica\Core\ACL;
-use Friendica\Core\Config\IConfig;
+use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
-use Friendica\Core\PConfig\IPConfig;
+use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
@@ -69,11 +66,11 @@ class Conversation
        private $item;
        /** @var App\Arguments */
        private $args;
-       /** @var IPConfig */
+       /** @var IManagePersonalConfigValues */
        private $pConfig;
        /** @var BaseURL */
        private $baseURL;
-       /** @var IConfig */
+       /** @var IManageConfigValues */
        private $config;
        /** @var App */
        private $app;
@@ -82,7 +79,7 @@ class Conversation
        /** @var App\Mode */
        private $mode;
 
-       public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IConfig $config, IPConfig $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)
        {
                $this->activity = $activity;
                $this->item     = $item;
@@ -192,11 +189,12 @@ class Conversation
         * @return string formatted text
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function formatActivity(array $links, $verb, $id) {
+       public function formatActivity(array $links, $verb, $id)
+       {
                $this->profiler->startRecording('rendering');
-               $o = '';
+               $o        = '';
                $expanded = '';
-               $phrase = '';
+               $phrase   = '';
 
                $total = count($links);
                if ($total == 1) {
@@ -205,32 +203,32 @@ class Conversation
                        // Phrase if there is only one liker. In other cases it will be uses for the expanded
                        // list which show all likers
                        switch ($verb) {
-                               case 'like' :
+                               case 'like':
                                        $phrase = $this->l10n->t('%s likes this.', $likers);
                                        break;
-                               case 'dislike' :
+                               case 'dislike':
                                        $phrase = $this->l10n->t('%s doesn\'t like this.', $likers);
                                        break;
-                               case 'attendyes' :
+                               case 'attendyes':
                                        $phrase = $this->l10n->t('%s attends.', $likers);
                                        break;
-                               case 'attendno' :
+                               case 'attendno':
                                        $phrase = $this->l10n->t('%s doesn\'t attend.', $likers);
                                        break;
-                               case 'attendmaybe' :
+                               case 'attendmaybe':
                                        $phrase = $this->l10n->t('%s attends maybe.', $likers);
                                        break;
-                               case 'announce' :
+                               case 'announce':
                                        $phrase = $this->l10n->t('%s reshared this.', $likers);
                                        break;
                        }
                } elseif ($total > 1) {
-                       if ($total < MAX_LIKERS) {
+                       if ($total < $this->config->get('system', 'max_likers')) {
                                $likers = implode(', ', array_slice($links, 0, -1));
-                               $likers .= ' ' . $this->l10n->t('and') . ' ' . $links[count($links)-1];
-                       } else  {
-                               $likers = implode(', ', array_slice($links, 0, MAX_LIKERS - 1));
-                               $likers .= ' ' . $this->l10n->t('and %d other people', $total - MAX_LIKERS);
+                               $likers .= ' ' . $this->l10n->t('and') . ' ' . $links[count($links) - 1];
+                       } else {
+                               $likers = implode(', ', array_slice($links, 0, $this->config->get('system', 'max_likers') - 1));
+                               $likers .= ' ' . $this->l10n->t('and %d other people', $total - $this->config->get('system', 'max_likers'));
                        }
 
                        $spanatts = "class=\"fakelink\" onclick=\"openClose('{$verb}list-$id');\"";
@@ -246,7 +244,7 @@ class Conversation
                                        $explikers = $this->l10n->t('%s don\'t like this.', $likers);
                                        break;
                                case 'attendyes':
-                                       $phrase = $this->l10n->t('<span  %1$s>%2$d people</span> attend', $spanatts, $total);
+                                       $phrase    = $this->l10n->t('<span  %1$s>%2$d people</span> attend', $spanatts, $total);
                                        $explikers = $this->l10n->t('%s attend.', $likers);
                                        break;
                                case 'attendno':
@@ -268,8 +266,8 @@ class Conversation
 
                $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('voting_fakelink.tpl'), [
                        '$phrase' => $phrase,
-                       '$type' => $verb,
-                       '$id' => $id
+                       '$type'   => $verb,
+                       '$id'     => $id
                ]);
                $o .= $expanded;
 
@@ -287,15 +285,15 @@ class Conversation
                $this->profiler->startRecording('rendering');
                $o = '';
 
-               $x['allow_location']   = $x['allow_location'] ?? $user['allow_location'];
+               $x['allow_location']   = $x['allow_location']   ?? $user['allow_location'];
                $x['default_location'] = $x['default_location'] ?? $user['default-location'];
-               $x['nickname']         = $x['nickname'] ?? $user['nickname'];
-               $x['lockstate']        = $x['lockstate'] ?? ACL::getLockstateForUserId($user['uid']) ? 'lock' : 'unlock';
-               $x['acl']              = $x['acl'] ?? ACL::getFullSelectorHTML($this->page, $user['uid'], true);
-               $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['nickname']         = $x['nickname']         ?? $user['nickname'];
+               $x['lockstate']        = $x['lockstate']        ?? ACL::getLockstateForUserId($user['uid']) ? 'lock' : 'unlock';
+               $x['acl']              = $x['acl']              ?? ACL::getFullSelectorHTML($this->page, $user['uid'], true);
+               $x['bang']             = $x['bang']             ?? '';
+               $x['visitor']          = $x['visitor']          ?? 'block';
+               $x['is_owner']         = $x['is_owner']         ?? true;
+               $x['profile_uid']      = $x['profile_uid']      ?? local_user();
 
 
                $geotag = !empty($x['allow_location']) ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : '';
@@ -442,16 +440,16 @@ class Conversation
                                        . "; var netargs = '" . substr($this->args->getCommand(), 8)
                                        . '?f='
                                        . (!empty($_GET['contactid']) ? '&contactid=' . rawurlencode($_GET['contactid']) : '')
-                                       . (!empty($_GET['search']) ? '&search=' . rawurlencode($_GET['search']) : '')
-                                       . (!empty($_GET['star']) ? '&star=' . rawurlencode($_GET['star']) : '')
-                                       . (!empty($_GET['order']) ? '&order=' . rawurlencode($_GET['order']) : '')
-                                       . (!empty($_GET['bmark']) ? '&bmark=' . rawurlencode($_GET['bmark']) : '')
-                                       . (!empty($_GET['liked']) ? '&liked=' . rawurlencode($_GET['liked']) : '')
-                                       . (!empty($_GET['conv']) ? '&conv=' . rawurlencode($_GET['conv']) : '')
-                                       . (!empty($_GET['nets']) ? '&nets=' . rawurlencode($_GET['nets']) : '')
-                                       . (!empty($_GET['cmin']) ? '&cmin=' . rawurlencode($_GET['cmin']) : '')
-                                       . (!empty($_GET['cmax']) ? '&cmax=' . rawurlencode($_GET['cmax']) : '')
-                                       . (!empty($_GET['file']) ? '&file=' . rawurlencode($_GET['file']) : '')
+                                       . (!empty($_GET['search'])    ? '&search='    . rawurlencode($_GET['search'])    : '')
+                                       . (!empty($_GET['star'])      ? '&star='      . rawurlencode($_GET['star'])      : '')
+                                       . (!empty($_GET['order'])     ? '&order='     . rawurlencode($_GET['order'])     : '')
+                                       . (!empty($_GET['bmark'])     ? '&bmark='     . rawurlencode($_GET['bmark'])     : '')
+                                       . (!empty($_GET['liked'])     ? '&liked='     . rawurlencode($_GET['liked'])     : '')
+                                       . (!empty($_GET['conv'])      ? '&conv='      . rawurlencode($_GET['conv'])      : '')
+                                       . (!empty($_GET['nets'])      ? '&nets='      . rawurlencode($_GET['nets'])      : '')
+                                       . (!empty($_GET['cmin'])      ? '&cmin='      . rawurlencode($_GET['cmin'])      : '')
+                                       . (!empty($_GET['cmax'])      ? '&cmax='      . rawurlencode($_GET['cmax'])      : '')
+                                       . (!empty($_GET['file'])      ? '&file='      . rawurlencode($_GET['file'])      : '')
 
                                        . "'; </script>\r\n";
                        }
@@ -592,7 +590,7 @@ class Conversation
 
                                        $tags = Tag::populateFromItem($item);
 
-                                       $author = ['uid' => 0, 'id' => $item['author-id'], 'network' => $item['author-network'], 'url' => $item['author-link']];
+                                       $author       = ['uid' => 0, 'id' => $item['author-id'], 'network' => $item['author-network'], 'url' => $item['author-link']];
                                        $profile_link = Contact::magicLinkByContact($author);
 
                                        $sparkle = '';
@@ -631,7 +629,7 @@ class Conversation
 
                                        $body_html = ItemModel::prepareBody($item, true, $preview);
 
-                                       list($categories, $folders) = $this->item->determineCategoriesTerms($item, local_user());
+                                       [$categories, $folders] = $this->item->determineCategoriesTerms($item, local_user());
 
                                        if (!empty($item['content-warning']) && $this->pConfig->get(local_user(), 'system', 'disable_cw', false)) {
                                                $title = ucfirst($item['content-warning']);
@@ -671,6 +669,7 @@ class Conversation
                                                'folders'              => $folders,
                                                'text'                 => strip_tags($body_html),
                                                'localtime'            => DateTimeFormat::local($item['created'], 'r'),
+                                               'utc'                  => DateTimeFormat::utc($item['created'], 'c'),
                                                'ago'                  => (($item['app']) ? $this->l10n->t('%s from %s', Temporal::getRelativeDate($item['created']), $item['app']) : Temporal::getRelativeDate($item['created'])),
                                                'location_html'        => $location_html,
                                                'indent'               => '',
@@ -686,7 +685,7 @@ class Conversation
                                                'like_html'            => '',
                                                'dislike_html '        => '',
                                                'comment_html'         => '',
-                                               'conv'                 => (($preview) ? '' : ['href'=> 'display/'.$item['guid'], 'title'=> $this->l10n->t('View in context')]),
+                                               'conv'                 => ($preview ? '' : ['href' => 'display/' . $item['guid'], 'title' => $this->l10n->t('View in context')]),
                                                'previewing'           => $previewing,
                                                'wait'                 => $this->l10n->t('Please wait'),
                                                'thread_level'         => 1,
@@ -695,10 +694,9 @@ class Conversation
                                        $arr = ['item' => $item, 'output' => $tmp_item];
                                        Hook::callAll('display_item', $arr);
 
-                                       $threads[$threadsid]['id'] = $item['id'];
+                                       $threads[$threadsid]['id']      = $item['id'];
                                        $threads[$threadsid]['network'] = $item['network'];
-                                       $threads[$threadsid]['items'] = [$arr['output']];
-
+                                       $threads[$threadsid]['items']   = [$arr['output']];
                                }
                        } else {
                                // Normal View
@@ -756,7 +754,7 @@ class Conversation
                        '$mode'        => $mode,
                        '$update'      => $update,
                        '$threads'     => $threads,
-                       '$dropping'    => ($page_dropping ? $this->l10n->t('Delete Selected Items') : False),
+                       '$dropping'    => ($page_dropping ? $this->l10n->t('Delete Selected Items') : false),
                ]);
 
                $this->profiler->stopRecording();
@@ -794,7 +792,8 @@ class Conversation
         *
         * @return array items with parents and comments
         */
-       private function addRowInformation(array $row, array $activity) {
+       private function addRowInformation(array $row, array $activity)
+       {
                $this->profiler->startRecording('rendering');
 
                if ($row['uid'] == 0) {
@@ -845,8 +844,8 @@ class Conversation
                                }
 
                                if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) {
-                                       $causer = ['uid' => 0, 'id' => $row['causer-id'],
-                                               'network' => $row['causer-network'], 'url' => $row['causer-link']];
+                                       $causer = ['uid' => 0, 'id' => $row['causer-id'], 'network' => $row['causer-network'], 'url' => $row['causer-link']];
+
                                        $row['reshared'] = $this->l10n->t('%s reshared this.', '<a href="'. htmlentities(Contact::magicLinkByContact($causer)) .'">' . htmlentities($row['causer-name']) . '</a>');
                                }
                                $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']))];
@@ -886,7 +885,8 @@ class Conversation
         * @return array items with parents and comments
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       private function addChildren(array $parents, $block_authors, $order, $uid) {
+       private function addChildren(array $parents, $block_authors, $order, $uid)
+       {
                $this->profiler->startRecording('rendering');
                if (count($parents) > 1) {
                        $max_comments = $this->config->get('system', 'max_comments', 100);
@@ -980,6 +980,7 @@ class Conversation
 
                                        if ($thr_parent == $parent['uri-id']) {
                                                $item['children'] = $this->getItemChildren($item_list, $item);
+
                                                $children[] = $item;
                                                unset($item_list[$i]);
                                        }
@@ -1059,7 +1060,7 @@ class Conversation
 
                        if (isset($child['children']) && count($child['children'])) {
                                // This helps counting only the regular posts
-                               $count_post_closure = function($var) {
+                               $count_post_closure = function ($var) {
                                        $this->profiler->stopRecording();
                                        return $var['verb'] === Activity::POST;
                                };
@@ -1073,7 +1074,7 @@ class Conversation
 
                                        // Searches the post item in the children
                                        $j = 0;
-                                       while($child['children'][$j]['verb'] !== Activity::POST && $j < count($child['children'])) {
+                                       while ($child['children'][$j]['verb'] !== Activity::POST && $j < count($child['children'])) {
                                                $j ++;
                                        }
 
@@ -1144,9 +1145,8 @@ class Conversation
                * items and add them as children of their top-level post.
                */
                foreach ($parents as $i => $parent) {
-                       $parents[$i]['children'] =
-                               array_merge($this->getItemChildren($item_array, $parent, true),
-                                       $this->getItemChildren($item_array, $parent, false));
+                       $parents[$i]['children'] = array_merge($this->getItemChildren($item_array, $parent, true),
+                               $this->getItemChildren($item_array, $parent, false));
                }
 
                foreach ($parents as $i => $parent) {