我正在更新Mediawiki扩展,显示类别中的所有图像(
CategoryGallery).
代码的一部分是这样的:
// Capitalize the first letter in the category argument,convert spaces to _ $params['cat'] = str_replace ( ' ','_',ucfirst( $params['cat'] ) ); // Retrieve category members from database $dbr = wfgetDB( DB_SLAVE ); $res = $dbr->select( 'categorylinks','cl_from',array ('cl_to' => $params['cat'],'cl_type' => 'file')); $ids = array(); foreach ( $res as $row ) { $ids[] = $row->cl_from; } // Create the gallery $titles = Title::newFromIDs ( $ids ); $text = ''; foreach ( $titles as $title ) { $titlePrefixedDBKey = $title->getPrefixedDBKey(); $text .= $titlePrefixedDBKey; $text .= "|**Username**:\n"; } $output = $parser->renderImagegallery( $text,$params )
解决方法
您的$title变量是
Title
object.您应该可以使用它来获取最新版本的作者:
$currentRevID = $title->getLatestRevID(); $revAuthors = $title->getAuthorsBetween($currentRevID,$currentRevID,1,'include_both'); //1=limit $authorName = $revAuthors[0];
这使用了一个在两个修订版之间返回作者的函数,但我们只是将当前版本作为最小和最大修订版传递.
请注意,编辑图像标题会计为修订版本,因此此代码可能会返回未上载文件的用户的名称.发生的可能性可能取决于您的wiki的使用方式.