Init the user token before adding users.
authorASchulz <aschulz@wikimedia.org>
Wed, 27 Feb 2013 00:17:58 +0000 (16:17 -0800)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 27 Feb 2013 17:28:17 +0000 (17:28 +0000)
* The DB column has garbage padding as the default value, which
  was intented to just be "". Since the the insert functions cast
  the value to a string, inserting a user without creating a token
  causes garbage to be inserted. The logic to automatically fix
  empty tokens does not trigger. This fixes createNew() to set the
  token and makes sure that addToDatabase() does.

Change-Id: I3529fe8afbc62bac37063217d5aa0179a4a6e169

includes/User.php

index de34bfc..90cb8c4 100644 (file)
@@ -3114,6 +3114,7 @@ class User {
        public static function createNew( $name, $params = array() ) {
                $user = new User;
                $user->load();
+               $user->setToken(); // init token
                if ( isset( $params['options'] ) ) {
                        $user->mOptions = $params['options'] + (array)$user->mOptions;
                        unset( $params['options'] );
@@ -3175,6 +3176,9 @@ class User {
         */
        public function addToDatabase() {
                $this->load();
+               if ( !$this->mToken ) {
+                       $this->setToken(); // init token
+               }
 
                $this->mTouched = self::newTouchedTimestamp();