]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Conversation/Community.php
Merge pull request #9280 from annando/account-selector
[friendica.git] / src / Module / Conversation / Community.php
index 58af38eb16d72f11d5cb715a0ea919bc92571f39..9a8869e4a113c52c0ec5074b38f6397c71854946 100644 (file)
@@ -81,7 +81,7 @@ class Community extends BaseModule
                $items = self::getItems();
 
                if (!DBA::isResult($items)) {
-                       info(DI::l10n()->t('No results.'));
+                       notice(DI::l10n()->t('No results.'));
                        return $o;
                }
 
@@ -113,6 +113,17 @@ class Community extends BaseModule
 
                $o .= $pager->renderMinimal(count($items));
 
+               DI::page()['aside'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/community_accounts.tpl'), [
+                       '$title'        => DI::l10n()->t('Accounts'),
+                       '$content'      => self::$content,
+                       '$accounttype'  => $parameters['accounttype'],
+                       '$all'          => DI::l10n()->t('All Accounts'),
+                       '$person'       => DI::l10n()->t('Personal Accounts'),
+                       '$organisation' => DI::l10n()->t('Organisation Accounts'),
+                       '$news'         => DI::l10n()->t('News Accounts'),
+                       '$community'    => DI::l10n()->t('Communities'),
+               ]);
+
                if (Feature::isEnabled(local_user(), 'trending_tags')) {
                        DI::page()['aside'] .= TrendingTags::getHTML(self::$content);
                }
@@ -280,58 +291,38 @@ class Community extends BaseModule
                $r = false;
 
                if (self::$content == 'local') {
-                       $values = [];
-
-                       $sql_accounttype = '';
-                       $sql_boundaries = '';
                        if (!is_null(self::$accounttype)) {
-                               $sql_accounttype = " AND `user`.`account-type` = ?";
-                               $values[] = [self::$accounttype];
-                       }
-
-                       if (isset($since_id)) {
-                               $sql_boundaries .= " AND `thread`.`commented` > ?";
-                               $values[] = $since_id;
-                       }
-
-                       if (isset($max_id)) {
-                               $sql_boundaries .= " AND `thread`.`commented` < ?";
-                               $values[] = $max_id;
+                               $condition = ["`wall` AND `origin` AND `private` = ? AND `owner`.`contact-type` = ?", Item::PUBLIC, self::$accounttype];
+                       } else {
+                               $condition = ["`wall` AND `origin` AND `private` = ?", Item::PUBLIC];
                        }
-
-                       $values[] = $itemspage;
-
-                       /// @todo Use "unsearchable" here as well (instead of "hidewall")
-                       $r = DBA::p("SELECT `item`.`uri`, `author`.`url` AS `author-link`, `thread`.`commented` FROM `thread`
-                       STRAIGHT_JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
-                       STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
-                       STRAIGHT_JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
-                       WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
-                       AND NOT `thread`.`private` AND `thread`.`wall` AND `thread`.`origin`
-                       $sql_accounttype
-                       $sql_boundaries
-                       ORDER BY `thread`.`commented` DESC
-                       LIMIT ?", $values);
                } elseif (self::$content == 'global') {
                        if (!is_null(self::$accounttype)) {
-                               $condition = ["`uid` = ? AND NOT `author`.`unsearchable` AND NOT `owner`.`unsearchable` AND `owner`.`contact-type` = ?", 0, self::$accounttype];
+                               $condition = ["`uid` = ? AND `private` = ? AND `owner`.`contact-type` = ?", 0, Item::PUBLIC, self::$accounttype];
                        } else {
-                               $condition = ["`uid` = ? AND NOT `author`.`unsearchable` AND NOT `owner`.`unsearchable`", 0];
+                               $condition = ["`uid` = ? AND `private` = ?", 0, Item::PUBLIC];
                        }
+               } else {
+                       return [];
+               }
 
-                       if (isset($max_id)) {
-                               $condition[0] .= " AND `commented` < ?";
-                               $condition[] = $max_id;
-                       }
+               if (local_user() && DI::config()->get('system', 'community_no_followers')) {
+                       $condition[0] .= " AND NOT EXISTS (SELECT `uri-id` FROM `thread` AS t1 WHERE `t1`.`uri-id` = `thread`.`uri-id` AND `t1`.`uid` = ?)";
+                       $condition[] = local_user();
+               }
 
-                       if (isset($since_id)) {
-                               $condition[0] .= " AND `commented` > ?";
-                               $condition[] = $since_id;
-                       }
+               if (isset($max_id)) {
+                       $condition[0] .= " AND `commented` < ?";
+                       $condition[] = $max_id;
+               }
 
-                       $r = Item::selectThreadForUser(0, ['uri', 'commented'], $condition, ['order' => ['commented' => true], 'limit' => $itemspage]);
+               if (isset($since_id)) {
+                       $condition[0] .= " AND `commented` > ?";
+                       $condition[] = $since_id;
                }
 
+               $r = Item::selectThreadForUser(0, ['uri', 'commented', 'author-link'], $condition, ['order' => ['commented' => true], 'limit' => $itemspage]);
+
                return DBA::toArray($r);
        }
 }