I am seeing some strange behavior regarding a wiki user's email address. When I set it to the empty string, either via PHP or MySQL, MediaWiki still seems to believe the old email address is still present. Any advice?
Background: We have a wiki extension that sets a user's email address if it's blank, attached to the hook UserLoginComplete. (It's intended for new users on their first login.) Basically:
// On login, make sure the user has a company email address:
function setUserEmailAddressIfBlank($user) {
if (!$user->getEmail()) {
$user->setEmail($user->getName() . '@mycompany.com');
$user->confirmEmail();
$user->saveSettings();
}
}
To test this function, I blanked the email address programmatically:
$user->setEmail('');
$user->confirmEmail();
$user->saveSettings();
Then I logged out and logged back in. My UserLoginComplete callback function ran, but... it failed the test of $user->getEmail() being empty. In fact, the value was still the old email address I just blanked.
Then I logged out and logged back in a second time. This time, $user->getEmail() was indeed empty and the rest of the function ran fine, setting the user's email address to username(a)company.com.
Can someone please explain:
1. Why the old email address was still present during the first logout & login?
2. What's the "right" way to set an email address programmatically, so this caching problem doesn't happen?
Thanks very much.
DanB