From a4680524a7bd8305a7e3b5f6e1e9d5467ecff384 Mon Sep 17 00:00:00 2001 From: Diogo Cordeiro Date: Sun, 4 Aug 2019 14:39:18 +0100 Subject: [PATCH] [ForceGroup] Modernized plugin and improved documentation --- plugins/ForceGroup/ForceGroupPlugin.php | 75 +++++++++++++++---------- plugins/ForceGroup/README | 11 +++- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/plugins/ForceGroup/ForceGroupPlugin.php b/plugins/ForceGroup/ForceGroupPlugin.php index 681d56332c..b3f7b053eb 100644 --- a/plugins/ForceGroup/ForceGroupPlugin.php +++ b/plugins/ForceGroup/ForceGroupPlugin.php @@ -1,40 +1,44 @@ . - */ +// This file is part of GNU social - https://www.gnu.org/software/social +// +// GNU social is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// GNU social is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with GNU social. If not, see . /** - * @package ForceGroupPlugin + * The ForceGroup plugin allows forced group memberships and allows forcing all notices + * to appear in some groups. + * + * @package ForceGroupPlugin * @maintainer Brion Vibber + * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ -if (!defined('STATUSNET')) { exit(1); } +defined('GNUSOCIAL') || die; class ForceGroupPlugin extends Plugin { const PLUGIN_VERSION = '2.0.0'; + // settings which can be set in config.php with addModule('ForceGroup', ['param'=>'value', ...]); + /** * Members of these groups will have all their posts mirrored into * the group even if they don't explicitly mention it. * * List by local nickname. */ - public $post = array(); + public $post = []; /** * New user registrations will automatically join these groups on @@ -42,16 +46,17 @@ class ForceGroupPlugin extends Plugin * * List by local nickname. */ - public $join = array(); + public $join = []; /** - * If poster is in one of the forced groups, make sure their notice + * If poster is in one of the $post groups, make sure their notice * gets saved into that group even if not explicitly mentioned. * * @param Notice $notice - * @return boolean event hook return + * @return bool event hook return + * @throws ServerException */ - function onStartNoticeDistribute($notice) + public function onStartNoticeDistribute($notice): bool { $profile = $notice->getProfile(); @@ -81,6 +86,13 @@ class ForceGroupPlugin extends Plugin return true; } + /** + * Make sure that this new user is added to all of the $join groups + * + * @param Profile $profile + * @return bool event hook return + * @throws ServerException + */ public function onEndUserRegister(Profile $profile) { foreach ($this->join as $nickname) { @@ -91,11 +103,15 @@ class ForceGroupPlugin extends Plugin } 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.'), - $profile->nickname, $group->nickname)); + throw new ServerException(sprintf( + _m('Could not join user %1$s to group %2$s.'), + $profile->nickname, + $group->nickname + )); } } } + return true; } /** @@ -105,7 +121,8 @@ class ForceGroupPlugin extends Plugin * * @param array &$versions array of version data arrays; see EVENTS.txt * - * @return boolean hook value + * @return bool hook value + * @throws Exception */ public function onPluginVersion(array &$versions): bool { @@ -116,8 +133,8 @@ class ForceGroupPlugin extends Plugin 'author' => 'Brion Vibber', 'homepage' => $url, 'rawdescription' => - // TRANS: Plugin description. - _m('Allows forced group memberships and forces all notices to appear in groups that users were forced in.')); + // TRANS: Module description. + _m('Allows forced group memberships and forces all notices to appear in groups that users were forced in.')); return true; } diff --git a/plugins/ForceGroup/README b/plugins/ForceGroup/README index f906a7950a..830742d35e 100644 --- a/plugins/ForceGroup/README +++ b/plugins/ForceGroup/README @@ -1,5 +1,5 @@ -The ForceGroup plugin allows forced group memberships and forces all notices -to appear in groups that users were forced in. +The ForceGroup plugin allows forced group memberships and allows forcing all notices +to appear in some groups. Installation ============ @@ -8,9 +8,14 @@ to the bottom of your config.php Settings ======== -none +post: Members of these groups will have all their posts mirrored into the group even if they don't explicitly mention it. +join: New user registrations will automatically join these groups on registration. They're _not_ prevented from leaving, however. Example ======= addPlugin('ForceGroup'); +Some Example Use Cases +======================= +(join) Forcing a group membership allows to have a group dedicated to your instance or some of your instance main topics. +(join + post) Allows you to federate your instance timeline \ No newline at end of file