* Comment userFunctions.inc
[lhc/web/wiklou.git] / maintenance / userFunctions.inc
1 <?php
2
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 */
10
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 $res = $dbw->select( 'revision', 'COUNT(rev_id) AS count', array( 'rev_user' => $user ) );
21 $row = $dbw->fetchObject( $res );
22 return( $row->count );
23 }
24
25 /**
26 * Retrieve all valid user IDs
27 *
28 * @return array
29 */
30 function GetUsers() {
31 $dbr =& wfGetDB( DB_SLAVE );
32 $res = $dbr->select( 'user', 'user_id' );
33 $users = array();
34 while( $row = $dbr->fetchObject( $res ) ) {
35 $users[] = $row->user_id;
36 }
37 return( $users );
38 }
39
40 /**
41 * Resolve a username to a user ID
42 *
43 * @param string $username Username
44 * @return mixed
45 */
46 function GetUserID( $username ) {
47 $dbr =& wfGetDB( DB_SLAVE );
48 $res = $dbr->select( 'user', 'user_id', array( 'user_name' => '"' . $username . '"' ) );
49 if( $res !== false ) {
50 $row = $dbr->fetchObject( $res );
51 return( $row->user_id );
52 } else {
53 return( false );
54 }
55 }
56
57 /**
58 * Delete one or more users
59 *
60 * @param mixed $users Single integer or array of integers corresponding to user IDs
61 * @return bool
62 */
63 function DeleteUsers( $users ) {
64 $dbw =& wfGetDB( DB_MASTER );
65 $dbw->begin();
66 foreach( $users as $user ) {
67 $dbw->delete( 'user', array( 'user_id' => $user ) );
68 }
69 $dbw->commit();
70 return( true );
71 }
72
73 /**
74 * Add a user to the named group(s)
75 *
76 * @param integer $user User ID
77 * @param mixed $groups Single string or array of strings corresponding to group names
78 * @return bool
79 */
80 function SetUserGroups( $user, $groups ) {
81 $dbw =& wfGetDB( DB_MASTER );
82 foreach( $groups as $group ) {
83 $row = array( 'ug_user' => $user, 'ug_group' => $group );
84 if( !$dbw->insert( 'user_groups', $row, 'SetUserGroups' ) ) {
85 return( false );
86 }
87 }
88 return( true );
89 }
90
91 ?>