flag to let users opt out of following everyone

This commit is contained in:
Evan Prodromou
2010-10-26 15:21:30 -04:00
parent e5a3b973b8
commit 7a80ebeb13
2 changed files with 215 additions and 1 deletions

View File

@@ -72,7 +72,9 @@ class FollowEveryonePlugin extends Plugin
while ($otherUser->fetch()) {
$otherProfile = $otherUser->getProfile();
try {
Subscription::start($otherProfile, $newProfile);
if (User_followeveryone_prefs::followEveryone($otherUser->id)) {
Subscription::start($otherProfile, $newProfile);
}
Subscription::start($newProfile, $otherProfile);
} catch (Exception $e) {
common_log(LOG_WARNING, $e->getMessage());
@@ -81,9 +83,73 @@ class FollowEveryonePlugin extends Plugin
}
}
$ufep = new User_followeveryone_prefs();
$ufep->user_id = $newUser->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',
array(new ColumnDef('user_id', 'integer', null,
true, 'PRI'),
new ColumnDef('followeveryone', 'tinyint', null,
false, null, 1)));
return true;
}
/**
* Load related modules when needed
*
* @param string $cls Name of the class to be loaded
*
* @return boolean hook value; true means continue processing, false means stop.
*/
function onAutoload($cls)
{
$dir = dirname(__FILE__);
switch ($cls)
{
case 'User_followeveryone_prefs':
include_once $dir . '/'.$cls.'.php';
return false;
default:
return true;
}
}
/**
* Provide version information about this plugin.
*