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