<?php /** * * @package phpBB * @copyright (c) 2011 phpBB Group * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 * */ namespace phpbb; /** * @ignore */ if (!defined('IN_PHPBB')) { exit; } class error_collector { var $errors; function __construct() { $this->errors = array(); } function install() { set_error_handler(array(&$this, 'error_handler')); } function uninstall() { restore_error_handler(); } function error_handler($errno, $msg_text, $errfile, $errline) { $this->errors[] = array($errno, $msg_text, $errfile, $errline); } function format_errors() { $text = ''; foreach ($this->errors as $error) { if (!empty($text)) { $text .= "<br />\n"; } list($errno, $msg_text, $errfile, $errline) = $error; // Prevent leakage of local path to phpBB install $errfile = phpbb_filter_root_path($errfile); $text .= "Errno $errno: $msg_text at $errfile line $errline"; } return $text; } }