From 33cdca317214c989374ea13fa4bfa6d82e78ba28 Mon Sep 17 00:00:00 2001 From: Tyler Vigario Date: Mon, 3 Dec 2018 13:33:41 -0800 Subject: [PATCH 1/2] person_fn type checking & object handling --- src/MonologHandler.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/MonologHandler.php b/src/MonologHandler.php index 6cf7858..754ed92 100644 --- a/src/MonologHandler.php +++ b/src/MonologHandler.php @@ -43,8 +43,17 @@ protected function addContext(array $context = []) } else { if (isset($config['person_fn']) && is_callable($config['person_fn'])) { $data = @call_user_func($config['person_fn']); - if (isset($data['id'])) { - $person = call_user_func($config['person_fn']); + if (! empty($data)) { + if (is_object($data)) { + if (method_exists($data, 'toArray')) { + $data = $data->toArray(); + } else { + $data = (array)$data; + } + } + if (isset($data['id'])) { + $person = $data; + } } } } From 1cf386c0861c2b94fee066b0d187b5af94cb3e87 Mon Sep 17 00:00:00 2001 From: Tyler Vigario Date: Mon, 3 Dec 2018 14:24:46 -0800 Subject: [PATCH 2/2] Improvements --- src/MonologHandler.php | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/MonologHandler.php b/src/MonologHandler.php index 754ed92..ac0cb04 100644 --- a/src/MonologHandler.php +++ b/src/MonologHandler.php @@ -7,12 +7,12 @@ class MonologHandler extends RollbarHandler { protected $app; - + public function setApp($app) { $this->app = $app; } - + protected function write(array $record) { $record['context'] = $this->addContext($record['context']); @@ -30,32 +30,34 @@ protected function addContext(array $context = []) if ($session = $this->app->session->all()) { $config = $this->rollbarLogger->extend([]); - if (empty($config['person']) or ! is_array($config['person'])) { + if (empty($config['person']) || ! is_array($config['person'])) { $person = []; } else { $person = $config['person']; } // Merge person context. - if (isset($context['person']) and is_array($context['person'])) { + if (isset($context['person']) && is_array($context['person'])) { $person = $context['person']; unset($context['person']); - } else { - if (isset($config['person_fn']) && is_callable($config['person_fn'])) { - $data = @call_user_func($config['person_fn']); - if (! empty($data)) { - if (is_object($data)) { - if (method_exists($data, 'toArray')) { - $data = $data->toArray(); - } else { - $data = (array)$data; + } elseif (isset($config['person_fn']) && is_callable($config['person_fn'])) { + $data = @call_user_func($config['person_fn']); + if (! empty($data)) { + if (is_object($data)) { + if (isset($data->id)) { + $person['id'] = $data->id; + if (isset($data->username)) { + $person['username'] = $data->username; + } + if (isset($data->email)) { + $person['email'] = $data->email; } } - if (isset($data['id'])) { - $person = $data; - } + } elseif (is_array($data) && isset($data['id'])) { + $person = $data; } } + unset($data); } // Add user session information. @@ -69,7 +71,7 @@ protected function addContext(array $context = []) if (! isset($person['id'])) { $person['id'] = $this->app->session->getId(); } - + $this->rollbarLogger->configure(['person' => $person]); }