Skip to content

Commit

Permalink
Fix edge cases on large meta data or null users
Browse files Browse the repository at this point in the history
  • Loading branch information
carlbennett committed Dec 28, 2019
1 parent aae5d7d commit db9110a
Showing 1 changed file with 29 additions and 6 deletions.
35 changes: 29 additions & 6 deletions src/libraries/Logger.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,12 @@ protected static function dispatchDiscordWebhook($event_id) {
$embed->setTimestamp($event->getEventDateTime());

$user = $event->getUser();
$author = new DiscordEmbedAuthor(
$user->getName(), $user->getURI(), $user->getAvatarURI(null)
);
$embed->setAuthor($author);
if (!is_null($user)) {
$author = new DiscordEmbedAuthor(
$user->getName(), $user->getURI(), $user->getAvatarURI(null)
);
$embed->setAuthor($author);
}

$data = json_decode($event->getMetadata(), true);
if (is_scalar($data)) {
Expand All @@ -101,10 +103,31 @@ protected static function dispatchDiscordWebhook($event_id) {
} else {

foreach ($data as $key => $value) {

$f_key = substr($key, 0, DiscordEmbedField::MAX_NAME - 3);
if (strlen($key) > DiscordEmbedField::MAX_NAME - 3)
$f_key .= '...';

if (is_scalar($value)) {
$field = new DiscordEmbedField($key, $value, true);
$embed->addField($field);

if (is_string($value)) {
$f_value = substr($value, 0, DiscordEmbedField::MAX_VALUE - 3);
if (strlen($value) > DiscordEmbedField::MAX_VALUE - 3)
$f_value .= '...';
} else {
$f_value = $value;
}

$field = new DiscordEmbedField($f_key, $f_value, true);

} else {

$field = new DiscordEmbedField($f_key, gettype($value), true);

}
$embed->addField($field);

if ($embed->fieldCount() >= DiscordEmbed::MAX_FIELDS) break;
}

}
Expand Down

0 comments on commit db9110a

Please sign in to comment.