Stop loading feed.php every time by moving available feeds classes in defines.php...
[lhc/web/wiklou.git] / includes / SpecialMakesysop.php
index d08a1bb..48799d1 100644 (file)
@@ -1,8 +1,19 @@
 <?php
-include_once( "LinksUpdate.php" );
-
-function wfSpecialMakesysop()
-{
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+
+/**
+ *
+ */
+require_once( "LinksUpdate.php" );
+
+/**
+ * Constructor
+ */
+function wfSpecialMakesysop() {
        global $wgUser, $wgOut, $wgRequest;
 
        if ( 0 == $wgUser->getID() or $wgUser->isBlocked() ) {
@@ -24,15 +35,19 @@ function wfSpecialMakesysop()
        if ( $f->mSubmit ) { 
                $f->doSubmit(); 
        } else { 
-               $f->showForm( "" ); 
+               $f->showForm( '' ); 
        }
 }
 
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
 class MakesysopForm {
        var $mTarget, $mAction, $mRights, $mUser, $mSubmit;
 
-       function MakesysopForm( &$request ) 
-       {
+       function MakesysopForm( &$request ) {
                $this->mAction = $request->getText( 'action' );
                $this->mRights = $request->getVal( 'wpRights' );
                $this->mUser = $request->getText( 'wpMakesysopUser' );
@@ -40,8 +55,7 @@ class MakesysopForm {
                $this->mBuro = $request->getBool( 'wpSetBureaucrat' );
        }
 
-       function showForm( $err = "")
-       {
+       function showForm( $err = '') {
                global $wgOut, $wgUser, $wgLang;
 
                if ( $wgUser->isDeveloper() ) {
@@ -57,7 +71,7 @@ class MakesysopForm {
 
                if ( "" != $err ) {
                        $wgOut->setSubtitle( wfMsg( "formerror" ) );
-                       $wgOut->addHTML( "<p><font color='red' size='+1'>{$err}</font>\n" );
+                       $wgOut->addHTML( "<p class='error'>{$err}</p>\n" );
                }
                $namedesc = wfMsg( "makesysopname" );
                if ( !is_null( $this->mUser ) ) {
@@ -66,17 +80,17 @@ class MakesysopForm {
                        $encUser = "";
                }
 
-               $wgOut->addHTML( "<p>
+               $wgOut->addHTML( "
                        <form id=\"makesysop\" method=\"post\" action=\"{$action}\">
-                       <table border=0>
+                       <table border='0'>
                        <tr>
-                               <td align=right>$namedesc</td>
-                               <td align=left>
-                                       <input type=text size=40 name=\"wpMakesysopUser\" value=\"$encUser\">
+                               <td align='right'>$namedesc</td>
+                               <td align='left'>
+                                       <input type='text' size='40' name=\"wpMakesysopUser\" value=\"$encUser\" />
                                </td>
                        </tr>" 
                );
-               /*
+               
                $makeburo = wfMsg( "setbureaucratflag" );
                $wgOut->addHTML(
                        "<tr>
@@ -84,7 +98,7 @@ class MakesysopForm {
                                        <input type=checkbox name=\"wpSetBureaucrat\" value=1>$makeburo
                                </td>
                        </tr>"
-               );*/
+               );
 
                if ( $wgUser->isDeveloper() ) {
                        $rights = wfMsg( "rights" );
@@ -96,9 +110,9 @@ class MakesysopForm {
 
                        $wgOut->addHTML( "
                                <tr>
-                                       <td align=right>$rights</td>
-                                       <td align=left>
-                                               <input type=text size=40 name=\"wpRights\" value=\"$encRights\">
+                                       <td align='right'>$rights</td>
+                                       <td align='left'>
+                                               <input type='text' size='40' name=\"wpRights\" value=\"$encRights\" />
                                        </td>
                                </tr>" 
                        );
@@ -111,52 +125,57 @@ class MakesysopForm {
                }
                $wgOut->addHTML(
                        "<tr>
-                               <td>&nbsp;</td><td align=left>
-                                       <input type=submit name=\"wpMakesysopSubmit\" value=\"{$mss}\">
+                               <td>&nbsp;</td><td align='left'>
+                                       <input type='submit' name=\"wpMakesysopSubmit\" value=\"{$mss}\" />
                                </td></tr></table>
                        </form>\n" 
                );
 
        }
 
-       function doSubmit()
-       {
+       function doSubmit() {
                global $wgOut, $wgUser, $wgLang;
                global $wgDBname, $wgMemc, $wgLocalDatabases;
 
-               $parts = explode( "@", $this->mUser );
-               if( count( $parts ) == 2 && $wgUser->isDeveloper() ){
-                       $username = wfStrencode( $parts[0] );
+               $fname = 'MakesysopForm::doSubmit';
+               
+               $dbw =& wfGetDB( DB_MASTER );
+               $parts = explode( '@', $this->mUser );
+               $user_rights = $dbw->tableName( 'user_rights' );
+               $usertable   = $dbw->tableName( 'user' );
+
+               if( count( $parts ) == 2 && $wgUser->isDeveloper() && strpos( '.', $user_rights ) === false ){
+                       $username = $dbw->strencode( $parts[0] );
                        if ( array_key_exists( $parts[1], $wgLocalDatabases ) ) {
                                $dbName = $wgLocalDatabases[$parts[1]];
-                               $usertable = $dbName . ".user";
+                               $user_rights = $dbName . '.' . $user_rights;
+                               $usertable   = $usertable . '.' . $usertable;
                        } else {
                                $this->showFail();
                                return;
                        }
                } else {
                        $username = wfStrencode( $this->mUser );
-                       $usertable = "user";
                        $dbName = $wgDBname;
                }
                if ( $username{0} == "#" ) {
                        $id = intval( substr( $username, 1 ) );
-                       $sql = "SELECT user_id,user_rights FROM $usertable WHERE user_id=$id";
+                       $sql = "SELECT user_id,user_rights FROM $user_rights WHERE user_id=$id FOR UPDATE";
                } else {
-                       $encName = wfStrencode( $username );
-                       $sql = "SELECT user_id, user_rights FROM $usertable WHERE user_name = '{$username}'";
+                       $encName = $dbw->strencode( $username );
+                       $sql = "SELECT u.user_id, user_rights FROM $usertable u LEFT JOIN $user_rights r ON u.user_id=r.user_id WHERE user_name = '{$username}' FOR UPDATE";
                }
                
-               $prev = wfIgnoreSQLErrors( TRUE );
-               $res = wfQuery("SELECT user_id, user_rights FROM $usertable WHERE user_name = '{$username}'", DB_WRITE);
-               wfIgnoreSQLErrors( $prev );
+               $prev = $dbw->ignoreErrors( TRUE );
+               $res = $dbw->query( $sql );
+               $dbw->ignoreErrors( $prev );
 
-               if( wfLastErrno() || ! $username || wfNumRows( $res ) == 0 ){
+               if( $dbw->lastErrno() || ! $username || $dbw->numRows( $res ) == 0 ){
                        $this->showFail();
                        return;
                }
 
-               $row = wfFetchObject( $res );
+               $row = $dbw->fetchObject( $res );
                $id = intval( $row->user_id );
                $rightsNotation = array();
 
@@ -188,22 +207,21 @@ class MakesysopForm {
                if ( count( $rightsNotation ) == 0 ) {
                        $this->showFail();
                } else {
-                       $sql = "UPDATE $usertable SET user_rights = '{$newrights}' WHERE user_id = $id LIMIT 1";
-                       wfQuery($sql, DB_WRITE);
+                       #$sql = "UPDATE $user_rights SET user_rights = '{$newrights}' WHERE user_id = $id LIMIT 1";
+                       #$dbw->query($sql);
+                       $dbw->replace( $user_rights, array( array( 'user_id', 'user_rights' )),
+                               array( 'user_id' => $id, 'user_rights' => $newrights ) , $fname );
                        $wgMemc->delete( "$dbName:user:id:$id" );
                        
-                       $bureaucratLog = wfMsg( "bureaucratlog" );
-                       $action = wfMsg( "bureaucratlogentry", $this->mUser, implode( " ", $rightsNotation ) );
-                       
-                       $log = new LogPage( $bureaucratLog );
-                       $log->addEntry( $action, "" );
+                       $log = new LogPage( 'rights' );
+                       $log->addEntry( 'rights', Title::makeTitle( NS_USER, $this->mUser ),
+                               implode( " ", $rightsNotation ) );
                        
                        $this->showSuccess();
                }
        }
 
-       function showSuccess()
-       {
+       function showSuccess() {
                global $wgOut, $wgUser;
 
                $wgOut->setPagetitle( wfMsg( "makesysoptitle" ) );
@@ -219,8 +237,7 @@ class MakesysopForm {
 
        }
 
-       function showFail()
-       {
+       function showFail() {
                global $wgOut, $wgUser;
 
                $wgOut->setPagetitle( wfMsg( "makesysoptitle" ) );