X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FFollowEveryone%2FFollowEveryonePlugin.php;h=58aae85ed0221cb8d849f4c5166775c88cf921bc;hb=867cb225b630aa69fe8a54f514797e1b825dc0f5;hp=d3e7fb87c5c6965a16a935be06de21eaf393fb5d;hpb=e5a3b973b8cfa5fe0935a9e3fd056f6b4c477ed0;p=quix0rs-gnu-social.git diff --git a/plugins/FollowEveryone/FollowEveryonePlugin.php b/plugins/FollowEveryone/FollowEveryonePlugin.php index d3e7fb87c5..58aae85ed0 100644 --- a/plugins/FollowEveryone/FollowEveryonePlugin.php +++ b/plugins/FollowEveryone/FollowEveryonePlugin.php @@ -46,7 +46,6 @@ if (!defined('STATUSNET')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ - class FollowEveryonePlugin extends Plugin { /** @@ -56,24 +55,23 @@ class FollowEveryonePlugin extends Plugin * 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 + * @param Profile $profile The new user's profile * * @return boolean hook value - * */ - - function onEndUserRegister(&$newProfile, &$newUser) + public function onEndUserRegister(Profile $profile) { $otherUser = new User(); - $otherUser->whereAdd('id != ' . $newUser->id); + $otherUser->whereAdd('id != ' . $profile->id); if ($otherUser->find()) { while ($otherUser->fetch()) { $otherProfile = $otherUser->getProfile(); try { - Subscription::start($otherProfile, $newProfile); - Subscription::start($newProfile, $otherProfile); + if (User_followeveryone_prefs::followEveryone($otherUser->id)) { + Subscription::start($otherProfile, $profile); + } + Subscription::start($profile, $otherProfile); } catch (Exception $e) { common_log(LOG_WARNING, $e->getMessage()); continue; @@ -81,6 +79,81 @@ class FollowEveryonePlugin extends Plugin } } + $ufep = new User_followeveryone_prefs(); + + $ufep->user_id = $profile->id; + $ufep->followeveryone = true; + + $ufep->insert(); + + return true; + } + + /** + * Database schema setup + * + * Plugins can add their own tables to the StatusNet database. Plugins + * should use StatusNet's schema interface to add or delete tables. The + * ensureTable() method provides an easy way to ensure a table's structure + * and availability. + * + * By default, the schema is checked every time StatusNet is run (say, when + * a Web page is hit). Admins can configure their systems to only check the + * schema when the checkschema.php script is run, greatly improving performance. + * However, they need to remember to run that script after installing or + * upgrading a plugin! + * + * @see Schema + * @see ColumnDef + * + * @return boolean hook value; true means continue processing, false means stop. + */ + function onCheckSchema() + { + $schema = Schema::get(); + + // For storing user-submitted flags on profiles + $schema->ensureTable('user_followeveryone_prefs', User_followeveryone_prefs::schemaDef()); + + return true; + } + + /** + * Show a checkbox on the profile form to ask whether to follow everyone + * + * @param Action $action The action being executed + * + * @return boolean hook value + */ + function onEndProfileFormData($action) + { + $user = common_current_user(); + + $action->elementStart('li'); + // TRANS: Checkbox label in form for profile settings. + $action->checkbox('followeveryone', _m('Follow everyone'), + ($action->arg('followeveryone')) ? + $action->arg('followeveryone') : + User_followeveryone_prefs::followEveryone($user->id)); + $action->elementEnd('li'); + + return true; + } + + /** + * Save checkbox value for following everyone + * + * @param Action $action The action being executed + * + * @return boolean hook value + */ + function onEndProfileSaveForm($action) + { + $user = common_current_user(); + + User_followeveryone_prefs::savePref($user->id, + $action->boolean('followeveryone')); + return true; } @@ -92,14 +165,14 @@ class FollowEveryonePlugin extends Plugin * @return boolean hook value * */ - - function onPluginVersion(&$versions) + function onPluginVersion(array &$versions) { $versions[] = array('name' => 'FollowEveryone', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Evan Prodromou', - 'homepage' => 'http://status.net/wiki/Plugin:FollowEveryone', + 'homepage' => 'https://git.gnu.io/gnu/gnu-social/tree/master/plugins/FollowEveryone', 'rawdescription' => + // TRANS: Plugin description. _m('New users follow everyone at registration and are followed in return.')); return true; }