]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Conversation/Community.php
Merge pull request #9307 from annando/notice
[friendica.git] / src / Module / Conversation / Community.php
index c86bf9176c116b272d940f6d729143c0af095f01..88093c83ad68c7aa2a53307984483e8bf88dbcef 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\BaseModule;
 use Friendica\Content\BoundariesPager;
 use Friendica\Content\Feature;
 use Friendica\Content\Nav;
+use Friendica\Content\Text\HTML;
 use Friendica\Content\Widget\TrendingTags;
 use Friendica\Core\ACL;
 use Friendica\Core\Renderer;
@@ -49,34 +50,103 @@ class Community extends BaseModule
        {
                self::parseRequest($parameters);
 
-               $tabs = [];
-
-               if ((Session::isAuthenticated() || in_array(self::$page_style, [CP_USERS_AND_GLOBAL, CP_USERS_ON_SERVER])) && empty(DI::config()->get('system', 'singleuser'))) {
-                       $tabs[] = [
-                               'label' => DI::l10n()->t('Local Community'),
-                               'url' => 'community/local',
-                               'sel' => self::$content == 'local' ? 'active' : '',
-                               'title' => DI::l10n()->t('Posts from local users on this server'),
-                               'id' => 'community-local-tab',
-                               'accesskey' => 'l'
-                       ];
+               if (DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) {
+                       $tpl = Renderer::getMarkupTemplate('infinite_scroll_head.tpl');
+                       $o = Renderer::replaceMacros($tpl, ['$reload_uri' => DI::args()->getQueryString()]);
+               } else {
+                       $o = '';
                }
 
-               if (Session::isAuthenticated() || in_array(self::$page_style, [CP_USERS_AND_GLOBAL, CP_GLOBAL_COMMUNITY])) {
-                       $tabs[] = [
-                               'label' => DI::l10n()->t('Global Community'),
-                               'url' => 'community/global',
-                               'sel' => self::$content == 'global' ? 'active' : '',
-                               'title' => DI::l10n()->t('Posts from users of the whole federated network'),
-                               'id' => 'community-global-tab',
-                               'accesskey' => 'g'
-                       ];
-               }
+               if (empty($_GET['mode']) || ($_GET['mode'] != 'raw')) {
+                       $tabs = [];
+
+                       if ((Session::isAuthenticated() || in_array(self::$page_style, [CP_USERS_AND_GLOBAL, CP_USERS_ON_SERVER])) && empty(DI::config()->get('system', 'singleuser'))) {
+                               $tabs[] = [
+                                       'label' => DI::l10n()->t('Local Community'),
+                                       'url' => 'community/local',
+                                       'sel' => self::$content == 'local' ? 'active' : '',
+                                       'title' => DI::l10n()->t('Posts from local users on this server'),
+                                       'id' => 'community-local-tab',
+                                       'accesskey' => 'l'
+                               ];
+                       }
+       
+                       if (Session::isAuthenticated() || in_array(self::$page_style, [CP_USERS_AND_GLOBAL, CP_GLOBAL_COMMUNITY])) {
+                               $tabs[] = [
+                                       'label' => DI::l10n()->t('Global Community'),
+                                       'url' => 'community/global',
+                                       'sel' => self::$content == 'global' ? 'active' : '',
+                                       'title' => DI::l10n()->t('Posts from users of the whole federated network'),
+                                       'id' => 'community-global-tab',
+                                       'accesskey' => 'g'
+                               ];
+                       }
 
-               $tab_tpl = Renderer::getMarkupTemplate('common_tabs.tpl');
-               $o = Renderer::replaceMacros($tab_tpl, ['$tabs' => $tabs]);
+                       $tab_tpl = Renderer::getMarkupTemplate('common_tabs.tpl');
+                       $o .= Renderer::replaceMacros($tab_tpl, ['$tabs' => $tabs]);
+
+                       Nav::setSelected('community');
+
+                       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'),
+                               '$person'       => DI::l10n()->t('Persons'),
+                               '$organisation' => DI::l10n()->t('Organisations'),
+                               '$news'         => DI::l10n()->t('News'),
+                               '$community'    => DI::l10n()->t('Forums'),
+                       ]);
+       
+                       if (local_user() && DI::config()->get('system', 'community_no_sharer')) {
+                               $path = self::$content;
+                               if (!empty($parameters['accounttype'])) {
+                                       $path .= '/' . $parameters['accounttype'];
+                               }
+                               $query_parameters = [];
+               
+                               if (!empty($_GET['since_id'])) {
+                                       $query_parameters['since_id'] = $_GET['since_id'];
+                               }
+                               if (!empty($_GET['max_id'])) {
+                                       $query_parameters['max_id'] = $_GET['max_id'];
+                               }
+                               if (!empty($_GET['last_commented'])) {
+                                       $query_parameters['max_id'] = $_GET['last_commented'];
+                               }
+               
+                               $path_all = $path . (!empty($query_parameters) ? '?' . http_build_query($query_parameters) : '');
+                               $path_no_sharer = $path . '?' . http_build_query(array_merge($query_parameters, ['no_sharer' => true]));
+                               DI::page()['aside'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/community_sharer.tpl'), [
+                                       '$title'           => DI::l10n()->t('Own Contacts'),
+                                       '$path_all'        => $path_all,
+                                       '$path_no_sharer'  => $path_no_sharer,
+                                       '$no_sharer'       => !empty($_REQUEST['no_sharer']),
+                                       '$all'             => DI::l10n()->t('Include'),
+                                       '$no_sharer_label' => DI::l10n()->t('Hide'),
+                               ]);
+                       }
+       
+                       if (Feature::isEnabled(local_user(), 'trending_tags')) {
+                               DI::page()['aside'] .= TrendingTags::getHTML(self::$content);
+                       }
 
