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


Mediawiki-PHP: Check if an article belongs to a category

我正在编辑一个Mediawiki扩展(PageCreationNotif)发送邮件时,一个页面被添加到某个类别。扩展的原始代码在这里:https://phabricator.wikimedia.org/diffusion/EPCN/browse/master/

我正在工作的函数(onArticleInsertComplete在pagecreationnotify .hooks.php)需要一个(&$article)作为输入参数。我想执行函数代码只有当$article属于"项目"类别,已经创建。

你能给我提供正确的代码片段来做到这一点吗?

就像(pseudocode):

public static function onArticleInsertComplete(&$article){
    if( $article.belongsTo(Category.Project) ){
        //do stuff
    }
}

提前感谢。

在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.
    }
} );