Normalise tagline/tearline/origin
This commit is contained in:
@@ -45,6 +45,27 @@ final class Netmail extends Model implements Packet
|
||||
'sent_at' => 'datetime:Y-m-d H:i:s',
|
||||
];
|
||||
|
||||
public function __get($key)
|
||||
{
|
||||
switch ($key) {
|
||||
case 'set_fftn':
|
||||
case 'set_tftn':
|
||||
case 'set_path':
|
||||
case 'set_pkt':
|
||||
case 'set_recvtime':
|
||||
case 'set_seenby':
|
||||
case 'set_sender':
|
||||
|
||||
case 'set_tagline':
|
||||
case 'set_tearline':
|
||||
case 'set_origin':
|
||||
return $this->set->get($key);
|
||||
|
||||
default:
|
||||
return parent::__get($key);
|
||||
}
|
||||
}
|
||||
|
||||
public function __set($key,$value)
|
||||
{
|
||||
switch ($key) {
|
||||
@@ -67,7 +88,7 @@ final class Netmail extends Model implements Packet
|
||||
case 'set_pkt':
|
||||
case 'set_recvtime':
|
||||
case 'set_sender':
|
||||
// @todo We'll normalise these values when saving the netmail
|
||||
|
||||
case 'set_tagline':
|
||||
case 'set_tearline':
|
||||
case 'set_origin':
|
||||
@@ -94,6 +115,26 @@ final class Netmail extends Model implements Packet
|
||||
static::creating(function($model) {
|
||||
if (isset($model->errors) && $model->errors->count())
|
||||
throw new \Exception('Cannot save, validation errors exist');
|
||||
|
||||
if ($model->set->has('set_tagline'))
|
||||
$model->tagline_id = Tagline::firstOrCreate(['value'=>$model->set_tagline])->id;
|
||||
|
||||
if ($model->set->has('set_tearline'))
|
||||
$model->tearline_id = Tearline::firstOrCreate(['value'=>$model->set_tearline])->id;
|
||||
|
||||
if ($model->set->has('set_origin')) {
|
||||
// Make sure our origin contains our FTN
|
||||
$m = [];
|
||||
if ((preg_match('#^(.*)\s+\(([0-9]+:[0-9]+/[0-9]+.*)\)+\s*$#',$model->set_origin,$m))
|
||||
&& (Address::findFTN($m[2])->id === $model->fftn_id))
|
||||
$model->origin_id = Origin::firstOrCreate(['value'=>$m[1]])->id;
|
||||
}
|
||||
|
||||
// If we can rebuild the message content, then we can do away with msg_src
|
||||
if (md5($model->rebuildMessage()) === $model->msg_crc) {
|
||||
Log::debug(sprintf('%s:- Pruning message source, since we can rebuild the message [%s]',self::LOGKEY,$model->msgid));
|
||||
$model->msg_src = NULL;
|
||||
}
|
||||
});
|
||||
|
||||
static::created(function($model) {
|
||||
@@ -160,27 +201,12 @@ final class Netmail extends Model implements Packet
|
||||
]);
|
||||
}
|
||||
|
||||
// Save our origin, tearline & tagline
|
||||
if ($model->set->has('set_tagline'))
|
||||
$model->tagline = $model->set->get('set_tagline');
|
||||
if ($model->set->has('set_tearline'))
|
||||
$model->tearline = $model->set->get('set_tearline');
|
||||
if ($model->set->has('set_origin'))
|
||||
$model->origin = $model->set->get('set_origin');
|
||||
|
||||
$model->save();
|
||||
});
|
||||
}
|
||||
|
||||
/* RELATIONS */
|
||||
|
||||
public function fftn()
|
||||
{
|
||||
return $this
|
||||
->belongsTo(Address::class)
|
||||
->withTrashed();
|
||||
}
|
||||
|
||||
public function path()
|
||||
{
|
||||
return $this->belongsToMany(Address::class,'netmail_path')
|
||||
|
Reference in New Issue
Block a user