2013-08-31 40 views
3

我想添加一個div到我的邊欄,我只想讓這個塊顯示給管理員。如何檢查用戶是否是php中的管理員?我試圖將這添加到myskin.php文件,並不知道如何去做。我一直在使用這樣的事情來檢查,如果用戶登錄,如何在Mediawiki中使用Php檢查用戶是否是Sysop?

<?php if($this->data['loggedin']) { ?> 

有什麼類似的檢查,如果用戶是爲操作員?

回答

3

* blackops_programmer *的答案中的代碼檢查用戶是否可以保護頁面。默認情況下,這將是sysops,但可以從任何組中分配或刪除權限。

如果你想做的事情取決於保護頁面的權利,那麼檢查權限是正確的方法(除非你使用$ this-> getUser(),而不是$ wgUser)。 但是,如果您確實想要檢查sysop組,請使用以下命令:

if (in_array('sysop', $this->getUser()->getEffectiveGroups()) { 
    echo 'Hello People'; 
} 
+2

+1。無論您希望允許系統管理員執行什麼操作,將這個權限分配給sysop組,然後使用$ this-> getUser() - > isAllowed()檢查它,也可以組成新的用戶權限。 '。 –

+0

嗨brightbyte,多數民衆贊成在完善和它更有意義使用你的方法對我來說。我試圖在我的基本模板中添加,我得到這個錯誤:致命錯誤:調用未定義的方法MyCustomTemplate :: getUser()在本地\維基\皮膚\ muycustomtemplate \ MyCustomTemplate.skin.php行331 – Neel

+0

它的工作原理當我有$ wgUser而不是getUser()在我的基本模板中,但顯示「致命錯誤:調用未定義的方法」,當我使用getUser()。爲什麼你建議不要使用$ wgUser?此外,我相信getUser()isint工作在我的基本模板的HTML部分也許我可能需要定義getUser()的方法工作,並不知道如何做到這一點... – Neel

0

我想我明白了。我增加了以下我的皮膚模板,以增加對sysops和非sysops特殊條件:

 <?php 

     global $wgUser; 

     if($wgUser->isAllowed('protect')) { 
     // if sysop 
      echo 'Hello People'; 
     } 

     else { 
      echo 'Yo'; 
     } 
     ?>    

我上心從這裏:Check if user is sysop

如果有更好的方式來做到這一點,請不要讓我知道。但到目前爲止,上面似乎工作時,我將代碼添加到我的皮膚的基板。

+0

這並不真正檢查用戶組。如果您想要用戶組,請參閱我剛剛添加的答案。 – brightbyte