isSysop(); if( $par ) $target = $par; else $target = $wgRequest->getVal( 'target' ); if ( "" == $target ) { $wgOut->errorpage( "notargettitle", "notargettext" ); return; } # FIXME: Change from numeric offsets to date offsets list( $limit, $offset ) = wfCheckLimits( 50, "" ); $offlimit = $limit + $offset; $querylimit = $offlimit + 1; $hideminor = ($wgRequest->getVal( 'hideminor' ) ? 1 : 0); $nt = Title::newFromURL( $target ); $nt->setNamespace( Namespace::getUser() ); $sk = $wgUser->getSkin(); $id = User::idFromName( $nt->getText() ); if ( 0 == $id ) { $ul = $nt->getText(); } else { $ul = $sk->makeLinkObj( $nt, $nt->getText() ); } $talk = $nt->getTalkPage(); if( $talk ) $ul .= " (" . $sk->makeLinkObj( $talk, $wgLang->getNsText(Namespace::getTalk(0)) ) . ")"; else $ul .= "brrrp"; $wgOut->setSubtitle( wfMsg( "contribsub", $ul ) ); if ( $hideminor ) { $cmq = "AND cur_minor_edit=0"; $omq = "AND old_minor_edit=0"; $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ), WfMsg( "show" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) . "&offset={$offset}&limit={$limit}&hideminor=0" ); } else { $cmq = $omq = ""; $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ), WfMsg( "hide" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) . "&offset={$offset}&limit={$limit}&hideminor=1" ); } if ( 0 == $id ) { $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new FROM cur " . "WHERE cur_user_text='" . wfStrencode( $nt->getText() ) . "' {$cmq} " . "ORDER BY inverse_timestamp LIMIT {$querylimit}"; $res1 = wfQuery( $sql, DB_READ, $fname ); $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " . "WHERE old_user_text='" . wfStrencode( $nt->getText() ) . "' {$omq} " . "ORDER BY inverse_timestamp LIMIT {$querylimit}"; $res2 = wfQuery( $sql, DB_READ, $fname ); } else { $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new FROM cur " . "WHERE cur_user={$id} {$cmq} ORDER BY inverse_timestamp LIMIT {$querylimit}"; $res1 = wfQuery( $sql, DB_READ, $fname ); $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " . "WHERE old_user={$id} {$omq} ORDER BY inverse_timestamp LIMIT {$querylimit}"; $res2 = wfQuery( $sql, DB_READ, $fname ); } $nCur = wfNumRows( $res1 ); $nOld = wfNumRows( $res2 ); $top = wfShowingResults( $offset, $limit ); $wgOut->addHTML( "

{$top}\n" ); $sl = wfViewPrevNext( $offset, $limit, $wgLang->specialpage( "Contributions" ), "hideminor={$hideminor}&target=" . wfUrlEncode( $target ), ($nCur + $nOld) <= $offlimit); $shm = wfMsg( "showhideminor", $mlink ); $wgOut->addHTML( "
{$sl} ($shm) \n"); if ( 0 == $nCur && 0 == $nOld ) { $wgOut->addHTML( "\n

" . wfMsg( "nocontribs" ) . "

\n" ); return; } if ( 0 != $nCur ) { $obj1 = wfFetchObject( $res1 ); } if ( 0 != $nOld ) { $obj2 = wfFetchObject( $res2 ); } $wgOut->addHTML( "\n" ); } /* Generates each row in the contributions list. Contributions which are marked "top" are currently on top of the history. For these contributions, a [rollback] link is shown for users with sysop privileges. The rollback link restores the most recent version that was not written by the target user. If the contributions page is called with the parameter &bot=1, all rollback links also get that parameter. It causes the edit itself and the rollback to be marked as "bot" edits. Bot edits are hidden by default from recent changes, so this allows sysops to combat a busy vandal without bothering other users. TODO: This would probably look a lot nicer in a table. */ function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor, $isnew ) { global $wgLang, $wgOut, $wgUser, $wgRequest, $target; $page = Title::makeName( $ns, $t ); $link = $sk->makeKnownLink( $page, "" ); $topmarktext=""; if($topmark) { if(!$isnew) { $topmarktext .= $sk->makeKnownLink( $page, wfMsg("uctop"), "diff=0" ); } else { $topmarktext .= wfMsg("newarticle"); } $sysop = $wgUser->isSysop(); if($sysop ) { $extraRollback = $wgRequest->getBool( "bot" ) ? '&bot=1' : ''; $topmarktext .= " [". $sk->makeKnownLink( $page, wfMsg( "rollbacklink" ), "action=rollback&from=" . urlencode( $target ) . $extraRollback ) ."]"; } } $histlink="(".$sk->makeKnownLink($page,wfMsg("hist"),"action=history").")"; if($comment) { $comment="(". htmlspecialchars( $comment ) .") "; } $d = $wgLang->timeanddate( $ts, true ); if ($isminor) { $mflag = "" . wfMsg( "minoreditletter" ) . " "; } else { $mflag = ""; } $wgOut->addHTML( "
  • {$d} {$histlink} {$mflag} {$link} {$comment}{$topmarktext}
  • \n" ); } function ucCountLink( $lim, $d ) { global $wgUser, $wgLang, $target; $sk = $wgUser->getSkin(); $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ), "{$lim}", "target={$target}&days={$d}&limit={$lim}" ); return $s; } function ucDaysLink( $lim, $d ) { global $wgUser, $wgLang, $target; $sk = $wgUser->getSkin(); $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ), "{$d}", "target={$target}&days={$d}&limit={$lim}" ); return $s; } ?>