目次 Edit


他のバージョンについては

MediaWiki
  • -

関連 Edit

MediaWiki/1.10 Edit


検索:MediaWiki

MediaWiki 1.10の解析。

MediaWikiの主要部分を調べた結果。

参考 Edit

参考 Edit


Google:MediaWiki
MediaWiki Documentation
http://svn.wikimedia.org/doc/
The MediaWiki codebase
http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase
design.txt
http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup
Development/ja - MediaWiki
http://www.mediawiki.org/wiki/Development/ja
Manual:Database layout - MediaWiki
http://www.mediawiki.org/wiki/Manual:Database_layout
Manual:Contents/ja - MediaWiki
http://www.mediawiki.org/wiki/Manual:Contents/ja
MediaWiki Documentation
http://svn.wikimedia.org/doc/
The MediaWiki codebase
http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase

WikiEngine/MediaWiki/1.10 Edit

主処理への入り口 Edit

主処理への入り口 Edit

  • index.phpがエントリーポイント。
  • initialize直後にCleanup。主処理はどこか?
  • なぜかMediaWiki::initializeの中に主処理がある。
    index.php > MediaWiki::initialize > MediaWiki::performAction > (URLクエリーの'action'次第で分岐、それぞれの処理へ)
  • initialize直後にCleanup。
    index.php -> MediaWiki::initialize -> MediaWiki::performAction -> (リクエストの'action'次第で分岐、それぞれの処理へ)

MediaWikiひとめぐり Edit


起動から終了までの主な処理を処理順に。

MediaWikiひとめぐり Edit


起動から終了までの主な処理を処理順に記す。

MediaWiki::performActionが処理の中心。


ここで何をするかはMediaWikiの外から与えられるクエリー次第。

ここで何をするかはMediaWikiの外から与えられるリクエスト次第。
  1. index.php
  2. includes/Wiki.php(41)
    MediaWiki::initialize
  3. includes/Wiki.php(365)
    MediaWiki::performAction
    クエリー'action'次第でいろいろ処理。またはOutputPage::redirectを呼び出すことでリダイレクトすることにする(実際の出力は後のOutputPage::outputで)。

    クエリー'action'次第でいろいろ処理。またはOutputPage::redirectを呼び出して、あとでリダイレクトすることにする(実際は後のOutputPage::outputで行なう)。
  4. includes/Wiki.php(289)
    MediaWiki::finalCleanup
  5. includes/Wiki.php(305)
    MediaWiki::doUpdates
    $wgDeferredUpdateListに溜め込んだオブジェクト全て->doUpdates
    こうして処理タイミングを遅らせているのは、処理間の依存関係を解決するため?
  6. includes/OutputPage.php(553)
    OutputPage::output
    スキン適用、HTTPヘッダー・HTMLヘッダー生成、レスポンス出力

action Edit


'action'はほとんどMediaWiki(includes/Wiki.php)とArticle(includes/Article.php)で処理される。

action Edit


actionはほとんどMediaWiki(includes/Wiki.php)とArticle(includes/Article.php)で処理される。
それ以外には3つ程度のクラスしか関与しない。
処理の中心になっているのはこれらの数少ないクラスらしい。

'view'というactionは複数のクラスを通して処理される。
'view'はactionのデフォルト値。

MediaWikiが処理する'action' Edit

  • view *

MediaWiki[?]が処理する'action' Edit

  • dublincore
  • creativecommons
  • credits

Articleが処理する'action' Edit

Article[?]が処理する'action' Edit

  • view *
  • watch
  • unwatch
  • delete
  • revert
  • rollback
  • protect
  • unprotect
  • info
  • markpatrolled
  • render
  • deletetrackback
  • purge
  • print

その他 Edit

その他の'action'一覧 Edit

  • submit *(editを含む)
  • edit *
  • history *
  • raw ?

action 'view' Edit


'view'

actionのデフォルト。

Articleが処理する。

クエリーで指示されたページを表示する。

関連するクエリー Edit

  • diff
    差分表示するか否か。差分表示は独立したactionではなく、action 'view'の一部になっている。
  • rcid
    RecentChange(最近更新されたページ)?

    巡回にのみ関連。
  • rdfrom
    外部からのリダイレクトに関連。
  • diffonly(利用者設定と関連)
  • oldid
    履歴(特定)ID
  • direction
    履歴と関連。値は'next'または'prev'のどちらかになる。

    表示する履歴に関連。

やってること Edit


処理を順に列記する。
  • -

スキン参照。

プロセス名変更。

名前空間取得。

クエリーからOldIDを得て、不正なものならリダイレクト

OldID…履歴のID、Wikipediaでの「特定」?

ArticleFlagをtrueに。

検索エンジンのロボット向けヘッダーの用意。

'diff'やOldIDを与えられたら差分ページを用意。

差分はDifferenceEngine[?]に任せる。

でも最新版を表示することもある。

$this->mIsRedirect でなく、OldIDも与えられていなければ…$this->viewUpdates()

HTTPヘッダーにETagも設定
	wfDebug( 'Article::view using parser cache: ' . ($pcache ? 'yes' : 'no' ) . "\n" );
	if ( $wgUser->getOption( 'stubthreshold' ) ) {
		wfIncrStats( 'pcache_miss_stub' );
	}

リダイレクトページの処理。「~より転送」

リダイレクトページではなくrdfromがあれば…

外部からのリダイレクト

ログインページの処理。

履歴
  • -

ページに追加。

<pre>…</pre>追加。

<span class="redirectText">…</span>追加。

MediaWikiでのページキャッシュ。

履歴ではページキャッシュを無効に。

ページタイトル取得。

名無しさん用会話ページの場合に追加される処理。

巡回機能のためのUI追加。

<div class='patrollink'>…</div>追加。

トラックバック表示の追加。
  • -

ページ出力。

action 'edit' Edit


EditPage[?]またはExternalEdit[?]が処理する。

イベント'CustomEditor'実行。正しく実行できたことが前提条件。

ExternalEditは「編集に外部アプリケーションを使う」[?]のレスポンスを返す(.ini形式で編集するページ名などを返す)だけ。

この仕組みはMediaWikiの範疇ではなく、ee.plによって実現されている。

MediaWiki/1.10/ Edit