Replace "forum" by "group" in the rest of the code
This commit is contained in:
@@ -102,7 +102,7 @@ class Feature
|
||||
// Post composition
|
||||
'composition' => [
|
||||
DI::l10n()->t('Post Composition Features'),
|
||||
['aclautomention', DI::l10n()->t('Auto-mention Forums'), DI::l10n()->t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)],
|
||||
['aclautomention', DI::l10n()->t('Auto-mention Groups'), DI::l10n()->t('Add/remove mention when a group page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)],
|
||||
['explicit_mentions', DI::l10n()->t('Explicit Mentions'), DI::l10n()->t('Add explicit mentions to comment box for manual control over who gets mentioned in replies.'), false, DI::config()->get('feature_lock', 'explicit_mentions', false)],
|
||||
['add_abstract', DI::l10n()->t('Add an abstract from ActivityPub content warnings'), DI::l10n()->t('Add an abstract when commenting on ActivityPub posts with a content warning. Abstracts are displayed as content warning on systems like Mastodon or Pleroma.'), false, DI::config()->get('feature_lock', 'add_abstract', false)],
|
||||
],
|
||||
@@ -116,7 +116,7 @@ class Feature
|
||||
// Advanced Profile Settings
|
||||
'advanced_profile' => [
|
||||
DI::l10n()->t('Advanced Profile Settings'),
|
||||
['forumlist_profile', DI::l10n()->t('List Forums'), DI::l10n()->t('Show visitors public community forums at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)],
|
||||
['forumlist_profile', DI::l10n()->t('List Groups'), DI::l10n()->t('Show visitors public groups at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)],
|
||||
['tagadelic', DI::l10n()->t('Tag Cloud'), DI::l10n()->t('Provide a personal tag cloud on your profile page'), false, DI::config()->get('feature_lock', 'tagadelic', false)],
|
||||
['profile_membersince', DI::l10n()->t('Display Membership Date'), DI::l10n()->t('Display membership date in profile'), false, DI::config()->get('feature_lock', 'profile_membersince', false)],
|
||||
],
|
||||
|
||||
@@ -29,21 +29,21 @@ use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
|
||||
/**
|
||||
* This class handles methods related to the forum functionality
|
||||
* This class handles methods related to the group functionality
|
||||
*/
|
||||
class ForumManager
|
||||
class GroupManager
|
||||
{
|
||||
/**
|
||||
* Function to list all forums a user is connected with
|
||||
* Function to list all groups a user is connected with
|
||||
*
|
||||
* @param int $uid of the profile owner
|
||||
* @param boolean $lastitem Sort by lastitem
|
||||
* @param boolean $showhidden Show forums which are not hidden
|
||||
* @param boolean $showhidden Show groups which are not hidden
|
||||
* @param boolean $showprivate Show private groups
|
||||
*
|
||||
* @return array
|
||||
* 'url' => forum url
|
||||
* 'name' => forum name
|
||||
* 'url' => group url
|
||||
* 'name' => group name
|
||||
* 'id' => number of the key from the array
|
||||
* 'micro' => contact photo in format micro
|
||||
* 'thumb' => contact photo in format thumb
|
||||
@@ -76,16 +76,16 @@ class ForumManager
|
||||
$condition = DBA::mergeConditions($condition, ['hidden' => false]);
|
||||
}
|
||||
|
||||
$forumlist = [];
|
||||
$groupList = [];
|
||||
|
||||
$fields = ['id', 'url', 'name', 'micro', 'thumb', 'avatar', 'network', 'uid'];
|
||||
$contacts = DBA::select('account-user-view', $fields, $condition, $params);
|
||||
if (!$contacts) {
|
||||
return($forumlist);
|
||||
return $groupList;
|
||||
}
|
||||
|
||||
while ($contact = DBA::fetch($contacts)) {
|
||||
$forumlist[] = [
|
||||
$groupList[] = [
|
||||
'url' => $contact['url'],
|
||||
'name' => $contact['name'],
|
||||
'id' => $contact['id'],
|
||||
@@ -95,19 +95,19 @@ class ForumManager
|
||||
}
|
||||
DBA::close($contacts);
|
||||
|
||||
return($forumlist);
|
||||
return($groupList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Forumlist widget
|
||||
* Group list widget
|
||||
*
|
||||
* Sidebar widget to show subscribed friendica forums. If activated
|
||||
* in the settings, it appears at the notwork page sidebar
|
||||
* Sidebar widget to show subscribed Friendica groups. If activated
|
||||
* in the settings, it appears in the network page sidebar
|
||||
*
|
||||
* @param string $baseurl Base module path
|
||||
* @param int $uid The ID of the User
|
||||
* @param int $cid The contact id which is used to mark a forum as "selected"
|
||||
* @param int $cid The contact id which is used to mark a group as "selected"
|
||||
* @return string
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
@@ -121,7 +121,7 @@ class ForumManager
|
||||
|
||||
$contacts = self::getList($uid, $lastitem, true, true);
|
||||
$total = count($contacts);
|
||||
$visible_forums = 10;
|
||||
$visibleGroups = 10;
|
||||
|
||||
if (DBA::isResult($contacts)) {
|
||||
$id = 0;
|
||||
@@ -129,7 +129,7 @@ class ForumManager
|
||||
$entries = [];
|
||||
|
||||
foreach ($contacts as $contact) {
|
||||
$selected = (($cid == $contact['id']) ? ' forum-selected' : '');
|
||||
$selected = (($cid == $contact['id']) ? ' group-selected' : '');
|
||||
|
||||
$entry = [
|
||||
'url' => $baseurl . '/' . $contact['id'],
|
||||
@@ -143,16 +143,16 @@ class ForumManager
|
||||
$entries[] = $entry;
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('widget_forumlist.tpl');
|
||||
$tpl = Renderer::getMarkupTemplate('widget/group_list.tpl');
|
||||
|
||||
$o .= Renderer::replaceMacros(
|
||||
$tpl,
|
||||
[
|
||||
'$title' => DI::l10n()->t('Forums'),
|
||||
'$forums' => $entries,
|
||||
'$link_desc' => DI::l10n()->t('External link to forum'),
|
||||
'$title' => DI::l10n()->t('Groups'),
|
||||
'$groups' => $entries,
|
||||
'$link_desc' => DI::l10n()->t('External link to group'),
|
||||
'$total' => $total,
|
||||
'$visible_forums' => $visible_forums,
|
||||
'$visible_groups' => $visibleGroups,
|
||||
'$showless' => DI::l10n()->t('show less'),
|
||||
'$showmore' => DI::l10n()->t('show more')]
|
||||
);
|
||||
@@ -162,9 +162,9 @@ class ForumManager
|
||||
}
|
||||
|
||||
/**
|
||||
* Format forumlist as contact block
|
||||
* Format group list as contact block
|
||||
*
|
||||
* This function is used to show the forumlist in
|
||||
* This function is used to show the group list in
|
||||
* the advanced profile.
|
||||
*
|
||||
* @param int $uid The ID of the User
|
||||
@@ -181,7 +181,7 @@ class ForumManager
|
||||
|
||||
$o = '';
|
||||
|
||||
// place holder in case somebody wants configurability
|
||||
// placeholder in case somebody wants configurability
|
||||
$show_total = 9999;
|
||||
|
||||
//don't sort by last updated item
|
||||
@@ -191,7 +191,7 @@ class ForumManager
|
||||
|
||||
$total_shown = 0;
|
||||
foreach ($contacts as $contact) {
|
||||
$o .= HTML::micropro($contact, true, 'forumlist-profile-advanced');
|
||||
$o .= HTML::micropro($contact, true, 'grouplist-profile-advanced');
|
||||
$total_shown++;
|
||||
if ($total_shown == $show_total) {
|
||||
break;
|
||||
@@ -202,14 +202,14 @@ class ForumManager
|
||||
}
|
||||
|
||||
/**
|
||||
* count unread forum items
|
||||
* count unread group items
|
||||
*
|
||||
* Count unread items of connected forums and private groups
|
||||
* Count unread items of connected groups and private groups
|
||||
*
|
||||
* @return array
|
||||
* 'id' => contact id
|
||||
* 'name' => contact/forum name
|
||||
* 'count' => counted unseen forum items
|
||||
* 'name' => contact/group name
|
||||
* 'count' => counted unseen group items
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function countUnseenItems()
|
||||
@@ -484,16 +484,16 @@ class Item
|
||||
{
|
||||
// Look for any tags and linkify them
|
||||
$item['inform'] = '';
|
||||
$private_forum = false;
|
||||
$private_group = false;
|
||||
$private_id = null;
|
||||
$only_to_forum = false;
|
||||
$forum_contact = [];
|
||||
$only_to_group = false;
|
||||
$group_contact = [];
|
||||
$receivers = [];
|
||||
|
||||
// Convert mentions in the body to a unified format
|
||||
$item['body'] = BBCode::setMentions($item['body'], $item['uid'], $item['network']);
|
||||
|
||||
// Search for forum mentions
|
||||
// Search for group mentions
|
||||
foreach (Tag::getFromBody($item['body'], Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
$contact = Contact::getByURLForUser($tag[2], $item['uid']);
|
||||
if (empty($contact)) {
|
||||
@@ -512,37 +512,37 @@ class Item
|
||||
}
|
||||
|
||||
if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) {
|
||||
$private_forum = $contact['prv'];
|
||||
$only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
|
||||
$private_group = $contact['prv'];
|
||||
$only_to_group = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
|
||||
$private_id = $contact['id'];
|
||||
$forum_contact = $contact;
|
||||
Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
$group_contact = $contact;
|
||||
Logger::info('Private group or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
} elseif ($item['allow_cid'] == '<' . $contact['id'] . '>') {
|
||||
$private_forum = false;
|
||||
$only_to_forum = true;
|
||||
$private_group = false;
|
||||
$only_to_group = true;
|
||||
$private_id = $contact['id'];
|
||||
$forum_contact = $contact;
|
||||
Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
$group_contact = $contact;
|
||||
Logger::info('Public group', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
} else {
|
||||
Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
Logger::info('Post with group mention will not be converted to a group post', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
}
|
||||
}
|
||||
Logger::info('Got inform', ['inform' => $item['inform']]);
|
||||
|
||||
if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($forum_contact) && ($private_forum || $only_to_forum)) {
|
||||
// we tagged a forum in a top level post. Now we change the post
|
||||
$item['private'] = $private_forum ? ItemModel::PRIVATE : ItemModel::UNLISTED;
|
||||
if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($group_contact) && ($private_group || $only_to_group)) {
|
||||
// we tagged a group in a top level post. Now we change the post
|
||||
$item['private'] = $private_group ? ItemModel::PRIVATE : ItemModel::UNLISTED;
|
||||
|
||||
if ($only_to_forum) {
|
||||
if ($only_to_group) {
|
||||
$item['postopts'] = '';
|
||||
}
|
||||
|
||||
$item['deny_cid'] = '';
|
||||
$item['deny_gid'] = '';
|
||||
|
||||
if ($private_forum) {
|
||||
if ($private_group) {
|
||||
$item['allow_cid'] = '<' . $private_id . '>';
|
||||
$item['allow_gid'] = '<' . Circle::getIdForForum($forum_contact['id']) . '>';
|
||||
$item['allow_gid'] = '<' . Circle::getIdForGroup($group_contact['id']) . '>';
|
||||
} else {
|
||||
$item['allow_cid'] = '';
|
||||
$item['allow_gid'] = '';
|
||||
@@ -1011,7 +1011,7 @@ class Item
|
||||
$post['body'] = $this->bbCodeVideo->transform($post['body']);
|
||||
$post = $this->setObjectType($post);
|
||||
|
||||
// Personal notes must never be altered to a forum post.
|
||||
// Personal notes must never be altered to a group post.
|
||||
if ($post['post-type'] != ItemModel::PT_PERSONAL_NOTE) {
|
||||
// Look for any tags and linkify them
|
||||
$post = $this->expandTags($post);
|
||||
|
||||
@@ -123,7 +123,7 @@ class Nav
|
||||
'$apps' => $this->getAppMenu(),
|
||||
'$home' => $this->l10n->t('Go back'),
|
||||
'$clear_notifs' => $this->l10n->t('Clear notifications'),
|
||||
'$search_hint' => $this->l10n->t('@name, !forum, #tags, content')
|
||||
'$search_hint' => $this->l10n->t('@name, !group, #tags, content')
|
||||
]);
|
||||
|
||||
Hook::callAll('page_header', $nav);
|
||||
@@ -273,7 +273,7 @@ class Nav
|
||||
];
|
||||
|
||||
if ($this->config->get('system', 'poco_local_search')) {
|
||||
$nav['searchoption'][] = $this->l10n->t('Forums');
|
||||
$nav['searchoption'][] = $this->l10n->t('Groups');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -861,7 +861,7 @@ class HTML
|
||||
'$id' => $id,
|
||||
'$search_label' => DI::l10n()->t('Search'),
|
||||
'$save_label' => $save_label,
|
||||
'$search_hint' => DI::l10n()->t('@name, !forum, #tags, content'),
|
||||
'$search_hint' => DI::l10n()->t('@name, !group, #tags, content'),
|
||||
'$mode' => $mode,
|
||||
'$return_url' => urlencode(Search::getSearchPath($s)),
|
||||
];
|
||||
@@ -874,7 +874,7 @@ class HTML
|
||||
];
|
||||
|
||||
if (DI::config()->get('system', 'poco_local_search')) {
|
||||
$values['$searchoption']['forums'] = DI::l10n()->t('Forums');
|
||||
$values['$searchoption']['groups'] = DI::l10n()->t('Groups');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -530,7 +530,7 @@ class Widget
|
||||
['ref' => 'person', 'name' => DI::l10n()->t('Persons')],
|
||||
['ref' => 'organisation', 'name' => DI::l10n()->t('Organisations')],
|
||||
['ref' => 'news', 'name' => DI::l10n()->t('News')],
|
||||
['ref' => 'community', 'name' => DI::l10n()->t('Forums')],
|
||||
['ref' => 'community', 'name' => DI::l10n()->t('Groups')],
|
||||
];
|
||||
|
||||
return self::filter('accounttype', DI::l10n()->t('Account Types'), '',
|
||||
|
||||
@@ -167,12 +167,12 @@ class ACL
|
||||
|
||||
$acl_contacts[] = $acl_yourself;
|
||||
|
||||
$acl_forums = Contact::selectToArray($fields,
|
||||
$acl_groups = Contact::selectToArray($fields,
|
||||
['uid' => $user_id, 'self' => false, 'blocked' => false, 'archive' => false, 'deleted' => false,
|
||||
'network' => Protocol::FEDERATED, 'pending' => false, 'contact-type' => Contact::TYPE_COMMUNITY], $params
|
||||
);
|
||||
|
||||
$acl_contacts = array_merge($acl_forums, $acl_contacts);
|
||||
$acl_contacts = array_merge($acl_groups, $acl_contacts);
|
||||
|
||||
array_walk($acl_contacts, function (&$value) {
|
||||
$value['type'] = 'contact';
|
||||
|
||||
@@ -42,7 +42,7 @@ class Search
|
||||
const DEFAULT_DIRECTORY = 'https://dir.friendica.social';
|
||||
|
||||
const TYPE_PEOPLE = 0;
|
||||
const TYPE_FORUM = 1;
|
||||
const TYPE_GROUP = 1;
|
||||
const TYPE_ALL = 2;
|
||||
|
||||
/**
|
||||
@@ -55,7 +55,7 @@ class Search
|
||||
* @throws HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
*/
|
||||
public static function getContactsFromProbe(string $user, $only_forum = false): ResultList
|
||||
public static function getContactsFromProbe(string $user, $only_group = false): ResultList
|
||||
{
|
||||
$emptyResultList = new ResultList();
|
||||
|
||||
@@ -68,7 +68,7 @@ class Search
|
||||
return $emptyResultList;
|
||||
}
|
||||
|
||||
if ($only_forum && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) {
|
||||
if ($only_group && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) {
|
||||
return $emptyResultList;
|
||||
}
|
||||
|
||||
@@ -112,8 +112,8 @@ class Search
|
||||
$searchUrl = $server . '/search';
|
||||
|
||||
switch ($type) {
|
||||
case self::TYPE_FORUM:
|
||||
$searchUrl .= '/forum';
|
||||
case self::TYPE_GROUP:
|
||||
$searchUrl .= '/group';
|
||||
break;
|
||||
case self::TYPE_PEOPLE:
|
||||
$searchUrl .= '/people';
|
||||
@@ -174,7 +174,7 @@ class Search
|
||||
{
|
||||
Logger::info('Searching', ['search' => $search, 'type' => $type, 'start' => $start, 'itempage' => $itemPage]);
|
||||
|
||||
$contacts = Contact::searchByName($search, $type == self::TYPE_FORUM ? 'community' : '', true);
|
||||
$contacts = Contact::searchByName($search, $type == self::TYPE_GROUP ? 'community' : '', true);
|
||||
|
||||
$resultList = new ResultList($start, count($contacts), $itemPage);
|
||||
|
||||
@@ -240,7 +240,9 @@ class Search
|
||||
$return = array_map(function ($result) {
|
||||
static $contactType = [
|
||||
'People' => Contact::TYPE_PERSON,
|
||||
// Kept for backward compatibility
|
||||
'Forum' => Contact::TYPE_COMMUNITY,
|
||||
'Group' => Contact::TYPE_COMMUNITY,
|
||||
'Organization' => Contact::TYPE_ORGANISATION,
|
||||
'News' => Contact::TYPE_NEWS,
|
||||
];
|
||||
|
||||
@@ -615,9 +615,9 @@ class Circle
|
||||
* @param integer $id Contact ID
|
||||
* @return integer Circle ID
|
||||
*/
|
||||
public static function getIdForForum(int $id): int
|
||||
public static function getIdForGroup(int $id): int
|
||||
{
|
||||
Logger::info('Get id for forum id', ['id' => $id]);
|
||||
Logger::info('Get id for group id', ['id' => $id]);
|
||||
$contact = Contact::getById($id, ['uid', 'name', 'contact-type', 'manually-approve']);
|
||||
if (empty($contact) || ($contact['contact-type'] != Contact::TYPE_COMMUNITY) || !$contact['manually-approve']) {
|
||||
return 0;
|
||||
@@ -645,9 +645,9 @@ class Circle
|
||||
* @param integer $id Contact ID
|
||||
* @return void
|
||||
*/
|
||||
public static function updateMembersForForum(int $id)
|
||||
public static function updateMembersForGroup(int $id)
|
||||
{
|
||||
Logger::info('Update forum members', ['id' => $id]);
|
||||
Logger::info('Update group members', ['id' => $id]);
|
||||
|
||||
$contact = Contact::getById($id, ['uid', 'url']);
|
||||
if (empty($contact)) {
|
||||
@@ -659,7 +659,7 @@ class Circle
|
||||
return;
|
||||
}
|
||||
|
||||
$gid = self::getIdForForum($id);
|
||||
$gid = self::getIdForGroup($id);
|
||||
if (empty($gid)) {
|
||||
return;
|
||||
}
|
||||
@@ -682,6 +682,6 @@ class Circle
|
||||
}
|
||||
|
||||
DBA::delete('group_member', ['gid' => $gid, 'contact-id' => $current]);
|
||||
Logger::info('Updated forum members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]);
|
||||
Logger::info('Updated group members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ class Contact
|
||||
* TYPE_NEWS - the account is a news reflector
|
||||
* Associated page type: PAGE_SOAPBOX
|
||||
*
|
||||
* TYPE_COMMUNITY - the account is community forum
|
||||
* TYPE_COMMUNITY - the account is community group
|
||||
* Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP
|
||||
*
|
||||
* TYPE_RELAY - the account is a relay
|
||||
@@ -1652,7 +1652,7 @@ class Contact
|
||||
break;
|
||||
|
||||
case self::TYPE_COMMUNITY:
|
||||
$account_type = DI::l10n()->t("Forum");
|
||||
$account_type = DI::l10n()->t("Group");
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -3472,13 +3472,13 @@ class Contact
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the contact a forum?
|
||||
* Is the contact a group?
|
||||
*
|
||||
* @param integer $contactid ID of the contact
|
||||
*
|
||||
* @return boolean "true" if it is a forum
|
||||
* @return boolean "true" if it is a group
|
||||
*/
|
||||
public static function isForum(int $contactid): bool
|
||||
public static function isGroup(int $contactid): bool
|
||||
{
|
||||
$fields = ['contact-type'];
|
||||
$condition = ['id' => $contactid];
|
||||
@@ -3487,7 +3487,7 @@ class Contact
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is it a forum?
|
||||
// Is it a group?
|
||||
return ($contact['contact-type'] == self::TYPE_COMMUNITY);
|
||||
}
|
||||
|
||||
|
||||
@@ -1004,7 +1004,7 @@ class Item
|
||||
$item['deleted'] = $toplevel_parent['deleted'];
|
||||
$item['wall'] = $toplevel_parent['wall'];
|
||||
|
||||
// Reshares have to keep their permissions to allow forums to work
|
||||
// Reshares have to keep their permissions to allow groups to work
|
||||
if (!$defined_permissions && (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE))) {
|
||||
$item['allow_cid'] = $toplevel_parent['allow_cid'];
|
||||
$item['allow_gid'] = $toplevel_parent['allow_gid'];
|
||||
@@ -1307,7 +1307,7 @@ class Item
|
||||
|
||||
Post::update($fields, ['uri-id' => $posted_item['parent-uri-id'], 'uid' => $posted_item['uid']]);
|
||||
|
||||
// In that function we check if this is a forum post. Additionally we delete the item under certain circumstances
|
||||
// In that function we check if this is a group post. Additionally we delete the item under certain circumstances
|
||||
if (self::tagDeliver($posted_item['uid'], $post_user_id)) {
|
||||
// Get the user information for the logging
|
||||
$user = User::getById($uid);
|
||||
@@ -1418,11 +1418,11 @@ class Item
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the owner of a parent item if it had been shared by a forum
|
||||
* Change the owner of a parent item if it had been shared by a group
|
||||
*
|
||||
* (public) forum posts in the new format consist of the regular post by the author
|
||||
* followed by an announce message sent from the forum account.
|
||||
* Changing the owner helps in grouping forum posts.
|
||||
* (public) group posts in the new format consist of the regular post by the author
|
||||
* followed by an announce message sent from the group account.
|
||||
* Changing the owner helps in grouping group posts.
|
||||
*
|
||||
* @param array $item
|
||||
* @return void
|
||||
@@ -1458,7 +1458,7 @@ class Item
|
||||
}
|
||||
|
||||
if (Contact::isSharing($parent['owner-id'], $item['uid'])) {
|
||||
Logger::info('The resharer is no forum: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]);
|
||||
Logger::info('The resharer is no group: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1603,7 +1603,7 @@ class Item
|
||||
if (($uid != 0) && ($item['gravity'] == self::GRAVITY_PARENT)) {
|
||||
$owner = User::getOwnerDataById($uid);
|
||||
if (($owner['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) && !Tag::isMentioned($uri_id, $owner['url'])) {
|
||||
Logger::info('Target user is a forum but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]);
|
||||
Logger::info('Target user is a group but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1709,7 +1709,7 @@ class Item
|
||||
return 0;
|
||||
}
|
||||
|
||||
// When the post belongs to a a forum then all forum users are allowed to access it
|
||||
// When the post belongs to a a group then all group users are allowed to access it
|
||||
foreach (Tag::getByURIId($uriid, [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
if (DBA::exists('contact', ['uid' => $uid, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) {
|
||||
$target_uid = User::getIdForURL($tag['url']);
|
||||
@@ -2104,7 +2104,7 @@ class Item
|
||||
/// @todo On private posts we could obfuscate the date
|
||||
$update = ($arr['private'] != self::PRIVATE) || in_array($arr['network'], Protocol::FEDERATED);
|
||||
|
||||
// Is it a forum? Then we don't care about the rules from above
|
||||
// Is it a group? Then we don't care about the rules from above
|
||||
if (!$update && in_array($arr["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN]) && ($arr["parent-uri-id"] === $arr["uri-id"])) {
|
||||
if (DBA::exists('contact', ['id' => $arr['contact-id'], 'forum' => true])) {
|
||||
$update = true;
|
||||
@@ -2200,7 +2200,7 @@ class Item
|
||||
}
|
||||
|
||||
/**
|
||||
* look for mention tags and setup a second delivery chain for forum/community posts if appropriate
|
||||
* look for mention tags and setup a second delivery chain for group/community posts if appropriate
|
||||
*
|
||||
* @param int $uid
|
||||
* @param int $item_id
|
||||
@@ -3663,13 +3663,13 @@ class Item
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the given uri-id belongs to a post that is sent as starting post to a forum?
|
||||
* Does the given uri-id belongs to a post that is sent as starting post to a group?
|
||||
*
|
||||
* @param int $uri_id
|
||||
*
|
||||
* @return boolean "true" when it is a forum post
|
||||
* @return boolean "true" when it is a group post
|
||||
*/
|
||||
public static function isForumPost(int $uri_id): bool
|
||||
public static function isGroupPost(int $uri_id): bool
|
||||
{
|
||||
foreach (Tag::getByURIId($uri_id, [Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
if (DBA::exists('contact', ['uid' => 0, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) {
|
||||
|
||||
@@ -42,7 +42,7 @@ class Type
|
||||
const TAG_SELF = 128;
|
||||
/** @var int Notification about getting poked/prodded/etc. (Obsolete) */
|
||||
const POKE = 512;
|
||||
/** @var int Notification about either a contact had posted something directly or the contact is a mentioned forum */
|
||||
/** @var int Notification about either a contact had posted something directly or the contact is a mentioned group */
|
||||
const SHARE = 1024;
|
||||
|
||||
/** @var int Global System notifications */
|
||||
|
||||
@@ -830,7 +830,7 @@ class Photo
|
||||
* Changes photo permissions that had been embedded in a post
|
||||
*
|
||||
* @todo This function currently does have some flaws:
|
||||
* - Sharing a post with a forum will create a photo that only the forum can see.
|
||||
* - Sharing a post with a group will create a photo that only the group can see.
|
||||
* - Sharing a photo again that been shared non public before doesn't alter the permissions.
|
||||
*
|
||||
* @return string
|
||||
@@ -877,7 +877,7 @@ class Photo
|
||||
/**
|
||||
* @todo Existing permissions need to be mixed with the new ones.
|
||||
* Otherwise this creates problems with sharing the same picture multiple times
|
||||
* Also check if $str_contact_allow does contain a public forum.
|
||||
* Also check if $str_contact_allow does contain a public group.
|
||||
* Then set the permissions to public.
|
||||
*/
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class Tag
|
||||
*/
|
||||
const IMPLICIT_MENTION = 8;
|
||||
/**
|
||||
* An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a forum.
|
||||
* An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a group.
|
||||
*/
|
||||
const EXCLUSIVE_MENTION = 9;
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ class User
|
||||
* ACCOUNT_TYPE_NEWS - the account is a news reflector
|
||||
* Associated page type: PAGE_FLAGS_SOAPBOX
|
||||
*
|
||||
* ACCOUNT_TYPE_COMMUNITY - the account is community forum
|
||||
* ACCOUNT_TYPE_COMMUNITY - the account is community group
|
||||
* Associated page types: PAGE_COMMUNITY, PAGE_FLAGS_PRVGROUP
|
||||
*
|
||||
* ACCOUNT_TYPE_RELAY - the account is a relay
|
||||
|
||||
@@ -71,8 +71,8 @@ class BaseSearch extends BaseModule
|
||||
$header = DI::l10n()->t('People Search - %s', $search);
|
||||
} elseif (strpos($search, '!') === 0) {
|
||||
$search = trim(substr($search, 1));
|
||||
$type = Search::TYPE_FORUM;
|
||||
$header = DI::l10n()->t('Forum Search - %s', $search);
|
||||
$type = Search::TYPE_GROUP;
|
||||
$header = DI::l10n()->t('Group Search - %s', $search);
|
||||
}
|
||||
|
||||
$search = Network::convertToIdn($search);
|
||||
@@ -98,7 +98,7 @@ class BaseSearch extends BaseModule
|
||||
}
|
||||
|
||||
if (!$results->getTotal()) {
|
||||
$results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_FORUM);
|
||||
$results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_GROUP);
|
||||
}
|
||||
|
||||
return self::printResult($results, $pager, $header);
|
||||
@@ -151,4 +151,4 @@ class BaseSearch extends BaseModule
|
||||
'$paginate' => $pager->renderFull($results->getTotal()),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace Friendica\Module\Conversation;
|
||||
use Friendica\BaseModule;
|
||||
use Friendica\Content\BoundariesPager;
|
||||
use Friendica\Content\Conversation;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Content\Nav;
|
||||
use Friendica\Content\Widget;
|
||||
use Friendica\Content\Text\HTML;
|
||||
@@ -52,7 +52,7 @@ class Network extends BaseModule
|
||||
/** @var int */
|
||||
private static $circleId;
|
||||
/** @var int */
|
||||
private static $forumContactId;
|
||||
private static $groupContactId;
|
||||
/** @var string */
|
||||
private static $selectedTab;
|
||||
/** @var mixed */
|
||||
@@ -90,9 +90,9 @@ class Network extends BaseModule
|
||||
|
||||
DI::page()['aside'] .= Widget::accountTypes($module, self::$accountTypeString);
|
||||
DI::page()['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', self::$circleId);
|
||||
DI::page()['aside'] .= ForumManager::widget($module . '/forum', DI::userSession()->getLocalUserId(), self::$forumContactId);
|
||||
DI::page()['aside'] .= GroupManager::widget($module . '/group', DI::userSession()->getLocalUserId(), self::$groupContactId);
|
||||
DI::page()['aside'] .= Widget::postedByYear($module . '/archive', DI::userSession()->getLocalUserId(), false);
|
||||
DI::page()['aside'] .= Widget::networks($module, !self::$forumContactId ? self::$network : '');
|
||||
DI::page()['aside'] .= Widget::networks($module, !self::$groupContactId ? self::$network : '');
|
||||
DI::page()['aside'] .= Widget\SavedSearches::getHTML(DI::args()->getQueryString());
|
||||
DI::page()['aside'] .= Widget::fileAs('filed', '');
|
||||
|
||||
@@ -119,9 +119,9 @@ class Network extends BaseModule
|
||||
|
||||
$content = '';
|
||||
|
||||
if (self::$forumContactId) {
|
||||
// If self::$forumContactId belongs to a community forum or a private group, add a mention to the status editor
|
||||
$condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY];
|
||||
if (self::$groupContactId) {
|
||||
// If self::$groupContactId belongs to a community group or a private group, add a mention to the status editor
|
||||
$condition = ["`id` = ? AND `contact-type` = ?", self::$groupContactId, Contact::TYPE_COMMUNITY];
|
||||
$contact = DBA::selectFirst('contact', ['addr'], $condition);
|
||||
if (!empty($contact['addr'])) {
|
||||
$content = '!' . $contact['addr'];
|
||||
@@ -136,8 +136,8 @@ class Network extends BaseModule
|
||||
}
|
||||
|
||||
$allowedCids = [];
|
||||
if (self::$forumContactId) {
|
||||
$allowedCids[] = (int) self::$forumContactId;
|
||||
if (self::$groupContactId) {
|
||||
$allowedCids[] = (int) self::$groupContactId;
|
||||
} elseif (self::$network) {
|
||||
$condition = [
|
||||
'uid' => DI::userSession()->getLocalUserId(),
|
||||
@@ -160,9 +160,9 @@ class Network extends BaseModule
|
||||
}
|
||||
|
||||
$x = [
|
||||
'lockstate' => self::$circleId || self::$forumContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
|
||||
'lockstate' => self::$circleId || self::$groupContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
|
||||
'acl' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true, $default_permissions),
|
||||
'bang' => ((self::$circleId || self::$forumContactId || self::$network) ? '!' : ''),
|
||||
'bang' => ((self::$circleId || self::$groupContactId || self::$network) ? '!' : ''),
|
||||
'content' => $content,
|
||||
];
|
||||
|
||||
@@ -178,8 +178,8 @@ class Network extends BaseModule
|
||||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), [
|
||||
'$title' => DI::l10n()->t('Circle: %s', $circle['name'])
|
||||
]) . $o;
|
||||
} elseif (self::$forumContactId) {
|
||||
$contact = Contact::getById(self::$forumContactId);
|
||||
} elseif (self::$groupContactId) {
|
||||
$contact = Contact::getById(self::$groupContactId);
|
||||
if (DBA::isResult($contact)) {
|
||||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('contact/list.tpl'), [
|
||||
'contacts' => [ModuleContact::getContactTemplateVars($contact)],
|
||||
@@ -307,7 +307,7 @@ class Network extends BaseModule
|
||||
{
|
||||
self::$circleId = $this->parameters['circle_id'] ?? 0;
|
||||
|
||||
self::$forumContactId = $this->parameters['contact_id'] ?? 0;
|
||||
self::$groupContactId = $this->parameters['contact_id'] ?? 0;
|
||||
|
||||
self::$selectedTab = self::getTimelineOrderBySession(DI::userSession(), DI::pConfig());
|
||||
|
||||
@@ -413,10 +413,10 @@ class Network extends BaseModule
|
||||
|
||||
if (self::$circleId) {
|
||||
$conditionStrings = DBA::mergeConditions($conditionStrings, ["`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", self::$circleId]);
|
||||
} elseif (self::$forumContactId) {
|
||||
} elseif (self::$groupContactId) {
|
||||
$conditionStrings = DBA::mergeConditions($conditionStrings,
|
||||
["((`contact-id` = ?) OR `uri-id` IN (SELECT `parent-uri-id` FROM `post-user-view` WHERE (`contact-id` = ? AND `gravity` = ? AND `vid` = ? AND `uid` = ?)))",
|
||||
self::$forumContactId, self::$forumContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]);
|
||||
self::$groupContactId, self::$groupContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]);
|
||||
}
|
||||
|
||||
// Currently only the order modes "received" and "commented" are in use
|
||||
@@ -479,7 +479,7 @@ class Network extends BaseModule
|
||||
// We aren't going to try and figure out at the item, circle, and page
|
||||
// level which items you've seen and which you haven't. If you're looking
|
||||
// at the top level network page just mark everything seen.
|
||||
if (!self::$circleId && !self::$forumContactId && !self::$star && !self::$mention) {
|
||||
if (!self::$circleId && !self::$groupContactId && !self::$star && !self::$mention) {
|
||||
$condition = ['unseen' => true, 'uid' => DI::userSession()->getLocalUserId()];
|
||||
self::setItemsSeenByCondition($condition);
|
||||
} elseif (!empty($parents)) {
|
||||
|
||||
@@ -118,15 +118,15 @@ abstract class BaseUsers extends BaseModeration
|
||||
$page_types = [
|
||||
User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'),
|
||||
User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'),
|
||||
User::PAGE_FLAGS_COMMUNITY => $this->t('Public Forum'),
|
||||
User::PAGE_FLAGS_COMMUNITY => $this->t('Public Group'),
|
||||
User::PAGE_FLAGS_FREELOVE => $this->t('Automatic Friend Page'),
|
||||
User::PAGE_FLAGS_PRVGROUP => $this->t('Private Forum')
|
||||
User::PAGE_FLAGS_PRVGROUP => $this->t('Private Group')
|
||||
];
|
||||
$account_types = [
|
||||
User::ACCOUNT_TYPE_PERSON => $this->t('Personal Page'),
|
||||
User::ACCOUNT_TYPE_ORGANISATION => $this->t('Organisation Page'),
|
||||
User::ACCOUNT_TYPE_NEWS => $this->t('News Page'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Forum'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Group'),
|
||||
User::ACCOUNT_TYPE_RELAY => $this->t('Relay'),
|
||||
];
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@ class Summary extends BaseModeration
|
||||
$accounts = [
|
||||
[$this->t('Normal Account'), 0],
|
||||
[$this->t('Automatic Follower Account'), 0],
|
||||
[$this->t('Public Forum Account'), 0],
|
||||
[$this->t('Public Group Account'), 0],
|
||||
[$this->t('Automatic Friend Account'), 0],
|
||||
[$this->t('Blog Account'), 0],
|
||||
[$this->t('Private Forum Account'), 0]
|
||||
[$this->t('Private Group Account'), 0]
|
||||
];
|
||||
|
||||
$users = 0;
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace Friendica\Module\Notifications;
|
||||
use Friendica\App;
|
||||
use Friendica\BaseModule;
|
||||
use Friendica\Contact\Introduction\Repository\Introduction;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Core\Cache\Capability\ICanCache;
|
||||
use Friendica\Core\Cache\Enum\Duration;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
@@ -109,14 +109,14 @@ class Ping extends BaseModule
|
||||
$register_count = 0;
|
||||
$sysnotify_count = 0;
|
||||
$circles_unseen = [];
|
||||
$forums_unseen = [];
|
||||
$groups_unseen = [];
|
||||
|
||||
$event_count = 0;
|
||||
$today_event_count = 0;
|
||||
$birthday_count = 0;
|
||||
$today_birthday_count = 0;
|
||||
|
||||
// Suppress notification display for forum accounts
|
||||
// Suppress notification display for group accounts
|
||||
if ($this->session->getLocalUserId() && $this->session->get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
|
||||
if ($this->pconfig->get($this->session->getLocalUserId(), 'system', 'detailed_notif')) {
|
||||
$notifications = $this->notificationRepo->selectDetailedForUser($this->session->getLocalUserId());
|
||||
@@ -160,9 +160,9 @@ class Ping extends BaseModule
|
||||
}
|
||||
}
|
||||
|
||||
foreach (ForumManager::countUnseenItems() as $forum_count) {
|
||||
if ($forum_count['count'] > 0) {
|
||||
$forums_unseen[] = $forum_count;
|
||||
foreach (GroupManager::countUnseenItems() as $group_count) {
|
||||
if ($group_count['count'] > 0) {
|
||||
$groups_unseen[] = $group_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -290,7 +290,7 @@ class Ping extends BaseModule
|
||||
$data['birthdays'] = $birthday_count;
|
||||
$data['birthdays-today'] = $today_birthday_count;
|
||||
$data['circles'] = $circles_unseen;
|
||||
$data['forums'] = $forums_unseen;
|
||||
$data['groups'] = $groups_unseen;
|
||||
$data['notification'] = ($notification_count < 50) ? $notification_count : '49+';
|
||||
|
||||
$data['notifications'] = $navNotifications;
|
||||
|
||||
@@ -188,7 +188,7 @@ class Conversations extends BaseProfile
|
||||
$condition = DBA::mergeConditions($condition, ["`received` >= ?", DateTimeFormat::convert($datequery2, 'UTC', $this->app->getTimeZone())]);
|
||||
}
|
||||
|
||||
// Does the profile page belong to a forum?
|
||||
// Does the profile page belong to a group?
|
||||
// If not then we can improve the performance with an additional condition
|
||||
if ($profile['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
$condition = DBA::mergeConditions($condition, ['contact-id' => $profile['id']]);
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Friendica\Module\Profile;
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Content\Feature;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Content\Nav;
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
@@ -254,12 +254,12 @@ class Profile extends BaseProfile
|
||||
);
|
||||
}
|
||||
|
||||
//show subscribed forum if it is enabled in the usersettings
|
||||
//show subscribed group if it is enabled in the usersettings
|
||||
if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) {
|
||||
$custom_fields += self::buildField(
|
||||
'forumlist',
|
||||
$this->t('Forums:'),
|
||||
ForumManager::profileAdvanced($profile['uid'])
|
||||
'group_list',
|
||||
$this->t('Groups:'),
|
||||
GroupManager::profileAdvanced($profile['uid'])
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class Acl extends BaseModule
|
||||
const TYPE_MENTION_CONTACT = 'c';
|
||||
const TYPE_MENTION_CIRCLE = 'g';
|
||||
const TYPE_MENTION_CONTACT_CIRCLE = '';
|
||||
const TYPE_MENTION_FORUM = 'f';
|
||||
const TYPE_MENTION_GROUP = 'f';
|
||||
const TYPE_PRIVATE_MESSAGE = 'm';
|
||||
const TYPE_ANY_CONTACT = 'a';
|
||||
|
||||
@@ -100,7 +100,7 @@ class Acl extends BaseModule
|
||||
'nick' => $contact['addr'] ?: $contact['url'],
|
||||
'network' => $contact['network'],
|
||||
'link' => $contact['url'],
|
||||
'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ class Acl extends BaseModule
|
||||
]);
|
||||
break;
|
||||
|
||||
case self::TYPE_MENTION_FORUM:
|
||||
case self::TYPE_MENTION_GROUP:
|
||||
$condition = DBA::mergeConditions($condition,
|
||||
["NOT `self` AND NOT `blocked` AND `notify` != ? AND `contact-type` = ?", '', Contact::TYPE_COMMUNITY
|
||||
]);
|
||||
@@ -205,7 +205,7 @@ class Acl extends BaseModule
|
||||
'id' => intval($circle['id']),
|
||||
'uids' => array_map('intval', explode(',', $circle['uids'])),
|
||||
'link' => '',
|
||||
'forum' => '0'
|
||||
'group' => '0'
|
||||
];
|
||||
}
|
||||
if ((count($resultCircles) > 0) && ($search == '')) {
|
||||
@@ -218,7 +218,7 @@ class Acl extends BaseModule
|
||||
$contacts = Contact::selectToArray([], $condition, ['order' => ['name']]);
|
||||
}
|
||||
|
||||
$forums = [];
|
||||
$groups = [];
|
||||
foreach ($contacts as $contact) {
|
||||
$entry = [
|
||||
'type' => self::TYPE_MENTION_CONTACT,
|
||||
@@ -229,21 +229,21 @@ class Acl extends BaseModule
|
||||
'link' => $contact['url'],
|
||||
'nick' => htmlentities(($contact['attag'] ?? '') ?: $contact['nick']),
|
||||
'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']),
|
||||
'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
];
|
||||
if ($entry['forum']) {
|
||||
$forums[] = $entry;
|
||||
if ($entry['group']) {
|
||||
$groups[] = $entry;
|
||||
} else {
|
||||
$resultContacts[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
if ($forums) {
|
||||
if ($groups) {
|
||||
if ($search == '') {
|
||||
$forums[] = ['separator' => true];
|
||||
$groups[] = ['separator' => true];
|
||||
}
|
||||
|
||||
$resultContacts = array_merge($forums, $resultContacts);
|
||||
$resultContacts = array_merge($groups, $resultContacts);
|
||||
}
|
||||
|
||||
$resultItems = array_merge($resultCircles, $resultContacts);
|
||||
@@ -285,7 +285,7 @@ class Acl extends BaseModule
|
||||
'link' => $contact['url'],
|
||||
'nick' => htmlentities(($contact['nick'] ?? '') ?: $contact['addr']),
|
||||
'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']),
|
||||
'forum' => $contact['forum']
|
||||
'group' => $contact['forum']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ class Index extends BaseSearch
|
||||
break;
|
||||
case 'contacts':
|
||||
return self::performContactSearch($search, '@');
|
||||
case 'forums':
|
||||
case 'groups':
|
||||
return self::performContactSearch($search, '!');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,7 +452,7 @@ class Account extends BaseSettings
|
||||
$pagetype = Renderer::replaceMacros($pageset_tpl, [
|
||||
'$account_types' => DI::l10n()->t("Account Types"),
|
||||
'$user' => DI::l10n()->t("Personal Page Subtypes"),
|
||||
'$community' => DI::l10n()->t("Community Forum Subtypes"),
|
||||
'$community' => DI::l10n()->t("Community Group Subtypes"),
|
||||
'$account_type' => $user['account-type'],
|
||||
'$type_person' => User::ACCOUNT_TYPE_PERSON,
|
||||
'$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION,
|
||||
@@ -481,7 +481,7 @@ class Account extends BaseSettings
|
||||
],
|
||||
'$account_community' => [
|
||||
'account-type',
|
||||
DI::l10n()->t('Community Forum'),
|
||||
DI::l10n()->t('Community Group'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY,
|
||||
DI::l10n()->t('Account for community discussions.'),
|
||||
$user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY
|
||||
@@ -502,7 +502,7 @@ class Account extends BaseSettings
|
||||
],
|
||||
'$page_community' => [
|
||||
'page-flags',
|
||||
DI::l10n()->t('Public Forum'),
|
||||
DI::l10n()->t('Public Group'),
|
||||
User::PAGE_FLAGS_COMMUNITY,
|
||||
DI::l10n()->t('Automatically approves all contact requests.'),
|
||||
$user['page-flags'] == User::PAGE_FLAGS_COMMUNITY
|
||||
@@ -516,7 +516,7 @@ class Account extends BaseSettings
|
||||
],
|
||||
'$page_prvgroup' => [
|
||||
'page-flags',
|
||||
DI::l10n()->t('Private Forum [Experimental]'),
|
||||
DI::l10n()->t('Private Group [Experimental]'),
|
||||
User::PAGE_FLAGS_PRVGROUP,
|
||||
DI::l10n()->t('Requires manual approval of contact requests.'),
|
||||
$user['page-flags'] == User::PAGE_FLAGS_PRVGROUP
|
||||
|
||||
@@ -242,7 +242,7 @@ class Notify extends BaseRepository
|
||||
return false;
|
||||
}
|
||||
|
||||
// There is no need to create notifications for forum accounts
|
||||
// There is no need to create notifications for group accounts
|
||||
if ($user['account-type'] == Model\User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -925,7 +925,7 @@ class Post
|
||||
|
||||
if ($conv) {
|
||||
// This will allow us to comment on wall-to-wall items owned by our friends
|
||||
// and community forums even if somebody else wrote the post.
|
||||
// and community groups even if somebody else wrote the post.
|
||||
// bug #517 - this fixes for conversation owner
|
||||
if ($conv->getMode() == 'profile' && $conv->getProfileOwner() == DI::userSession()->getLocalUserId()) {
|
||||
return true;
|
||||
|
||||
@@ -52,8 +52,8 @@ use Friendica\Util\JsonLD;
|
||||
* - Polling the outboxes for missing content?
|
||||
*
|
||||
* Missing parts from DFRN:
|
||||
* - Public Forum
|
||||
* - Private Forum
|
||||
* - Public Group
|
||||
* - Private Group
|
||||
* - Relocation
|
||||
*/
|
||||
class ActivityPub
|
||||
|
||||
@@ -415,7 +415,7 @@ class Processor
|
||||
$item['post-type'] = Item::PT_NOTE;
|
||||
}
|
||||
|
||||
$item['isForum'] = false;
|
||||
$item['isGroup'] = false;
|
||||
|
||||
if (!empty($activity['thread-completion'])) {
|
||||
if ($activity['thread-completion'] != $item['owner-id']) {
|
||||
@@ -434,7 +434,7 @@ class Processor
|
||||
$item['owner-id'] = $item['author-id'];
|
||||
} else {
|
||||
$actor = APContact::getByURL($item['owner-link'], false);
|
||||
$item['isForum'] = ($actor['type'] ?? 'Person') == 'Group';
|
||||
$item['isGroup'] = ($actor['type'] ?? 'Person') == 'Group';
|
||||
}
|
||||
|
||||
$item['uri'] = $activity['id'];
|
||||
@@ -1059,7 +1059,7 @@ class Processor
|
||||
$item['causer-id'] = ($item['gravity'] == Item::GRAVITY_PARENT) ? $item['owner-id'] : $item['author-id'];
|
||||
}
|
||||
|
||||
if ($item['isForum'] ?? false) {
|
||||
if ($item['isGroup'] ?? false) {
|
||||
$item['contact-id'] = Contact::getIdForURL($activity['actor'], $receiver);
|
||||
} else {
|
||||
$item['contact-id'] = Contact::getIdForURL($activity['author'], $receiver);
|
||||
@@ -1075,7 +1075,7 @@ class Processor
|
||||
}
|
||||
|
||||
if (($receiver != 0) && ($item['gravity'] == Item::GRAVITY_PARENT) && !in_array($item['post-reason'], [Item::PR_FOLLOWER, Item::PR_TAG, item::PR_TO, Item::PR_CC, Item::PR_AUDIENCE])) {
|
||||
if (!($item['isForum'] ?? false)) {
|
||||
if (!($item['isGroup'] ?? false)) {
|
||||
if ($item['post-reason'] == Item::PR_BCC) {
|
||||
Logger::info('Top level post via BCC from a non sharer, ignoring', ['uid' => $receiver, 'contact' => $item['contact-id'], 'url' => $item['uri']]);
|
||||
continue;
|
||||
@@ -1089,16 +1089,16 @@ class Processor
|
||||
}
|
||||
}
|
||||
|
||||
$is_forum = false;
|
||||
$isGroup = false;
|
||||
$user = User::getById($receiver, ['account-type']);
|
||||
if (!empty($user['account-type'])) {
|
||||
$is_forum = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY);
|
||||
$isGroup = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY);
|
||||
}
|
||||
|
||||
if ((DI::pConfig()->get($receiver, 'system', 'accept_only_sharer') == Item::COMPLETION_NONE)
|
||||
&& ((!$is_forum && !($item['isForum'] ?? false) && ($activity['type'] != 'as:Announce'))
|
||||
&& ((!$isGroup && !($item['isGroup'] ?? false) && ($activity['type'] != 'as:Announce'))
|
||||
|| !Contact::isSharingByURL($activity['actor'], $receiver))) {
|
||||
Logger::info('Actor is a non sharer, is no forum or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]);
|
||||
Logger::info('Actor is a non sharer, is no group or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1141,7 +1141,7 @@ class Processor
|
||||
// Store send a follow request for every reshare - but only when the item had been stored
|
||||
if ($stored && ($item['private'] != Item::PRIVATE) && ($item['gravity'] == Item::GRAVITY_PARENT) && !empty($item['author-link']) && ($item['author-link'] != $item['owner-link'])) {
|
||||
$author = APContact::getByURL($item['owner-link'], false);
|
||||
// We send automatic follow requests for reshared messages. (We don't need though for forum posts)
|
||||
// We send automatic follow requests for reshared messages. (We don't need though for group posts)
|
||||
if ($author['type'] != 'Group') {
|
||||
Logger::info('Send follow request', ['uri' => $item['uri'], 'stored' => $stored, 'to' => $item['author-link']]);
|
||||
ActivityPub\Transmitter::sendFollowObject($item['uri'], $item['author-link']);
|
||||
|
||||
@@ -1098,7 +1098,7 @@ class Receiver
|
||||
if (!empty($actor)) {
|
||||
$profile = APContact::getByURL($actor);
|
||||
$followers = $profile['followers'] ?? '';
|
||||
$is_forum = ($profile['type'] ?? '') == 'Group';
|
||||
$isGroup = ($profile['type'] ?? '') == 'Group';
|
||||
if ($push) {
|
||||
Contact::updateByUrlIfNeeded($actor);
|
||||
}
|
||||
@@ -1106,7 +1106,7 @@ class Receiver
|
||||
} else {
|
||||
Logger::info('Empty actor', ['activity' => $activity]);
|
||||
$followers = '';
|
||||
$is_forum = false;
|
||||
$isGroup = false;
|
||||
}
|
||||
|
||||
// We have to prevent false follower assumptions upon thread completions
|
||||
@@ -1129,7 +1129,7 @@ class Receiver
|
||||
}
|
||||
|
||||
// Fetch the receivers for the public and the followers collection
|
||||
if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$is_forum)) && !empty($actor)) {
|
||||
if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$isGroup)) && !empty($actor)) {
|
||||
$receivers = self::getReceiverForActor($actor, $tags, $receivers, $follower_target, $profile);
|
||||
continue;
|
||||
}
|
||||
@@ -1148,7 +1148,7 @@ class Receiver
|
||||
$condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND],
|
||||
'network' => $networks, 'archive' => false, 'pending' => false, 'uid' => $contact['uid']];
|
||||
|
||||
// Forum posts are only accepted from forum contacts
|
||||
// Group posts are only accepted from group contacts
|
||||
if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) {
|
||||
$condition['rel'] = [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER];
|
||||
}
|
||||
|
||||
@@ -492,13 +492,13 @@ class Transmitter
|
||||
* Returns an array with permissions of the thread parent of the given item array
|
||||
*
|
||||
* @param array $item
|
||||
* @param bool $is_forum_thread
|
||||
* @param bool $is_group_thread
|
||||
*
|
||||
* @return array with permissions
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
*/
|
||||
private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_forum_thread): array
|
||||
private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_group_thread): array
|
||||
{
|
||||
if (empty($item['thr-parent-id'])) {
|
||||
return [];
|
||||
@@ -528,7 +528,7 @@ class Transmitter
|
||||
$type = [Tag::TO => 'to', Tag::CC => 'cc', Tag::BTO => 'bto', Tag::BCC => 'bcc'];
|
||||
foreach (Tag::getByURIId($item['thr-parent-id'], [Tag::TO, Tag::CC, Tag::BTO, Tag::BCC]) as $receiver) {
|
||||
if (!empty($parent_profile['followers']) && $receiver['url'] == $parent_profile['followers'] && !empty($item_profile['followers'])) {
|
||||
if (!$is_forum_thread) {
|
||||
if (!$is_group_thread) {
|
||||
$permissions[$type[$receiver['type']]][] = $item_profile['followers'];
|
||||
}
|
||||
} elseif (!in_array($receiver['url'], $exclude)) {
|
||||
@@ -573,7 +573,7 @@ class Transmitter
|
||||
}
|
||||
|
||||
$always_bcc = false;
|
||||
$is_forum = false;
|
||||
$is_group = false;
|
||||
$follower = '';
|
||||
|
||||
// Check if we should always deliver our stuff via BCC
|
||||
@@ -581,7 +581,7 @@ class Transmitter
|
||||
$owner = User::getOwnerDataById($item['uid']);
|
||||
if (!empty($owner)) {
|
||||
$always_bcc = $owner['hide-friends'];
|
||||
$is_forum = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve'];
|
||||
$is_group = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve'];
|
||||
|
||||
$profile = APContact::getByURL($owner['url'], false);
|
||||
$follower = $profile['followers'] ?? '';
|
||||
@@ -595,9 +595,9 @@ class Transmitter
|
||||
$parent = Post::selectFirst(['causer-link', 'post-reason'], ['id' => $item['parent']]);
|
||||
if (!empty($parent) && ($parent['post-reason'] == Item::PR_ANNOUNCEMENT) && !empty($parent['causer-link'])) {
|
||||
$profile = APContact::getByURL($parent['causer-link'], false);
|
||||
$is_forum_thread = isset($profile['type']) && $profile['type'] == 'Group';
|
||||
$is_group_thread = isset($profile['type']) && $profile['type'] == 'Group';
|
||||
} else {
|
||||
$is_forum_thread = false;
|
||||
$is_group_thread = false;
|
||||
}
|
||||
|
||||
if (self::isAnnounce($item) || self::isAPPost($last_id)) {
|
||||
@@ -619,7 +619,7 @@ class Transmitter
|
||||
$exclusive = false;
|
||||
$mention = false;
|
||||
|
||||
if ($is_forum_thread) {
|
||||
if ($is_group_thread) {
|
||||
foreach (Tag::getByURIId($item['parent-uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $term) {
|
||||
$profile = APContact::getByURL($term['url'], false);
|
||||
if (!empty($profile) && ($profile['type'] == 'Group')) {
|
||||
@@ -644,7 +644,7 @@ class Transmitter
|
||||
$data['cc'][] = $announce['actor']['url'];
|
||||
}
|
||||
|
||||
$data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_forum_thread));
|
||||
$data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_group_thread));
|
||||
|
||||
// Check if the item is completely public or unlisted
|
||||
if ($item['private'] == Item::PUBLIC) {
|
||||
@@ -702,7 +702,7 @@ class Transmitter
|
||||
$exclusive = false;
|
||||
}
|
||||
|
||||
if ($is_forum && !$exclusive && !empty($follower)) {
|
||||
if ($is_group && !$exclusive && !empty($follower)) {
|
||||
$data['cc'][] = $follower;
|
||||
} elseif (!$exclusive) {
|
||||
foreach ($receiver_list as $receiver) {
|
||||
@@ -739,19 +739,19 @@ class Transmitter
|
||||
$profile = APContact::getByURL($parent['owner-link'], false);
|
||||
if (!empty($profile)) {
|
||||
if ($item['gravity'] != Item::GRAVITY_PARENT) {
|
||||
// Comments to forums are directed to the forum
|
||||
// But comments to forums aren't directed to the followers collection
|
||||
// This rule is only valid when the actor isn't the forum.
|
||||
// The forum needs to transmit their content to their followers.
|
||||
// Comments to groups are directed to the group
|
||||
// But comments to groups aren't directed to the followers collection
|
||||
// This rule is only valid when the actor isn't the group.
|
||||
// The group needs to transmit their content to their followers.
|
||||
if (($profile['type'] == 'Group') && ($profile['url'] != ($actor_profile['url'] ?? ''))) {
|
||||
$data['to'][] = $profile['url'];
|
||||
} else {
|
||||
$data['cc'][] = $profile['url'];
|
||||
if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_forum_thread)) {
|
||||
if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_group_thread)) {
|
||||
$data['cc'][] = $actor_profile['followers'];
|
||||
}
|
||||
}
|
||||
} elseif (!$exclusive && !$is_forum_thread) {
|
||||
} elseif (!$exclusive && !$is_group_thread) {
|
||||
// Public thread parent post always are directed to the followers.
|
||||
if ($item['private'] != Item::PRIVATE) {
|
||||
$data['cc'][] = $actor_profile['followers'];
|
||||
@@ -885,12 +885,11 @@ class Transmitter
|
||||
{
|
||||
$inboxes = [];
|
||||
|
||||
$isforum = false;
|
||||
|
||||
$isGroup = false;
|
||||
if (!empty($item['uid'])) {
|
||||
$profile = User::getOwnerDataById($item['uid']);
|
||||
if (!empty($profile)) {
|
||||
$isforum = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY;
|
||||
$isGroup = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -920,7 +919,7 @@ class Transmitter
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($isforum && ($contact['network'] == Protocol::DFRN)) {
|
||||
if ($isGroup && ($contact['network'] == Protocol::DFRN)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -2220,8 +2220,8 @@ class DFRN
|
||||
GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN);
|
||||
}
|
||||
|
||||
// is it a public forum? Private forums aren't exposed with this method
|
||||
$forum = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()'));
|
||||
// is it a public group? Private groups aren't exposed with this method
|
||||
$group = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()'));
|
||||
|
||||
// The account type is new since 3.5.1
|
||||
if ($xpath->query('/atom:feed/dfrn:account_type')->length > 0) {
|
||||
@@ -2235,17 +2235,17 @@ class DFRN
|
||||
// Updating the public contact as well
|
||||
Contact::update(['contact-type' => $accounttype], ['uid' => 0, 'nurl' => $importer['nurl']]);
|
||||
}
|
||||
// A forum contact can either have set "forum" or "prv" - but not both
|
||||
// A group contact can either have set "forum" or "prv" - but not both
|
||||
if ($accounttype == User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
// It's a forum, so either set the public or private forum flag
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $forum, !$forum, $importer['id']];
|
||||
Contact::update(['forum' => $forum, 'prv' => !$forum], $condition);
|
||||
// It's a group, so either set the public or private forum flag
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $group, !$group, $importer['id']];
|
||||
Contact::update(['forum' => $group, 'prv' => !$group], $condition);
|
||||
|
||||
// Updating the public contact as well
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $forum, !$forum, $importer['nurl']];
|
||||
Contact::update(['forum' => $forum, 'prv' => !$forum], $condition);
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $group, !$group, $importer['nurl']];
|
||||
Contact::update(['forum' => $group, 'prv' => !$group], $condition);
|
||||
} else {
|
||||
// It's not a forum, so remove the flags
|
||||
// It's not a group, so remove the flags
|
||||
$condition = ['(`forum` OR `prv`) AND `id` = ?', $importer['id']];
|
||||
Contact::update(['forum' => false, 'prv' => false], $condition);
|
||||
|
||||
@@ -2253,13 +2253,13 @@ class DFRN
|
||||
$condition = ['(`forum` OR `prv`) AND `uid` = 0 AND `nurl` = ?', $importer['nurl']];
|
||||
Contact::update(['forum' => false, 'prv' => false], $condition);
|
||||
}
|
||||
} elseif ($forum != $importer['forum']) { // Deprecated since 3.5.1
|
||||
$condition = ['`forum` != ? AND `id` = ?', $forum, $importer['id']];
|
||||
Contact::update(['forum' => $forum], $condition);
|
||||
} elseif ($group != $importer['forum']) { // Deprecated since 3.5.1
|
||||
$condition = ['`forum` != ? AND `id` = ?', $group, $importer['id']];
|
||||
Contact::update(['forum' => $group], $condition);
|
||||
|
||||
// Updating the public contact as well
|
||||
$condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $forum, $importer['nurl']];
|
||||
Contact::update(['forum' => $forum], $condition);
|
||||
$condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $group, $importer['nurl']];
|
||||
Contact::update(['forum' => $group], $condition);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -404,7 +404,7 @@ class Delivery
|
||||
*/
|
||||
private static function deliverDiaspora(string $cmd, array $contact, array $owner, array $items, array $target_item, bool $public_message, bool $top_level, bool $followup): bool
|
||||
{
|
||||
// We don't treat Forum posts as "wall-to-wall" to be able to post them via Diaspora
|
||||
// We don't treat group posts as "wall-to-wall" to be able to post them via Diaspora
|
||||
$walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
|
||||
|
||||
if ($public_message) {
|
||||
|
||||
@@ -36,7 +36,7 @@ class ExpireAndRemoveUsers
|
||||
{
|
||||
public static function execute()
|
||||
{
|
||||
// expire any expired regular accounts. Don't expire forums.
|
||||
// expire any expired regular accounts. Don't expire groups.
|
||||
$condition = ["NOT `account_expired` AND `account_expires_on` > ? AND `account_expires_on` < ? AND `page-flags` = ? AND `uid` != ?",
|
||||
DBA::NULL_DATETIME, DateTimeFormat::utcNow(), User::PAGE_FLAGS_NORMAL, 0];
|
||||
DBA::update('user', ['account_expired' => true], $condition);
|
||||
|
||||
@@ -167,8 +167,8 @@ class Notifier
|
||||
// Do a PuSH
|
||||
$push_notify = false;
|
||||
|
||||
// Deliver directly to a forum, don't PuSH
|
||||
$direct_forum_delivery = false;
|
||||
// Deliver directly to a group, don't PuSH
|
||||
$direct_group_delivery = false;
|
||||
|
||||
$only_ap_delivery = false;
|
||||
|
||||
@@ -249,15 +249,15 @@ class Notifier
|
||||
$relay_to_owner = false;
|
||||
}
|
||||
|
||||
// Special treatment for forum posts
|
||||
if (Item::isForumPost($target_item['uri-id'])) {
|
||||
// Special treatment for group posts
|
||||
if (Item::isGroupPost($target_item['uri-id'])) {
|
||||
$relay_to_owner = true;
|
||||
$direct_forum_delivery = true;
|
||||
$direct_group_delivery = true;
|
||||
}
|
||||
|
||||
// Avoid that comments in a forum thread are sent to OStatus
|
||||
if (Item::isForumPost($parent['uri-id'])) {
|
||||
$direct_forum_delivery = true;
|
||||
// Avoid that comments in a group thread are sent to OStatus
|
||||
if (Item::isGroupPost($parent['uri-id'])) {
|
||||
$direct_group_delivery = true;
|
||||
}
|
||||
|
||||
$exclusive_delivery = false;
|
||||
@@ -303,7 +303,7 @@ class Notifier
|
||||
}
|
||||
}
|
||||
|
||||
if ($direct_forum_delivery) {
|
||||
if ($direct_group_delivery) {
|
||||
$push_notify = false;
|
||||
}
|
||||
|
||||
@@ -793,11 +793,11 @@ class Notifier
|
||||
|
||||
$uid = $target_item['contact-uid'] ?: $target_item['uid'];
|
||||
|
||||
// Update the locally stored follower list when we deliver to a forum
|
||||
// Update the locally stored follower list when we deliver to a group
|
||||
foreach (Tag::getByURIId($target_item['uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
$target_contact = Contact::getByURL(Strings::normaliseLink($tag['url']), null, [], $uid);
|
||||
if ($target_contact && $target_contact['contact-type'] == Contact::TYPE_COMMUNITY && $target_contact['manually-approve']) {
|
||||
Circle::updateMembersForForum($target_contact['id']);
|
||||
Circle::updateMembersForGroup($target_contact['id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user