1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
<?php
/**
* @file
* @ingroup SpecialPage
*/
/**
* implements Special:Wantedpages
* @ingroup SpecialPage
*/
class WantedPagesPage extends WantedQueryPage {
var $nlinks;
function WantedPagesPage( $inc = false, $nlinks = true ) {
$this->setListoutput( $inc );
$this->nlinks = $nlinks;
}
function getName() {
return 'Wantedpages';
}
function getSQL() {
global $wgWantedPagesThreshold;
$count = $wgWantedPagesThreshold - 1;
$dbr = wfGetDB( DB_SLAVE );
$pagelinks = $dbr->tableName( 'pagelinks' );
$page = $dbr->tableName( 'page' );
$sql = "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 ( " . NS_USER . ", ". NS_USER_TALK . ")
AND pg2.page_namespace != " . NS_MEDIAWIKI . "
GROUP BY pl_namespace, pl_title
HAVING COUNT(*) > $count";
wfRunHooks( 'WantedPages::getSQL', array( &$this, &$sql ) );
return $sql;
}
}
/**
* constructor
*/
function wfSpecialWantedpages( $par = null, $specialPage ) {
$inc = $specialPage->including();
if ( $inc ) {
@list( $limit, $nlinks ) = explode( '/', $par, 2 );
$limit = (int)$limit;
$nlinks = $nlinks === 'nlinks';
$offset = 0;
} else {
list( $limit, $offset ) = wfCheckLimits();
$nlinks = true;
}
$wpp = new WantedPagesPage( $inc, $nlinks );
$wpp->doQuery( $offset, $limit, !$inc );
}
|