3 function wfSpecialContributions( $par = "" )
5 global $wgUser, $wgOut, $wgLang, $target, $hideminor;
6 $fname = "wfSpecialContributions";
7 $sysop = $wgUser->isSysop();
12 $target = wfCleanQueryVar( $target );
14 if ( "" == $target ) {
15 $wgOut->errorpage( "notargettitle", "notargettext" );
18 list( $limit, $offset ) = wfCheckLimits( 50, "" );
19 $offlimit = $limit +
$offset;
20 $hideminor = ($hideminor ?
1 : 0);
22 $nt = Title
::newFromURL( $target );
23 $nt->setNamespace( Namespace::getUser() );
25 $sk = $wgUser->getSkin();
26 $id = User
::idFromName( $nt->getText() );
31 $ul = $sk->makeKnownLink( $nt->getPrefixedText(), $nt->getText() );
33 $talk = $nt->getTalkPage();
35 $ul .= " (" . $sk->makeLinkObj( $talk, $wgLang->getNsText(Namespace::getTalk(0)) ) . ")";
38 $wgOut->setSubtitle( wfMsg( "contribsub", $ul ) );
41 $cmq = "AND cur_minor_edit=0";
42 $omq = "AND old_minor_edit=0";
43 $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
44 WfMsg( "show" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) .
45 "&offset={$offset}&limit={$limit}&hideminor=0" );
48 $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
49 WfMsg( "hide" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) .
50 "&offset={$offset}&limit={$limit}&hideminor=1" );
53 $top = wfShowingResults( $offset, $limit );
54 $wgOut->addHTML( "<p>{$top}\n" );
56 $sl = wfViewPrevNext( $offset, $limit,
57 $wgLang->specialpage( "Contributions" ), "hideminor={$hideminor}&target=" . wfUrlEncode( $target ) );
59 $shm = wfMsg( "showhideminor", $mlink );
60 $wgOut->addHTML( "<br>{$sl} ($shm) \n");
63 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit FROM cur " .
64 "WHERE cur_user_text='" . wfStrencode( $nt->getText() ) . "' {$cmq} " .
65 "ORDER BY inverse_timestamp LIMIT {$offlimit}";
66 $res1 = wfQuery( $sql, DB_READ
, $fname );
68 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
69 "WHERE old_user_text='" . wfStrencode( $nt->getText() ) . "' {$omq} " .
70 "ORDER BY inverse_timestamp LIMIT {$offlimit}";
71 $res2 = wfQuery( $sql, DB_READ
, $fname );
73 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit FROM cur " .
74 "WHERE cur_user={$id} {$cmq} ORDER BY inverse_timestamp LIMIT {$offlimit}";
75 $res1 = wfQuery( $sql, DB_READ
, $fname );
77 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
78 "WHERE old_user={$id} {$omq} ORDER BY inverse_timestamp LIMIT {$offlimit}";
79 $res2 = wfQuery( $sql, DB_READ
, $fname );
81 $nCur = wfNumRows( $res1 );
82 $nOld = wfNumRows( $res2 );
85 if ( 0 == $nCur && 0 == $nOld ) {
86 $wgOut->addHTML( "\n<p>" . wfMsg( "nocontribs" ) . "</p>\n" );
89 if ( 0 != $nCur ) { $obj1 = wfFetchObject( $res1 ); }
90 if ( 0 != $nOld ) { $obj2 = wfFetchObject( $res2 ); }
92 $wgOut->addHTML( "<ul>\n" );
93 for( $n = 0; $n < $offlimit; $n++
) {
94 if ( 0 == $nCur && 0 == $nOld ) { break; }
96 if ( ( 0 == $nOld ) ||
98 ( $obj1->cur_timestamp
>= $obj2->old_timestamp
) ) ) {
99 $ns = $obj1->cur_namespace
;
100 $t = $obj1->cur_title
;
101 $ts = $obj1->cur_timestamp
;
102 $comment =$obj1->cur_comment
;
103 $me = $obj1->cur_minor_edit
;
105 $obj1 = wfFetchObject( $res1 );
109 $ns = $obj2->old_namespace
;
110 $t = $obj2->old_title
;
111 $ts = $obj2->old_timestamp
;
112 $comment =$obj2->old_comment
;
113 $me = $obj2->old_minor_edit
;
115 $obj2 = wfFetchObject( $res2 );
120 ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, ( $me > 0) );
122 $wgOut->addHTML( "</ul>\n" );
125 function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor )
127 global $wgLang, $wgOut, $wgUser, $target;
128 $page = Title
::makeName( $ns, $t );
129 $link = $sk->makeKnownLink( $page, "" );
130 $topmarktext = $topmark ?
wfMsg ( "uctop" ) : "";
131 $sysop = $wgUser->isSysop();
133 $extraRollback = $_REQUEST['bot'] ?
'&bot=1' : '';
134 if($sysop && $topmark ) {
135 $topmarktext .= " [". $sk->makeKnownLink( $page,
136 wfMsg( "rollbacklink" ),
137 "action=rollback&from=" . urlencode( $target ) . $extraRollback ) ."]";
141 $comment="<em>(". htmlspecialchars( $comment ) .")</em> ";
144 $d = $wgLang->timeanddate( $ts, true );
147 $mflag = "<strong>" . wfMsg( "minoreditletter" ) . "</strong> ";
150 $wgOut->addHTML( "<li>{$d} {$mflag}{$link} {$comment}{$topmarktext}</li>\n" );
153 function ucCountLink( $lim, $d )
155 global $wgUser, $wgLang, $target;
157 $sk = $wgUser->getSkin();
158 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
159 "{$lim}", "target={$target}&days={$d}&limit={$lim}" );
163 function ucDaysLink( $lim, $d )
165 global $wgUser, $wgLang, $target;
167 $sk = $wgUser->getSkin();
168 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
169 "{$d}", "target={$target}&days={$d}&limit={$lim}" );