2017-01-12 13 views
4

カテゴリ(CategoryGallery)のすべての画像を表示するMediaWiki拡張機能をアップデートしています。Mediawiki php:ファイルをアップロードしたユーザーの名前を取得するには?

画像をアップロードしたユーザーの名前を表示し、ユーザーによってフィルタリングする可能性があります。

コードの一部は、このようなものです:

// 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) 

は、どのように私はそれが(私はユーザー名を入れている)画像ギャラリーに表示する写真をアップロードしたユーザーの名前を取得することができますか?

+0

'$ title-> getFirstRevision() - > getUserText()' – Tgr

+0

ご協力ありがとうございます@Tgr! – user1084363

答えて

0

$title変数はTitle objectです。あなたは、最新のリビジョンの作成者を得るためにそれを使用することができるはずです。

$currentRevID = $title->getLatestRevID(); 
$revAuthors = $title->getAuthorsBetween($currentRevID, $currentRevID, 1, 'include_both'); //1=limit 
$authorName = $revAuthors[0]; 

これは、2つのリビジョン間の著者を返す関数を使用しますが、私たちはminとmaxリビジョンの両方として現在のリビジョンを渡します。

イメージキャプションを編集するとリビジョンとしてカウントされるため、このコードではファイルをアップロードしていないユーザーの名前を返す可能性があります。それが起こる可能性は、おそらくあなたのwikiがどのように使われているかによって決まります。

+1

FWIW上記と私のコードスニペットは、最初のリビジョンの作成者とファイルのアップローダが同じであるという前提で休止しています。これは、異国情勢で真実でない可能性があります。私が心配していることではなく、気がついただけです。 – Tgr

関連する問題