2021-07-15 14:54:23 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Classes\FTN;
|
|
|
|
|
|
|
|
use Illuminate\Support\Arr;
|
|
|
|
|
2023-06-22 07:36:22 +00:00
|
|
|
/**
|
|
|
|
* Abstract class to hold the common functions for automatic responding to echomail/netmail messages
|
|
|
|
*/
|
2021-07-15 14:54:23 +00:00
|
|
|
abstract class Process
|
|
|
|
{
|
2021-08-19 06:59:12 +00:00
|
|
|
private const LOGKEY = 'R--';
|
|
|
|
|
2021-07-15 14:54:23 +00:00
|
|
|
protected const MSG_WIDTH = 79;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return TRUE if the process class handled the message.
|
|
|
|
*
|
|
|
|
* @param Message $msg
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
abstract public static function handle(Message $msg): bool;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This function will format text to static::MSG_WIDTH, as well as adding the logo.
|
|
|
|
*/
|
2021-07-23 14:53:35 +00:00
|
|
|
public static function format_msg(string $text,array $logo = []): string
|
2021-07-15 14:54:23 +00:00
|
|
|
{
|
2021-07-17 05:48:07 +00:00
|
|
|
$msg = utf8_decode(join("\r",static::msg_header()))."\r";
|
2021-07-15 14:54:23 +00:00
|
|
|
$c = 0;
|
|
|
|
$offset = 0;
|
|
|
|
|
|
|
|
while ($offset < strlen($text)) {
|
|
|
|
$ll = '';
|
|
|
|
|
|
|
|
// Add our logo
|
2021-07-23 14:53:35 +00:00
|
|
|
if ($c<count($logo)) {
|
|
|
|
$line = utf8_decode(Arr::get($logo,$c++));
|
2021-07-15 14:54:23 +00:00
|
|
|
$ll = $line.' ';
|
|
|
|
}
|
|
|
|
|
|
|
|
// Look for a return
|
2021-07-17 05:48:07 +00:00
|
|
|
$return = strpos($text,"\r",$offset);
|
2021-07-15 14:54:23 +00:00
|
|
|
|
|
|
|
if ($return !== FALSE)
|
|
|
|
$return -= $offset;
|
|
|
|
|
|
|
|
if (($return !== FALSE && $return < static::MSG_WIDTH-strlen($ll))) {
|
|
|
|
$subtext = substr($text,$offset,$return);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
$subtext = substr($text,$offset,static::MSG_WIDTH-strlen($ll));
|
|
|
|
|
|
|
|
// Look for a space
|
|
|
|
$space = strrpos($subtext,' ');
|
|
|
|
|
|
|
|
if ($space == FALSE)
|
|
|
|
$space = strlen($subtext);
|
|
|
|
else
|
|
|
|
$subtext = substr($text,$offset,$space);
|
|
|
|
}
|
|
|
|
|
2021-07-17 05:48:07 +00:00
|
|
|
$msg .= $ll.$subtext."\r";
|
2021-07-15 14:54:23 +00:00
|
|
|
$offset += strlen($subtext)+1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// In case our text is shorter than the loo
|
2021-07-23 14:53:35 +00:00
|
|
|
for ($c; $c<count($logo);$c++)
|
|
|
|
$msg .= utf8_decode(Arr::get($logo,$c))."\r";
|
2021-07-15 14:54:23 +00:00
|
|
|
|
2021-08-19 06:59:12 +00:00
|
|
|
$msg .= utf8_decode(join("\r",static::msg_footer()))."\r";
|
2021-08-17 14:03:44 +00:00
|
|
|
|
2021-07-15 14:54:23 +00:00
|
|
|
return $msg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Header added to messages
|
|
|
|
*
|
|
|
|
* @return string[]
|
|
|
|
*/
|
|
|
|
protected static function msg_header(): array
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
' ÜÜÜ Ü ÜÜÜ ÜÜÜ ÜÜÜ Ü ÜÜÜ ÜÜÜ Ü ÜÜÜ Ü Ü ÜÜÜ',
|
|
|
|
' Û ß Û ÛÜÛ ÜÜÛ Û ß Ü Û Û ÛÜÛ ÛßÛ Û Û Û Û Üß',
|
|
|
|
' ÛÜÛ ÛÜÛ ÛÜÜ ÛÜÛ Û Û Û Û ÜÜÛ Û Û ÛÜÛ ÛÜÛ ÛÜÜ',
|
|
|
|
' FTN Mailer and Tosser',
|
|
|
|
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'
|
|
|
|
];
|
|
|
|
}
|
2021-08-17 14:03:44 +00:00
|
|
|
|
|
|
|
protected static function msg_footer(): array
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'
|
|
|
|
];
|
|
|
|
}
|
2021-07-15 14:54:23 +00:00
|
|
|
}
|