don't double-profile redirects
[mediawiki.git] / maintenance / userFunctions.inc
blob42429e86f2019afff5caf79ba15f0f1b3b1001cc
1 <?php
3 /**
4  * Support functions for dealing with user accounts at a database level
5  *
6  * @package MediaWiki
7  * @subpackage Maintenance
8  * @author Rob Church <robchur@gmail.com>
9  */
11 /**
12  * Count the number of edits the specified user has made
13  *
14  * @param integer $user User ID
15  * @param bool $slave Whether or not a slave can be used
16  * @return integer
17  */
18 function CountEdits( $user, $slave = true ) {
19         $dbw =& wfGetDB( $slave ? DB_SLAVE: DB_MASTER );
20         # Count current edits
21         $res = $dbw->select( 'revision', 'COUNT(rev_id) AS count', array( 'rev_user' => $user ) );
22         $row = $dbw->fetchObject( $res );
23         $count = $row->count;
24         # Count deleted edits
25         $res = $dbw->select( 'archive', 'COUNT(*) AS count', array( 'ar_user' => $user ) );
26         $row = $dbw->fetchObject( $res );
27         $count += $row->count;
28         # Done
29         return( $count );
32 /**
33  * Retrieve all valid user IDs
34  *
35  * @return array
36  */
37 function GetUsers() {
38         $dbr =& wfGetDB( DB_SLAVE );
39         $res = $dbr->select( 'user', 'user_id' );
40         $users = array();
41         while( $row = $dbr->fetchObject( $res ) ) {
42                 $users[] = $row->user_id;
43         }
44         return( $users );
47 /**
48  * Resolve a username to a user ID
49  *
50  * @param string $username Username
51  * @return mixed
52  */
53 function GetUserID( $username ) {
54         $dbr =& wfGetDB( DB_SLAVE );
55         $res = $dbr->select( 'user', 'user_id', array( 'user_name' => '"' . $username . '"' ) );
56         if( $res !== false ) {
57                 $row = $dbr->fetchObject( $res );
58                 return( $row->user_id );
59         } else {
60                 return( false );
61         }
64 /**
65  * Delete one or more users
66  *
67  * @param mixed $users Single integer or array of integers corresponding to user IDs
68  * @return bool
69  */
70 function DeleteUsers( $users ) {
71         $dbw =& wfGetDB( DB_MASTER );
72         $dbw->begin();
73         foreach( $users as $user ) {
74                 $dbw->delete( 'user', array( 'user_id' => $user ) );
75         }
76         $dbw->commit();
77         return( true );
80 /**
81  * Add a user to the named group(s)
82  *
83  * @param integer $user User ID
84  * @param mixed $groups Single string or array of strings corresponding to group names
85  * @return bool
86  */
87 function SetUserGroups( $user, $groups ) {
88         $dbw =& wfGetDB( DB_MASTER );
89         foreach( $groups as $group ) {
90                 $row = array( 'ug_user' => $user, 'ug_group' => $group );
91                 if( !$dbw->insert( 'user_groups', $row, 'SetUserGroups' ) ) {
92                         return( false );
93                 }
94         }
95         return( true );