Mediawiki-PHP:检查文章是否属于某个类别

时间:2016-10-22 12:52:32

标签: php mediawiki mediawiki-extensions

我正在编辑Mediawiki扩展程序(PageCreationNotif),以便在将页面添加到某个类别时发送邮件。 扩展原始代码位于:https://phabricator.wikimedia.org/diffusion/EPCN/browse/master/

我正在处理的函数(PageCreationNotif.hooks.php中的onArticleInsertComplete)将(& $ article)作为输入参数。 我只想在$ article属于" Project"类别,已经创建。

你能为我提供正确的代码片段吗?

就像(伪代码):

public static function onArticleInsertComplete(&$article){

    if( $article.belongsTo(Category.Project) ){
        //do stuff
    }
}

提前谢谢。

1 个答案:

答案 0 :(得分:1)

在WikiPage类中没有像belongsTo()方法那样的东西,所以你必须自己迭代这些类别,检查成员资格:

public function onArticleInsertComplete( WikiPage &$article ) {
    $inCat = false;
    foreach ( $article->getCategories() as $cat) {
        if ( $cat->getText() === "Project" ) {
            $inCat = true;
        }
    }
    if ( $inCat ) {
        // Send email etc.
    }
}

(代码未经过测试。)

更新:实际上,重新阅读您的问题,我认为您最好不要挂钩CategoryAfterPageAdded

Hooks::register( 'CategoryAfterPageAdded', function( Category $category, WikiPage $page ) {
    if ( $category->getTitle()->getBaseText() === 'Project' ) {
        // Send email.
    }
} );