* 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();
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)) {
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));
}
}
}
*
* @return boolean hook value
*/
- function onPluginVersion(&$versions)
+ function onPluginVersion(array &$versions)
{
$url = 'http://status.net/wiki/Plugin:ForceGroup';
$versions[] = array('name' => 'ForceGroup',
- 'version' => STATUSNET_VERSION,
+ 'version' => GNUSOCIAL_VERSION,
'author' => 'Brion Vibber',
'homepage' => $url,
'rawdescription' =>