コード例 #1
0
 /**
  * What we should do if the permission action is clicked.
  * @param OutputPage $output
  * @param Article $article
  * @param Title $title
  * @param User $user
  * @param WebRequest $request
  * @Param MediaWiki $wiki
  */
 static function displayACLForm($output, $article, $title, $user, $request, $wiki)
 {
     global $wgParser;
     if ($request->getVal('action') != self::$ACTION) {
         return true;
     }
     $text = "";
     $owner = MWUtil::pageOwner($title, true);
     $text .= "Page owner is '''" . $owner->getName() . "'''.";
     ACL::loadUserGroups();
     $ownergroups = ACL::getUserGroups($owner);
     $ogroups = " Owner belongs to these user groups:";
     if ($ownergroups) {
         foreach ($ownergroups as $g) {
             $ogroups .= $g['name'] . ",";
         }
     } else {
         $ogroups = " Owner does not belong to any user group";
     }
     $text .= $ogroups . "\n\n";
     $permissionpage = ACL_ACL . ":" . $article->getID();
     $permissiontitle = Title::newFromText($permissionpage);
     $ns = $title->getNSText();
     if (!$ns) {
         $ns = "Main";
     }
     $sp = SpecialPage::getPage("FormEdit");
     $sp_url = $sp->getTitle()->getLocalURL();
     $sp_url .= "?form=" . self::$FORM . "&target={$permissionpage}&ACL Page Permission[PageId]={$article->getID()}&ACL Page Permission[PageName]={$title->getDBkey()}&ACL Page Permission[Namespace]={$ns}";
     if ($permissiontitle->exists()) {
         $text .= "[[{$permissionpage}|View Page Permission]]\n\n----\n";
         $output->addWikiText($text);
         $output->addHTML("<a href='{$sp_url}'>Edit permission for this page</a>");
     } else {
         $text .= "No page specific Permission is set.";
         $output->addWikiText($text);
         $output->addHTML("<a href='{$sp_url}'>Set permission for this page</a>");
     }
     return false;
 }
コード例 #2
0
/**
 *
 * Return all groups one user belongs to
 *
 * @param $parser
 */
function usergroups(&$parser, $username, $includepredfined = false)
{
    global $wgUser;
    if ($username === 'current') {
        $username = $wgUser->getName();
    }
    ACL::loadUserGroups();
    $groups = ACL::getUserGroupsByUsername($username);
    $grps = array();
    foreach ($groups as $g) {
        $grps[] = $g['name'];
    }
    $prefinedgroups = ACL::getPredefinedGroups();
    if (!$includepredfined) {
        $grps = array_diff($grps, $prefinedgroups);
    }
    sort($grps);
    return implode(",", $grps);
}