]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/include/bugs.inc
Imported Upstream version 0.3
[roundcube.git] / program / include / bugs.inc
index f1fa72b7adfac268915fcfea7a92bfc555c2f1e7..4ce4998c4efdde65243a0c7322eda5d566f9a63f 100644 (file)
@@ -4,8 +4,8 @@
  +-----------------------------------------------------------------------+
  | program/include/bugs.inc                                              |
  |                                                                       |
- | This file is part of the BQube Webmail client                         |
- | Copyright (C) 2005, BQube Dev - Switzerland                           |
+ | This file is part of the RoudCube Webmail client                      |
+ | Copyright (C) 2005-2009, RoudCube Dev - Switzerland                   |
  | Licensed under the GNU GPL                                            |
  |                                                                       |
  | PURPOSE:                                                              |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: bugs.inc 90 2005-12-11 23:19:48Z roundcube $
+ $Id: bugs.inc 2862 2009-08-17 09:54:53Z thomasb $
 
 */
 
 
-// throw system error and show error page
-function raise_error($arg=array(), $log=FALSE, $terminate=FALSE)
+/**
+ * Error handling and logging functions
+ *
+ * @package Core
+ */
+
+
+/**
+ * Throw system error and show error page
+ *
+ * @param array Named parameters
+ *  - code: Error code (required)
+ *  - type: Error type [php|db|imap|javascript] (required)
+ *  - message: Error message
+ *  - file: File where error occured
+ *  - line: Line where error occured
+ * @param boolean True to log the error
+ * @param boolean Terminate script execution
+ */
+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);
@@ -48,61 +58,44 @@ function raise_error($arg=array(), $log=FALSE, $terminate=FALSE)
   }
 
 
-// report error
+/**
+ * Report error according to configured debug_level
+ *
+ * @param array Named parameters
+ * @see raise_error()
+ */
 function log_bug($arg_arr)
-  {
-  global $CONFIG, $INSTALL_PATH;
-  $program = $arg_arr['type']=='xpath' ? 'XPath' : strtoupper($arg_arr['type']);
+{
+  global $CONFIG;
+  $program = 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 (empty($CONFIG['log_dir']))
-      $CONFIG['log_dir'] = $INSTALL_PATH.'logs';
-      
-    // try to open specific log file for writing
-    if ($fp = @fopen($CONFIG['log_dir'].'/errors', 'a'))
+  {
+    $post_query = ($_SERVER['REQUEST_METHOD'] == 'POST' ? '?_task='.urlencode($_POST['_task']).'&_action='.urlencode($_POST['_action']) : '');
+    $log_entry = sprintf("%s Error: %s%s (%s %s)",
+      $program,
+      $arg_arr['message'],
+      $arg_arr['file'] ? sprintf(' in %s on line %d', $arg_arr['file'], $arg_arr['line']) : '',
+      $_SERVER['REQUEST_METHOD'],
+      $_SERVER['REQUEST_URI'] . $post_query);
     
-      {
-      fwrite($fp, $log_entry);
-      fclose($fp);
-      }
-    else
-      {
-      // send error to PHPs error handler
+    if (!write_log('errors', $log_entry))
+    {
+      // send error to PHPs error handler if write_log didn't succeed
       trigger_error($arg_arr['message']);
-      }
     }
+  }
 
-/*
   // 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'])));
-    }
-*/
+  {
+    // TODO: Send error via HTTP
+  }
 
   // show error if debug_mode is on
   if ($CONFIG['debug_level'] & 4)
-    {
+  {
     print "<b>$program Error";
 
     if (!empty($arg_arr['file']) && !empty($arg_arr['line']))
@@ -112,8 +105,7 @@ function log_bug($arg_arr)
     print nl2br($arg_arr['message']);
     print '<br />';
     flush();
-    }
   }
+}
 
-
-?>
\ No newline at end of file
+?>