2016-10-22 49 views
0

我正在編輯一個Mediawiki擴展(PageCreationNotif),當頁面添加到某個類別時發送郵件。 擴展原有的代碼是在這裏:https://phabricator.wikimedia.org/diffusion/EPCN/browse/master/Mediawiki-PHP:檢查一篇文章是否屬於某個類別

我的工作函數(onArticleInsertComplete在PageCreationNotif.hooks.php)需要(& $文章)作爲輸入參數。 我只想在$ article屬於已經創建的「Project」類別時執行功能代碼。

你能否提供我正確的代碼片段來做到這一點?

它會像(僞):

public static function onArticleInsertComplete(&$article){ 

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

預先感謝您。

+0

爲什麼downvote? –

回答

1

沒有像wiki頁面類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. 
    } 
}); 
+0

謝謝你的回答。不幸的是,代碼不起作用。 – Bobby

+0

前幾天我嘗試了類似的版本,唯一的區別是「===」而不是「==」,但沒有郵件到達。 也許有一些擴展的一般步驟,我不理解。 – Bobby

+0

我已經更新了我的答案。在某些情況下,頁面被添加到類別時可能會有延遲;確保你運行所有的工作。 –

相關問題