Send to your Kindle ***参考 [#k91a73dd] [[Google:MediaWiki]] :design.txt|[[http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup>http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup]] :Development/ja - MediaWiki|[[http://www.mediawiki.org/wiki/Development/ja>http://www.mediawiki.org/wiki/Development/ja]] :Manual:Database layout - MediaWiki|[[http://www.mediawiki.org/wiki/Manual:Database_layout>http://www.mediawiki.org/wiki/Manual:Database_layout]] :Manual:Contents/ja - MediaWiki|[[http://www.mediawiki.org/wiki/Manual:Contents/ja>http://www.mediawiki.org/wiki/Manual:Contents/ja]] :MediaWiki Documentation|[[http://svn.wikimedia.org/doc/>http://svn.wikimedia.org/doc/]] :The MediaWiki codebase|[[http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase>http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase]] RIGHT:[[:t/解析]] [[:t/参考に]] 他のバージョンについては → [[MediaWiki]] #contents *MediaWiki/1.10 [#ya91fe21] MediaWiki 1.10の解析。 MediaWikiの主要部分を調べた結果。 ***参考 [#k91a73dd] [[Google:MediaWiki]] :design.txt|[[http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup>http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup]] :Development/ja - MediaWiki|[[http://www.mediawiki.org/wiki/Development/ja>http://www.mediawiki.org/wiki/Development/ja]] :Manual:Database layout - MediaWiki|[[http://www.mediawiki.org/wiki/Manual:Database_layout>http://www.mediawiki.org/wiki/Manual:Database_layout]] :Manual:Contents/ja - MediaWiki|[[http://www.mediawiki.org/wiki/Manual:Contents/ja>http://www.mediawiki.org/wiki/Manual:Contents/ja]] :MediaWiki Documentation|[[http://svn.wikimedia.org/doc/>http://svn.wikimedia.org/doc/]] :The MediaWiki codebase|[[http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase>http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase]] *主処理への入り口 [#f5dc3ecc] -index.phpがエントリーポイント。 -initialize直後にCleanup。主処理はどこか? -なぜかMediaWiki::initializeの中に主処理がある。 index.php -> MediaWiki::initialize -> MediaWiki::performAction -> (リクエストの'action'次第で分岐、それぞれの処理へ) *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>MediaWiki/1.10/class/MediaWiki]]が処理する'action' [#fbde7197] -dublincore -creativecommons -credits **[[Article>MediaWiki/1.10/class/Article]]が処理する'action' [#r99ec491] -view * -watch -unwatch -delete -revert -rollback -protect -unprotect -info -markpatrolled -render -deletetrackback -purge -print **その他の'action'一覧 [#feb68484] -submit *(editを含む) -edit * -history * -raw ? **action 'view' [#u4b9390e] 'view' actionのデフォルト。 Articleが処理する。 クエリーで指示されたページを表示する。 ***関連するクエリー [#f1f5c554] -diff 差分表示するか否か。差分表示は独立したactionではなく、action 'view'の一部になっている。 -rcid RecentChange(最近更新されたページ)? 巡回にのみ関連。 -rdfrom 外部からのリダイレクトに関連。 -diffonly(利用者の設定と関連) -oldid 履歴(特定版)ID -direction 履歴と関連。値は'next'または'prev'のどちらかになる。 表示する履歴に関連。 ***やってること [#ia7b9a25] 処理を順に列記する。 ---- スキン参照。 プロセス名変更。 名前空間取得。 クエリーからOldIDを得て、不正なものならリダイレクト。 OldID…履歴のID、Wikipediaでの「特定版」? ArticleFlagをtrueに。 検索エンジンのロボット向けヘッダーの用意。 'diff'やOldIDを与えられたら差分ページを用意。 差分は[[DifferenceEngine>MediaWiki/1.10/class/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' [#e02da3fe] [[EditPage>MediaWiki/1.10/class/EditPage]]または[[ExternalEdit>MediaWiki/1.10/class/ExternalEdit]]が処理する。 イベント'CustomEditor'実行。正しく実行できたことが前提条件。 ExternalEditは[[「編集に外部アプリケーションを使う」>MediaWiki/1.10/編集に外部アプリケーションを使う]]のレスポンスを返す(.ini形式で編集するページ名などを返す)だけ。 この仕組みはMediaWikiの範疇ではなく、ee.plによって実現されている。 **MediaWiki/1.10/ [#b3bfa084] #ls