/**
  * Set users' fields from SAML attributes.
  * If the user does not exist in the MediaWiki database,
  * it is created. wgSamlCreateUser is not respected.
  *
  * @param User $user the user
  * @param string[][] $attr SAML attributes
  */
 protected static function updateUser(User $user, $attr)
 {
     global $wgSamlRealnameAttr;
     global $wgSamlUsernameAttr;
     global $wgSamlMailAttr;
     global $wgContLang;
     $changed = false;
     if (isset($wgSamlRealnameAttr) && isset($attr[$wgSamlRealnameAttr]) && $attr[$wgSamlRealnameAttr] && $user->getRealName() !== reset($attr[$wgSamlRealnameAttr])) {
         $changed = true;
         $user->setRealName(reset($attr[$wgSamlRealnameAttr]));
     }
     if ($attr[$wgSamlMailAttr] && $user->getEmail() !== reset($attr[$wgSamlMailAttr])) {
         $changed = true;
         $user->setEmail(reset($attr[$wgSamlMailAttr]));
         $user->ConfirmEmail();
     }
     if (!$user->getId()) {
         $user->setName($wgContLang->ucfirst(reset($attr[$wgSamlUsernameAttr])));
         $user->setPassword(null);
         // prevent manual login until reset
         $user->addToDatabase();
     } elseif ($changed) {
         $user->saveSettings();
     }
 }