1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php
/*
+-----------------------------------------------------------------------+
| program/include/bugs.inc |
| |
| This file is part of the BQube Webmail client |
| Copyright (C) 2005, BQube Dev - Switzerland |
| All rights reserved. |
| |
| PURPOSE: |
| Provide error handling and logging functions |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
$Id$
*/
// throw system error and show error page
function raise_error($arg=array(), $log=FALSE, $terminate=FALSE)
{
global $__page_content, $CONFIG, $OUTPUT, $ERROR_CODE, $ERROR_MESSAGE;
/* $arg keys:
int code
string type (php, xpath, db, imap, javascript)
string message
sring file
int line
*/
// report bug (if not incompatible browser)
if ($log && $arg['type'] && $arg['message'])
log_bug($arg);
// display error page and terminate script
if ($terminate)
{
$ERROR_CODE = $arg['code'];
$ERROR_MESSAGE = $arg['message'];
include("program/steps/error.inc");
exit;
}
}
// report error
function log_bug($arg_arr)
{
global $CONFIG, $INSTALL_PATH;
$program = $arg_arr['type']=='xpath' ? 'XPath' : strtoupper($arg_arr['type']);
// write error to local log file
if ($CONFIG['debug_level'] & 1)
{
$log_entry = sprintf("[%s] %s Error: %s in %s on line %d\n",
date("d-M-Y H:i:s O", mktime()),
$program,
$arg_arr['message'],
$arg_arr['file'],
$arg_arr['line']);
if ($fp = fopen($INSTALL_PATH.'logs/errors', 'a'))
{
fwrite($fp, $log_entry);
fclose($fp);
}
}
/*
// resport the bug to the global bug reporting system
if ($CONFIG['debug_level'] & 2)
{
$delm = '%AC';
http_request(sprintf('http://roundcube.net/log/bug.php?_type=%s&_domain=%s&_server_ip=%s&_client_ip=%s&_useragent=%s&_url=%s%%3A//%s&_errors=%s%s%s%s%s',
$arg_arr['type'],
$GLOBALS['HTTP_HOST'],
$GLOBALS['SERVER_ADDR'],
$GLOBALS['REMOTE_ADDR'],
rawurlencode($GLOBALS['HTTP_USER_AGENT']),
$GLOBALS['SERVER_PORT']==43 ? 'https' : 'http',
$GLOBALS['HTTP_HOST'].$GLOBALS['REQUEST_URI'],
$arg_arr['file'], $delm,
$arg_arr['line'], $delm,
rawurlencode($arg_arr['message'])));
}
*/
// show error if debug_mode is on
if ($CONFIG['debug_level'] & 4)
{
print "<b>$program Error in $arg_arr[file] ($arg_arr[line]):</b> ";
print nl2br($arg_arr['message']);
print '<br />';
flush();
}
}
?>
|