Ignore:
Timestamp:
2010/03/11 10:35:11 (14 years ago)
Author:
kajiwara
Message:

正式版にナイトリービルド版をマージしてみるテスト

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tmp/version-2_5-test/data/class/pages/error/LC_Page_Error_SystemError.php

    r16931 r18609  
    2626 
    2727/** 
    28  * エラー表示のページクラス 
    29  * SC_DbConnでエラーが発生した場合の表示ページ 
     28 * システムエラー表示のページクラス 
     29 * システムエラーや例外が発生した場合の表示ページ 
    3030 * 
    3131 * @package Page 
     
    3434 */ 
    3535class LC_Page_Error_SystemError extends LC_Page_Error { 
     36     
     37    /** PEAR_Error */ 
     38    var $pearResult; 
     39     
     40    /** PEAR_Error がセットされていない場合用のバックトレーススタック */ 
     41    var $backtrace; 
     42 
     43    /** デバッグ用のメッセージ配列 */ 
     44    var $arrDebugMsg = array(); 
    3645 
    3746    // }}} 
     
    4756 
    4857        $this->tpl_title = 'システムエラー'; 
    49         $this->adminPage = $this->isAdminPage(); 
     58        $this->adminPage = SC_Utils_Ex::sfIsAdminFunction(); 
    5059 
    5160        if ($this->adminPage) { 
     
    7887        $objView->assignobj($this); 
    7988        $objView->display($this->flame); 
     89         
     90        if (DEBUG_MODE) { 
     91            echo '<div class="debug">'; 
     92            echo '<div>▼▼▼ デバッグ情報ここから ▼▼▼</div>'; 
     93            echo '<pre>'; 
     94            print_r(htmlspecialchars($this->sfGetErrMsg(), ENT_QUOTES, CHAR_CODE)); 
     95            echo '</pre>'; 
     96            echo '<div>▲▲▲ デバッグ情報ここまで ▲▲▲</div>'; 
     97            echo '</div>'; 
     98        } 
    8099    } 
    81100 
     
    90109 
    91110    /** 
    92      * 管理ページかどうかを判定する. 
     111     * エラーメッセージを生成する 
    93112     * 
    94      * @return boolean 
     113     * @return string 
    95114     */ 
    96     function isAdminPage() { 
    97         return preg_match('|/admin/|', $_SERVER['PHP_SELF']); 
     115    function sfGetErrMsg() { 
     116        $errmsg = ''; 
     117        $errmsg .= $this->lfGetErrMsgHead(); 
     118        $errmsg .= "\n"; 
     119         
     120        // デバッグ用のメッセージが指定されている場合 
     121        if (!empty($this->arrDebugMsg)) { 
     122            $errmsg .= implode("\n\n", $this->arrDebugMsg) . "\n"; 
     123            $errmsg .= "\n"; 
     124        } 
     125         
     126        // PEAR エラーを伴う場合 
     127        if (!is_null($this->pearResult)) { 
     128            $errmsg .= $this->pearResult->message . "\n\n"; 
     129            $errmsg .= $this->pearResult->userinfo . "\n\n"; 
     130            $errmsg .= SC_Utils_Ex::sfBacktraceToString($this->pearResult->backtrace); 
     131        } 
     132        // (上に該当せず)バックトレーススタックが指定されている場合 
     133        else if (is_array($this->backtrace)) { 
     134            $errmsg .= SC_Utils_Ex::sfBacktraceToString($this->backtrace); 
     135        } 
     136        // (上に該当せず)バックトレースを生成できる環境(一般的には PHP 4 >= 4.3.0, PHP 5)の場合 
     137        else if (function_exists("debug_backtrace")) { 
     138            $errmsg .= SC_Utils_Ex::sfBacktraceToString(array_slice(debug_backtrace(), 2)); 
     139        } 
     140         
     141        return $errmsg; 
     142    } 
     143     
     144    /** 
     145     * エラーメッセージの冒頭部を生成する 
     146     * 
     147     * @return string 
     148     */ 
     149    function lfGetErrMsgHead() { 
     150        $errmsg = ''; 
     151        $errmsg .= SC_Utils_Ex::sfGetUrl() . "\n"; 
     152        $errmsg .= "\n"; 
     153        $errmsg .= "SERVER_ADDR: " . $_SERVER['SERVER_ADDR'] . "\n"; 
     154        $errmsg .= "REMOTE_ADDR: " . $_SERVER['REMOTE_ADDR'] . "\n"; 
     155        $errmsg .= "USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] . "\n"; 
     156         
     157        return $errmsg; 
     158    } 
     159 
     160    /** 
     161     * デバッグ用のメッセージを追加 
     162     * 
     163     * @return void 
     164     */ 
     165    function addDebugMsg($debugMsg) { 
     166        $this->arrDebugMsg[] = rtrim($debugMsg, "\n"); 
    98167    } 
    99168} 
Note: See TracChangeset for help on using the changeset viewer.