More UTF8 message processing fixes, specifically related to tagline/tearline/origin processing
This commit is contained in:
parent
6b1cb8cd78
commit
742f0cd015
@ -34,7 +34,7 @@ class MessageProcess implements ShouldQueue
|
|||||||
public function __construct(Echomail|Netmail $mo,bool $skipbot=FALSE)
|
public function __construct(Echomail|Netmail $mo,bool $skipbot=FALSE)
|
||||||
{
|
{
|
||||||
// @todo We need to serialize this model here, because laravel has an error unserializing it (Model Not Found)
|
// @todo We need to serialize this model here, because laravel has an error unserializing it (Model Not Found)
|
||||||
$this->mo = serialize($mo);
|
$this->mo = utf8_encode(serialize($mo));
|
||||||
$this->skipbot = $skipbot;
|
$this->skipbot = $skipbot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ class MessageProcess implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$this->mo = unserialize($this->mo);
|
$this->mo = unserialize(utf8_decode($this->mo));
|
||||||
|
|
||||||
// Load our details
|
// Load our details
|
||||||
$ftns = our_address();
|
$ftns = our_address();
|
||||||
|
@ -35,9 +35,6 @@ final class Echomail extends Model implements Packet
|
|||||||
'to' => UTF8StringOrNull::class,
|
'to' => UTF8StringOrNull::class,
|
||||||
'from' => UTF8StringOrNull::class,
|
'from' => UTF8StringOrNull::class,
|
||||||
'subject' => UTF8StringOrNull::class,
|
'subject' => UTF8StringOrNull::class,
|
||||||
'origin' => UTF8StringOrNull::class,
|
|
||||||
'tearline' => UTF8StringOrNull::class,
|
|
||||||
'tagline' => UTF8StringOrNull::class,
|
|
||||||
'datetime' => 'datetime:Y-m-d H:i:s',
|
'datetime' => 'datetime:Y-m-d H:i:s',
|
||||||
'kludges' => CollectionOrNull::class,
|
'kludges' => CollectionOrNull::class,
|
||||||
'msg' => CompressedStringOrNull::class,
|
'msg' => CompressedStringOrNull::class,
|
||||||
@ -123,18 +120,46 @@ final class Echomail extends Model implements Packet
|
|||||||
if (isset($model->errors) && $model->errors->count())
|
if (isset($model->errors) && $model->errors->count())
|
||||||
throw new \Exception('Cannot save, validation errors exist');
|
throw new \Exception('Cannot save, validation errors exist');
|
||||||
|
|
||||||
if ($model->set->has('set_tagline'))
|
if ($model->set->has('set_tagline')) {
|
||||||
$model->tagline_id = Tagline::firstOrCreate(['value'=>$model->set_tagline])->id;
|
$x = Tagline::where('value',utf8_encode($model->set_tagline))->single();
|
||||||
|
|
||||||
if ($model->set->has('set_tearline'))
|
if (! $x) {
|
||||||
$model->tearline_id = Tearline::firstOrCreate(['value'=>$model->set_tearline])->id;
|
$x = new Tagline;
|
||||||
|
$x->value = $model->set_tagline;
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->tagline_id = $x->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($model->set->has('set_tearline')) {
|
||||||
|
$x = Tearline::where('value',utf8_encode($model->set_tearline))->single();
|
||||||
|
|
||||||
|
if (! $x) {
|
||||||
|
$x = new Tearline;
|
||||||
|
$x->value = $model->set_tearline;
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->tearline_id = $x->id;
|
||||||
|
}
|
||||||
|
|
||||||
if ($model->set->has('set_origin')) {
|
if ($model->set->has('set_origin')) {
|
||||||
// Make sure our origin contains our FTN
|
// Make sure our origin contains our FTN
|
||||||
$m = [];
|
$m = [];
|
||||||
if ((preg_match('#^(.*)\s+\(([0-9]+:[0-9]+/[0-9]+.*)\)+\s*$#',$model->set_origin,$m))
|
if ((preg_match('#^(.*)\s+\(([0-9]+:[0-9]+/[0-9]+.*)\)+\s*$#',$model->set_origin,$m))
|
||||||
&& (Address::findFTN(sprintf('%s@%s',$m[2],$model->fftn->domain->name))?->id === $model->fftn_id))
|
&& (Address::findFTN(sprintf('%s@%s',$m[2],$model->fftn->domain->name))?->id === $model->fftn_id))
|
||||||
$model->origin_id = Origin::firstOrCreate(['value'=>$m[1]])->id;
|
{
|
||||||
|
$x = Origin::where('value',utf8_encode($m[1]))->single();
|
||||||
|
|
||||||
|
if (! $x) {
|
||||||
|
$x = new Origin;
|
||||||
|
$x->value = $m[1];
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->origin_id = $x->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we can rebuild the message content, then we can do away with msg_src
|
// If we can rebuild the message content, then we can do away with msg_src
|
||||||
|
@ -35,9 +35,6 @@ final class Netmail extends Model implements Packet
|
|||||||
'to' => UTF8StringOrNull::class,
|
'to' => UTF8StringOrNull::class,
|
||||||
'from' => UTF8StringOrNull::class,
|
'from' => UTF8StringOrNull::class,
|
||||||
'subject' => UTF8StringOrNull::class,
|
'subject' => UTF8StringOrNull::class,
|
||||||
'origin' => UTF8StringOrNull::class,
|
|
||||||
'tearline' => UTF8StringOrNull::class,
|
|
||||||
'tagline' => UTF8StringOrNull::class,
|
|
||||||
'datetime' => 'datetime:Y-m-d H:i:s',
|
'datetime' => 'datetime:Y-m-d H:i:s',
|
||||||
'kludges' => CollectionOrNull::class,
|
'kludges' => CollectionOrNull::class,
|
||||||
'msg' => CompressedStringOrNull::class,
|
'msg' => CompressedStringOrNull::class,
|
||||||
@ -116,18 +113,46 @@ final class Netmail extends Model implements Packet
|
|||||||
if (isset($model->errors) && $model->errors->count())
|
if (isset($model->errors) && $model->errors->count())
|
||||||
throw new \Exception('Cannot save, validation errors exist');
|
throw new \Exception('Cannot save, validation errors exist');
|
||||||
|
|
||||||
if ($model->set->has('set_tagline'))
|
if ($model->set->has('set_tagline')) {
|
||||||
$model->tagline_id = Tagline::firstOrCreate(['value'=>$model->set_tagline])->id;
|
$x = Tagline::where('value',utf8_encode($model->set_tagline))->single();
|
||||||
|
|
||||||
if ($model->set->has('set_tearline'))
|
if (! $x) {
|
||||||
$model->tearline_id = Tearline::firstOrCreate(['value'=>$model->set_tearline])->id;
|
$x = new Tagline;
|
||||||
|
$x->value = $model->set_tagline;
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->tagline_id = $x->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($model->set->has('set_tearline')) {
|
||||||
|
$x = Tearline::where('value',utf8_encode($model->set_tearline))->single();
|
||||||
|
|
||||||
|
if (! $x) {
|
||||||
|
$x = new Tearline;
|
||||||
|
$x->value = $model->set_tearline;
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->tearline_id = $x->id;
|
||||||
|
}
|
||||||
|
|
||||||
if ($model->set->has('set_origin')) {
|
if ($model->set->has('set_origin')) {
|
||||||
// Make sure our origin contains our FTN
|
// Make sure our origin contains our FTN
|
||||||
$m = [];
|
$m = [];
|
||||||
if ((preg_match('#^(.*)\s+\(([0-9]+:[0-9]+/[0-9]+.*)\)+\s*$#',$model->set_origin,$m))
|
if ((preg_match('#^(.*)\s+\(([0-9]+:[0-9]+/[0-9]+.*)\)+\s*$#',$model->set_origin,$m))
|
||||||
&& (Address::findFTN($m[2])->id === $model->fftn_id))
|
&& (Address::findFTN(sprintf('%s@%s',$m[2],$model->fftn->domain->name))?->id === $model->fftn_id))
|
||||||
$model->origin_id = Origin::firstOrCreate(['value'=>$m[1]])->id;
|
{
|
||||||
|
$x = Origin::where('value',utf8_encode($m[1]))->single();
|
||||||
|
|
||||||
|
if (! $x) {
|
||||||
|
$x = new Origin;
|
||||||
|
$x->value = $m[1];
|
||||||
|
$x->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->origin_id = $x->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we can rebuild the message content, then we can do away with msg_src
|
// If we can rebuild the message content, then we can do away with msg_src
|
||||||
|
@ -5,13 +5,17 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use App\Casts\UTF8StringOrNull;
|
||||||
|
|
||||||
class Origin extends Model
|
class Origin extends Model
|
||||||
{
|
{
|
||||||
//use HasFactory;
|
//use HasFactory;
|
||||||
|
|
||||||
public const UPDATED_AT = NULL;
|
public const UPDATED_AT = NULL;
|
||||||
|
|
||||||
protected $fillable = ['value'];
|
protected $casts = [
|
||||||
|
'value' => UTF8StringOrNull::class,
|
||||||
|
];
|
||||||
|
|
||||||
public function complete(Address $o): string
|
public function complete(Address $o): string
|
||||||
{
|
{
|
||||||
|
@ -5,13 +5,17 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use App\Casts\UTF8StringOrNull;
|
||||||
|
|
||||||
class Tagline extends Model
|
class Tagline extends Model
|
||||||
{
|
{
|
||||||
//use HasFactory;
|
//use HasFactory;
|
||||||
|
|
||||||
public const UPDATED_AT = NULL;
|
public const UPDATED_AT = NULL;
|
||||||
|
|
||||||
protected $fillable = ['value'];
|
protected $casts = [
|
||||||
|
'value' => UTF8StringOrNull::class,
|
||||||
|
];
|
||||||
|
|
||||||
public function complete(): string
|
public function complete(): string
|
||||||
{
|
{
|
||||||
|
@ -5,13 +5,17 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use App\Casts\UTF8StringOrNull;
|
||||||
|
|
||||||
class Tearline extends Model
|
class Tearline extends Model
|
||||||
{
|
{
|
||||||
//use HasFactory;
|
//use HasFactory;
|
||||||
|
|
||||||
public const UPDATED_AT = NULL;
|
public const UPDATED_AT = NULL;
|
||||||
|
|
||||||
protected $fillable = ['value'];
|
protected $casts = [
|
||||||
|
'value' => UTF8StringOrNull::class,
|
||||||
|
];
|
||||||
|
|
||||||
public function complete(): string
|
public function complete(): string
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user