From a932e6dacf336e793190c2a32c7d48ca20f2c1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org> Date: Thu, 21 Nov 2019 10:50:58 +0100 Subject: [PATCH] :ambulance: fix(logging) Do not crash on audit logging exceptions issue #6046 --- include/class_logging.inc | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/include/class_logging.inc b/include/class_logging.inc index 63cce8d05..93b2818aa 100644 --- a/include/class_logging.inc +++ b/include/class_logging.inc @@ -139,19 +139,23 @@ class logging if (empty($entry['object'])) { $entry['object'] = 'none'; } - $tabObject = objects::create('auditEvent'); - $baseObject = $tabObject->getBaseObject(); - $baseObject->fdAuditDateTime = DateTime::createFromFormat('U.u', number_format($entry['timestamp'], 6, '.', '')); - $baseObject->fdAuditAction = $entry['action']; - $baseObject->fdAuditAuthorDN = $entry['user']; - $baseObject->fdAuditObjectType = $entry['objecttype']; - $baseObject->fdAuditObject = $entry['object']; - $baseObject->fdAuditAttributes = $entry['changes']; - $baseObject->fdAuditResult = $entry['result']; - $baseObject->base = $config->current['BASE']; - $message = $tabObject->save(); - if (!empty($message)) { - msg_dialog::displayChecks($message); + try { + $tabObject = objects::create('auditEvent'); + $baseObject = $tabObject->getBaseObject(); + $baseObject->fdAuditDateTime = DateTime::createFromFormat('U.u', number_format($entry['timestamp'], 6, '.', '')); + $baseObject->fdAuditAction = $entry['action']; + $baseObject->fdAuditAuthorDN = $entry['user']; + $baseObject->fdAuditObjectType = $entry['objecttype']; + $baseObject->fdAuditObject = $entry['object']; + $baseObject->fdAuditAttributes = $entry['changes']; + $baseObject->fdAuditResult = $entry['result']; + $baseObject->base = $config->current['BASE']; + $message = $tabObject->save(); + if (!empty($message)) { + msg_dialog::displayChecks($message); + } + } catch (FusionDirectoryException $e) { + msg_dialog::display(_('Error'), sprintf(_('Failed to log event (%s - %s): %s'), $entry['action'], $entry['objecttype'], $e->getMessage()), ERROR_DIALOG); } } } -- GitLab