X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialWantedpages.php;h=5fc45a8834dd152b107d20e5fd4489d3e560562b;hb=c78f424cf68adc7bd5807355473f1e698162d4ad;hp=3f84ce333af5a943d6264829b35c39b7d0a62307;hpb=d82c14fb4fbac288b42ca5918b0a72f33ecb1e69;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialWantedpages.php b/includes/SpecialWantedpages.php index 3f84ce333a..5fc45a8834 100644 --- a/includes/SpecialWantedpages.php +++ b/includes/SpecialWantedpages.php @@ -1,74 +1,133 @@ - -global $IP; -include_once ( "$IP/LogPage.php" ) ; +getValidSpecialPages() ; - $mw = $vsp["Wantedpages"] ; - $mw = str_replace ( " " , "_" , $mw ) ; # DBKEY - $log = new LogPage ( $mw ) ; - $log->mUpdateRecentChanges = false ; - - $wgOut->setRobotpolicy( "noindex,nofollow" ); - global $wgMiserMode; - if ( $wgMiserMode ) { - $s = "=== " . wfMsg( "perfdisabled" ) . " ===\n" ; - $s .= $log->getContent() ; - $wgOut->addWikiText ( $s ) ; - return; + function WantedPagesPage( $inc = false, $nlinks = true ) { + $this->setListoutput( $inc ); + $this->nlinks = $nlinks; } - if ( ! $limit ) { - $limit = $wgUser->getOption( "rclimit" ); - if ( ! $limit ) { $limit = 50; } + function getName() { + return 'Wantedpages'; } - if ( ! $offset ) { $offset = 0; } - - $cache = "" ; # To be saved, eventually - - $sql = "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, $fname ); - $sk = $wgUser->getSkin(); + function isExpensive() { + return true; + } + function isSyndicated() { return false; } - $top = wfShowingResults( $offset, $limit ); - $wgOut->addHTML( "
{$top}\n" );
+ function getSQL() {
+ global $wgWantedPagesThreshold;
+ $count = $wgWantedPagesThreshold - 1;
+ $dbr = wfGetDB( DB_SLAVE );
+ $pagelinks = $dbr->tableName( 'pagelinks' );
+ $page = $dbr->tableName( 'page' );
+ return
+ "SELECT 'Wantedpages' AS type,
+ pl_namespace AS namespace,
+ pl_title AS title,
+ COUNT(*) AS value
+ FROM $pagelinks
+ LEFT JOIN $page AS pg1
+ ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title
+ LEFT JOIN $page AS pg2
+ ON pl_from = pg2.page_id
+ WHERE pg1.page_namespace IS NULL
+ AND pl_namespace NOT IN ( 2, 3 )
+ AND pg2.page_namespace != 8
+ GROUP BY 1,2,3
+ HAVING COUNT(*) > $count";
+ }
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialpage( "Wantedpages" ) );
- $wgOut->addHTML( "
{$sl}\n" );
+ /**
+ * Cache page existence for performance
+ */
+ function preprocessResults( &$db, &$res ) {
+ $batch = new LinkBatch;
+ while ( $row = $db->fetchObject( $res ) )
+ $batch->addObj( Title::makeTitleSafe( $row->namespace, $row->title ) );
+ $batch->execute();
- $s = "
{$sl}\n" ); - # Saving cache - if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable - $log->mContent = $cache ; - $log->mContentLoaded = true ; - $log->saveContent() ; + $wpp = new WantedPagesPage( $inc, $nlinks ); + + $wpp->doQuery( $offset, $limit, !$inc ); } -?> +