getID() or $wgUser->isBlocked() ) { $wgOut->errorpage( "movenologin", "movenologintext" ); return; } if (! $wgUser->isBureaucrat()){ $wgOut->errorpage( "bureaucrattitle", "bureaucrattext" ); return; } if ( wfReadOnly() ) { $wgOut->readOnlyPage(); return; } $f = new MakesysopForm(); if ( $_POST['wpMakesysopSubmit'] ) { $f->doSubmit(); } else { $f->showForm( "" ); } } class MakesysopForm { function showForm( $err = "") { global $wgOut, $wgUser, $wgLang; global $wpNewTitle, $wpOldTitle, $wpMovetalk, $target; $wgOut->setPagetitle( wfMsg( "makesysoptitle" ) ); $wgOut->addWikiText( wfMsg( "makesysoptext" ) ); $action = wfLocalUrlE( $wgLang->specialPage( "Makesysop" ), "action=submit" ); if ( "" != $err ) { $wgOut->setSubtitle( wfMsg( "formerror" ) ); $wgOut->addHTML( "

{$err}\n" ); } $namedesc = wfMsg( "makesysopname" ); $wgOut->addHTML( "

" ); $mss = wfMsg( "makesysopsubmit" ); $wgOut->addHTML( "
$namedesc
 
\n" ); } function doSubmit() { global $wgOut, $wgUser, $wgLang, $wpMakesysopUser, $wgDBname, $wgMemc; $parts = explode( "@", $wpMakesysopUser ); if( count( $parts ) == 2){ $username = addslashes( $parts[0] ); $usertable = $parts[1] . "wiki.user"; } else { $username = addslashes( $wpMakesysopUser ); $usertable = "user"; } $prev = wfIgnoreSQLErrors( TRUE ); $res = wfQuery("SELECT user_id, user_rights FROM $usertable WHERE user_name = '{$username}'", DB_WRITE); wfIgnoreSQLErrors( $prev ); if( wfLastErrno() || ! $username || wfNumRows( $res ) == 0 ){ $this->showFail(); return; } $row = wfFetchObject( $res ); $id = intval( $row->user_id ); if( $row->user_rights ){ $rights = explode(",", $row->user_rights ); if(! in_array("sysop", $rights ) ){ $rights[] = "sysop"; } $newrights = addslashes( implode( ",", $rights ) ); } else { $newrights = "sysop"; } $sql = "UPDATE $usertable SET user_rights = '{$newrights}' WHERE user_id = $id LIMIT 1"; wfQuery($sql, DB_WRITE); $wgMemc->delete( "$wgDBname:user:id:$id" ); $this->showSuccess(); } function showSuccess() { global $wgOut, $wpMakesysopUser; $wgOut->setPagetitle( wfMsg( "makesysoptitle" ) ); $text = wfMsg( "makesysopok", $wpMakesysopUser ); $wgOut->addWikiText( $text ); $this->showForm(); } function showFail() { global $wgOut, $wpMakesysopUser; $wgOut->setPagetitle( wfMsg( "makesysoptitle" ) ); $this->showForm( wfMsg( "makesysopfail", $wpMakesysopUser ) ); } } ?>