MediaWiki  1.23.8
UserRightsProxy.php
Go to the documentation of this file.
1 <?php
28 
39  private function __construct( $db, $database, $name, $id ) {
40  $this->db = $db;
41  $this->database = $database;
42  $this->name = $name;
43  $this->id = intval( $id );
44  $this->newOptions = array();
45  }
46 
52  public function getDBName() {
53  return $this->database;
54  }
55 
62  public static function validDatabase( $database ) {
63  global $wgLocalDatabases;
64  return in_array( $database, $wgLocalDatabases );
65  }
66 
75  public static function whoIs( $database, $id, $ignoreInvalidDB = false ) {
76  $user = self::newFromId( $database, $id, $ignoreInvalidDB );
77  if ( $user ) {
78  return $user->name;
79  } else {
80  return false;
81  }
82  }
83 
92  public static function newFromId( $database, $id, $ignoreInvalidDB = false ) {
93  return self::newFromLookup( $database, 'user_id', intval( $id ), $ignoreInvalidDB );
94  }
95 
104  public static function newFromName( $database, $name, $ignoreInvalidDB = false ) {
105  return self::newFromLookup( $database, 'user_name', $name, $ignoreInvalidDB );
106  }
107 
115  private static function newFromLookup( $database, $field, $value, $ignoreInvalidDB = false ) {
116  $db = self::getDB( $database, $ignoreInvalidDB );
117  if ( $db ) {
118  $row = $db->selectRow( 'user',
119  array( 'user_id', 'user_name' ),
120  array( $field => $value ),
121  __METHOD__ );
122  if ( $row !== false ) {
123  return new UserRightsProxy( $db, $database,
124  $row->user_name,
125  intval( $row->user_id ) );
126  }
127  }
128  return null;
129  }
130 
139  public static function getDB( $database, $ignoreInvalidDB = false ) {
141  if ( $ignoreInvalidDB || self::validDatabase( $database ) ) {
142  if ( $database == $wgDBname ) {
143  // Hmm... this shouldn't happen though. :)
144  return wfGetDB( DB_MASTER );
145  } else {
146  return wfGetDB( DB_MASTER, array(), $database );
147  }
148  }
149  return null;
150  }
151 
155  public function getId() {
156  return $this->id;
157  }
158 
162  public function isAnon() {
163  return $this->getId() == 0;
164  }
165 
171  public function getName() {
172  return $this->name . '@' . $this->database;
173  }
174 
180  public function getUserPage() {
181  return Title::makeTitle( NS_USER, $this->getName() );
182  }
183 
188  function getGroups() {
189  $res = $this->db->select( 'user_groups',
190  array( 'ug_group' ),
191  array( 'ug_user' => $this->id ),
192  __METHOD__ );
193  $groups = array();
194  foreach ( $res as $row ) {
195  $groups[] = $row->ug_group;
196  }
197  return $groups;
198  }
199 
203  function addGroup( $group ) {
204  $this->db->insert( 'user_groups',
205  array(
206  'ug_user' => $this->id,
207  'ug_group' => $group,
208  ),
209  __METHOD__,
210  array( 'IGNORE' ) );
211  }
212 
216  function removeGroup( $group ) {
217  $this->db->delete( 'user_groups',
218  array(
219  'ug_user' => $this->id,
220  'ug_group' => $group,
221  ),
222  __METHOD__ );
223  }
224 
228  public function setOption( $option, $value ) {
229  $this->newOptions[$option] = $value;
230  }
231 
232  public function saveSettings() {
233  $rows = array();
234  foreach ( $this->newOptions as $option => $value ) {
235  $rows[] = array(
236  'up_user' => $this->id,
237  'up_property' => $option,
238  'up_value' => $value,
239  );
240  }
241  $this->db->replace( 'user_properties',
242  array( array( 'up_user', 'up_property' ) ),
243  $rows, __METHOD__
244  );
245  $this->invalidateCache();
246  }
247 
251  function invalidateCache() {
252  $this->db->update( 'user',
253  array( 'user_touched' => $this->db->timestamp() ),
254  array( 'user_id' => $this->id ),
255  __METHOD__ );
256 
257  global $wgMemc;
258  $key = wfForeignMemcKey( $this->database, false, 'user', 'id', $this->id );
259  $wgMemc->delete( $key );
260  }
261 }
Title\makeTitle
static & makeTitle( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:398
DB_MASTER
const DB_MASTER
Definition: Defines.php:56
php
skin txt MediaWiki includes four core it has been set as the default in MediaWiki since the replacing Monobook it had been been the default skin since before being replaced by Vector largely rewritten in while keeping its appearance Several legacy skins were removed in the as the burden of supporting them became too heavy to bear Those in etc for skin dependent CSS etc for skin dependent JavaScript These can also be customised on a per user by etc This feature has led to a wide variety of user styles becoming that gallery is a good place to ending in php
Definition: skin.txt:62
$wgMemc
globals will be eliminated from MediaWiki replaced by an application object which would be passed to constructors Whether that would be an convenient solution remains to be but certainly PHP makes such object oriented programming models easier than they were in previous versions For the time being MediaWiki programmers will have to work in an environment with some global context At the time of globals were initialised on startup by MediaWiki of these were configuration which are documented in DefaultSettings php There is no comprehensive documentation for the remaining however some of the most important ones are listed below They are typically initialised either in index php or in Setup php For a description of the see design txt $wgTitle Title object created from the request URL $wgOut OutputPage object for HTTP response $wgUser User object for the user associated with the current request $wgLang Language object selected by user preferences $wgContLang Language object associated with the wiki being viewed $wgParser Parser object Parser extensions register their hooks here $wgRequest WebRequest to get request data $wgMemc
Definition: globals.txt:25
wfGetDB
& wfGetDB( $db, $groups=array(), $wiki=false)
Get a Database object.
Definition: GlobalFunctions.php:3659
UserRightsProxy\saveSettings
saveSettings()
Definition: UserRightsProxy.php:232
UserRightsProxy\getId
getId()
Definition: UserRightsProxy.php:155
UserRightsProxy
Cut-down copy of User interface for local-interwiki-database user rights manipulation.
Definition: UserRightsProxy.php:27
UserRightsProxy\addGroup
addGroup( $group)
Replaces User::addUserGroup()
Definition: UserRightsProxy.php:203
$wgDBname
controlled by $wgMainCacheType controlled by $wgParserCacheType controlled by $wgMessageCacheType If you set CACHE_NONE to one of the three control default value for MediaWiki still create a but requests to it are no ops and we always fall through to the database If the cache daemon can t be it should also disable itself fairly smoothly By $wgMemc is used but when it is $parserMemc or $messageMemc this is mentioned $wgDBname
Definition: memcached.txt:96
UserRightsProxy\setOption
setOption( $option, $value)
Replaces User::setOption()
Definition: UserRightsProxy.php:228
UserRightsProxy\invalidateCache
invalidateCache()
Replaces User::touchUser()
Definition: UserRightsProxy.php:251
array
the array() calling protocol came about after MediaWiki 1.4rc1.
List of Api Query prop modules.
UserRightsProxy\getUserPage
getUserPage()
Same as User::getUserPage()
Definition: UserRightsProxy.php:180
global
when a variable name is used in a it is silently declared as a new masking the global
Definition: design.txt:93
wfForeignMemcKey
wfForeignMemcKey( $db, $prefix)
Get a cache key for a foreign DB.
Definition: GlobalFunctions.php:3597
UserRightsProxy\newFromId
static newFromId( $database, $id, $ignoreInvalidDB=false)
Factory function; get a remote user entry by ID number.
Definition: UserRightsProxy.php:92
database
design txt This is a brief overview of the new design More thorough and up to date information is available on the documentation wiki at etc Handles the details of getting and saving to the user table of the database
Definition: design.txt:12
UserRightsProxy\newFromLookup
static newFromLookup( $database, $field, $value, $ignoreInvalidDB=false)
Definition: UserRightsProxy.php:115
$name
Allows to change the fields on the form that will be generated $name
Definition: hooks.txt:336
$value
$value
Definition: styleTest.css.php:45
UserRightsProxy\validDatabase
static validDatabase( $database)
Confirm the selected database name is a valid local interwiki database name.
Definition: UserRightsProxy.php:62
UserRightsProxy\removeGroup
removeGroup( $group)
Replaces User::removeUserGroup()
Definition: UserRightsProxy.php:216
$user
please add to it if you re going to add events to the MediaWiki code where normally authentication against an external auth plugin would be creating a account $user
Definition: hooks.txt:237
UserRightsProxy\getName
getName()
Same as User::getName()
Definition: UserRightsProxy.php:171
UserRightsProxy\newFromName
static newFromName( $database, $name, $ignoreInvalidDB=false)
Factory function; get a remote user entry by name.
Definition: UserRightsProxy.php:104
UserRightsProxy\__construct
__construct( $db, $database, $name, $id)
Constructor.
Definition: UserRightsProxy.php:39
as
This document is intended to provide useful advice for parties seeking to redistribute MediaWiki to end users It s targeted particularly at maintainers for Linux since it s been observed that distribution packages of MediaWiki often break We ve consistently had to recommend that users seeking support use official tarballs instead of their distribution s and this often solves whatever problem the user is having It would be nice if this could such as
Definition: distributors.txt:9
NS_USER
const NS_USER
Definition: Defines.php:81
UserRightsProxy\getDB
static getDB( $database, $ignoreInvalidDB=false)
Open a database connection to work on for the requested user.
Definition: UserRightsProxy.php:139
UserRightsProxy\isAnon
isAnon()
Definition: UserRightsProxy.php:162
name
design txt This is a brief overview of the new design More thorough and up to date information is available on the documentation wiki at name
Definition: design.txt:12
UserRightsProxy\whoIs
static whoIs( $database, $id, $ignoreInvalidDB=false)
Same as User::whoIs()
Definition: UserRightsProxy.php:75
UserRightsProxy\getDBName
getDBName()
Accessor for $this->database.
Definition: UserRightsProxy.php:52
$res
$res
Definition: database.txt:21
UserRightsProxy\getGroups
getGroups()
Replaces User::getUserGroups()
Definition: UserRightsProxy.php:188