【问题标题】:Mediawiki-PHP: Check if an article belongs to a categoryMediawiki-PHP:检查文章是否属于某个类别
【发布时间】:2016-10-22 12:52:31
【问题描述】:

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

我正在处理的函数(PageCreationNotif.hooks.php 中的 onArticleInsertComplete)采用(&$article)作为输入参数。 仅当 $article 属于已创建的“项目”类别时,我才想执行功能代码。

您能否提供正确的代码 sn-p 来执行此操作?

就像(伪代码):

public static function onArticleInsertComplete(&$article){

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

提前谢谢你。

【问题讨论】:

  • 为什么投反对票?

标签: php mediawiki mediawiki-extensions


【解决方案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.
    }
} );

【讨论】:

  • 感谢您的回答。不幸的是,代码不起作用。
  • 前几天我自己试过一个类似的版本,唯一的区别是“===”而不是“==”,但是没有邮件到达。也许有一些我没有理解的扩展的一般步骤。
  • 我已经更新了我的答案。在某些情况下,将页面添加到类别中可能会有延迟;确保运行所有作业。
  • 非常感谢,问题解决了!! Mediawiki 是一台很棒的机器
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2016-11-01
相关资源
最近更新 更多