From 5d56d9bb69321d95f8eee519cc186240c03249f3 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 26 Oct 2010 15:33:35 -0400 Subject: UI on profile settings page to opt out of following everyone --- plugins/FollowEveryone/FollowEveryonePlugin.php | 41 ++++++++++++++++++++++ .../FollowEveryone/User_followeveryone_prefs.php | 18 ++++++++++ 2 files changed, 59 insertions(+) diff --git a/plugins/FollowEveryone/FollowEveryonePlugin.php b/plugins/FollowEveryone/FollowEveryonePlugin.php index 67ed927ce..09afbfd8a 100644 --- a/plugins/FollowEveryone/FollowEveryonePlugin.php +++ b/plugins/FollowEveryone/FollowEveryonePlugin.php @@ -150,6 +150,47 @@ class FollowEveryonePlugin extends Plugin } } + /** + * 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', _('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; + } + /** * Provide version information about this plugin. * diff --git a/plugins/FollowEveryone/User_followeveryone_prefs.php b/plugins/FollowEveryone/User_followeveryone_prefs.php index 44375d042..d1d9b5f3f 100644 --- a/plugins/FollowEveryone/User_followeveryone_prefs.php +++ b/plugins/FollowEveryone/User_followeveryone_prefs.php @@ -145,4 +145,22 @@ class User_followeveryone_prefs extends Memcached_DataObject return (bool)$ufep->followeveryone; } } + + static function savePref($user_id, $followEveryone) + { + $ufep = self::staticGet('user_id', $user_id); + + if (empty($ufep)) { + $ufep = new User_followeveryone_prefs(); + $ufep->user_id = $user_id; + $ufep->followeveryone = $followEveryone; + $ufep->insert(); + } else { + $orig = clone($ufep); + $ufep->followeveryone = $followEveryone; + $ufep->update(); + } + + return true; + } } -- cgit v1.2.3