• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(解析,編集中);

*目次 [#jc4c1b63]
#contents
----
#lsx(new=true);

*関連 [#p963a4d4]
#lsx(tag=解析,new=true,except=^WikiEngine/MediaWiki(/.*)?$)

[[検索:MediaWiki]]

*参考 [#k91a73dd]
[[Google:MediaWiki]]

:design.txt|docs/design.txt
: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 [#ya91fe21]


**主処理への入り口 [#f5dc3ecc]
-index.phpがエントリーポイント。
-なぜかMediaWiki::initializeの中に主処理がある。
index.php > MediaWiki::initialize > MediaWiki::performAction > (リクエストの'action'次第で分岐、それぞれの処理へ)
-initialize直後にCleanup。


**MediaWikiひとめぐり [#cb2127c6]
起動から終了までの主な処理を処理順に。

MediaWiki::performActionが処理の中心。
ここで何をするかはMediaWikiの外から与えられるリクエスト。

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


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

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


***MediaWikiが処理する'action' [#fbde7197]
-dublincore
-creativecommons
-credits


***Articleが処理する'action' [#r99ec491]
-view *
-watch
-unwatch
-delete
-revert
-rollback
-protect
-unprotect
-info
-markpatrolled
-render
-deletetrackback
-purge
-print


***その他 [#feb68484]
-submit *(editを含む)
-edit *
-history *
-raw ?


**action 'view' [#u4b9390e]
Articleが処理する。

includes/Article.php:
actionのデフォルト。
リクエストで指示されたページを表示する。

スキン参照。
プロセス名変更。
名前空間取得。

リクエストからOldIDを得て、不正なものならリダイレクト。
OldID…履歴のID、Wikipediaでの「特定版」?

-diff
-rcid
-rdfrom
-diffonly(利用者の設定と関連)

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があれば…
外部からのリダイレクト。

要ログインページ。

履歴。

さらに追加。
&#x3c;pre>…</pre>追加。
&#x3c;span class="redirectText">…</span>追加。
MediaWikiでのページキャッシュ。
履歴ではページキャッシュを無効に。

ページタイトル取得。

名無しさん用会話ページの場合の追加分。

パトロール機能のためのUI追加。
&#x3c;div class='patrollink'>…</div>追加。

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

ページ出力。


**action 'edit' [#e02da3fe]
EditPageまたはExternalEditが処理する。
イベント'CustomEditor'実行。正しく実行できたことが前提条件。
なぜ前提か?

	$editor = new EditPage( $article );
	$editor->submit();

	$extedit = new ExternalEdit( $article, $mode );
	$extedit->edit();