aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-11-10 15:21:04 -0800
committerfriendica <info@friendica.com>2014-11-10 15:21:04 -0800
commit62094652333514e92f9f00699e14b9f49680bb64 (patch)
treef61a8410d6c469c5ae5b7b3aa69cfb8dd5a956a7
parent0b4575a40b5412f0497c50560b0510a304599086 (diff)
downloadvolse-hubzilla-62094652333514e92f9f00699e14b9f49680bb64.tar.gz
volse-hubzilla-62094652333514e92f9f00699e14b9f49680bb64.tar.bz2
volse-hubzilla-62094652333514e92f9f00699e14b9f49680bb64.zip
add public forum identification to libzot. No attempt is made to identify other types of forums or weird custom channel permissions. If the channel is auto-accept and taggable, it's a public forum.
-rwxr-xr-xboot.php1
-rw-r--r--include/zot.php8
-rw-r--r--mod/zfinger.php16
3 files changed, 23 insertions, 2 deletions
diff --git a/boot.php b/boot.php
index f8c91dfbb..4b1c008cd 100755
--- a/boot.php
+++ b/boot.php
@@ -414,6 +414,7 @@ define ( 'XCHAN_FLAGS_ORPHAN', 0x0002);
define ( 'XCHAN_FLAGS_CENSORED', 0x0004);
define ( 'XCHAN_FLAGS_SELFCENSORED', 0x0008);
define ( 'XCHAN_FLAGS_SYSTEM', 0x0010);
+define ( 'XCHAN_FLAGS_PUBFORUM', 0x0020);
define ( 'XCHAN_FLAGS_DELETED', 0x1000);
/*
* Traficlights for Administration of HubLoc
diff --git a/include/zot.php b/include/zot.php
index bdc1f607f..ac68c0035 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -699,10 +699,14 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
$dirmode = get_config('system','directory_mode');
- if((($arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE))
-&& ($arr['site']['url'] != z_root()))
+ if((($arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE)) && ($arr['site']['url'] != z_root()))
$arr['searchable'] = false;
+ $public_forum = (($r[0]['xchan_flags'] & XCHAN_FLAGS_PUBFORUM) ? true : false);
+ $pubforum_changed = ((intval($public_forum) != intval($arr['public_forum'])) ? true : false);
+ if($pubforum_changed)
+ $new_flags = $r[0]['xchan_flags'] ^ XCHAN_FLAGS_PUBFORUM;
+
$hidden = (1 - intval($arr['searchable']));
// Be careful - XCHAN_FLAGS_HIDDEN should evaluate to 1
diff --git a/mod/zfinger.php b/mod/zfinger.php
index 666f141ec..c2aebc675 100644
--- a/mod/zfinger.php
+++ b/mod/zfinger.php
@@ -108,6 +108,21 @@ function zfinger_init(&$a) {
if($deleted || $censored)
$searchable = false;
+ $public_forum = false;
+
+ $role = get_pconfig($e['channel_id'],'system','permissions_role');
+ if($role === 'forum') {
+ $public_forum = true;
+ }
+ else {
+ // check if it has characteristics of a public forum based on custom permissions.
+ $t = q("select abook_my_perms from abook where abook_channel = %d and (abook_flags & %d) limit 1",
+ intval($e['channel_id']),
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($t && ($t[0]['abook_my_perms'] & PERMS_W_TAGWALL))
+ $public_forum = true;
+ }
// This is for birthdays and keywords, but must check access permissions
@@ -174,6 +189,7 @@ function zfinger_init(&$a) {
$ret['target_sig'] = $zsig;
$ret['searchable'] = $searchable;
$ret['adult_content'] = $adult_channel;
+ $ret['public_forum'] = $public_forum;
if($deleted)
$ret['deleted'] = $deleted;