UI on profile settings page to opt out of following everyone

This commit is contained in:
Evan Prodromou 2010-10-26 15:33:35 -04:00
parent 7a80ebeb13
commit 5d56d9bb69
2 changed files with 59 additions and 0 deletions

View File

@ -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.
*

View File

@ -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;
}
}