diff options
author | friendica <info@friendica.com> | 2014-11-10 15:21:04 -0800 |
---|---|---|
committer | friendica <info@friendica.com> | 2014-11-10 15:21:04 -0800 |
commit | 62094652333514e92f9f00699e14b9f49680bb64 (patch) | |
tree | f61a8410d6c469c5ae5b7b3aa69cfb8dd5a956a7 | |
parent | 0b4575a40b5412f0497c50560b0510a304599086 (diff) | |
download | volse-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-x | boot.php | 1 | ||||
-rw-r--r-- | include/zot.php | 8 | ||||
-rw-r--r-- | mod/zfinger.php | 16 |
3 files changed, 23 insertions, 2 deletions
@@ -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; |