--- /dev/null
+<?
+
+include_once ( "LogPage.php" ) ;
+
+# This is a class for doing query pages; since they're almost all the same,
+# we factor out some of the functionality into a superclass, and let
+# subclasses derive from it.
+
+class QueryPage {
+
+ # Subclasses return their name here. Make sure the name is also
+ # specified in Language.php, both in the $wgValidSpecialPagesEn
+ # variable, and as a language message param.
+
+ function getName() {
+ return "";
+ }
+
+ # Subclasses return a SQL query here.
+
+ function getSQL( $offset, $limit ) {
+ return "";
+ }
+
+ # Is this query expensive (for some definition of expensive)? Then we
+ # don't let it run in miser mode. The default is 0. Expensive
+ # subqueries should override this.
+
+ function isExpensive( ) {
+ return 0;
+ }
+
+ # Formats the results of the query for display. The skin is the current
+ # skin; you can use it for making links. The result is a single row of
+ # result data. You should be able to grab SQL results off of it.
+
+ function formatResult( $skin, $result ) {
+ return "";
+ }
+
+ # This is the actual workhorse. It does everything needed to make a
+ # real, honest-to-gosh query page.
+
+ function doQuery( $offset, $limit ) {
+
+ global $wgUser, $wgOut, $wgLang, $wgMiserMode;
+
+ $sname = $this->getName();
+ $fname = get_class($this) . "::doQuery";
+
+ if ( $this->isExpensive( ) ) {
+
+ $vsp = $wgLang->getValidSpecialPages();
+ $logpage = new LogPage( $vsp[$sname] );
+ $logpage->mUpdateRecentChanges = false;
+
+ if ( $wgMiserMode ) {
+ $logpage->showAsDisabledPage();
+ return;
+ }
+ }
+
+ $sql = $this->getSQL( $offset, $limit );
+
+ $res = wfQuery( $sql, DB_READ, $fname );
+
+ $sk = $wgUser->getSkin( );
+
+ $top = wfShowingResults( $offset, $limit );
+ $wgOut->addHTML( "<p>{$top}\n" );
+
+ $sl = wfViewPrevNext( $offset, $limit, $wgLang->specialPage( $sname ) );
+ $wgOut->addHTML( "<br>{$sl}\n" );
+
+ $s = "<ol start=" . ( $offset + 1 ) . ">";
+ while ( $obj = wfFetchObject( $res ) ) {
+ $format = $this->formatResult( $sk, $obj );
+ $s .= "<li>{$format}</li>\n";
+ }
+ wfFreeResult( $res );
+ $s .= "</ol>";
+ $wgOut->addHTML( $s );
+ $wgOut->addHTML( "<p>{$sl}\n" );
+
+ # Saving cache
+
+ if ( $this->isExpensive() && $offset == 0 && $limit >= 50 ) {
+ $logpage->replaceContent( $s );
+ }
+ }
+}
+
+# This is a subclass for very simple queries that are just looking for page
+# titles that match some criteria. It formats each result item as a link to
+# that page.
+
+class PageQueryPage extends QueryPage {
+
+ function formatResult( $skin, $result ) {
+ return $skin->makeKnownLink( $result->cur_title, "" );
+ }
+}
+
+?>
<?
-function wfSpecialAncientpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialAncientpages";
+include_once( "QueryPage.php" );
+
+class AncientPagesPage extends QueryPage {
- list( $limit, $offset ) = wfCheckLimits();
+ function getName() {
+ return "Ancientpages";
+ }
+
+ function isExpensive() {
+ return 0;
+ }
- $sql = "SELECT cur_title,cur_user,cur_user_text,cur_comment," .
- "cur_timestamp FROM cur USE INDEX (cur_timestamp) " .
+ function getSQL( $offset, $limit ) {
+ return "SELECT cur_title, cur_timestamp " .
+ "FROM cur USE INDEX (cur_timestamp) " .
"WHERE cur_namespace=0 AND cur_is_redirect=0 " .
" ORDER BY cur_timestamp LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Ancientpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $sk = $wgUser->getSkin();
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $u = $obj->cur_user;
- $ut = $obj->cur_user_text;
- $c = wfEscapeHTML( $obj->cur_comment );
- if ( 0 == $u ) { $ul = $ut; }
- else { $ul = $sk->makeLink( $wgLang->getNsText(2).":{$ut}", $ut ); }
-
- $d = $wgLang->timeanddate( $obj->cur_timestamp, true );
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$d} {$link} . . {$ul}";
+ }
+
+ function formatResult( $skin, $result ) {
+ global $wgLang;
+
+ $d = $wgLang->timeanddate( $result->cur_timestamp, true );
+ $link = $skin->makeKnownLink( $result->cur_title, "" );
+ return "{$link} ({$d})";
+ }
+}
- if ( "" != $c && "*" != $c ) { $s .= " <em>({$c})</em>"; }
- $s .= "</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+function wfSpecialAncientpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $app = new AncientPagesPage();
+
+ $app->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialDeadendpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialDeadendpages";
+include_once( "QueryPage.php" );
+
+class DeadendPagesPage extends PageQueryPage {
+
+ function getName( ) {
+ return "Deadendpages";
+ }
+
+ # LEFT JOIN is expensive
- # Cache
- $vsp = $wgLang->getValidSpecialPages();
- $log = new LogPage( $vsp["Deadendpages"] );
- $log->mUpdateRecentChanges = false;
+ function isExpensive( ) {
+ return 1;
+ }
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
+ function getSQL( $offset, $limit ) {
+ return "SELECT cur_title " .
+ "FROM cur LEFT JOIN links ON cur_title = l_from " .
+ "WHERE l_from IS NULL " .
+ "AND cur_namespace = 0 " .
+ "ORDER BY cur_title " .
+ "LIMIT {$offset}, {$limit}";
}
+}
+
+function wfSpecialDeadendpages() {
list( $limit, $offset ) = wfCheckLimits();
- # Note: title is only the same as l_from for main namespace,
- # but that's what we want, anyways
-
- # XXX: Left joins are losey
-
- $sql = "SELECT cur_title " .
- "FROM cur LEFT JOIN links ON cur_title = l_from " .
- "WHERE l_from IS NULL " .
- "AND cur_namespace = 0 " .
- "ORDER BY cur_title " .
- "LIMIT {$offset}, {$limit}";
-
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Deadendpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link}</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+ $depp = new DeadendPagesPage();
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+ return $depp->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialLonelypages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialLonelypages";
-
- # Cache
- $vsp = $wgLang->getValidSpecialPages();
- $log = new LogPage( $vsp["Lonelypages"] );
- $log->mUpdateRecentChanges = false;
-
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
- }
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $sql = "SELECT cur_title FROM cur LEFT JOIN links ON " .
+include_once( "QueryPage.php" );
+
+class LonelyPagesPage extends PageQueryPage {
+
+ function getName() {
+ return "Lonelypages";
+ }
+
+ function isExpensive() {
+ return 1;
+ }
+
+ function getSQL( $offset, $limit ) {
+
+ return "SELECT cur_title FROM cur LEFT JOIN links ON " .
"cur_id=l_to WHERE l_to IS NULL AND cur_namespace=0 AND " .
"cur_is_redirect=0 ORDER BY cur_title LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Lonelypages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link}</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+ }
+}
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+function wfSpecialLonelypages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $lpp = new LonelyPagesPage();
+
+ return $lpp->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialLongpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialLongpages";
-
- # Cache
- $vsp = $wgLang->getValidSpecialPages();
- $log = new LogPage( $vsp["Longpages"] );
- $log->mUpdateRecentChanges = false;
-
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
- }
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $sql = "SELECT cur_title, LENGTH(cur_text) AS len FROM cur " .
+include_once( "QueryPage.php" );
+
+class LongPagesPage extends QueryPage {
+
+ function getName() {
+ return "Longpages";
+ }
+
+ function isExpensive() {
+ return 1;
+ }
+
+ function getSQL( $offset, $limit ) {
+ return "SELECT cur_title, LENGTH(cur_text) AS len FROM cur " .
"WHERE cur_namespace=0 AND cur_is_redirect=0 ORDER BY " .
"LENGTH(cur_text) DESC LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
+ }
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Longpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
+ function formatResult( $skin, $result ) {
+ $nb = wfMsg( "nbytes", $result->len );
+ $link = $skin->makeKnownLink( $result->cur_title, "" );
+ return "{$link} ({$nb})";
+ }
+}
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $nb = wfMsg( "nbytes", $obj->len );
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link} ({$nb})</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+function wfSpecialLongpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+ $lpp = new LongPagesPage( );
+
+ $lpp->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialNewpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialNewpages";
+include_once( "QueryPage.php" );
- list( $limit, $offset ) = wfCheckLimits();
+class NewPagesPage extends QueryPage {
- $sql = "SELECT rc_title AS cur_title,rc_user AS cur_user,rc_user_text AS cur_user_text,rc_comment as cur_comment," .
+ function getName() {
+ return "Newpages";
+ }
+
+ function isExpensive() {
+ return 0;
+ }
+
+ function getSQL( $offset, $limit ) {
+ return "SELECT rc_title AS cur_title,rc_user AS cur_user,rc_user_text AS cur_user_text,rc_comment as cur_comment," .
"rc_timestamp AS cur_timestamp,length(cur_text) as cur_length FROM recentchanges,cur " .
"WHERE rc_cur_id=cur_id AND rc_new=1 AND rc_namespace=0 AND cur_is_redirect=0 " .
"ORDER BY rc_timestamp DESC LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Newpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $sk = $wgUser->getSkin();
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $u = $obj->cur_user;
- $ut = $obj->cur_user_text;
- $length= wfmsg("nbytes",$obj->cur_length);
- $c = wfEscapeHTML( $obj->cur_comment );
- if ( 0 == $u ) { $ul = $ut; }
- else { $ul = $sk->makeLink( $wgLang->getNsText(2).":{$ut}", $ut ); }
+ }
+
+ function formatResult( $skin, $result ) {
+
+ global $wgLang;
+
+ $u = $result->cur_user;
+ $ut = $result->cur_user_text;
+
+ $length = wfmsg( "nbytes", $result->cur_length );
+ $c = wfEscapeHTML( $result->cur_comment );
+
+ if ( 0 == $u ) { # not by a logged-in user
+ $ul = $ut;
+ }
+ else {
+ $ul = $skin->makeLink( $wgLang->getNsText(2) . ":{$ut}", $ut );
+ }
+
+ $d = $wgLang->timeanddate( $result->cur_timestamp, true );
+ $link = $skin->makeKnownLink( $result->cur_title, "" );
+ $s = "{$d} {$link} ({$length}) . . {$ul}";
+
+ if ( "" != $c && "*" != $c ) {
+ $s .= " <em>({$c})</em>";
+ }
- $d = $wgLang->timeanddate( $obj->cur_timestamp, true );
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$d} {$link} ({$length}) . . {$ul}";
+ return $s;
+ }
+}
- if ( "" != $c && "*" != $c ) { $s .= " <em>({$c})</em>"; }
- $s .= "</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+function wfSpecialNewpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $npp = new NewPagesPage();
+
+ $npp->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialPopularpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialPopularpages";
-
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $wgOut->addWikiText( wfMsg( "perfdisabled" ) );
- return;
- }
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $sql = "SELECT DISTINCT cur_title, cur_counter FROM cur " .
+include_once( "QueryPage.php" );
+
+class PopularPagesPage extends QueryPage {
+
+ function getName() {
+ return "Popularpages";
+ }
+
+ function isExpensive() {
+ return 1;
+ }
+
+ function getSQL( $offset, $limit ) {
+ return "SELECT DISTINCT cur_title, cur_counter FROM cur " .
"WHERE cur_namespace=0 AND cur_is_redirect=0 ORDER BY " .
"cur_counter DESC LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Popularpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
+ }
+
+ function formatResult( $skin, $result ) {
+ $link = $skin->makeKnownLink( $result->cur_title, "" );
+ $nv = wfMsg( "nviews", $result->cur_counter );
+ return "{$link} ({$nv})";
+ }
+}
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $nv = wfMsg( "nviews", $obj->cur_counter );
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link} ({$nv})</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+function wfSpecialPopularpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $ppp = new PopularPagesPage();
+
+ return $ppp->doQuery( $offset, $limit );
}
?>
<?
-function wfSpecialShortpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialShortpages";
-
- # Cache
- $vsp = $wgLang->getValidSpecialPages();
- $log = new LogPage( $vsp["Shortpages"] );
- $log->mUpdateRecentChanges = false;
-
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
- }
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $sql = "SELECT cur_title, LENGTH(cur_text) AS len FROM cur " .
+include_once("QueryPage.php");
+
+class ShortPagesPage extends QueryPage {
+
+ function getName() {
+ return "Shortpages";
+ }
+
+ function isExpensive() {
+ return 1;
+ }
+
+ function getSQL( $offset, $limit ) {
+ return "SELECT cur_title, LENGTH(cur_text) AS len FROM cur " .
"WHERE cur_namespace=0 AND cur_is_redirect=0 ORDER BY " .
"LENGTH(cur_text) LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Shortpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $sk = $wgUser->getSkin();
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $nb = wfMsg( "nbytes", $obj->len );
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link} ({$nb})</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
-
+ }
+
+ function formatResult( $skin, $result ) {
+ $nb = wfMsg( "nbytes", $result->len );
+ $link = $skin->makeKnownLink( $result->cur_title, "" );
+ return "{$link} ({$nb})";
+ }
+}
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+function wfSpecialShortpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $spp = new ShortPagesPage();
+
+ return $spp->doQuery( $offset, $limit );
}
?>
<?
-include_once ( "LogPage.php" ) ;
-
-function wfSpecialWantedpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialWantedpages";
-
- # Cache
- $vsp = $wgLang->getValidSpecialPages() ;
- $log = new LogPage( $vsp["Wantedpages"] );
- $log->mUpdateRecentChanges = false;
-
- $wgOut->setRobotpolicy( "noindex,nofollow" );
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
- }
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $cache = "" ; # To be saved, eventually
-
- $sql = "SELECT bl_to, COUNT( DISTINCT bl_from ) as nlinks " .
+include_once ( "QueryPage.php" ) ;
+
+class WantedPagesPage extends QueryPage {
+
+ function getName() {
+ return "Wantedpages";
+ }
+
+ function isExpensive() {
+ return 1;
+ }
+
+ function getSQL( $offset, $limit ) {
+ return "SELECT bl_to, COUNT( DISTINCT bl_from ) as nlinks " .
"FROM brokenlinks GROUP BY bl_to HAVING nlinks > 1 " .
"ORDER BY nlinks DESC LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialpage( "Wantedpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $nt = Title::newFromDBkey( $obj->bl_to );
-
- $plink = $sk->makeBrokenLink( $nt->getPrefixedText(), "" );
- $nl = wfMsg( "nlinks", $obj->nlinks );
- $nlink = $sk->makeKnownLink( $wgLang->specialPage(
- "Whatlinkshere" ), $nl, "target=" . $nt->getPrefixedURL() );
-
- $cache .= "* [[".$nt->getPrefixedText()."]] ({$nl})\n" ;
-
- $s .= "<li>{$plink} ({$nlink})</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+ }
+
+ function formatResult( $skin, $result ) {
+ global $wgLang;
+
+ $nt = Title::newFromDBkey( $result->bl_to );
+
+ $plink = $skin->makeBrokenLink( $nt->getPrefixedText(), "" );
+ $nl = wfMsg( "nlinks", $result->nlinks );
+ $nlink = $skin->makeKnownLink( $wgLang->specialPage( "Whatlinkshere" ), $nl,
+ "target=" . $nt->getPrefixedURL() );
+
+ return "{$plink} ({$nlink})";
+ }
+}
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+function wfSpecialWantedpages()
+{
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $wpp = new WantedPagesPage();
+
+ $wpp->doQuery( $offset, $limit );
}
?>