will be shut down on June 1, 2019. At that point this instance will be unreachable and all data will be irrevocably deleted. More details at

Commit 8d44b6a5 authored by Brion Vibber's avatar Brion Vibber

Fix bug 1962: deleteuser.php regression when OpenID plugin not enabled

The User_openid data object was explicitly listed as a related field to delete from in User::delete(); this class doesn't exist anymore by default since OpenID was broken out to a plugin.
Added UserDeleteRelated event for plugins to add related tables to delete from at user delete time.
parent 5c428f8a
......@@ -489,3 +489,6 @@ ChangePassword: Handle a password change request
- $newpassword: the desired new password
- &$errormsg: set this to an error message if the password could not be changed. If the password was changed, leave this as false
UserDeleteRelated: Specify additional tables to delete entries from when deleting users
- $user: User object
- &$related: array of DB_DataObject class names to delete entries on matching user_id.
......@@ -719,16 +719,18 @@ class User extends Memcached_DataObject
function delete()
$profile = $this->getProfile();
if ($profile) {
$related = array('Fave',
Event::handle('UserDeleteRelated', array($this, &$related));
foreach ($related as $cls) {
$inst = new $cls();
......@@ -298,4 +298,10 @@ class OpenIDPlugin extends Plugin
new ColumnDef('modified', 'timestamp')));
return true;
function onUserDeleteRelated($user, &$tables)
$tables[] = 'User_openid';
return true;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment