tpl_title = 'システムエラー';
}
/**
* Page のプロセス。
*
* @return void
*/
function process() {
$this->action();
$this->sendResponse();
}
/**
* Page のプロセス。
*
* @return void
*/
function action(){
$this->tpl_error = "システムエラーが発生しました。
大変お手数ですが、サイト管理者までご連絡ください。";
if (DEBUG_MODE) {
echo '
';
echo '
▼▼▼ デバッグ情報ここから ▼▼▼
';
echo '
';
echo htmlspecialchars($this->sfGetErrMsg(), ENT_QUOTES, CHAR_CODE);
echo '
';
echo '
▲▲▲ デバッグ情報ここまで ▲▲▲
';
echo '
';
}
}
/**
* Page のレスポンス送信.
*
* @return void
*/
function sendResponse() {
$this->adminPage = SC_Utils_Ex::sfIsAdminFunction();
if ($this->adminPage) {
$this->tpl_mainpage = 'login_error.tpl';
$this->template = LOGIN_FRAME;
$this->objDisplay->prepare($this, true);
} else {
$this->objDisplay->prepare($this);
}
$this->objDisplay->response->write();
}
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
/**
* トランザクショントークンに関して処理しないようにオーバーライド
*/
function doValidToken() {
}
/**
* トランザクショントークンに関して処理しないようにオーバーライド
*/
function setTokenTo() {
}
/**
* エラーメッセージを生成する
*
* @return string
*/
function sfGetErrMsg() {
$errmsg = '';
$errmsg .= $this->lfGetErrMsgHead();
$errmsg .= "\n";
// PEAR エラーを伴う場合
if (!is_null($this->pearResult)) {
$errmsg .= $this->pearResult->message . "\n\n";
$errmsg .= $this->pearResult->userinfo . "\n\n";
$errmsg .= SC_Utils_Ex::sfBacktraceToString($this->pearResult->backtrace);
}
// (上に該当せず)バックトレーススタックが指定されている場合
else if (is_array($this->backtrace)) {
$errmsg .= SC_Utils_Ex::sfBacktraceToString($this->backtrace);
}
// (上に該当せず)バックトレースを生成できる環境(一般的には PHP 4 >= 4.3.0, PHP 5)の場合
else if (function_exists("debug_backtrace")) {
$backtrace = debug_backtrace();
// バックトレースのうち handle_error 以前は通常不要と考えられるので削除
$cnt = 0;
$offset = 0;
foreach ($backtrace as $key => $arrLine) {
$cnt ++;
if (!isset($arrLine['file']) && $arrLine['function'] === 'handle_error') {
$offset = $cnt;
break;
}
}
if ($offset !== 0) {
$backtrace = array_slice($backtrace, $offset);
}
$errmsg .= SC_Utils_Ex::sfBacktraceToString($backtrace);
}
// デバッグ用のメッセージが指定されている場合
if (!empty($this->arrDebugMsg)) {
$errmsg .= implode("\n\n", $this->arrDebugMsg) . "\n";
}
return $errmsg;
}
/**
* エラーメッセージの冒頭部を生成する
*
* @return string
*/
function lfGetErrMsgHead() {
$errmsg = '';
$errmsg .= SC_Utils_Ex::sfGetUrl() . "\n";
$errmsg .= "\n";
$errmsg .= "SERVER_ADDR: " . $_SERVER['SERVER_ADDR'] . "\n";
$errmsg .= "REMOTE_ADDR: " . $_SERVER['REMOTE_ADDR'] . "\n";
$errmsg .= "USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] . "\n";
return $errmsg;
}
/**
* デバッグ用のメッセージを追加
*
* @return void
*/
function addDebugMsg($debugMsg) {
$this->arrDebugMsg[] = rtrim($debugMsg, "\n");
}
}
?>