- new map change log to Slack channel - new "rally point" logging to Slack channel - new "rally point" poke options (e.g. custom message), closed #295 - new log options for WebSocket installations - added ship "mass" logging (backend only), #313 - added map logging to Slack, #326 - added "ESI error rate" limit detection - added "Monolog" as new logging library (Composer dependency) - added "Swiftmailer" as new eMail library (Composer dependency) - added Support for Redis session hander (performance boost) - improved character select panels (visible "online" status) - improved "activity logging" (more DB columns added to check) - improved eMail logging (HTML template support) - improved "delete map" now become "inactive" for some days before delete - improved character logout handling - improved /setup page for DB bootstrap (new button for DB create if not exists) - fixed broken ship tracking (ship name re-added) - fixed broken ship tracking for multiple chars on different browser tabs - fixed broken cursor coordinates, closed #518 - fixed null pointer "charactermodel.php->isActive():925" closed #529 - fixed broken "scroll offset", closed #533 closed #534 - Updated "validation" library JS v0.10.1 -> v0.11.9 - Updated ORM Mapper _Cortex_ v1.5.0-dev -> v1.5.0 - and many more....
101 lines
3.7 KiB
PHP
101 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: exodu
|
|
* Date: 10.09.2017
|
|
* Time: 20:52
|
|
*/
|
|
|
|
namespace Lib\Logging\Handler;
|
|
|
|
use Lib\Util;
|
|
|
|
class SlackMapWebhookHandler extends AbstractSlackWebhookHandler {
|
|
|
|
/**
|
|
* @param array $record
|
|
* @return array
|
|
*/
|
|
protected function getSlackData(array $record) : array{
|
|
$postData = parent::getSlackData($record);
|
|
|
|
$tag = (string)$record['context']['tag'];
|
|
$timestamp = (int)$record['datetime']->getTimestamp();
|
|
$text = '';
|
|
|
|
if (
|
|
$this->useAttachment &&
|
|
!empty( $attachmentsData = $record['context']['data'])
|
|
) {
|
|
|
|
// convert non grouped data (associative array) to multi dimensional (sequential) array
|
|
// -> see "group" records
|
|
$attachmentsData = Util::is_assoc($attachmentsData) ? [$attachmentsData] : $attachmentsData;
|
|
|
|
$thumbData = (array)$record['extra']['thumb'];
|
|
|
|
$postData['attachments'] = [];
|
|
|
|
foreach($attachmentsData as $attachmentData){
|
|
$channelData = (array)$attachmentData['channel'];
|
|
$characterData = (array)$attachmentData['character'];
|
|
$formatted = (string)$attachmentData['formatted'];
|
|
|
|
// get "message" from $formatted
|
|
$msgParts = explode('|', $formatted, 2);
|
|
|
|
// build main text from first Attachment (they belong to same channel)
|
|
if(!empty($channelData)){
|
|
$text = "*Map '" . $channelData['channelName'] . "'* _#" . $channelData['channelId'] . "_ *changed*";
|
|
}
|
|
|
|
$attachment = [
|
|
'title' => !empty($msgParts[0]) ? $msgParts[0] : 'No Title',
|
|
//'pretext' => '',
|
|
'text' => !empty($msgParts[1]) ? sprintf('```%s```', $msgParts[1]) : '',
|
|
'fallback' => !empty($msgParts[1]) ? $msgParts[1] : 'No Fallback',
|
|
'color' => $this->getAttachmentColor($tag),
|
|
'fields' => [],
|
|
'mrkdwn_in' => ['fields', 'text'],
|
|
'footer' => 'Pathfinder API',
|
|
//'footer_icon'=> '',
|
|
'ts' => $timestamp
|
|
];
|
|
|
|
$attachment = $this->setAuthor($attachment, $characterData);
|
|
$attachment = $this->setThumb($attachment, $thumbData);
|
|
|
|
|
|
// set 'field' array ----------------------------------------------------------------------------------
|
|
if ($this->includeExtra) {
|
|
$attachment['fields'][] = $this->generateAttachmentField('', 'Meta data:', false, false);
|
|
|
|
if(!empty($record['extra']['path'])){
|
|
$attachment['fields'][] = $this->generateAttachmentField('Path', $record['extra']['path'], true);
|
|
}
|
|
|
|
if(!empty($tag)){
|
|
$attachment['fields'][] = $this->generateAttachmentField('Tag', $tag, true);
|
|
}
|
|
|
|
if(!empty($record['level_name'])){
|
|
$attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name'], true);
|
|
}
|
|
|
|
if(!empty($record['extra']['ip'])){
|
|
$attachment['fields'][] = $this->generateAttachmentField('IP', $record['extra']['ip'], true);
|
|
}
|
|
}
|
|
|
|
$postData['attachments'][] = $attachment;
|
|
}
|
|
}
|
|
|
|
$postData['text'] = empty($text) ? $postData['text'] : $text;
|
|
|
|
|
|
return $postData;
|
|
}
|
|
|
|
|
|
} |