clrghouz/app/Traits/MessagePath.php

59 lines
1.9 KiB
PHP

<?php
/**
* Add show the message detail
*/
namespace App\Traits;
use App\Models\{Echomail,Netmail};
trait MessagePath
{
protected function message_path(Echomail|Netmail $mo): string
{
$reply = "This is your original message:\r\r";
$reply .= "+---------------------------------------------------------[ BEGIN MESSAGE ]-+\r";
$reply .= sprintf("TO: %s\r",$mo->to);
$reply .= sprintf("SUBJECT: %s\r",$mo->subject);
$reply .= str_replace("\r---","\r#--",$mo->msg)."\r";
$reply .= "+---------------------------------------------------------[ CONTROL LINES ]-+\r";
$reply .= sprintf("DATE: %s\r",$mo->date->format('Y-m-d H:i:s'));
if ($mo->msgid)
$reply .= sprintf("MSGID: %s\r",$mo->msgid);
if ($mo->replyid)
$reply .= sprintf("REPLY: %s\r",$mo->replyid);
foreach ($mo->kludges as $k=>$v)
$reply .= sprintf("%s %s\r",$k,$v);
$reply .= "+------------------------------------------------------------------[ PATH ]-+\r";
if ($mo->path->count())
if ($mo instanceof Netmail) {
// Incoming processed message havent converted the path into a collection of addresses yet
foreach ($mo->path as $o)
$reply .= sprintf("VIA: %s\r",(is_string($o) ? $o : $mo->via($o)));
} elseif ($mo instanceof Echomail) {
// Rejected echomails dont have a collection of Address::class for paths
foreach ($mo->path as $o)
$reply .= sprintf("PATH: %s\r",(is_string($o) ? $o : $o->ftn));
} else {
throw new \Exception('Message object is not an Netmail or Echomail?');
}
else
$reply .= "No path information? This would be normal if this message came directly to the hub\r";
$reply .= "+----------------------------------------------------------------[ ORIGIN ]-+\r";
$reply .= sprintf("%s (%s)\r",($mo->getRelationValue('origin')?->value) ?: '*NO ORIGIN*',$mo->fftn->ftn4d);
$reply .= "+-----------------------------------------------------------[ END MESSAGE ]-+\r";
return $reply;
}
}