X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FForceGroup%2FForceGroupPlugin.php;h=a79c9d312bbbdd88dba8f3e164c46fdb890fe890;hb=f110fc5c9a61ac666d88714b170b12f99d911b11;hp=fb98644846b8278922a06748cdfb37ab3696ffc2;hpb=a2090ecc97f93894ba6f833acde5f44058988510;p=quix0rs-gnu-social.git diff --git a/plugins/ForceGroup/ForceGroupPlugin.php b/plugins/ForceGroup/ForceGroupPlugin.php index fb98644846..a79c9d312b 100644 --- a/plugins/ForceGroup/ForceGroupPlugin.php +++ b/plugins/ForceGroup/ForceGroupPlugin.php @@ -33,11 +33,11 @@ class ForceGroupPlugin extends Plugin * List by local nickname. */ public $post = array(); - + /** * New user registrations will automatically join these groups on * registration. They're not prevented from leaving, however. - * + * * List by local nickname. */ public $join = array(); @@ -52,6 +52,24 @@ class ForceGroupPlugin extends Plugin function onStartNoticeDistribute($notice) { $profile = $notice->getProfile(); + + $isRemote = !(User::getKV('id', $profile->id)); + if ($isRemote) { + /* + * Notices from remote users on other sites + * will normally not end up here unless they're + * specifically directed here, e.g.: via explicit + * post to a remote (to them) group. But remote + * notices can also be `pulled in' as a result of + * local users subscribing to the remote user; + * from the remote user's perspective, this results + * in group-forcing appearing effectively random. + * So let's be consistent, and just never force + * incoming remote notices into a ForceGroup: + */ + return true; + } + foreach ($this->post as $nickname) { $group = User_group::getForNickname($nickname); if ($group && $profile->isMember($group)) { @@ -61,22 +79,18 @@ class ForceGroupPlugin extends Plugin return true; } - function onEndUserRegister($profile, $user) + public function onEndUserRegister(Profile $profile) { - $profile = $user->getProfile(); foreach ($this->join as $nickname) { $group = User_group::getForNickname($nickname); if ($group && !$profile->isMember($group)) { try { - if (Event::handle('StartJoinGroup', array($group, $user))) { - Group_member::join($group->id, $user->id); - Event::handle('EndJoinGroup', array($group, $user)); - } + $profile->joinGroup($group); } catch (Exception $e) { // TRANS: Server exception. // TRANS: %1$s is a user nickname, %2$s is a group nickname. throw new ServerException(sprintf(_m('Could not join user %1$s to group %2$s.'), - $user->nickname, $group->nickname)); + $profile->nickname, $group->nickname)); } } } @@ -96,7 +110,7 @@ class ForceGroupPlugin extends Plugin $url = 'http://status.net/wiki/Plugin:ForceGroup'; $versions[] = array('name' => 'ForceGroup', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Brion Vibber', 'homepage' => $url, 'rawdescription' =>