make logging available for iSchedule, only backported so class stays close to trunk, iSchedule itself is not yet ready to be backported

This commit is contained in:
Ralf Becker 2012-10-16 11:50:59 +00:00
parent d4a9709aab
commit 5c5b4e1b16

View File

@ -203,6 +203,13 @@ class groupdav extends HTTP_WebDAV_Server
*/ */
var $propfind_options; var $propfind_options;
/**
* Reference to active instance, used by exception handler
*
* @var groupdav
*/
protected static $instance;
function __construct() function __construct()
{ {
if (!$this->debug) $this->debug = (int)$GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level']; if (!$this->debug) $this->debug = (int)$GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level'];
@ -269,6 +276,8 @@ class groupdav extends HTTP_WebDAV_Server
$this->current_user_principal = parse_url($this->current_user_principal,PHP_URL_PATH); $this->current_user_principal = parse_url($this->current_user_principal,PHP_URL_PATH);
} }
$this->accounts = $GLOBALS['egw']->accounts; $this->accounts = $GLOBALS['egw']->accounts;
self::$instance = $this;
} }
/** /**
@ -1560,7 +1569,15 @@ class groupdav extends HTTP_WebDAV_Server
return $ok; return $ok;
} }
private static $request_starttime; protected static $request_starttime;
/**
* Log level from user prefs: $GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level'])
* - 'f' files directory
* - 'r' to error-log, but only shortend requests
*
* @var string
*/
protected static $log_level;
/** /**
* Serve WebDAV HTTP request * Serve WebDAV HTTP request
@ -1569,8 +1586,8 @@ class groupdav extends HTTP_WebDAV_Server
*/ */
function ServeRequest() function ServeRequest()
{ {
if (($debug_level=$GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level']) === 'r' || if ((self::$log_level=$GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level']) === 'r' ||
$debug_level === 'f' || $this->debug) self::$log_level === 'f' || $this->debug)
{ {
self::$request_starttime = microtime(true); self::$request_starttime = microtime(true);
$this->store_request = true; $this->store_request = true;
@ -1586,11 +1603,11 @@ class groupdav extends HTTP_WebDAV_Server
* *
* @param string $extra='' extra text to add below request-log, eg. exception thrown * @param string $extra='' extra text to add below request-log, eg. exception thrown
*/ */
private function log_request($extra='') protected function log_request($extra='')
{ {
if (self::$request_starttime) if (self::$request_starttime)
{ {
if (($debug_level=$GLOBALS['egw_info']['user']['preferences']['groupdav']['debug_level']) === 'f') if (self::$log_level === 'f')
{ {
$msg_file = $GLOBALS['egw_info']['server']['files_dir']; $msg_file = $GLOBALS['egw_info']['server']['files_dir'];
$msg_file .= '/groupdav'; $msg_file .= '/groupdav';
@ -1683,16 +1700,16 @@ class groupdav extends HTTP_WebDAV_Server
header('X-WebDAV-Status: 401 Unauthorized', true); header('X-WebDAV-Status: 401 Unauthorized', true);
// if our own logging is active, log the request plus a trace, if enabled in server-config // if our own logging is active, log the request plus a trace, if enabled in server-config
if (self::$request_starttime && isset($GLOBALS['groupdav']) && is_a($GLOBALS['groupdav'],__CLASS__)) if (self::$request_starttime && isset(self::$instance))
{ {
$GLOBALS['groupdav']->_http_status = '401 Unauthorized'; // to correctly log it self::$instance->_http_status = '401 Unauthorized'; // to correctly log it
if ($GLOBALS['egw_info']['server']['exception_show_trace']) if ($GLOBALS['egw_info']['server']['exception_show_trace'])
{ {
$GLOBALS['groupdav']->log_request("\n".$e->getTraceAsString()."\n"); self::$instance->log_request("\n".$e->getTraceAsString()."\n");
} }
else else
{ {
$GLOBALS['groupdav']->log_request(); self::$instance->log_request();
} }
} }
if (is_object($GLOBALS['egw'])) if (is_object($GLOBALS['egw']))