* Avoid corrupting <gallery> inside <!-- comment -->
[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 # 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 );
30 }
31
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 );
45 }
46
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 }
62 }
63
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 );
78 }
79
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 );
96 }
97
98 ?>