From e5a3b973b8cfa5fe0935a9e3fd056f6b4c477ed0 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 26 Oct 2010 15:10:18 -0400 Subject: Plugin to follow all new users by default --- plugins/FollowEveryone/FollowEveryonePlugin.php | 106 ++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 plugins/FollowEveryone/FollowEveryonePlugin.php diff --git a/plugins/FollowEveryone/FollowEveryonePlugin.php b/plugins/FollowEveryone/FollowEveryonePlugin.php new file mode 100644 index 000000000..d3e7fb87c --- /dev/null +++ b/plugins/FollowEveryone/FollowEveryonePlugin.php @@ -0,0 +1,106 @@ +. + * + * @category Community + * @package StatusNet + * @author Evan Prodromou + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Plugin to make all users follow each other at registration + * + * Users can unfollow afterwards if they want. + * + * @category Sample + * @package StatusNet + * @author Evan Prodromou + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class FollowEveryonePlugin extends Plugin +{ + /** + * Called when a new user is registered. + * + * We find all users, and try to subscribe them to the new user, and + * the new user to them. Exceptions (like silenced users or whatever) + * are caught, logged, and ignored. + * + * @param Profile &$newProfile The new user's profile + * @param User &$newUser The new user + * + * @return boolean hook value + * + */ + + function onEndUserRegister(&$newProfile, &$newUser) + { + $otherUser = new User(); + $otherUser->whereAdd('id != ' . $newUser->id); + + if ($otherUser->find()) { + while ($otherUser->fetch()) { + $otherProfile = $otherUser->getProfile(); + try { + Subscription::start($otherProfile, $newProfile); + Subscription::start($newProfile, $otherProfile); + } catch (Exception $e) { + common_log(LOG_WARNING, $e->getMessage()); + continue; + } + } + } + + return true; + } + + /** + * Provide version information about this plugin. + * + * @param Array &$versions Array of version data + * + * @return boolean hook value + * + */ + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'FollowEveryone', + 'version' => STATUSNET_VERSION, + 'author' => 'Evan Prodromou', + 'homepage' => 'http://status.net/wiki/Plugin:FollowEveryone', + 'rawdescription' => + _m('New users follow everyone at registration and are followed in return.')); + return true; + } +} -- cgit v1.2.3