-               Nav::setSelected('community');
+                       // We need the editor here to be able to reshare an item.
+                       if (Session::isAuthenticated()) {
+                               $x = [
+                                       'is_owner' => true,
+                                       'allow_location' => DI::app()->user['allow_location'],
+                                       'default_location' => DI::app()->user['default-location'],
+                                       'nickname' => DI::app()->user['nickname'],
+                                       'lockstate' => (is_array(DI::app()->user) && (strlen(DI::app()->user['allow_cid']) || strlen(DI::app()->user['allow_gid']) || strlen(DI::app()->user['deny_cid']) || strlen(DI::app()->user['deny_gid'])) ? 'lock' : 'unlock'),
+                                       'acl' => ACL::getFullSelectorHTML(DI::page(), DI::app()->user, true),
+                                       'bang' => '',
+                                       'visitor' => 'block',
+                                       'profile_uid' => local_user(),
+                               ];
+                               $o .= status_editor(DI::app(), $x, 0, true);
+                       }
+               }
 
                $items = self::getItems();
 
@@ -85,22 +155,6 @@ class Community extends BaseModule
                        return $o;
                }
 
-               // We need the editor here to be able to reshare an item.
-               if (Session::isAuthenticated()) {
-                       $x = [
-                               'is_owner' => true,
-                               'allow_location' => DI::app()->user['allow_location'],
-                               'default_location' => DI::app()->user['default-location'],
-                               'nickname' => DI::app()->user['nickname'],
-                               'lockstate' => (is_array(DI::app()->user) && (strlen(DI::app()->user['allow_cid']) || strlen(DI::app()->user['allow_gid']) || strlen(DI::app()->user['deny_cid']) || strlen(DI::app()->user['deny_gid'])) ? 'lock' : 'unlock'),
-                               'acl' => ACL::getFullSelectorHTML(DI::page(), DI::app()->user, true),
-                               'bang' => '',
-                               'visitor' => 'block',
-                               'profile_uid' => local_user(),
-                       ];
-                       $o .= status_editor(DI::app(), $x, 0, true);
-               }
-
                $o .= conversation(DI::app(), $items, 'community', false, false, 'commented', local_user());
 
                $pager = new BoundariesPager(
@@ -111,10 +165,10 @@ class Community extends BaseModule
                        self::$itemsPerPage
                );
 
-               $o .= $pager->renderMinimal(count($items));
-
-               if (Feature::isEnabled(local_user(), 'trending_tags')) {
-                       DI::page()['aside'] .= TrendingTags::getHTML(self::$content);
+               if (DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) {
+                       $o .= HTML::scrollLoader();
+               } else {
+                       $o .= $pager->renderMinimal(count($items));
                }
 
                $t = Renderer::getMarkupTemplate("community.tpl");
@@ -211,6 +265,7 @@ class Community extends BaseModule
 
                self::$since_id = $_GET['since_id'] ?? null;
                self::$max_id   = $_GET['max_id']   ?? null;
+               self::$max_id   = $_GET['last_commented'] ?? self::$max_id;
        }
 
        /**
@@ -283,7 +338,7 @@ class Community extends BaseModule
                        if (!is_null(self::$accounttype)) {
                                $condition = ["`wall` AND `origin` AND `private` = ? AND `owner`.`contact-type` = ?", Item::PUBLIC, self::$accounttype];
                        } else {
-                               $condition = ["`wall` AND `origin` AND `private` = ?", Item::PUBLIC];
+                               $condition = ["`wall` AND `origin` AND `private` = ?", Item::PUBLIC];
                        }
                } elseif (self::$content == 'global') {
                        if (!is_null(self::$accounttype)) {
@@ -295,6 +350,11 @@ class Community extends BaseModule
                        return [];
                }
 
+               if (local_user() && !empty($_REQUEST['no_sharer'])) {
+                       $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($max_id)) {
                        $condition[0] .= " AND `commented` < ?";
                        $condition[] = $max_id;