diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /includes/UserRightsProxy.php | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'includes/UserRightsProxy.php')
-rw-r--r-- | includes/UserRightsProxy.php | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/includes/UserRightsProxy.php b/includes/UserRightsProxy.php index 0d6b8151..6c2a5f12 100644 --- a/includes/UserRightsProxy.php +++ b/includes/UserRightsProxy.php @@ -21,6 +21,7 @@ class UserRightsProxy { $this->database = $database; $this->name = $name; $this->id = intval( $id ); + $this->newOptions = array(); } /** @@ -48,10 +49,11 @@ class UserRightsProxy { * * @param $database String: database name * @param $id Integer: user ID + * @param $ignoreInvalidDB Boolean: if true, don't check if $database is in $wgLocalDatabases * @return String: user name or false if the user doesn't exist */ - public static function whoIs( $database, $id ) { - $user = self::newFromId( $database, $id ); + public static function whoIs( $database, $id, $ignoreInvalidDB = false ) { + $user = self::newFromId( $database, $id, $ignoreInvalidDB ); if( $user ) { return $user->name; } else { @@ -64,10 +66,11 @@ class UserRightsProxy { * * @param $database String: database name * @param $id Integer: user ID + * @param $ignoreInvalidDB Boolean: if true, don't check if $database is in $wgLocalDatabases * @return UserRightsProxy or null if doesn't exist */ - public static function newFromId( $database, $id ) { - return self::newFromLookup( $database, 'user_id', intval( $id ) ); + public static function newFromId( $database, $id, $ignoreInvalidDB = false ) { + return self::newFromLookup( $database, 'user_id', intval( $id ), $ignoreInvalidDB ); } /** @@ -75,14 +78,15 @@ class UserRightsProxy { * * @param $database String: database name * @param $name String: user name + * @param $ignoreInvalidDB Boolean: if true, don't check if $database is in $wgLocalDatabases * @return UserRightsProxy or null if doesn't exist */ - public static function newFromName( $database, $name ) { - return self::newFromLookup( $database, 'user_name', $name ); + public static function newFromName( $database, $name, $ignoreInvalidDB = false ) { + return self::newFromLookup( $database, 'user_name', $name, $ignoreInvalidDB ); } - private static function newFromLookup( $database, $field, $value ) { - $db = self::getDB( $database ); + private static function newFromLookup( $database, $field, $value, $ignoreInvalidDB = false ) { + $db = self::getDB( $database, $ignoreInvalidDB ); if( $db ) { $row = $db->selectRow( 'user', array( 'user_id', 'user_name' ), @@ -102,10 +106,11 @@ class UserRightsProxy { * This may be a new connection to another database for remote users. * * @param $database String + * @param $ignoreInvalidDB Boolean: if true, don't check if $database is in $wgLocalDatabases * @return DatabaseBase or null if invalid selection */ - public static function getDB( $database ) { - global $wgLocalDatabases, $wgDBname; + public static function getDB( $database, $ignoreInvalidDB = false ) { + global $wgDBname; if( self::validDatabase( $database ) ) { if( $database == $wgDBname ) { // Hmm... this shouldn't happen though. :) @@ -152,7 +157,7 @@ class UserRightsProxy { array( 'ug_user' => $this->id ), __METHOD__ ); $groups = array(); - while( $row = $this->db->fetchObject( $res ) ) { + foreach ( $res as $row ) { $groups[] = $row->ug_group; } return $groups; @@ -182,6 +187,29 @@ class UserRightsProxy { ), __METHOD__ ); } + + /** + * Replaces User::setOption() + */ + public function setOption( $option, $value ) { + $this->newOptions[$option] = $value; + } + + public function saveSettings() { + $rows = array(); + foreach ( $this->newOptions as $option => $value ) { + $rows[] = array( + 'up_user' => $this->id, + 'up_property' => $option, + 'up_value' => $value, + ); + } + $this->db->replace( 'user_properties', + array( array( 'up_user', 'up_property' ) ), + $rows, __METHOD__ + ); + $this->invalidateCache(); + } /** * Replaces User::touchUser() @@ -193,11 +221,7 @@ class UserRightsProxy { __METHOD__ ); global $wgMemc; - if ( function_exists( 'wfForeignMemcKey' ) ) { - $key = wfForeignMemcKey( $this->database, false, 'user', 'id', $this->id ); - } else { - $key = "$this->database:user:id:" . $this->id; - } + $key = wfForeignMemcKey( $this->database, false, 'user', 'id', $this->id ); $wgMemc->delete( $key ); } } |