檢視 Mediawiki 程式說明 的原始碼
←
Mediawiki 程式說明
跳轉到:
導覽
、
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
您剛才的請求只有這個使用者組的使用者才能使用:
使用者
你可以檢視並複製本頁面的原始碼。
[[分類:Mediawiki]] ==includes/Title.php== 而Title類中 getLocalURL 方法中負責處理 interwiki 的部分有錯,因<nowiki>{{</nowiki>…}}的關係,造成 $namespace 變成 Template ,使URL插入多餘的「Template:」,需抑制修改: #$namespace = $this->getNsText(); #if ( $namespace != '' ) { # Can this actually happen? Interwikis shouldn't be parsed. # Yes! It can in interwiki transclusion. But... it probably shouldn't. # $namespace .= ':'; #} #$url = $interwiki->getURL( $namespace . $this->getDBkey() );// by jj ==includes/parser/Parser.php== 本程式為 wiki 語法解析的核心。 負責取回跨 wiki 內容的方法發生問題,結果傳回[抱歉,模板https://zh.wikibooks.org/wiki/%E5%88%9D%E4%B8%AD%E6%95%B8%E5%AD%B8/%E6%A0%B9%E8%99%9F?action=render讀取失敗]。將有問題段落列在後面: function fetchScaryTemplateMaybeFromCache( $url ) { global $wgTranscludeCacheExpiry;// 跨 wiki 快取生命週期,為 3600 秒,即一小時 $dbr = wfGetDB( DB_SLAVE ); // 暫存條件:目前時間減跨 wiki 快取生命週期 $tsCond = $dbr->timestamp( time() - $wgTranscludeCacheExpiry ); // 取transcache表tc_time及tc_contents欄,條件為tc_url為$url且tc_time長於暫存條件 $obj = $dbr->selectRow( 'transcache', array( 'tc_time', 'tc_contents' ), array( 'tc_url' => $url, "tc_time >= " . $dbr->addQuotes( $tsCond ) ) ); // 如果找到快取內容,傳回 if ( $obj ) { return $obj->tc_contents; } // 執行includes/HttpFunctions.php中MWHttpRequest類別的factory方法,以產生 HTTP 的請求物件 $req = MWHttpRequest::factory( $url ); // 執行請求,會得到結果狀態物件 $status = $req->execute(); // Status object // 執行請求後取回的內容是空值 $text = $req->getContent(); // 執行請求後,結果狀態不是 OK,所以$text得到空值 if ( $status->isOK() ) { $text = $req->getContent(); // 執行請求後,getStatus()得 200 ,所以scarytranscludefailed-httpstatus錯誤提示不會執行 } elseif ( $req->getStatus() != 200 ) { // Though we failed to fetch the content, this status is useless. return wfMessage( 'scarytranscludefailed-httpstatus', $url, $req->getStatus() /* HTTP status */ )->inContentLanguage()->text(); // 執行請求後,getStatus()得 200 ,所以傳回[抱歉,模板https://zh.wikibooks.org/wiki/%E5%88%9D%E4%B8%AD%E6%95%B8%E5%AD%B8/%E6%A0%B9%E8%99%9F?action=render讀取失敗] } else { return wfMessage( 'scarytranscludefailed', $url )->inContentLanguage()->text(); } // 以下更新跨 wiki 快取的欄值 $dbw = wfGetDB( DB_MASTER ); $dbw->replace( 'transcache', array( 'tc_url' ), array( 'tc_url' => $url, 'tc_time' => $dbw->timestamp( time() ), 'tc_contents' => $text) ); // 執行請求後,結果狀態如果是OK,傳回$text return $text; }
返回到
Mediawiki 程式說明
。
導航
個人工具
登入
名字空間
頁面
討論
變換
檢視
閱讀
檢視原始碼
檢視歷史
動作
搜尋
導覽
首頁
近期變動
隨機頁面
使用說明
工具箱
連入頁面
相關頁面修訂記錄
特殊頁面
頁面資訊