-1

我正在编写一个扩展程序,允许我添加神奇的单词:CURRENTUSER, CURRENTUSERREALNAME, CURRENTUSERLANGABBR, CURRENTUSERGROUPS,现在我想添加CURRENTUSEREDITCOUNTand CURRENTUSEREDITCOUNTALL

我的代码的那部分目前是:

function wfGetCustomVariable(&$parser,&$cache,&$index,&$ret) {
switch ($index) {
    case MAG_CURRENTUSER:
        $parser->disableCache(); # Mark this content as uncacheable
        $ret = $GLOBALS['wgUser']->getName();
        break; 
    case MAG_CURRENTUSERREALNAME:
        $parser->disableCache(); # Mark this content as uncacheable
        $ret = $GLOBALS['wgUser']->getRealName();
        break;
    case MAG_CURRENTUSERLANGABBR
        $parser->disableCache(); # Mark this content as uncacheable
        $ret = $GLOBALS['wgLang']->getCode();
        break;
    case MAG_CURRENTUSERGROUPS
        $parser->disableCache(); # Mark this content as uncacheable
        $array = $GLOBALS['wgUser']->getEffectiveGroups();
        $ret = implode(",", $array);
        break;
}
return true;
}

但是,我似乎找不到用于编辑计数的 $GLOBAL。我基于其他因不同原因使用不同编辑计数的扩展进行了一些研究,并发现:

对于CURRENTUSEREDITCOUNT

function wfContributionseditcount( $uid ) {
if ( $uid != 0 ) {
        global $wgOut, $wgLang;
        $wgOut->addWikiText( wfMsgExt( 'contributionseditcount', array( 'parsemag' ),
        $wgLang->formatNum( User::edits( $uid ) ),
        User::whoIs( $uid ) ) );
    }
    return true;
}

对于CURRENTUSEREDITCOUNTALL

public function execute( $params ) {
    global $wgOut, $wgUser;
    $skin = $wgUser->getSkin();
    $this->setHeaders();
    $this->loadRequest( $params );
    $wgOut->addHTML( $this->makeForm() );
    if( $this->target ) {
        if( User::isIP( $this->target ) ) {
            $this->showResults( $this->countEditsReal( 0, $this->target ) );
        } else {
            $id = User::idFromName( $this->target );
            if( $id ) {
                $this->showResults( $this->countEditsReal( $id, false ), $id );
            } else {
                $wgOut->addHTML( '<p>' . wfMsgHtml( 'countedits-nosuchuser', htmlspecialchars( $this->target ) ) . '</p>' );
            }
        }
    }
    $this->showTopTen( $wgOut );
    return true;
}

我过去曾尝试自学 PHP,但一直在努力。我在当地社区大学报名参加了 PHP 课程,但直到 12 年秋季才开始。我是在找对地方,还是有一个更简单的地方可以找到用户的编辑计数?也许作为/trunk/phase3/includes/User.php某个地方的一部分?我应该提到这需要在运行 MW 1.17.1 的 wiki 上运行,因此classUser无法在 MW 1.18+ 的地方工作。

4

1 回答 1

0

如果您想要更改编辑计数的定义,也许您应该直接更改代码,在删除页面后减少用户的编辑计数。

于 2012-12-14T21:15:52.537 回答