]> git.mxchange.org Git - friendica.git/commitdiff
It's now in a single file
authorMichael <heluecht@pirati.ca>
Thu, 4 Jan 2018 13:04:12 +0000 (13:04 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 4 Jan 2018 13:04:12 +0000 (13:04 +0000)
include/nav.php
mod/community.php
src/Module/GlobalModule.php [deleted file]

index 3a32c8e7d8c5c11b4a50e370509b7f733d98a2c5..13999e0e80c1e24f5fbd6b527529e457aa5c9e59 100644 (file)
@@ -150,11 +150,11 @@ function nav_info(App $a)
        }
 
        if (in_array(Config::get('system', 'community_page_style'), [CP_USERS_ON_SERVER, CP_USERS_AND_GLOBAL])) {
-               $nav['community'] = array('community', t('Community'), '', t('Conversations on this site'));
+               $nav['community'] = array('community/local', t('Community'), '', t('Conversations on this site'));
        }
 
        if (in_array(Config::get('system', 'community_page_style'), [CP_GLOBAL_COMMUNITY, CP_USERS_AND_GLOBAL])) {
-               $nav['global'] = array('global', t('Global Timeline'), '', t('Conversations on the network'));
+               $nav['global'] = array('community/global', t('Global Timeline'), '', t('Conversations on the network'));
        }
 
        if (local_user()) {
index 0c1324fec9a44e14f3d9ba8a80719d277ea14abe..138873be575d3a30810497df94583690f2a42cb4 100644 (file)
@@ -20,11 +20,38 @@ function community_content(App $a, $update = 0) {
                return;
        }
 
-       if (!local_user() && !in_array(Config::get('system','community_page_style'), [CP_USERS_ON_SERVER, CP_USERS_AND_GLOBAL])) {
-               notice(t('Not available.') . EOL);
+       $page_style = Config::get('system','community_page_style');
+
+       if ($a->argc > 1) {
+               $content = $a->argv[1];
+       } else {
+               // When only the global community is allowed, we use this as default
+               $content = $page_style == CP_GLOBAL_COMMUNITY ? 'global' : 'local';
+       }
+
+       if (!in_array($content, ['local', 'global'])) {
+               notice(t('Community option not available.') . EOL);
                return;
        }
 
+       // Check if we are allowed to display the content to visitors
+       if (!local_user()) {
+               $available = $page_style == CP_USERS_AND_GLOBAL;
+
+               if (!$available) {
+                       $available = ($page_style == CP_USERS_ON_SERVER) && ($content == 'local');
+               }
+
+               if (!$available) {
+                       $available = ($page_style == CP_GLOBAL_COMMUNITY) && ($content == 'global');
+               }
+
+               if (!$available) {
+                       notice(t('Not available.') . EOL);
+                       return;
+               }
+       }
+
        require_once 'include/bbcode.php';
        require_once 'include/security.php';
        require_once 'include/conversation.php';
@@ -51,7 +78,7 @@ function community_content(App $a, $update = 0) {
                $a->set_pager_itemspage($itemspage_network);
        }
 
-       $r = community_getitems($a->pager['start'], $a->pager['itemspage']);
+       $r = community_getitems($a->pager['start'], $a->pager['itemspage'], $content);
 
        if (!DBM::is_result($r)) {
                info(t('No results.') . EOL);
@@ -60,7 +87,7 @@ function community_content(App $a, $update = 0) {
 
        $maxpostperauthor = Config::get('system','max_author_posts_community_page');
 
-       if ($maxpostperauthor != 0) {
+       if (($maxpostperauthor != 0) && ($content == 'local')) {
                $count = 1;
                $previousauthor = "";
                $numposts = 0;
@@ -80,7 +107,7 @@ function community_content(App $a, $update = 0) {
                                }
                        }
                        if (sizeof($s) < $a->pager['itemspage']) {
-                               $r = community_getitems($a->pager['start'] + ($count * $a->pager['itemspage']), $a->pager['itemspage']);
+                               $r = community_getitems($a->pager['start'] + ($count * $a->pager['itemspage']), $a->pager['itemspage'], $content);
                        }
                } while ((sizeof($s) < $a->pager['itemspage']) && (++$count < 50) && (sizeof($r) > 0));
        } else {
@@ -94,23 +121,35 @@ function community_content(App $a, $update = 0) {
        $t = get_markup_template("community.tpl");
        return replace_macros($t, array(
                '$content' => $o,
-               '$header' => t("Community"),
-               '$show_global_community_hint' => false,
-               '$global_community_hint' => ''
+               '$header' => $content == 'global' ? t("Global Timeline") : t("Community"),
+               '$show_global_community_hint' => ($content == 'global') && Config::get('system', 'show_global_community_hint'),
+               '$global_community_hint' => t("This community stream shows all public posts received by this node. They may not reflect the opinions of this node’s users.")
        ));
 }
 
-function community_getitems($start, $itemspage) {
-       $r = dba::p("SELECT ".item_fieldlists()." FROM `thread`
-               INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
-               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
-               AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
-               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''".
-               item_joins()." AND `contact`.`self`
-               WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
-               AND NOT `thread`.`private` AND `thread`.`wall`
-               ORDER BY `thread`.`received` DESC LIMIT ".intval($start).", ".intval($itemspage)
-       );
-
-       return dba::inArray($r);
+function community_getitems($start, $itemspage, $content) {
+       if ($content == 'local') {
+               $r = dba::p("SELECT ".item_fieldlists()." FROM `thread`
+                       INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
+                       INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+                       AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
+                       AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''".
+                       item_joins()." AND `contact`.`self`
+                       WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
+                       AND NOT `thread`.`private` AND `thread`.`wall`
+                       ORDER BY `thread`.`received` DESC LIMIT ".intval($start).", ".intval($itemspage)
+               );
+               return dba::inArray($r);
+       } elseif ($content == 'global') {
+               $r = dba::p("SELECT ".item_fieldlists()." FROM `thread`
+                       INNER JOIN `item` ON `item`.`id` = `thread`.`iid` ".item_joins().
+                       "WHERE `thread`.`uid` = 0 AND `verb` = ?
+                       ORDER BY `thread`.`created` DESC LIMIT ".intval($start).", ".intval($itemspage),
+                       ACTIVITY_POST
+               );
+               return dba::inArray($r);
+       }
+
+       // Should never happen
+       return array();
 }
diff --git a/src/Module/GlobalModule.php b/src/Module/GlobalModule.php
deleted file mode 100644 (file)
index 0d9c111..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/**
- * @file src/Module/GlobalModule.php
- */
-
-namespace Friendica\Module;
-
-use Friendica\BaseModule;
-use Friendica\Core\Config;
-use Friendica\Core\PConfig;
-use Friendica\Database\DBM;
-use dba;
-
-/**
- * Global module
- *
- * Displays global posts on the server
- *
- * @author heluecht@pirati.ca
- */
-class GlobalModule extends BaseModule {
-       public static function init()
-       {
-               if (!local_user()) {
-                       unset($_SESSION['theme']);
-                       unset($_SESSION['mobile-theme']);
-               }
-       }
-
-       public static function content($update = 0)
-       {
-               $a = self::getApp();
-
-               $o = '';
-
-               if (Config::get('system','block_public') && !local_user() && !remote_user()) {
-                       notice(t('Public access denied.') . EOL);
-                       return;
-               }
-
-               if (!local_user() && !in_array(Config::get('system','community_page_style'), [CP_GLOBAL_COMMUNITY, CP_USERS_AND_GLOBAL])) {
-                       notice(t('Not available.') . EOL);
-                       return;
-               }
-
-               require_once 'include/bbcode.php';
-               require_once 'include/security.php';
-               require_once 'include/conversation.php';
-
-               if (!$update) {
-                       nav_set_selected('global');
-               }
-
-               if (Config::get('system', 'comment_public')) {
-                       // check if we serve a mobile device and get the user settings
-                       // accordingly
-                       if ($a->is_mobile) {
-                               $itemspage_network = PConfig::get(local_user(),'system','itemspage_mobile_network', 20);
-                       } else {
-                               $itemspage_network = PConfig::get(local_user(),'system','itemspage_network', 40);
-                       }
-
-                       // now that we have the user settings, see if the theme forces
-                       // a maximum item number which is lower then the user choice
-                       if (($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network)) {
-                               $itemspage_network = $a->force_max_items;
-                       }
-
-                       $a->set_pager_itemspage($itemspage_network);
-               }
-
-               $r = self::getPublicItems($a->pager['start'], $a->pager['itemspage']);
-
-               if (!DBM::is_result($r)) {
-                       info(t('No results.') . EOL);
-                       return $o;
-               }
-
-               $o .= conversation($a, $r, 'community', $update);
-
-               $o .= alt_pager($a, count($r));
-
-               $t = get_markup_template("community.tpl");
-               return replace_macros($t, array(
-                       '$content' => $o,
-                       '$header' => t("Global Timeline"),
-                       '$show_global_community_hint' => Config::get('system', 'show_global_community_hint'),
-                       '$global_community_hint' => t("This community stream shows all public posts received by this node. They may not reflect the opinions of this node’s users.")
-               ));
-       }
-
-       private static function getPublicItems($start, $itemspage)
-       {
-               $r = dba::p("SELECT ".item_fieldlists()." FROM `thread`
-                       INNER JOIN `item` ON `item`.`id` = `thread`.`iid` ".item_joins().
-                       "WHERE `thread`.`uid` = 0 AND `verb` = ?
-                       ORDER BY `thread`.`created` DESC LIMIT ".intval($start).", ".intval($itemspage),
-                       ACTIVITY_POST
-               );
-
-               return dba::inArray($r);
-       }
-}