如何以图形方式表示MediaWiki中每页作者的数量?

时间:2010-07-12 09:15:07

标签: graph mediawiki wiki

我们有一个MediaWiki维基。我希望能够报告正在进行多少协作,并且我想到了以下图表:每页的作者数量。所以数据将是这样的:

#Pages #Authors
20     1
10     2
25     3

等。这表明20页只有1位作者,10位有2位,25位有3位,......

有没有人知道获取此信息的方法?

这些信息也需要随时间显示 - 所以如果有人知道如何做到这一点,我将不胜感激。 (例如,上个月25%的页面有2位或更多作者,本月为30%)。

1 个答案:

答案 0 :(得分:2)

这不完全是你想要的,但它可能是一个好的开始。这是一个简单的特殊页面,其唯一目的是显示页面名称和作者数量。

$wgAutoloadClasses['SpecialPagesAuthors'] = $IP . '/additions.php';
$wgSpecialPages['PagesAuthors'] = 'SpecialPagesAuthors';

class SpecialPagesAuthors extends SpecialPage {
    function __construct() {
        parent::__construct( 'PagesAuthors' );
    }

这基本上只是注册页面。

    function execute( $par ) {
        global $wgOut;

        $dbr = wfGetDB( DB_SLAVE );

        $output = <<<WIKITEXT
{| class="wikitable"
! Page !! Authors

WIKITEXT;

我们把所有东西放在一张漂亮的桌子里。

        $query_result = $dbr->select(
            array( 'revision', 'page' ),
            array( 'rev_page', 'page_id', 'page_namespace', 'page_title',
                'COUNT(DISTINCT(rev_user_text)) AS unique_authors' ),
            null,
            __METHOD__,
            array( 'GROUP BY' => 'rev_page', 'ORDER BY' => 'unique_authors DESC' ),
            array( 'page' => array( 'LEFT JOIN', 'page_id=rev_page' ) )
        );

这里我们查询数据库中的页面和作者数量(基本上是编辑页面的唯一用户名和IP的数量)。

        foreach( $query_result as $row ) {
            $title = Title::newFromRow( $row );
            $page_title = $title->getPrefixedText();
            $output .= <<<WIKITEXT
|-
| {$page_title} || {$row->unique_authors}

WIKITEXT;
        }

        $dbr->freeResult( $query_result );

这里我们输出页面名称和作者数量,并释放数据库查询结果。

        $output .= "|}";

        $this->setHeaders();
        $wgOut->addWikiText( $output );
    }
}