More globals and uninitialized variables fixes. Added WebRequest ($wgRequest)
[lhc/web/wiklou.git] / includes / SpecialContributions.php
1 <?php
2
3 function wfSpecialContributions( $par = "" )
4 {
5 global $wgUser, $wgOut, $wgLang, $wgRequest;
6 $fname = "wfSpecialContributions";
7 $sysop = $wgUser->isSysop();
8
9 if( $par )
10 $target = $par;
11 else
12 $target = $wgResult->getVal( 'target' );
13
14 if ( "" == $target ) {
15 $wgOut->errorpage( "notargettitle", "notargettext" );
16 return;
17 }
18
19 # FIXME: Change from numeric offsets to date offsets
20 list( $limit, $offset ) = wfCheckLimits( 50, "" );
21 $offlimit = $limit + $offset;
22 $querylimit = $offlimit + 1;
23 $hideminor = ($wgRequest->getVal( 'hideminor' ) ? 1 : 0);
24
25 $nt = Title::newFromURL( $target );
26 $nt->setNamespace( Namespace::getUser() );
27
28 $sk = $wgUser->getSkin();
29 $id = User::idFromName( $nt->getText() );
30
31 if ( 0 == $id ) {
32 $ul = $nt->getText();
33 } else {
34 $ul = $sk->makeLinkObj( $nt, $nt->getText() );
35 }
36 $talk = $nt->getTalkPage();
37 if( $talk )
38 $ul .= " (" . $sk->makeLinkObj( $talk, $wgLang->getNsText(Namespace::getTalk(0)) ) . ")";
39 else
40 $ul .= "brrrp";
41 $wgOut->setSubtitle( wfMsg( "contribsub", $ul ) );
42
43 if ( $hideminor ) {
44 $cmq = "AND cur_minor_edit=0";
45 $omq = "AND old_minor_edit=0";
46 $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
47 WfMsg( "show" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) .
48 "&offset={$offset}&limit={$limit}&hideminor=0" );
49 } else {
50 $cmq = $omq = "";
51 $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
52 WfMsg( "hide" ), "target=" . wfEscapeHTML( $nt->getPrefixedURL() ) .
53 "&offset={$offset}&limit={$limit}&hideminor=1" );
54 }
55
56 if ( 0 == $id ) {
57 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit FROM cur " .
58 "WHERE cur_user_text='" . wfStrencode( $nt->getText() ) . "' {$cmq} " .
59 "ORDER BY inverse_timestamp LIMIT {$querylimit}";
60 $res1 = wfQuery( $sql, DB_READ, $fname );
61
62 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
63 "WHERE old_user_text='" . wfStrencode( $nt->getText() ) . "' {$omq} " .
64 "ORDER BY inverse_timestamp LIMIT {$querylimit}";
65 $res2 = wfQuery( $sql, DB_READ, $fname );
66 } else {
67 $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit FROM cur " .
68 "WHERE cur_user={$id} {$cmq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
69 $res1 = wfQuery( $sql, DB_READ, $fname );
70
71 $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
72 "WHERE old_user={$id} {$omq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
73 $res2 = wfQuery( $sql, DB_READ, $fname );
74 }
75 $nCur = wfNumRows( $res1 );
76 $nOld = wfNumRows( $res2 );
77
78 $top = wfShowingResults( $offset, $limit );
79 $wgOut->addHTML( "<p>{$top}\n" );
80
81 $sl = wfViewPrevNext( $offset, $limit,
82 $wgLang->specialpage( "Contributions" ),
83 "hideminor={$hideminor}&target=" . wfUrlEncode( $target ),
84 ($nCur + $nOld) <= $offlimit);
85
86 $shm = wfMsg( "showhideminor", $mlink );
87 $wgOut->addHTML( "<br>{$sl} ($shm) \n");
88
89
90 if ( 0 == $nCur && 0 == $nOld ) {
91 $wgOut->addHTML( "\n<p>" . wfMsg( "nocontribs" ) . "</p>\n" );
92 return;
93 }
94 if ( 0 != $nCur ) { $obj1 = wfFetchObject( $res1 ); }
95 if ( 0 != $nOld ) { $obj2 = wfFetchObject( $res2 ); }
96
97 $wgOut->addHTML( "<ul>\n" );
98 for( $n = 0; $n < $offlimit; $n++ ) {
99 if ( 0 == $nCur && 0 == $nOld ) { break; }
100
101 if ( ( 0 == $nOld ) ||
102 ( ( 0 != $nCur ) &&
103 ( $obj1->cur_timestamp >= $obj2->old_timestamp ) ) ) {
104 $ns = $obj1->cur_namespace;
105 $t = $obj1->cur_title;
106 $ts = $obj1->cur_timestamp;
107 $comment =$obj1->cur_comment;
108 $me = $obj1->cur_minor_edit;
109
110 $obj1 = wfFetchObject( $res1 );
111 $topmark = true;
112 --$nCur;
113 } else {
114 $ns = $obj2->old_namespace;
115 $t = $obj2->old_title;
116 $ts = $obj2->old_timestamp;
117 $comment =$obj2->old_comment;
118 $me = $obj2->old_minor_edit;
119
120 $obj2 = wfFetchObject( $res2 );
121 $topmark = false;
122 --$nOld;
123 }
124 if( $n >= $offset )
125 ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, ( $me > 0) );
126 }
127 $wgOut->addHTML( "</ul>\n" );
128 }
129
130 function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor )
131 {
132 global $wgLang, $wgOut, $wgUser, $target;
133 $page = Title::makeName( $ns, $t );
134 $link = $sk->makeKnownLink( $page, "" );
135 $topmarktext = $topmark ? wfMsg ( "uctop" ) : "";
136 $sysop = $wgUser->isSysop();
137
138 $extraRollback = $_REQUEST['bot'] ? '&bot=1' : '';
139 if($sysop && $topmark ) {
140 $topmarktext .= " [". $sk->makeKnownLink( $page,
141 wfMsg( "rollbacklink" ),
142 "action=rollback&from=" . urlencode( $target ) . $extraRollback ) ."]";
143 }
144 if($comment) {
145
146 $comment="<em>(". htmlspecialchars( $comment ) .")</em> ";
147
148 }
149 $d = $wgLang->timeanddate( $ts, true );
150
151 if ($isminor) {
152 $mflag = "<strong>" . wfMsg( "minoreditletter" ) . "</strong> ";
153 }
154
155 $wgOut->addHTML( "<li>{$d} {$mflag}{$link} {$comment}{$topmarktext}</li>\n" );
156 }
157
158 function ucCountLink( $lim, $d )
159 {
160 global $wgUser, $wgLang, $target;
161
162 $sk = $wgUser->getSkin();
163 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
164 "{$lim}", "target={$target}&days={$d}&limit={$lim}" );
165 return $s;
166 }
167
168 function ucDaysLink( $lim, $d )
169 {
170 global $wgUser, $wgLang, $target;
171
172 $sk = $wgUser->getSkin();
173 $s = $sk->makeKnownLink( $wgLang->specialPage( "Contributions" ),
174 "{$d}", "target={$target}&days={$d}&limit={$lim}" );
175 return $s;
176 }
177 ?>