X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialRecentchanges.php;h=e8b763dcf63c7821f79db94c7a065858302030be;hb=ef98e54686112443e4a7799407b41fa33bc72fbc;hp=c0fa2ca88dbaee1c66bdeb9f91aae42ad9e0908a;hpb=0a164de2ba75fdbadb235403147e14f5ee73868b;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialRecentchanges.php b/includes/SpecialRecentchanges.php index c0fa2ca88d..e8b763dcf6 100644 --- a/includes/SpecialRecentchanges.php +++ b/includes/SpecialRecentchanges.php @@ -2,8 +2,8 @@ function wfSpecialRecentchanges( $par ) { - global $wgUser, $wgOut, $wgLang, $wgTitle; - global $days, $hideminor, $from, $hidebots; # From query string + global $wgUser, $wgOut, $wgLang, $wgTitle, $wgMemc, $wgDBname; + global $days, $hideminor, $from, $hidebots, $hideliu; # From query string $fname = "wfSpecialRecentchanges"; if( $par ) { @@ -12,12 +12,16 @@ function wfSpecialRecentchanges( $par ) if( in_array( "bots", $bits ) ) $hidebots = 0; if( in_array( "hideminor", $bits ) ) $hideminor = 1; if( in_array( "minor", $bits ) ) $hideminor = 0; + if( in_array( "hideliu", $bits) ) $hideliu = 1; } $sql = "SELECT MAX(rc_timestamp) AS lastmod FROM recentchanges"; $res = wfQuery( $sql, DB_READ, $fname ); $s = wfFetchObject( $res ); - $wgOut->checkLastModified( $s->lastmod ); + if( $wgOut->checkLastModified( $s->lastmod ) ){ + # Client cache fresh and headers sent, nothing more to do. + return; + } $rctext = wfMsg( "recentchangestext" ); @@ -37,7 +41,9 @@ function wfSpecialRecentchanges( $par ) $days = (int)$days; list( $limit, $offset ) = wfCheckLimits( 100, "rclimit" ); $now = wfTimestampNow(); - $cutoff = wfUnix2Timestamp( time() - ( $days * 86400 ) ); + $cutoff_unixtime = time() - ( $days * 86400 ); + $cutoff_unixtime = $cutoff_unixtime - ($cutoff_unixtime % 86400); + $cutoff = wfUnix2Timestamp( $cutoff_unixtime ); if(preg_match('/^[0-9]{14}$/', $from) and $from > $cutoff) { $cutoff = $from; } else { @@ -45,18 +51,16 @@ function wfSpecialRecentchanges( $par ) } $sk = $wgUser->getSkin(); - + $showhide = array( wfMsg( "show" ), wfMsg( "hide" )); + if ( ! isset( $hideminor ) ) { $hideminor = $wgUser->getOption( "hideminor" ); } + $hideminor = ($hideminor ? 1 : 0); if ( $hideminor ) { $hidem = "AND rc_minor=0"; - $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), - WfMsg( "show" ), "days={$days}&limit={$limit}&hideminor=0" ); } else { $hidem = ""; - $mlink = $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), - WfMsg( "hide" ), "days={$days}&limit={$limit}&hideminor=1" ); } if ( !isset( $hidebots ) ) { @@ -65,14 +69,37 @@ function wfSpecialRecentchanges( $par ) if( $hidebots ) { $hidem .= " AND rc_bot=0"; } + $hidebots = ($hidebots ? 1 : 0); + + if ( !isset( $hideliu ) ) { + $hideliu = 0; + } + if ( $hideliu ) { + $hidem .= " AND rc_user=0"; + } + $hideliu = ($hideliu ? 1 : 0); + #$hideparams = "hideminor={$hideminor}&hideliu={$hideliu}&hidebots={$hidebots}"; + $urlparams = array( "hideminor" => $hideminor, "hideliu" => $hideliu, "hidebots" => $hidebots ); + $hideparams = wfArrayToCGI( $urlparams ); + + $minorLink = $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), + $showhide[1-$hideminor], wfArrayToCGI( array( "hideminor" => 1-$hideminor ), $urlparams ) ); + $botLink = $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), + $showhide[1-$hidebots], wfArrayToCGI( array( "hidebots" => 1-$hidebots ), $urlparams ) ); + $liuLink = $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), + $showhide[1-$hideliu], wfArrayToCGI( array( "hideliu" => 1-$hideliu ), $urlparams ) ); $uid = $wgUser->getID(); - $sql2 = "SELECT rc_cur_id,rc_namespace,rc_title,rc_user,rc_new," . - "rc_comment,rc_user_text,rc_timestamp,rc_minor,rc_this_oldid,rc_last_oldid,rc_bot" . ($uid ? ",wl_user" : "") . " FROM recentchanges " . + $sql2 = "SELECT recentchanges.*" . ($uid ? ",wl_user" : "") . " FROM recentchanges " . ($uid ? "LEFT OUTER JOIN watchlist ON wl_user={$uid} AND wl_title=rc_title AND wl_namespace=rc_namespace & 65534 " : "") . "WHERE rc_timestamp > '{$cutoff}' {$hidem} " . "ORDER BY rc_timestamp DESC LIMIT {$limit}"; + $res = wfQuery( $sql2, DB_READ, $fname ); + $rows = array(); + while( $row = wfFetchObject( $res ) ){ + $rows[] = $row; + } if(isset($from)) { $note = wfMsg( "rcnotefrom", $limit, @@ -82,38 +109,23 @@ function wfSpecialRecentchanges( $par ) } $wgOut->addHTML( "\n
\n{$note}\n
" ); - $note = rcDayLimitLinks( $days, $limit ); + $note = rcDayLimitLinks( $days, $limit, "Recentchanges", $hideparams, false, $minorLink, $botLink, $liuLink ); $note .= "
\n" . wfMsg( "rclistfrom", $sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ), - $wgLang->timeanddate( $now, true ), "from=$now" ) ); + $wgLang->timeanddate( $now, true ), "{$hideparams}&from=$now" ) ); $wgOut->addHTML( "{$note}\n" ); - $count1 = wfNumRows( $res ); - $obj1 = wfFetchObject( $res ); - $s = $sk->beginRecentChangesList(); - while ( $limit ) { - if ( ( 0 == $count1 ) ) { break; } - - $ts = $obj1->rc_timestamp; - $u = $obj1->rc_user; - $ut = $obj1->rc_user_text; - $ns = $obj1->rc_namespace; - $ttl = $obj1->rc_title; - $com = $obj1->rc_comment; - $me = ( $obj1->rc_minor > 0 ); - $new = ( $obj1->rc_new > 0 ); - $watched = ($obj1->wl_user > 0); - $oldid = $obj1->rc_this_oldid ; - $diffid = $obj1->rc_last_oldid ; - - $obj1 = wfFetchObject( $res ); - --$count1; - if ( ! ( $hideminor && $me ) ) { - $s .= $sk->recentChangesLine( $ts, $u, $ut, $ns, $ttl, - $com, $me, $new, $watched, $oldid , $diffid ); + foreach( $rows as $obj ){ + if( $limit == 0) { + break; + } + + if ( ! ( $hideminor && $obj->rc_minor ) ) { + $rc = RecentChange::newFromRow( $obj ); + $s .= $sk->recentChangesLine( $rc, $obj->wl_user ); --$limit; } } @@ -143,7 +155,8 @@ function rcDaysLink( $lim, $d, $page="Recentchanges", $more="" ) return $s; } -function rcDayLimitLinks( $days, $limit, $page="Recentchanges", $more="", $doall = false ) +function rcDayLimitLinks( $days, $limit, $page="Recentchanges", $more="", $doall = false, $minorLink = "", + $botLink = "", $liuLink = "" ) { if ($more != "") $more .= "&"; $cl = rcCountLink( 50, $days, $page, $more ) . " | " . @@ -157,10 +170,12 @@ function rcDayLimitLinks( $days, $limit, $page="Recentchanges", $more="", $doall rcDaysLink( $limit, 14, $page, $more ) . " | " . rcDaysLink( $limit, 30, $page, $more ) . ( $doall ? ( " | " . rcDaysLink( $limit, 0, $page, $more ) ) : "" ); - $note = wfMsg( "rclinks", $cl, $dl, $mlink ); + $shm = wfMsg( "showhideminor", $minorLink, $botLink, $liuLink ); + $note = wfMsg( "rclinks", $cl, $dl, $shm ); return $note; } +# Obsolete? Isn't called from anywhere and $mlink isn't defined function rcLimitLinks( $page="Recentchanges", $more="", $doall = false ) { if ($more != "") $more .= "&";