00001 <?php 00002 00003 function wfSpecialRemoveRestrictions() { 00004 global $wgOut, $wgRequest, $wgUser, $wgLang, $wgTitle; 00005 $sk = $wgUser->getSkin(); 00006 00007 $id = $wgRequest->getVal( 'id' ); 00008 if( !is_numeric( $id ) ) { 00009 $wgOut->addWikiMsg( 'removerestrictions-noid' ); 00010 return; 00011 } 00012 00013 UserRestriction::purgeExpired(); 00014 $r = UserRestriction::newFromId( $id, true ); 00015 if( !$r ) { 00016 $wgOut->addWikiMsg( 'removerestrictions-wrongid' ); 00017 return; 00018 } 00019 00020 $form = array(); 00021 $form['removerestrictions-user'] = $sk->userLink( $r->getSubjectId(), $r->getSubjectText() ) . 00022 $sk->userToolLinks( $r->getSubjectId(), $r->getSubjectText() ); 00023 $form['removerestrictions-type'] = UserRestriction::formatType( $r->getType() ); 00024 if( $r->isPage() ) 00025 $form['removerestrictions-page'] = $sk->link( $r->getPage() ); 00026 if( $r->isNamespace() ) 00027 $form['removerestrictions-namespace'] = $wgLang->getDisplayNsText( $r->getNamespace() ); 00028 $form['removerestrictions-reason'] = Xml::input( 'reason' ); 00029 00030 $result = null; 00031 if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getVal( 'edittoken' ) ) ) 00032 $result = wfSpecialRemoveRestrictionsProcess( $r ); 00033 00034 $wgOut->addWikiMsg( 'removerestrictions-intro' ); 00035 $wgOut->addHTML( Xml::fieldset( wfMsgHtml( 'removerestrictions-legend' ) ) ); 00036 if( $result ) 00037 $wgOut->addHTML( '<strong class="success">' . wfMsgExt( 'removerestrictions-success', 00038 'parseinline', $r->getSubjectText() ) . '</strong>' ); 00039 $wgOut->addHTML( Xml::openElement( 'form', array( 'action' => $wgTitle->getLocalUrl( array( 'id' => $id ) ), 00040 'method' => 'post' ) ) ); 00041 $wgOut->addHTML( Xml::buildForm( $form, 'removerestrictions-submit' ) ); 00042 $wgOut->addHTML( Xml::hidden( 'id', $r->getId() ) ); 00043 $wgOut->addHTML( Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() ) ); 00044 $wgOut->addHTML( Xml::hidden( 'edittoken', $wgUser->editToken() ) ); 00045 $wgOut->addHTML( "</form></fieldset>" ); 00046 } 00047 00048 function wfSpecialRemoveRestrictionsProcess( $r ) { 00049 global $wgUser, $wgRequest; 00050 $reason = $wgRequest->getVal( 'reason' ); 00051 $result = $r->delete(); 00052 $log = new LogPage( 'restrict' ); 00053 $params = array( $r->getType() ); 00054 if( $r->isPage() ) 00055 $params[] = $r->getPage()->getPrefixedDbKey(); 00056 if( $r->isNamespace() ) 00057 $params[] = $r->getNamespace(); 00058 $log->addEntry( 'remove', Title::makeTitle( NS_USER, $r->getSubjectText() ), $reason, $params ); 00059 return $result; 00060 }