1b5fdbb43295b1e15f1bbf15ef60211cacdaced2
[lhc/web/wiklou.git] / includes / SpecialContributions.php
1 <?
2
3 function wfSpecialContributions()
4 {
5 global $wgUser, $wgOut, $wgLang, $target, $hideminor;
6 $fname = "wfSpecialContributions";
7 $sysop = $wgUser->isSysop();
8
9 if ( "" == $target ) {
10 $wgOut->errorpage( "notargettitle", "notargettext" );
11 return;
12 }
13 list( $limit, $offset ) = wfCheckLimits( 50, "" );
14
15 $target = wfCleanQueryVar( $target );
16 $nt = Title::newFromURL( $target );
17 $nt->setNamespace( Namespace::getUser() );
18
19 $sk = $wgUser->getSkin();
20 $id = User::idFromName( $nt->getText() );
21
22 if ( 0 == $id ) { $ul = $nt->getText(); }
23 else {
24 $ul = $sk->makeKnownLink( $nt->getPrefixedText(), $nt->getText() );
25 }
26 $sub = str_replace( "$1", $ul, wfMsg( "contribsub" ) );
27 $wgOut->setSubtitle( $sub );
28
29 if ( ! isset( $hideminor ) ) {
30 $hideminor = $wgUser->getOption( "hideminor" );
31 }
32 if ( $hideminor ) {
33 $cmq = "AND cur_minor_edit=0";
34 $omq = "AND old_minor_edit=0";
35 } else { $cmq = $omq = ""; }
36
37 $top = wfShowingResults( $offset, $limit );
38 $wgOut->addHTML( "<p>{$top}\n" );
39
40 $sl = wfViewPrevNext( $offset, $limit,
41 $wgLang->specialpage( "Contributions" ), "target=" . wfUrlEncode( $target ) );
42 $wgOut->addHTML( "<br>{$sl}\n" );
43
44 if ( 0 == $id ) {
45 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment FROM cur " .
46 "WHERE cur_user_text='" . wfStrencode( $nt->getText() ) . "' {$cmq} " .
47 "ORDER BY inverse_timestamp LIMIT {$offset}, {$limit}";
48 $res1 = wfQuery( $sql, $fname );
49
50 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment FROM old " .
51 "WHERE old_user_text='" . wfStrencode( $nt->getText() ) . "' {$omq} " .
52 "ORDER BY inverse_timestamp LIMIT {$offset}, {$limit}";
53 $res2 = wfQuery( $sql, $fname );
54 } else {
55 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment FROM cur " .
56 "WHERE cur_user={$id} {$cmq} ORDER BY inverse_timestamp LIMIT {$offset}, {$limit}";
57 $res1 = wfQuery( $sql, $fname );
58
59 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment FROM old " .
60 "WHERE old_user={$id} {$omq} ORDER BY inverse_timestamp LIMIT {$offset}, {$limit}";
61 $res2 = wfQuery( $sql, $fname );
62 }
63 $nCur = wfNumRows( $res1 );
64 $nOld = wfNumRows( $res2 );
65
66
67 if ( 0 == $nCur && 0 == $nOld ) {
68 $wgOut->addHTML( "\n<p>" . wfMsg( "nocontribs" ) . "</p>\n" );
69 return;
70 }
71 if ( 0 != $nCur ) { $obj1 = wfFetchObject( $res1 ); }
72 if ( 0 != $nOld ) { $obj2 = wfFetchObject( $res2 ); }
73
74 $wgOut->addHTML( "<ul>\n" );
75 while ( $limit ) {
76 if ( 0 == $nCur && 0 == $nOld ) { break; }
77
78 if ( ( 0 == $nOld ) ||
79 ( ( 0 != $nCur ) &&
80 ( $obj1->cur_timestamp >= $obj2->old_timestamp ) ) ) {
81 $ns = $obj1->cur_namespace;
82 $t = $obj1->cur_title;
83 $ts = $obj1->cur_timestamp;
84 $comment =$obj1->cur_comment;
85
86 $obj1 = wfFetchObject( $res1 );
87 $topmark = true;
88 --$nCur;
89 } else {
90 $ns = $obj2->old_namespace;
91 $t = $obj2->old_title;
92 $ts = $obj2->old_timestamp;
93 $comment =$obj2->old_comment;
94
95 $obj2 = wfFetchObject( $res2 );
96 $topmark = false;
97 --$nOld;
98 }
99 ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment );
100
101 --$limit;
102 }
103 $wgOut->addHTML( "</ul>\n" );
104 }
105
106 function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment )
107 {
108 global $wgLang, $wgOut, $wgUser, $target;
109 $page = Title::makeName( $ns, $t );
110 $link = $sk->makeKnownLink( $page, "" );
111 $topmarktext = $topmark ? wfMsg ( "uctop" ) : "";
112 $sysop = $wgUser->isSysop();
113 if($sysop && $topmark ) {
114 $topmarktext .= " [". $sk->makeKnownLink( $page,
115 wfMsg( "rollbacklink" ), "action=rollback&from=" . urlencode( $target ) ) ."]";
116 }
117 if($comment) {
118
119 $comment="<em>(". htmlspecialchars( $comment ) .")</em> ";
120
121 }
122 $d = $wgLang->timeanddate( $ts, true );
123
124 $wgOut->addHTML( "<li>{$d} {$link} {$comment}{$topmarktext}</li>\n" );
125 }
126
127 function ucCountLink( $lim, $d )
128 {
129 global $wgUser, $wgLang, $target;
130
131 $sk = $wgUser->getSkin();
132 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
133 "{$lim}", "target={$target}&days={$d}&limit={$lim}" );
134 return $s;
135 }
136
137 function ucDaysLink( $lim, $d )
138 {
139 global $wgUser, $wgLang, $target;
140
141 $sk = $wgUser->getSkin();
142 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
143 "{$d}", "target={$target}&days={$d}&limit={$lim}" );
144 return $s;
145 }
146 ?>