Example #1
0
 /**
  * Adds the User object to the shared database
  *
  * @param User $User
  * @param String $password
  * @param String $email
  * @param String $realname
  *
  * @return bool success
  */
 protected function addToDatabase(User &$User, $password, $email, $realname)
 {
     wfProfileIn(__METHOD__);
     global $wgExternalSharedDB;
     $dbw = wfGetDB(DB_MASTER, [], $wgExternalSharedDB);
     try {
         $userId = null;
         $result = null;
         if (is_null($result)) {
             $dbw->insert('`user`', ['user_id' => null, 'user_name' => $User->mName, 'user_real_name' => $realname, 'user_password' => $User->mPassword, 'user_newpassword' => '', 'user_email' => $email, 'user_touched' => '', 'user_token' => '', 'user_options' => '', 'user_registration' => $dbw->timestamp($User->mRegistration), 'user_editcount' => 0, 'user_birthdate' => $User->mBirthDate], __METHOD__);
             $userId = $dbw->insertId();
         } else {
             if (!$result) {
                 throw new ExternalUserException();
             }
         }
         $User->mId = $userId;
         $User->setToken();
         $User->saveSettings();
         $dbw->commit(__METHOD__);
         wfRunHooks('ExternalUserAddUserToDatabaseComplete', [&$User]);
         \Wikia\Logger\WikiaLogger::instance()->info('HELIOS_REGISTRATION_INSERTS', ['exception' => new Exception(), 'userid' => $User->mId, 'username' => $User->mName]);
         // Clear instance cache other than user table data, which is already accurate
         $User->clearInstanceCache();
         $ret = true;
     } catch (DBQueryError $e) {
         \Wikia\Logger\WikiaLogger::instance()->info(__METHOD__, ['exception' => $e, 'username' => $User->mName]);
         $dbw->rollback(__METHOD__);
         $ret = false;
     } catch (ExternalUserException $e) {
         \Wikia\Logger\WikiaLogger::instance()->info(__METHOD__, ['exception' => $e, 'username' => $User->mName]);
         $dbw->rollback(__METHOD__);
         $ret = false;
     }
     wfProfileOut(__METHOD__);
     return $ret;
 }