diff --git a/.env.example b/.env.example
index 44a21e0..960a5be 100644
--- a/.env.example
+++ b/.env.example
@@ -7,12 +7,16 @@ APP_DEBUG=true
LOG_CHANNEL=stack
LOG_LEVEL=info
-DB_CONNECTION=pgsql
-DB_HOST=postgres
-DB_PORT=5432
-DB_DATABASE=postgres
-DB_USERNAME=postgres
-DB_PASSWORD=password
+DB_CONNECTION=cockroach
+DB_HOST=cockroach
+DB_PORT=26257
+DB_DATABASE=clrghouz
+DB_USERNAME=dev
+DB_PASSWORD=
+DB_SSLMODE=prefer
+DB_SSLROOTCERT=/var/www/html/config/ssl/ca.crt
+DB_SSLCERT=/var/www/html/config/ssl/client.crt
+DB_SSLKEY=/var/www/html/config/ssl/client.key
DB_MONGO_HOST=mongo
DB_MONGO_USERNAME=mongo
diff --git a/app/Classes/FTN/Message.php b/app/Classes/FTN/Message.php
index a7b0cfd..5d079dd 100644
--- a/app/Classes/FTN/Message.php
+++ b/app/Classes/FTN/Message.php
@@ -93,7 +93,7 @@ class Message extends FTNBase
private string $subject; // Message subject
private string $msgid; // MSG ID
- private string $reply; // Reply ID
+ private string $replyid; // Reply ID
private string $echoarea; // FTS-0004.001
private string $intl; // Netmail details
@@ -182,7 +182,7 @@ class Message extends FTNBase
$this->message = '';
$this->msgid = '';
- $this->reply = '';
+ $this->replyid = '';
$this->echoarea = '';
$this->intl = '';
@@ -372,7 +372,7 @@ class Message extends FTNBase
case 'echoarea':
case 'msgid':
- case 'reply':
+ case 'replyid':
case 'message':
case 'message_src':
@@ -412,7 +412,7 @@ class Message extends FTNBase
case 'subject':
case 'msgid':
- case 'reply':
+ case 'replyid':
case 'echoarea':
case 'intl':
@@ -486,8 +486,8 @@ class Message extends FTNBase
// Add some kludges
$return .= sprintf("\01MSGID: %s\r",$this->msgid);
- if ($this->reply)
- $return .= sprintf("\01REPLY: %s\r",$this->reply);
+ if ($this->replyid)
+ $return .= sprintf("\01REPLY: %s\r",$this->replyid);
foreach ($this->_kludge as $k=>$v) {
if ($x=$this->kludge->get($k))
diff --git a/app/Classes/FTN/Process/Echomail/Test.php b/app/Classes/FTN/Process/Echomail/Test.php
index 9338ba3..3976b65 100644
--- a/app/Classes/FTN/Process/Echomail/Test.php
+++ b/app/Classes/FTN/Process/Echomail/Test.php
@@ -26,6 +26,7 @@ final class Test extends Process
private const testing = ['test','testing'];
+ // @todo add path and other kludges
public static function handle(Message $msg): bool
{
if ((strtolower($msg->user_to) !== 'all') || ! in_array(strtolower($msg->subject),self::testing))
@@ -66,7 +67,7 @@ final class Test extends Process
$o->datetime = Carbon::now();
$o->tzoffset = $o->datetime->utcOffset();
$o->echoarea_id = $eo?->id;
- $o->reply = $msg->msgid;
+ $o->replyid = $msg->msgid;
$o->fftn_id = $ftns->id;
$o->flags = Message::FLAG_LOCAL;
diff --git a/app/Classes/FTN/Process/Netmail/Ping.php b/app/Classes/FTN/Process/Netmail/Ping.php
index 1e34e68..c355efc 100644
--- a/app/Classes/FTN/Process/Netmail/Ping.php
+++ b/app/Classes/FTN/Process/Netmail/Ping.php
@@ -50,7 +50,7 @@ final class Ping extends Process
$o->datetime = Carbon::now();
$o->tzoffset = $o->datetime->utcOffset();
- $o->reply = $msg->msgid;
+ $o->replyid = $msg->msgid;
$o->fftn_id = $ftns->id;
$o->tftn_id = ($x=$msg->fftn_o) ? $x->id : NULL;
$o->flags = Message::FLAG_LOCAL;
diff --git a/app/Console/Commands/ConvertMongo.php b/app/Console/Commands/ConvertMongo.php
new file mode 100644
index 0000000..254e7dc
--- /dev/null
+++ b/app/Console/Commands/ConvertMongo.php
@@ -0,0 +1,160 @@
+collection('netmails')->cursor() as $o) {
+ $o['mid'] = (string)$o['_id'];
+
+ foreach([
+ 'reply'=>'replyid',
+ 'packet'=>'sent_pkt',
+ ] as $key => $newkey) {
+ if (array_key_exists($key,$o)) {
+ $o[$newkey] = $o[$key];
+ unset($o[$key]);
+ }
+ }
+
+ unset($o['_id'],$o['sent'],$o['reply']);
+
+ foreach (['created_at','updated_at','sent_at','datetime','deleted_at'] as $key) {
+ if (Arr::get($o,$key))
+ $o[$key] = Carbon::create($o[$key]->toDatetime());
+ }
+
+ if (! Arr::get($o,'datetime'))
+ $o['datetime'] = $o['created_at'];
+
+ $oo = Netmail::withTrashed()->where('mid',$o['mid'])->firstOrNew();
+ $oo->forceFill($o);
+
+ try {
+ $oo->save(['timestamps' => false]);
+ } catch (\Exception $e) {
+ $this->warn(sprintf('Netmail didnt move over: %s (%s)',$o['mid'],$e->getMessage()));
+ }
+ }
+ */
+
+ /**/
+ // Echomail
+ $c = 0;
+ foreach (DB::connection('mongodb')->collection('echomails')->cursor() as $o) {
+ if (++$c < $this->argument('start'))
+ continue;
+
+ if (! ($c%100))
+ Log::debug(sprintf('Processed : %d Echomails',$c));
+
+ $o['mid'] = (string)$o['_id'];
+
+ foreach([
+ 'reply'=>'replyid',
+ 'rogue_seen'=>'rogue_seenby',
+ ] as $key => $newkey) {
+ if (array_key_exists($key,$o)) {
+ $o[$newkey] = $o[$key];
+ unset($o[$key]);
+ }
+ }
+
+ $path = (array_key_exists('path',$o) && $o['path']) ? $o['path'] : NULL;
+ $seenby = (array_key_exists('seenby',$o) && $o['seenby']) ? $o['seenby'] : NULL;
+ $packet = (array_key_exists('packet',$o) && $o['packet']) ? $o['packet'] : NULL;
+
+ unset($o['_id'],$o['reply'],$o['path'],$o['seenby'],$o['toexport'],$o['sent_at'],$o['packet'],$o['sent']);
+
+ foreach (['created_at','updated_at','datetime','deleted_at'] as $key) {
+ if (Arr::get($o,$key))
+ $o[$key] = Carbon::create($o[$key]->toDatetime());
+ }
+
+ if (! Arr::get($o,'datetime'))
+ $o['datetime'] = $o['created_at'];
+
+ if (Arr::get($o,'echoarea') && ! Arr::get($o,'echoarea_id')) {
+ $ea = Echoarea::where('name',$o['echoarea'])->single();
+ $o['echoarea_id'] = $ea->id;
+ unset($o['echoarea']);
+ }
+
+ if (! $o['echoarea_id']) {
+ Log::error(sprintf('Echomail didnt move over: %s [%d] - has no echoarea_id',$o['mid'],$c));
+ continue;
+ }
+
+ if (Arr::get($o,'msg_src') && ! Arr::get($o,'msg_crc')) {
+ $o['msg_crc'] = 'x'.md5($o['msg_src']);
+ }
+
+ $oo = Echomail::withTrashed()->where('mid',$o['mid'])->firstOrNew();
+ $oo->forceFill($o);
+ $oo->set_path = $path ? array_filter($path) : [];
+ $oo->set_seenby = $seenby ? array_filter($seenby): [];
+ $oo->set_packet = $packet;
+
+ try {
+ $oo->save(['timestamps'=>FALSE]);
+
+ } catch (\Exception $e) {
+ Log::error(sprintf('Echomail didnt move over: %s [%d] (%s@%d|%s)',$o['mid'],$c,$e->getFile(),$e->getLine(),$e->getMessage()));
+ dd(['e'=>$e,'o'=>$o,'oo'=>$oo]);
+ }
+
+ DB::connection('mongodb')->collection('echomails')->delete($o['mid']);
+ }
+ /**/
+
+ // Update old MID seenby with proper ID
+ foreach (DB::connection('cockroach')->table('echomail_seenby')->whereNotNull('mid')->whereNull('echomail_id')->cursor() as $o)
+ {
+ $eo = Echomail::where('mid',$o->mid)->get();
+
+ if ($eo->count() && $eo->count() == 1) {
+ DB::update('UPDATE echomail_seenby set echomail_id = ?, mid=NULL where echomail_id IS NULL AND mid = ? ',[
+ $eo->first()->id,
+ $o->mid,
+ ]);
+
+ } elseif ($eo->count() > 1) {
+ Log::error(sprintf('Echomail [%s] has more than 1 record [%d] - skipped',$o->mid,$eo->count()));
+ }
+ }
+ }
+}
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
index 3624743..296515e 100644
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/HomeController.php
@@ -121,6 +121,7 @@ class HomeController extends Controller
# Look for Messages
foreach (Echomail::select(['id','fftn_id','from'])
->where('msgid','like','%'.$request->query('term').'%')
+ ->orWhere('replyid','like','%'.$request->query('term').'%')
->get() as $o)
{
$result->push(['id'=>$o->id,'name'=>sprintf('%s (%s)',$o->from,$o->fftn->ftn3d),'value'=>url('echomail/view',[$o->id]),'category'=>'Echomail']);
diff --git a/app/Jobs/MessageProcess.php b/app/Jobs/MessageProcess.php
index 96e4a97..32f2b4f 100644
--- a/app/Jobs/MessageProcess.php
+++ b/app/Jobs/MessageProcess.php
@@ -112,7 +112,7 @@ class MessageProcess implements ShouldQueue
$o->fftn_id = ($x=$this->msg->tftn_o) ? $x->id : NULL;
$o->tftn_id = ($x=$this->msg->fftn_o) ? $x->id : NULL;
- $o->reply = $this->msg->msgid;
+ $o->replyid = $this->msg->msgid;
$o->msg = Process::format_msg($reply,$reject);
$o->tagline = 'Do you think it was fate which brought us together? Nah, bad luck :(';
diff --git a/app/Models/Address.php b/app/Models/Address.php
index 4415322..1005edc 100644
--- a/app/Models/Address.php
+++ b/app/Models/Address.php
@@ -11,7 +11,7 @@ use Illuminate\Support\Facades\DB;
use App\Classes\FTN\Packet;
use App\Http\Controllers\DomainController;
-use App\Traits\{ScopeActive,UsePostgres};
+use App\Traits\ScopeActive;
/**
* @todo Need to stop this from happening:
@@ -24,7 +24,9 @@ use App\Traits\{ScopeActive,UsePostgres};
*/
class Address extends Model
{
- use ScopeActive,SoftDeletes,UsePostgres;
+ use ScopeActive,SoftDeletes;
+
+ protected $with = ['zone'];
/* SCOPES */
@@ -337,6 +339,21 @@ class Address extends Model
return ($o && $o->system->active) ? $o : NULL;
}
+ /**
+ * Netmail waiting to be sent to this system
+ *
+ * @return Collection
+ */
+ public function echomailWaiting(): Collection
+ {
+ return Echomail::select(['echomails.*'])
+ ->join('echomail_seenby',['echomail_seenby.echomail_id'=>'echomails.id'])
+ ->where('echomail_seenby.address_id',$this->id)
+ ->whereNull('echomail_seenby.sent_at')
+ ->whereNotNull('echomail_seenby.export_at')
+ ->get();
+ }
+
/**
* Get echomail for this node
*
@@ -346,23 +363,17 @@ class Address extends Model
{
$pkt = NULL;
- $echomail = DB::table('address_echomail')
- ->select('echomail_id')
- ->where('address_id',$this->id)
- ->whereNull('sent_date')
- ->get();
-
- if (($x=Echomail::select('*')
- ->whereIn('_id',$echomail->pluck('echomail_id')))
+ if (($x=$this->echomailWaiting())
->count())
{
- $pkt = $this->getPacket($x->get());
+ $pkt = $this->getPacket($x);
- DB::table('address_echomail')
- ->whereIn('echomail_id',$echomail->pluck('echomail_id'))
+ DB::table('echomail_seenby')
+ ->whereIn('echomail_id',$x->pluck('id'))
->where('address_id',$this->id)
- ->whereNull('sent_date')
- ->update(['sent_date'=>Carbon::now()]);
+ ->whereNull('sent_at')
+ ->whereNotNull('echomail_seenby.export_at')
+ ->update(['sent_at'=>Carbon::now(),'packet'=>$pkt->name]);
}
return $pkt;
@@ -375,18 +386,19 @@ class Address extends Model
*/
public function getNetmail(): ?Packet
{
- if (($x=Netmail::whereIn('tftn_id',(($x=$this->children) ? $x->pluck('id') : collect())->push($this->id))
- ->where(function($q) {
- return $q->whereNull('sent')
- ->orWhere('sent',FALSE);
- }))
- ->whereNull('local')
+ $pkt = NULL;
+
+ if (($x=$this->netmailWaiting())
->count())
{
- return $this->getPacket($x->get());
+ $pkt = $this->getPacket($x);
+
+ DB::table('netmails')
+ ->whereIn('id',$x->pluck('id'))
+ ->update(['sent_at'=>Carbon::now(),'sent_pkt'=>$pkt->name]);
}
- return NULL;
+ return $pkt;
}
/**
@@ -411,6 +423,18 @@ class Address extends Model
return $o;
}
+ /**
+ * Netmail waiting to be sent to this system
+ *
+ * @return Collection
+ */
+ public function netmailWaiting(): Collection
+ {
+ return Netmail::whereIn('tftn_id',(($x=$this->children) ? $x->pluck('id') : collect())->push($this->id))
+ ->whereNull('sent_at')
+ ->get();
+ }
+
/**
* Parse a string and split it out as an FTN array
*
diff --git a/app/Models/Domain.php b/app/Models/Domain.php
index 30048f0..35eb4db 100644
--- a/app/Models/Domain.php
+++ b/app/Models/Domain.php
@@ -7,13 +7,15 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\DB;
use MongoDB\BSON\UTCDateTime;
-use App\Traits\ScopeActive;
+use App\Traits\{QueryCacheableConfig,ScopeActive};
class Domain extends Model
{
- use HasFactory,ScopeActive;
+ use HasFactory,ScopeActive,QueryCacheableConfig;
+
private const CACHE_TIME = 3600;
private const STATS_MONTHS = 6;
@@ -65,17 +67,19 @@ class Domain extends Model
$key = sprintf('%s_%d','daily_area_stats',$this->id);
- return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() {
- $where = [
- 'echoarea_id'=>$this->echoareas->pluck('id')->toArray(),
- 'datetime' => ['$gte',new UTCDateTime(Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())],
- ];
+Cache::forget($key);
+ return Cache::remember($key,self::CACHE_TIME,function() {
+ $gb ="CONCAT(EXTRACT('year',datetime)::string,'-',LPAD(EXTRACT('month',datetime)::string,2,'0'),'-',LPAD(EXTRACT('day',datetime)::string,2,'0')) AS datetime";
- $echostats = Echomail::countGroupBy(['datetime',['datetime'=>'%Y-%m-%d']],$where);
+ $echostats = Echomail::select([DB::raw($gb),DB::raw('COUNT(*)')])
+ ->whereIn('id',$this->echoareas->pluck('id')->toArray())
+ ->where('datetime','>=',Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())
+ ->groupBy('datetime')
+ ->orderBy('datetime')
+ ->get();
return $echostats
- ->sortBy(function($item) { return $item->id->datetime; })
- ->map(function($item) { return ['x'=>Carbon::createFromFormat('Y-m-d',$item->id->datetime)->timestamp*1000,'y'=>$item->count]; })
+ ->map(function($item) { return ['x'=>$item->datetime->timestamp*1000,'y'=>$item->count]; })
->values();
});
}
@@ -87,17 +91,19 @@ class Domain extends Model
$key = sprintf('%s_%d-%d','daily_echoarea_stats',$this->id,$o->id);
- return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() use ($o) {
- $where = [
- 'echoarea_id'=>[$o->id],
- 'datetime' => ['$gte',new UTCDateTime(Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())],
- ];
+Cache::forget($key);
+ return Cache::remember($key,self::CACHE_TIME,function() use ($o) {
+ $gb ="CONCAT(EXTRACT('year',datetime)::string,'-',LPAD(EXTRACT('month',datetime)::string,2,'0'),'-',LPAD(EXTRACT('day',datetime)::string,2,'0')) AS datetime";
- $echostats = Echomail::countGroupBy(['datetime',['datetime'=>'%Y-%m-%d']],$where);
+ $echostats = Echomail::select([DB::raw($gb),DB::raw('COUNT(*)')])
+ ->whereIn('echoarea_id',[$o->id])
+ ->where('datetime','>=',Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())
+ ->groupBy('datetime')
+ ->orderBy('datetime')
+ ->get();
return $echostats
- ->sortBy(function($item) { return $item->id->datetime; })
- ->map(function($item) { return ['x'=>Carbon::createFromFormat('Y-m-d',$item->id->datetime)->timestamp*1000,'y'=>$item->count]; })
+ ->map(function($item) { return ['x'=>$item->datetime->timestamp*1000,'y'=>$item->count]; })
->values();
});
}
diff --git a/app/Models/Echoarea.php b/app/Models/Echoarea.php
index a0fcfd4..39dd5b0 100644
--- a/app/Models/Echoarea.php
+++ b/app/Models/Echoarea.php
@@ -3,14 +3,16 @@
namespace App\Models;
use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache;
-use App\Traits\{ScopeActive,UsePostgres};
+
+use App\Traits\ScopeActive;
class Echoarea extends Model
{
- use SoftDeletes,ScopeActive,UsePostgres;
+ use SoftDeletes,ScopeActive;
private const CACHE_TIME = 3600;
@@ -28,28 +30,24 @@ class Echoarea extends Model
public function echomail()
{
- return Echomail::select('*')
- ->where('echoarea_id',$this->id);
+ return $this->hasMany(Echomail::class)
+ ->orderBy('datetime','ASC');
}
/* ATTRIBUTES */
public function getLastMessageAttribute(): ?Carbon
{
- $key = sprintf('%s_%d','echo_last_message',$this->id);
-
- return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() {
- return ($x=$this->echomail()->orderBy('datetime','DESC')->first()) ? $x->datetime : NULL;
- });
+ return $this->echomail?->last()->datetime;
}
/* METHODS */
public function messages_count(int $period): int
{
- $key = sprintf('%s_%d_%d','echo_mesages_count',$this->id,$period);
+ $key = sprintf('%s_%d_%d','echo_messages_count',$this->id,$period);
- return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() use ($period) {
+ return Cache::remember($key,self::CACHE_TIME,function() use ($period) {
switch ($period) {
case 1: // day
return $this->echomail()->where('datetime','>=',Carbon::now()->startOfday()->subDay())->count();
@@ -62,4 +60,20 @@ class Echoarea extends Model
}
});
}
+
+ /**
+ * Number of messages waiting for address
+ *
+ * @param Address $ao
+ * @return Collection
+ */
+ public function waiting(Address $ao): Collection
+ {
+ return $this->echomail()
+ ->join('echomail_seenby',['echomail_seenby.echomail_id'=>'echomails.id'])
+ ->whereNull('sent_at')
+ ->whereNotNull('export_at')
+ ->where('address_id',$ao->id)
+ ->get();
+ }
}
\ No newline at end of file
diff --git a/app/Models/Echomail.php b/app/Models/Echomail.php
index 457e971..ed959f6 100644
--- a/app/Models/Echomail.php
+++ b/app/Models/Echomail.php
@@ -3,25 +3,29 @@
namespace App\Models;
use Carbon\Carbon;
-use Illuminate\Support\Collection;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
-use Jenssegers\Mongodb\Eloquent\Model;
-use Jenssegers\Mongodb\Eloquent\SoftDeletes;
use App\Classes\FTN\Message;
use App\Interfaces\Packet;
-use App\Traits\{EncodeUTF8,MsgID,UseMongo};
+use App\Traits\{EncodeUTF8,MsgID};
final class Echomail extends Model implements Packet
{
- use SoftDeletes,MsgID,UseMongo,EncodeUTF8;
+ use SoftDeletes,EncodeUTF8,MsgID;
private const LOGKEY = 'ME-';
+ private array $set_seenby = [];
+ private array $set_path = [];
+ private ?string $set_packet = NULL;
- protected $collection = FALSE;
-
- protected $casts = [ 'kludges' => 'json' ];
+ protected $casts = [
+ 'kludges' => 'json',
+ 'rogue_seenby' => 'json',
+ 'rogue_path' => 'json',
+ ];
private const cast_utf8 = [
'to',
@@ -35,6 +39,20 @@ final class Echomail extends Model implements Packet
protected $dates = ['datetime'];
+ public function __set($key, $value)
+ {
+ switch ($key) {
+ case 'set_path':
+ case 'set_packet':
+ case 'set_seenby':
+ $this->{$key} = $value;
+ break;
+
+ default:
+ parent::__set($key,$value);
+ }
+ }
+
public static function boot()
{
parent::boot();
@@ -46,29 +64,43 @@ final class Echomail extends Model implements Packet
return;
}
- // See if we need to export this message.
- $exportto = $model->echoarea->addresses->pluck('system')->diff($model->seenby->pluck('system'));
-
- $export_ao = collect();
- foreach ($model->echoarea->domain->zones as $zo) {
- foreach ($exportto as $so) {
- $export_ao = $export_ao->merge($so->match($zo));
- }
- }
-
- // Add to export
- foreach ($export_ao as $ao) {
- Log::info(sprintf('%s:- Exporting message [%s] to [%s]',self::LOGKEY,$model->id,$ao->ftn));
-
- DB::table('address_echomail')->insert([
- 'address_id'=>$ao->id,
- 'echomail_id'=>$model->id,
- 'export_date'=>Carbon::now()
+ // Save the seenby
+ foreach ($model->set_seenby as $aoid) {
+ DB::insert('INSERT INTO echomail_seenby (echomail_id,address_id,packet) VALUES (?,?,?)',[
+ $model->id,
+ $aoid,
+ $model->set_packet,
]);
}
- $model->seenby = $model->seenby->merge($export_ao)->pluck('id')->toArray();
- $model->save();
+ // Save the Path
+ $ppoid = NULL;
+ foreach ($model->set_path as $aoid) {
+ $po = DB::select('INSERT INTO echomail_path (echomail_id,address_id,parent_id) VALUES (?,?,?) RETURNING id',[
+ $model->id,
+ $aoid,
+ $ppoid,
+ ]);
+
+ $ppoid = $po[0]->id;
+ }
+
+ // See if we need to export this message.
+ $exportto = $model->echoarea->addresses->pluck('id')->diff($model->set_seenby);
+
+ if ($exportto->count()) {
+ Log::debug(sprintf('%s:- Exporting message [%s] to [%s]',self::LOGKEY,$model->id,$exportto->join(',')));
+
+ // Save the seenby for the exported systems
+ $export_at = Carbon::now();
+ foreach ($exportto as $aoid) {
+ DB::insert('INSERT INTO echomail_seenby (echomail_id,address_id,export_at) VALUES (?,?,?)',[
+ $model->id,
+ $aoid,
+ $export_at,
+ ]);
+ }
+ }
});
}
@@ -81,35 +113,19 @@ final class Echomail extends Model implements Packet
public function fftn()
{
- return $this
- ->setConnection('pgsql')
- ->belongsTo(Address::class)
+ return $this->belongsTo(Address::class)
->withTrashed();
}
- /* ATTRIBUTES */
-
- public function getKludgesAttribute(?string $value): Collection
+ public function seenby()
{
- return collect($this->castAttribute('kludges',$value));
+ return $this->belongsToMany(Address::class,'echomail_seenby')
+ ->ftnOrder();
}
- public function getPathAttribute(?array $value): Collection
+ public function path()
{
- if (is_null($value))
- return collect();
-
- return Address::whereIn('id',$value)
- ->orderBy(DB::raw(sprintf("position (id::text in '(%s)')",join(',',$value))))
- ->get();
- }
-
- public function getSeenByAttribute(?array $value): Collection
- {
- if (is_null($value))
- return collect();
-
- return Address::whereIn('id',$value)->get();
+ return $this->belongsToMany(Address::class,'echomail_path');
}
/* METHODS */
@@ -149,11 +165,11 @@ final class Echomail extends Model implements Packet
if ($this->kludges)
$o->kludge = $this->kludges;
- $o->kludge->put('mid',$this->id);
+ $o->kludge->put('dbid',$this->id);
$o->msgid = $this->msgid;
- if ($this->reply)
- $o->reply = $this->reply;
+ if ($this->replyid)
+ $o->replyid = $this->replyid;
$o->message = $this->msg;
diff --git a/app/Models/Netmail.php b/app/Models/Netmail.php
index 9130623..71b9369 100644
--- a/app/Models/Netmail.php
+++ b/app/Models/Netmail.php
@@ -3,19 +3,19 @@
namespace App\Models;
use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Log;
-use Jenssegers\Mongodb\Eloquent\Model;
-use Jenssegers\Mongodb\Eloquent\SoftDeletes;
use App\Classes\FTN\Message;
use App\Interfaces\Packet;
-use App\Traits\{EncodeUTF8,UseMongo};
+use App\Traits\EncodeUTF8;
final class Netmail extends Model implements Packet
{
private const LOGKEY = 'MN-';
- use SoftDeletes,UseMongo,EncodeUTF8;
+ use SoftDeletes,EncodeUTF8;
private const cast_utf8 = [
'to',
@@ -80,8 +80,8 @@ final class Netmail extends Model implements Packet
$o->flags = $this->flags;
$o->msgid = sprintf('%s %08x',$this->fftn->ftn3d,crc32($this->id));
- if ($this->reply)
- $o->reply = $this->reply;
+ if ($this->replyid)
+ $o->replyid = $this->replyid;
$o->message = $this->msg;
$o->tagline = $this->tagline;
diff --git a/app/Models/System.php b/app/Models/System.php
index 1bdcc36..81d60f4 100644
--- a/app/Models/System.php
+++ b/app/Models/System.php
@@ -8,10 +8,11 @@ use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\DomainController;
+use App\Traits\QueryCacheableConfig;
class System extends Model
{
- use HasFactory;
+ use HasFactory,QueryCacheableConfig;
protected $dates = ['last_session'];
@@ -37,10 +38,7 @@ class System extends Model
public function addresses()
{
return $this->hasMany(Address::class)
- ->orderBy('region_id')
- ->orderBy('host_id')
- ->orderBy('node_id')
- ->orderBy('point_id');
+ ->FTNorder();
}
/**
diff --git a/app/Models/Zone.php b/app/Models/Zone.php
index 106c612..7809630 100644
--- a/app/Models/Zone.php
+++ b/app/Models/Zone.php
@@ -4,11 +4,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
-use App\Traits\ScopeActive;
+use App\Traits\{QueryCacheableConfig,ScopeActive};
class Zone extends Model
{
- use ScopeActive;
+ use ScopeActive,QueryCacheableConfig;
/* SCOPES */
diff --git a/app/Traits/MsgID.php b/app/Traits/MsgID.php
index d224d5f..5eb2347 100644
--- a/app/Traits/MsgID.php
+++ b/app/Traits/MsgID.php
@@ -7,13 +7,15 @@ namespace App\Traits;
use Illuminate\Support\Arr;
+use App\Classes\FTN\Message;
use App\Models\Setup;
trait MsgID
{
public function save(array $options = [])
{
- if (! $this->exists) {
+ // Only create a MSGID for locally generated conetnt
+ if ((! $this->exists) && ($this->flags & Message::FLAG_LOCAL)) {
$ftns = Setup::findOrFail(config('app.id'))->system->match($this->fftn->zone)->first();
if (is_null(Arr::get($this->attributes,'msgid')))
diff --git a/app/Traits/QueryCacheableConfig.php b/app/Traits/QueryCacheableConfig.php
new file mode 100644
index 0000000..4c4dcae
--- /dev/null
+++ b/app/Traits/QueryCacheableConfig.php
@@ -0,0 +1,17 @@
+connection('mongodb');
- }
-
- /* ATTRIBUTES */
-
- public function getMsgAttribute($value): string
- {
- return utf8_decode($value);
- }
-
- public function setMsgAttribute($value): void
- {
- $this->attributes['msg'] = utf8_encode($value);
- }
-
- public function getSubjectAttribute($value): string
- {
- return utf8_decode($value);
- }
-
- public function setSubjectAttribute($value): void
- {
- $this->attributes['subject'] = utf8_encode($value);
- }
-
- /* METHODS */
-
- public static function countGroupBy(array $fields,array $where=[]): Collection
- {
- $query = collect();
-
- if (count($where)) {
- $where_condition = [];
-
- foreach ($where as $key => $values) {
- if (! is_array($values))
- throw new \Exception('Where values must be an array.');
-
- switch ($x=Arr::get($values,0)) {
- case '$gt':
- case '$gte':
- $where_condition[$key] = [ $x => Arr::get($values,1)];
- break;
-
- case '$in':
- default:
- $where_condition[$key] = ['$in' => $values];
- }
-
- }
-
- $query->push([
- '$match' => [ '$and'=> [$where_condition]]
- ]);
- }
-
- $gb = collect();
- foreach ($fields as $field)
- if (is_array($field)) {
- foreach ($field as $k=>$v) {
- $gb->put('datetime',['$dateToString'=>['format'=>$v,'date'=>'$'.$k]]);
- }
-
- } else {
- $gb->put($field,'$'.$field);
- }
-
- $query->push([
- '$group' => [
- '_id' => $gb->toArray(),
- 'count' => ['$sum' => 1]
- ]
- ]);
-
- return (new self)
- ->groupBy($field)
- ->raw(function($collection) use ($query) {
- return $collection->aggregate(
- $query->toArray()
- );
- });
- }
-}
\ No newline at end of file
diff --git a/app/Traits/UsePostgres.php b/app/Traits/UsePostgres.php
deleted file mode 100644
index b8f7c1e..0000000
--- a/app/Traits/UsePostgres.php
+++ /dev/null
@@ -1,21 +0,0 @@
-connection('pgsql');
- }
-}
\ No newline at end of file
diff --git a/composer.json b/composer.json
index fb87d09..920093d 100644
--- a/composer.json
+++ b/composer.json
@@ -17,6 +17,7 @@
"laravel/framework": "^8.0",
"laravel/passport": "^10.1",
"laravel/ui": "^3.2",
+ "leenooks/cockroachdb-laravel": "^0.1.0",
"rennokki/laravel-eloquent-query-cache": "^3.1",
"repat/laravel-job-models": "^0.5.1"
},
@@ -54,6 +55,12 @@
"Tests\\": "tests/"
}
},
+ "repositories": [
+ {
+ "type": "vcs",
+ "url": "https://github.com/leenooks/cockroachdb-laravel"
+ }
+ ],
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
diff --git a/composer.lock b/composer.lock
index 83b8313..9431443 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ce91f28a8503b610f0e0821fcc294062",
+ "content-hash": "d50e86483866e3133540660e44e8d69f",
"packages": [
{
"name": "asm89/stack-cors",
@@ -122,79 +122,6 @@
],
"time": "2021-08-15T20:50:18+00:00"
},
- {
- "name": "composer/package-versions-deprecated",
- "version": "1.11.99.4",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/package-versions-deprecated.git",
- "reference": "b174585d1fe49ceed21928a945138948cb394600"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
- "reference": "b174585d1fe49ceed21928a945138948cb394600",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.1.0 || ^2.0",
- "php": "^7 || ^8"
- },
- "replace": {
- "ocramius/package-versions": "1.11.99"
- },
- "require-dev": {
- "composer/composer": "^1.9.3 || ^2.0@dev",
- "ext-zip": "^1.13",
- "phpunit/phpunit": "^6.5 || ^7"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "PackageVersions\\Installer",
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PackageVersions\\": "src/PackageVersions"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be"
- }
- ],
- "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
- "support": {
- "issues": "https://github.com/composer/package-versions-deprecated/issues",
- "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
- },
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2021-09-13T08:41:34+00:00"
- },
{
"name": "defuse/php-encryption",
"version": "v2.3.1",
@@ -951,24 +878,28 @@
},
{
"name": "jean85/pretty-package-versions",
- "version": "1.6.0",
+ "version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/Jean85/pretty-package-versions.git",
- "reference": "1e0104b46f045868f11942aea058cd7186d6c303"
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303",
- "reference": "1e0104b46f045868f11942aea058cd7186d6c303",
+ "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
"shasum": ""
},
"require": {
- "composer/package-versions-deprecated": "^1.8.0",
- "php": "^7.0|^8.0"
+ "composer-runtime-api": "^2.0.0",
+ "php": "^7.1|^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.0|^8.5|^9.2"
+ "friendsofphp/php-cs-fixer": "^2.17",
+ "jean85/composer-provided-replaced-stub-package": "^1.0",
+ "phpstan/phpstan": "^0.12.66",
+ "phpunit/phpunit": "^7.5|^8.5|^9.4",
+ "vimeo/psalm": "^4.3"
},
"type": "library",
"extra": {
@@ -991,7 +922,7 @@
"email": "alessandro.lai85@gmail.com"
}
],
- "description": "A wrapper for ocramius/package-versions to get pretty versions strings",
+ "description": "A library to get pretty versions strings of installed dependencies",
"keywords": [
"composer",
"package",
@@ -1000,9 +931,9 @@
],
"support": {
"issues": "https://github.com/Jean85/pretty-package-versions/issues",
- "source": "https://github.com/Jean85/pretty-package-versions/tree/1.6.0"
+ "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
},
- "time": "2021-02-04T16:20:16+00:00"
+ "time": "2021-10-08T21:21:46+00:00"
},
{
"name": "jenssegers/mongodb",
@@ -1088,16 +1019,16 @@
},
{
"name": "laravel/framework",
- "version": "v8.73.2",
+ "version": "v8.77.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "0e1c63315eeaee5920552ff042bd820bb4014533"
+ "reference": "994dbac5c6da856c77c81a411cff5b7d31519ca8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/0e1c63315eeaee5920552ff042bd820bb4014533",
- "reference": "0e1c63315eeaee5920552ff042bd820bb4014533",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/994dbac5c6da856c77c81a411cff5b7d31519ca8",
+ "reference": "994dbac5c6da856c77c81a411cff5b7d31519ca8",
"shasum": ""
},
"require": {
@@ -1115,19 +1046,19 @@
"opis/closure": "^3.6",
"php": "^7.3|^8.0",
"psr/container": "^1.0",
- "psr/log": "^1.0 || ^2.0",
+ "psr/log": "^1.0|^2.0",
"psr/simple-cache": "^1.0",
"ramsey/uuid": "^4.2.2",
"swiftmailer/swiftmailer": "^6.3",
- "symfony/console": "^5.1.4",
- "symfony/error-handler": "^5.1.4",
- "symfony/finder": "^5.1.4",
- "symfony/http-foundation": "^5.1.4",
- "symfony/http-kernel": "^5.1.4",
- "symfony/mime": "^5.1.4",
- "symfony/process": "^5.1.4",
- "symfony/routing": "^5.1.4",
- "symfony/var-dumper": "^5.1.4",
+ "symfony/console": "^5.4",
+ "symfony/error-handler": "^5.4",
+ "symfony/finder": "^5.4",
+ "symfony/http-foundation": "^5.4",
+ "symfony/http-kernel": "^5.4",
+ "symfony/mime": "^5.4",
+ "symfony/process": "^5.4",
+ "symfony/routing": "^5.4",
+ "symfony/var-dumper": "^5.4",
"tijsverkoyen/css-to-inline-styles": "^2.2.2",
"vlucas/phpdotenv": "^5.2",
"voku/portable-ascii": "^1.4.8"
@@ -1183,7 +1114,7 @@
"pda/pheanstalk": "^4.0",
"phpunit/phpunit": "^8.5.19|^9.5.8",
"predis/predis": "^1.1.9",
- "symfony/cache": "^5.1.4"
+ "symfony/cache": "^5.4"
},
"suggest": {
"aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).",
@@ -1210,8 +1141,8 @@
"predis/predis": "Required to use the predis connector (^1.1.9).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).",
- "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^5.4).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).",
"symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
"wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
},
@@ -1256,20 +1187,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2021-11-23T14:27:43+00:00"
+ "time": "2021-12-21T20:22:29+00:00"
},
{
"name": "laravel/passport",
- "version": "v10.2.0",
+ "version": "v10.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/passport.git",
- "reference": "1c69a010930a3ce8db348967d8ad9585be4d7d4d"
+ "reference": "7981abed1a0979afd4a5a8bec81624b8127a287f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/passport/zipball/1c69a010930a3ce8db348967d8ad9585be4d7d4d",
- "reference": "1c69a010930a3ce8db348967d8ad9585be4d7d4d",
+ "url": "https://api.github.com/repos/laravel/passport/zipball/7981abed1a0979afd4a5a8bec81624b8127a287f",
+ "reference": "7981abed1a0979afd4a5a8bec81624b8127a287f",
"shasum": ""
},
"require": {
@@ -1333,20 +1264,20 @@
"issues": "https://github.com/laravel/passport/issues",
"source": "https://github.com/laravel/passport"
},
- "time": "2021-11-02T16:45:51+00:00"
+ "time": "2021-12-07T16:57:03+00:00"
},
{
"name": "laravel/serializable-closure",
- "version": "v1.0.4",
+ "version": "v1.0.5",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "8148e72e6c2c3af7f05640ada1b26c3bca970f8d"
+ "reference": "25de3be1bca1b17d52ff0dc02b646c667ac7266c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/8148e72e6c2c3af7f05640ada1b26c3bca970f8d",
- "reference": "8148e72e6c2c3af7f05640ada1b26c3bca970f8d",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/25de3be1bca1b17d52ff0dc02b646c667ac7266c",
+ "reference": "25de3be1bca1b17d52ff0dc02b646c667ac7266c",
"shasum": ""
},
"require": {
@@ -1392,20 +1323,20 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2021-11-16T17:01:57+00:00"
+ "time": "2021-11-30T15:53:04+00:00"
},
{
"name": "laravel/ui",
- "version": "v3.3.3",
+ "version": "v3.4.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/ui.git",
- "reference": "08ea313a35dfc89ff0cd9916ca0bcef9715d0ed6"
+ "reference": "9a1e52442dd238647905b98d773d59e438eb9f9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/ui/zipball/08ea313a35dfc89ff0cd9916ca0bcef9715d0ed6",
- "reference": "08ea313a35dfc89ff0cd9916ca0bcef9715d0ed6",
+ "url": "https://api.github.com/repos/laravel/ui/zipball/9a1e52442dd238647905b98d773d59e438eb9f9d",
+ "reference": "9a1e52442dd238647905b98d773d59e438eb9f9d",
"shasum": ""
},
"require": {
@@ -1415,6 +1346,9 @@
"illuminate/validation": "^8.42|^9.0",
"php": "^7.3|^8.0"
},
+ "require-dev": {
+ "orchestra/testbench": "^6.23|^7.0"
+ },
"type": "library",
"extra": {
"branch-alias": {
@@ -1448,9 +1382,9 @@
"ui"
],
"support": {
- "source": "https://github.com/laravel/ui/tree/v3.3.3"
+ "source": "https://github.com/laravel/ui/tree/v3.4.1"
},
- "time": "2021-11-21T22:20:05+00:00"
+ "time": "2021-12-22T10:40:50+00:00"
},
{
"name": "lcobucci/clock",
@@ -1588,16 +1522,16 @@
},
{
"name": "league/commonmark",
- "version": "2.0.2",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "2df87709f44b0dd733df86aef0830dce9b1f0f13"
+ "reference": "819276bc54e83c160617d3ac0a436c239e479928"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2df87709f44b0dd733df86aef0830dce9b1f0f13",
- "reference": "2df87709f44b0dd733df86aef0830dce9b1f0f13",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/819276bc54e83c160617d3ac0a436c239e479928",
+ "reference": "819276bc54e83c160617d3ac0a436c239e479928",
"shasum": ""
},
"require": {
@@ -1616,11 +1550,11 @@
"ext-json": "*",
"github/gfm": "0.29.0",
"michelf/php-markdown": "^1.4",
- "phpstan/phpstan": "^0.12.88",
+ "phpstan/phpstan": "^0.12.88 || ^1.0.0",
"phpunit/phpunit": "^9.5.5",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3",
- "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
"unleashedtech/php-coding-standard": "^3.1",
"vimeo/psalm": "^4.7.3"
},
@@ -1630,7 +1564,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.1-dev"
+ "dev-main": "2.2-dev"
}
},
"autoload": {
@@ -1670,10 +1604,6 @@
"source": "https://github.com/thephpleague/commonmark"
},
"funding": [
- {
- "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark",
- "type": "custom"
- },
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
@@ -1686,16 +1616,12 @@
"url": "https://github.com/colinodell",
"type": "github"
},
- {
- "url": "https://www.patreon.com/colinodell",
- "type": "patreon"
- },
{
"url": "https://tidelift.com/funding/github/packagist/league/commonmark",
"type": "tidelift"
}
],
- "time": "2021-08-14T14:06:04+00:00"
+ "time": "2021-12-05T18:25:20+00:00"
},
{
"name": "league/config",
@@ -1835,16 +1761,16 @@
},
{
"name": "league/flysystem",
- "version": "1.1.6",
+ "version": "1.1.9",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "627be7fcde84c71aa0f15097fcf48fd5f2be5287"
+ "reference": "094defdb4a7001845300334e7c1ee2335925ef99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/627be7fcde84c71aa0f15097fcf48fd5f2be5287",
- "reference": "627be7fcde84c71aa0f15097fcf48fd5f2be5287",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99",
+ "reference": "094defdb4a7001845300334e7c1ee2335925ef99",
"shasum": ""
},
"require": {
@@ -1917,7 +1843,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/1.1.6"
+ "source": "https://github.com/thephpleague/flysystem/tree/1.1.9"
},
"funding": [
{
@@ -1925,7 +1851,7 @@
"type": "other"
}
],
- "time": "2021-11-21T11:04:36+00:00"
+ "time": "2021-12-09T09:40:50+00:00"
},
{
"name": "league/mime-type-detection",
@@ -2071,35 +1997,91 @@
"time": "2021-10-11T20:41:49+00:00"
},
{
- "name": "mongodb/mongodb",
- "version": "1.8.0",
+ "name": "leenooks/cockroachdb-laravel",
+ "version": "0.1.1",
"source": {
"type": "git",
- "url": "https://github.com/mongodb/mongo-php-library.git",
- "reference": "953dbc19443aa9314c44b7217a16873347e6840d"
+ "url": "https://github.com/leenooks/cockroachdb-laravel.git",
+ "reference": "16a0e063c37018124061adaf2a5a8166fff3c44e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/953dbc19443aa9314c44b7217a16873347e6840d",
- "reference": "953dbc19443aa9314c44b7217a16873347e6840d",
+ "url": "https://api.github.com/repos/leenooks/cockroachdb-laravel/zipball/16a0e063c37018124061adaf2a5a8166fff3c44e",
+ "reference": "16a0e063c37018124061adaf2a5a8166fff3c44e",
+ "shasum": ""
+ },
+ "require-dev": {
+ "illuminate/database": "^8.32",
+ "illuminate/support": "^8.32"
+ },
+ "type": "package",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Nbj\\Cockroach\\CockroachServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nbj\\": "src/"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nikolaj Boel Jensen",
+ "email": "nbj@cego.dk"
+ },
+ {
+ "name": "Deon George",
+ "email": "deon@leenooks.net"
+ }
+ ],
+ "description": "CockroachDB driver for Laravel 8",
+ "keywords": [
+ "cockroach",
+ "cockroachdb",
+ "laravel"
+ ],
+ "support": {
+ "source": "https://github.com/leenooks/cockroachdb-laravel/tree/0.1.1"
+ },
+ "time": "2022-01-01T02:50:36+00:00"
+ },
+ {
+ "name": "mongodb/mongodb",
+ "version": "1.10.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mongodb/mongo-php-library.git",
+ "reference": "9e0da590ec94e8af9a0ee065294627ffaee6244e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/9e0da590ec94e8af9a0ee065294627ffaee6244e",
+ "reference": "9e0da590ec94e8af9a0ee065294627ffaee6244e",
"shasum": ""
},
"require": {
"ext-hash": "*",
"ext-json": "*",
- "ext-mongodb": "^1.8.1",
- "jean85/pretty-package-versions": "^1.2",
- "php": "^7.0 || ^8.0",
+ "ext-mongodb": "^1.11.0",
+ "jean85/pretty-package-versions": "^1.2 || ^2.0.1",
+ "php": "^7.1 || ^8.0",
"symfony/polyfill-php80": "^1.19"
},
"require-dev": {
- "squizlabs/php_codesniffer": "^3.5, <3.5.5",
- "symfony/phpunit-bridge": "5.x-dev"
+ "doctrine/coding-standard": "^9.0",
+ "squizlabs/php_codesniffer": "^3.6",
+ "symfony/phpunit-bridge": "^5.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.8.x-dev"
+ "dev-master": "1.10.x-dev"
}
},
"autoload": {
@@ -2134,9 +2116,9 @@
],
"support": {
"issues": "https://github.com/mongodb/mongo-php-library/issues",
- "source": "https://github.com/mongodb/mongo-php-library/tree/1.8.0"
+ "source": "https://github.com/mongodb/mongo-php-library/tree/1.10.1"
},
- "time": "2020-11-25T12:26:02+00:00"
+ "time": "2021-12-06T21:42:33+00:00"
},
{
"name": "monolog/monolog",
@@ -2239,16 +2221,16 @@
},
{
"name": "nesbot/carbon",
- "version": "2.54.0",
+ "version": "2.55.2",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5"
+ "reference": "8c2a18ce3e67c34efc1b29f64fe61304368259a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/eed83939f1aed3eee517d03a33f5ec587ac529b5",
- "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8c2a18ce3e67c34efc1b29f64fe61304368259a2",
+ "reference": "8c2a18ce3e67c34efc1b29f64fe61304368259a2",
"shasum": ""
},
"require": {
@@ -2256,7 +2238,7 @@
"php": "^7.1.8 || ^8.0",
"symfony/polyfill-mbstring": "^1.0",
"symfony/polyfill-php80": "^1.16",
- "symfony/translation": "^3.4 || ^4.0 || ^5.0"
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
"doctrine/dbal": "^2.0 || ^3.0",
@@ -2317,6 +2299,7 @@
"time"
],
"support": {
+ "docs": "https://carbon.nesbot.com/docs",
"issues": "https://github.com/briannesbitt/Carbon/issues",
"source": "https://github.com/briannesbitt/Carbon"
},
@@ -2330,7 +2313,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-01T21:22:20+00:00"
+ "time": "2021-12-03T14:59:52+00:00"
},
{
"name": "nette/schema",
@@ -2794,16 +2777,16 @@
},
{
"name": "phpoption/phpoption",
- "version": "1.8.0",
+ "version": "1.8.1",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28"
+ "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28",
- "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
+ "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
"shasum": ""
},
"require": {
@@ -2811,7 +2794,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
- "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8"
+ "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
},
"type": "library",
"extra": {
@@ -2831,11 +2814,13 @@
"authors": [
{
"name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com"
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh"
},
{
"name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk"
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
}
],
"description": "Option Type for PHP",
@@ -2847,7 +2832,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.8.0"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.8.1"
},
"funding": [
{
@@ -2859,20 +2844,20 @@
"type": "tidelift"
}
],
- "time": "2021-08-28T21:27:29+00:00"
+ "time": "2021-12-04T23:24:31+00:00"
},
{
"name": "phpseclib/phpseclib",
- "version": "3.0.11",
+ "version": "3.0.12",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "6e794226a35159eb06f355efe59a0075a16551dd"
+ "reference": "89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/6e794226a35159eb06f355efe59a0075a16551dd",
- "reference": "6e794226a35159eb06f355efe59a0075a16551dd",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb",
+ "reference": "89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb",
"shasum": ""
},
"require": {
@@ -2954,7 +2939,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/3.0.11"
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.12"
},
"funding": [
{
@@ -2970,7 +2955,7 @@
"type": "tidelift"
}
],
- "time": "2021-10-27T03:01:46+00:00"
+ "time": "2021-11-28T23:46:03+00:00"
},
{
"name": "psr/container",
@@ -3458,16 +3443,16 @@
},
{
"name": "rennokki/laravel-eloquent-query-cache",
- "version": "3.1.3",
+ "version": "3.1.4",
"source": {
"type": "git",
"url": "https://github.com/renoki-co/laravel-eloquent-query-cache.git",
- "reference": "ad4a9d935ddd355da9af0a086f33f2d64212da09"
+ "reference": "24d6aec2d2a097a64f8b44354462e3dd83c52e4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/renoki-co/laravel-eloquent-query-cache/zipball/ad4a9d935ddd355da9af0a086f33f2d64212da09",
- "reference": "ad4a9d935ddd355da9af0a086f33f2d64212da09",
+ "url": "https://api.github.com/repos/renoki-co/laravel-eloquent-query-cache/zipball/24d6aec2d2a097a64f8b44354462e3dd83c52e4d",
+ "reference": "24d6aec2d2a097a64f8b44354462e3dd83c52e4d",
"shasum": ""
},
"require": {
@@ -3479,7 +3464,7 @@
"laravel/legacy-factories": "^1.1",
"mockery/mockery": "^1.4",
"orchestra/database": "^5.0|^6.0",
- "orchestra/testbench": "^5.0|^6.0"
+ "orchestra/testbench": "^6.23.1"
},
"type": "library",
"autoload": {
@@ -3511,15 +3496,15 @@
],
"support": {
"issues": "https://github.com/renoki-co/laravel-eloquent-query-cache/issues",
- "source": "https://github.com/renoki-co/laravel-eloquent-query-cache/tree/3.1.3"
+ "source": "https://github.com/renoki-co/laravel-eloquent-query-cache/tree/3.1.4"
},
"funding": [
{
- "url": "https://www.patreon.com/rennokki",
- "type": "patreon"
+ "url": "https://github.com/rennokki",
+ "type": "github"
}
],
- "time": "2021-11-05T22:03:48+00:00"
+ "time": "2021-12-07T14:46:30+00:00"
},
{
"name": "repat/laravel-job-models",
@@ -3651,28 +3636,29 @@
},
{
"name": "symfony/console",
- "version": "v5.3.11",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "3e7ab8f5905058984899b05a4648096f558bfeba"
+ "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/3e7ab8f5905058984899b05a4648096f558bfeba",
- "reference": "3e7ab8f5905058984899b05a4648096f558bfeba",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a2c6b7ced2eb7799a35375fb9022519282b5405e",
+ "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
},
"conflict": {
+ "psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
@@ -3684,12 +3670,12 @@
},
"require-dev": {
"psr/log": "^1|^2",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -3729,7 +3715,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.3.11"
+ "source": "https://github.com/symfony/console/tree/v5.4.2"
},
"funding": [
{
@@ -3745,25 +3731,24 @@
"type": "tidelift"
}
],
- "time": "2021-11-21T19:41:05+00:00"
+ "time": "2021-12-20T16:11:12+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.3.4",
+ "version": "v6.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "7fb120adc7f600a59027775b224c13a33530dd90"
+ "reference": "380f86c1a9830226f42a08b5926f18aed4195f25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90",
- "reference": "7fb120adc7f600a59027775b224c13a33530dd90",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/380f86c1a9830226f42a08b5926f18aed4195f25",
+ "reference": "380f86c1a9830226f42a08b5926f18aed4195f25",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2"
},
"type": "library",
"autoload": {
@@ -3795,7 +3780,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.3.4"
+ "source": "https://github.com/symfony/css-selector/tree/v6.0.2"
},
"funding": [
{
@@ -3811,29 +3796,29 @@
"type": "tidelift"
}
],
- "time": "2021-07-21T12:38:00+00:00"
+ "time": "2021-12-16T22:13:01+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.5.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
- "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.0.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -3862,7 +3847,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -3878,32 +3863,35 @@
"type": "tidelift"
}
],
- "time": "2021-07-12T14:48:14+00:00"
+ "time": "2021-11-01T23:48:49+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v5.3.11",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "eec73dd7218713f48a7996583a741b3bae58c8d3"
+ "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/eec73dd7218713f48a7996583a741b3bae58c8d3",
- "reference": "eec73dd7218713f48a7996583a741b3bae58c8d3",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/e0c0dd0f9d4120a20158fc9aec2367d07d38bc56",
+ "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^4.4|^5.0"
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"require-dev": {
- "symfony/deprecation-contracts": "^2.1",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/http-kernel": "^4.4|^5.0|^6.0",
+ "symfony/serializer": "^4.4|^5.0|^6.0"
},
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
"type": "library",
"autoload": {
"psr-4": {
@@ -3930,7 +3918,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v5.3.11"
+ "source": "https://github.com/symfony/error-handler/tree/v5.4.2"
},
"funding": [
{
@@ -3946,44 +3934,42 @@
"type": "tidelift"
}
],
- "time": "2021-11-13T13:42:37+00:00"
+ "time": "2021-12-19T20:02:00+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.3.11",
+ "version": "v6.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "661a7a6e085394f8513945669e31f7c1338a7e69"
+ "reference": "7093f25359e2750bfe86842c80c4e4a6a852d05c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/661a7a6e085394f8513945669e31f7c1338a7e69",
- "reference": "661a7a6e085394f8513945669e31f7c1338a7e69",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7093f25359e2750bfe86842c80c4e4a6a852d05c",
+ "reference": "7093f25359e2750bfe86842c80c4e4a6a852d05c",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/event-dispatcher-contracts": "^2",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
- "symfony/dependency-injection": "<4.4"
+ "symfony/dependency-injection": "<5.4"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0"
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^5.4|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -4015,7 +4001,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.11"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.2"
},
"funding": [
{
@@ -4031,24 +4017,24 @@
"type": "tidelift"
}
],
- "time": "2021-11-17T12:16:12+00:00"
+ "time": "2021-12-21T10:43:13+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v2.5.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a"
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
- "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385",
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.0.2",
"psr/event-dispatcher": "^1"
},
"suggest": {
@@ -4057,7 +4043,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4094,7 +4080,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -4110,24 +4096,25 @@
"type": "tidelift"
}
],
- "time": "2021-07-12T14:48:14+00:00"
+ "time": "2021-07-15T12:33:35+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.3.7",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93"
+ "reference": "e77046c252be48c48a40816187ed527703c8f76c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93",
- "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c",
+ "reference": "e77046c252be48c48a40816187ed527703c8f76c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
},
"type": "library",
@@ -4156,7 +4143,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.3.7"
+ "source": "https://github.com/symfony/finder/tree/v5.4.2"
},
"funding": [
{
@@ -4172,111 +4159,33 @@
"type": "tidelift"
}
],
- "time": "2021-08-04T21:20:46+00:00"
- },
- {
- "name": "symfony/http-client-contracts",
- "version": "v2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "ec82e57b5b714dbb69300d348bd840b345e24166"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166",
- "reference": "ec82e57b5b714dbb69300d348bd840b345e24166",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "suggest": {
- "symfony/http-client-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to HTTP clients",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-11-03T09:24:47+00:00"
+ "time": "2021-12-15T11:06:13+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v5.3.11",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "d1e7059ebeb0b8f9fe5eb5b26eacd2e3c1f371cc"
+ "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d1e7059ebeb0b8f9fe5eb5b26eacd2e3c1f371cc",
- "reference": "d1e7059ebeb0b8f9fe5eb5b26eacd2e3c1f371cc",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce952af52877eaf3eab5d0c08cc0ea865ed37313",
+ "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.1",
"symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"predis/predis": "~1.0",
- "symfony/cache": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0"
+ "symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/mime": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/mime": "To use the file extension guesser"
@@ -4307,7 +4216,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v5.3.11"
+ "source": "https://github.com/symfony/http-foundation/tree/v5.4.2"
},
"funding": [
{
@@ -4323,36 +4232,35 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:37:19+00:00"
+ "time": "2021-12-28T17:15:56+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.3.12",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "f53025cd1d91b1af85d6d9e17eefa98e31ee953b"
+ "reference": "35b7e9868953e0d1df84320bb063543369e43ef5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f53025cd1d91b1af85d6d9e17eefa98e31ee953b",
- "reference": "f53025cd1d91b1af85d6d9e17eefa98e31ee953b",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/35b7e9868953e0d1df84320bb063543369e43ef5",
+ "reference": "35b7e9868953e0d1df84320bb063543369e43ef5",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1|^2",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/event-dispatcher": "^5.0",
- "symfony/http-client-contracts": "^1.1|^2",
- "symfony/http-foundation": "^5.3.7",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^5.0|^6.0",
+ "symfony/http-foundation": "^5.3.7|^6.0",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16"
},
"conflict": {
- "symfony/browser-kit": "<4.4",
+ "symfony/browser-kit": "<5.4",
"symfony/cache": "<5.0",
"symfony/config": "<5.0",
"symfony/console": "<4.4",
@@ -4372,19 +4280,20 @@
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/browser-kit": "^4.4|^5.0",
- "symfony/config": "^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.3",
- "symfony/dom-crawler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/config": "^5.0|^6.0",
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/css-selector": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.3|^6.0",
+ "symfony/dom-crawler": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2|^3",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/routing": "^4.4|^5.0|^6.0",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0",
+ "symfony/translation": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2|^3",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -4419,7 +4328,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v5.3.12"
+ "source": "https://github.com/symfony/http-kernel/tree/v5.4.2"
},
"funding": [
{
@@ -4435,25 +4344,25 @@
"type": "tidelift"
}
],
- "time": "2021-11-24T08:46:46+00:00"
+ "time": "2021-12-29T13:20:26+00:00"
},
{
"name": "symfony/mime",
- "version": "v5.3.11",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "dffc0684f10526db12c52fcd6238c64695426d61"
+ "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/dffc0684f10526db12c52fcd6238c64695426d61",
- "reference": "dffc0684f10526db12c52fcd6238c64695426d61",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/1bfd938cf9562822c05c4d00e8f92134d3c8e42d",
+ "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0",
"symfony/polyfill-php80": "^1.16"
@@ -4467,10 +4376,10 @@
"require-dev": {
"egulias/email-validator": "^2.1.10|^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.1",
- "symfony/property-info": "^4.4|^5.1",
- "symfony/serializer": "^5.2"
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/property-access": "^4.4|^5.1|^6.0",
+ "symfony/property-info": "^4.4|^5.1|^6.0",
+ "symfony/serializer": "^5.2|^6.0"
},
"type": "library",
"autoload": {
@@ -4502,7 +4411,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v5.3.11"
+ "source": "https://github.com/symfony/mime/tree/v5.4.2"
},
"funding": [
{
@@ -4518,7 +4427,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-20T16:42:42+00:00"
+ "time": "2021-12-28T17:15:56+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -5330,16 +5239,16 @@
},
{
"name": "symfony/process",
- "version": "v5.3.12",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a"
+ "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/e498803a6e95ede78e9d5646ad32a2255c033a6a",
- "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a",
+ "url": "https://api.github.com/repos/symfony/process/zipball/2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",
+ "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",
"shasum": ""
},
"require": {
@@ -5372,7 +5281,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.3.12"
+ "source": "https://github.com/symfony/process/tree/v5.4.2"
},
"funding": [
{
@@ -5388,7 +5297,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-22T22:39:13+00:00"
+ "time": "2021-12-27T21:01:00+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
@@ -5480,21 +5389,21 @@
},
{
"name": "symfony/routing",
- "version": "v5.3.11",
+ "version": "v5.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca"
+ "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/fcbc2b81d55984f04bb704c2269755fa5aaf5cca",
- "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/9eeae93c32ca86746e5d38f3679e9569981038b1",
+ "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
},
"conflict": {
@@ -5506,11 +5415,11 @@
"require-dev": {
"doctrine/annotations": "^1.12",
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.3",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/config": "^5.3|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/config": "For using the all-in-one router or any loader",
@@ -5550,7 +5459,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v5.3.11"
+ "source": "https://github.com/symfony/routing/tree/v5.4.0"
},
"funding": [
{
@@ -5566,26 +5475,25 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:37:19+00:00"
+ "time": "2021-11-23T10:19:22+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.5.0",
+ "version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc"
+ "reference": "d664541b99d6fb0247ec5ff32e87238582236204"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
- "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204",
+ "reference": "d664541b99d6fb0247ec5ff32e87238582236204",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/container": "^1.1",
- "symfony/deprecation-contracts": "^2.1"
+ "psr/container": "^1.1"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -5596,7 +5504,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5633,7 +5541,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.1"
},
"funding": [
{
@@ -5649,35 +5557,37 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:48:04+00:00"
+ "time": "2021-11-04T16:37:19+00:00"
},
{
"name": "symfony/string",
- "version": "v5.3.10",
+ "version": "v6.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c"
+ "reference": "bae261d0c3ac38a1f802b4dfed42094296100631"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
- "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
+ "url": "https://api.github.com/repos/symfony/string/zipball/bae261d0c3ac38a1f802b4dfed42094296100631",
+ "reference": "bae261d0c3ac38a1f802b4dfed42094296100631",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.0"
},
"require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -5716,7 +5626,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.3.10"
+ "source": "https://github.com/symfony/string/tree/v6.0.2"
},
"funding": [
{
@@ -5732,50 +5642,50 @@
"type": "tidelift"
}
],
- "time": "2021-10-27T18:21:46+00:00"
+ "time": "2021-12-16T22:13:01+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.3.11",
+ "version": "v6.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a"
+ "reference": "a16c33f93e2fd62d259222aebf792158e9a28a77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/17a965c8f3b1b348cf15d903ac53942984561f8a",
- "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a16c33f93e2fd62d259222aebf792158e9a28a77",
+ "reference": "a16c33f93e2fd62d259222aebf792158e9a28a77",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "php": ">=8.0.2",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/translation-contracts": "^2.3"
+ "symfony/translation-contracts": "^2.3|^3.0"
},
"conflict": {
- "symfony/config": "<4.4",
- "symfony/dependency-injection": "<5.0",
- "symfony/http-kernel": "<5.0",
- "symfony/twig-bundle": "<5.0",
- "symfony/yaml": "<4.4"
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
},
"provide": {
- "symfony/translation-implementation": "2.3"
+ "symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/intl": "^4.4|^5.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/service-contracts": "^1.1.2|^2",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/service-contracts": "^1.1.2|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
@@ -5811,7 +5721,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.3.11"
+ "source": "https://github.com/symfony/translation/tree/v6.0.2"
},
"funding": [
{
@@ -5827,24 +5737,24 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:37:19+00:00"
+ "time": "2021-12-25T20:10:03+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.5.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e"
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e",
- "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=8.0.2"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -5852,7 +5762,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5889,7 +5799,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -5905,20 +5815,20 @@
"type": "tidelift"
}
],
- "time": "2021-08-17T14:20:01+00:00"
+ "time": "2021-09-07T12:43:40+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.3.11",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "a029b3a11b757f9cc8693040339153b4745a913f"
+ "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a029b3a11b757f9cc8693040339153b4745a913f",
- "reference": "a029b3a11b757f9cc8693040339153b4745a913f",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1b56c32c3679002b3a42384a580e16e2600f41c1",
+ "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1",
"shasum": ""
},
"require": {
@@ -5932,8 +5842,9 @@
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/uid": "^5.1|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -5977,7 +5888,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.3.11"
+ "source": "https://github.com/symfony/var-dumper/tree/v5.4.2"
},
"funding": [
{
@@ -5993,30 +5904,30 @@
"type": "tidelift"
}
],
- "time": "2021-11-12T11:38:27+00:00"
+ "time": "2021-12-29T10:10:35+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.3",
+ "version": "2.2.4",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5"
+ "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5",
- "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c",
+ "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"php": "^5.5 || ^7.0 || ^8.0",
- "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0"
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5"
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10"
},
"type": "library",
"extra": {
@@ -6044,22 +5955,22 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3"
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4"
},
- "time": "2020-07-13T06:12:54+00:00"
+ "time": "2021-12-08T09:12:39+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.4.0",
+ "version": "v5.4.1",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403"
+ "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/d4394d044ed69a8f244f3445bcedf8a0d7fe2403",
- "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f",
"shasum": ""
},
"require": {
@@ -6097,11 +6008,13 @@
"authors": [
{
"name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk"
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Vance Lucas",
- "email": "vance@vancelucas.com"
+ "email": "vance@vancelucas.com",
+ "homepage": "https://github.com/vlucas"
}
],
"description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
@@ -6112,7 +6025,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.0"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1"
},
"funding": [
{
@@ -6124,7 +6037,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-10T01:08:39+00:00"
+ "time": "2021-12-12T23:22:04+00:00"
},
{
"name": "voku/portable-ascii",
@@ -6262,16 +6175,16 @@
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
- "version": "v3.6.4",
+ "version": "v3.6.5",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
- "reference": "3c2d678269ba60e178bcd93e36f6a91c36b727f1"
+ "reference": "ccf109f8755dcc7e58779d1aeb1051b04e0b4bef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/3c2d678269ba60e178bcd93e36f6a91c36b727f1",
- "reference": "3c2d678269ba60e178bcd93e36f6a91c36b727f1",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/ccf109f8755dcc7e58779d1aeb1051b04e0b4bef",
+ "reference": "ccf109f8755dcc7e58779d1aeb1051b04e0b4bef",
"shasum": ""
},
"require": {
@@ -6299,7 +6212,7 @@
"Barryvdh\\Debugbar\\ServiceProvider"
],
"aliases": {
- "Debugbar": "Barryvdh\\Debugbar\\Facade"
+ "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
}
}
},
@@ -6331,7 +6244,7 @@
],
"support": {
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
- "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.6.4"
+ "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.6.5"
},
"funding": [
{
@@ -6343,7 +6256,7 @@
"type": "github"
}
],
- "time": "2021-10-21T10:57:31+00:00"
+ "time": "2021-12-14T14:45:18+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
@@ -6565,21 +6478,22 @@
},
{
"name": "composer/composer",
- "version": "2.1.12",
+ "version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0"
+ "reference": "3c92ba5cdc7d48b7db2dcd197e6fa0e8fa6d9f4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0",
- "reference": "6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0",
+ "url": "https://api.github.com/repos/composer/composer/zipball/3c92ba5cdc7d48b7db2dcd197e6fa0e8fa6d9f4a",
+ "reference": "3c92ba5cdc7d48b7db2dcd197e6fa0e8fa6d9f4a",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.0",
"composer/metadata-minifier": "^1.0",
+ "composer/pcre": "^1.0",
"composer/semver": "^3.0",
"composer/spdx-licenses": "^1.2",
"composer/xdebug-handler": "^2.0",
@@ -6589,7 +6503,7 @@
"react/promise": "^1.2 || ^2.7",
"seld/jsonlint": "^1.4",
"seld/phar-utils": "^1.0",
- "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
+ "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
"symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0"
@@ -6609,7 +6523,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.1-dev"
+ "dev-main": "2.2-dev"
}
},
"autoload": {
@@ -6643,7 +6557,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/composer/issues",
- "source": "https://github.com/composer/composer/tree/2.1.12"
+ "source": "https://github.com/composer/composer/tree/2.2.3"
},
"funding": [
{
@@ -6659,7 +6573,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-09T15:02:04+00:00"
+ "time": "2021-12-31T11:18:53+00:00"
},
{
"name": "composer/metadata-minifier",
@@ -6730,6 +6644,150 @@
],
"time": "2021-04-07T13:37:33+00:00"
},
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T08:41:34+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2",
+ "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-06T15:17:27+00:00"
+ },
{
"name": "composer/semver",
"version": "3.2.6",
@@ -6893,25 +6951,27 @@
},
{
"name": "composer/xdebug-handler",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
+ "reference": "6555461e76962fd0379c444c46fd558a0fcfb65e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
- "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6555461e76962fd0379c444c46fd558a0fcfb65e",
+ "reference": "6555461e76962fd0379c444c46fd558a0fcfb65e",
"shasum": ""
},
"require": {
+ "composer/pcre": "^1",
"php": "^5.3.2 || ^7.0 || ^8.0",
"psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
},
"type": "library",
"autoload": {
@@ -6937,7 +6997,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.3"
},
"funding": [
{
@@ -6953,7 +7013,7 @@
"type": "tidelift"
}
],
- "time": "2021-07-31T17:03:58+00:00"
+ "time": "2021-12-08T13:07:32+00:00"
},
{
"name": "doctrine/cache",
@@ -7056,36 +7116,38 @@
},
{
"name": "doctrine/dbal",
- "version": "3.1.4",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "821b4f01a36ce63ed36c090ea74767b72db367e9"
+ "reference": "5d54f63541d7bed1156cb5c9b79274ced61890e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/821b4f01a36ce63ed36c090ea74767b72db367e9",
- "reference": "821b4f01a36ce63ed36c090ea74767b72db367e9",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/5d54f63541d7bed1156cb5c9b79274ced61890e4",
+ "reference": "5d54f63541d7bed1156cb5c9b79274ced61890e4",
"shasum": ""
},
"require": {
"composer/package-versions-deprecated": "^1.11.99",
- "doctrine/cache": "^1.0|^2.0",
+ "doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.0",
- "php": "^7.3 || ^8.0"
+ "php": "^7.3 || ^8.0",
+ "psr/cache": "^1|^2|^3",
+ "psr/log": "^1|^2|^3"
},
"require-dev": {
"doctrine/coding-standard": "9.0.0",
"jetbrains/phpstorm-stubs": "2021.1",
- "phpstan/phpstan": "1.1.1",
- "phpstan/phpstan-strict-rules": "^1",
+ "phpstan/phpstan": "1.2.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
"phpunit/phpunit": "9.5.10",
"psalm/plugin-phpunit": "0.16.1",
"squizlabs/php_codesniffer": "3.6.1",
"symfony/cache": "^5.2|^6.0",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0|^6.0",
- "vimeo/psalm": "4.12.0"
+ "vimeo/psalm": "4.13.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -7145,7 +7207,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.1.4"
+ "source": "https://github.com/doctrine/dbal/tree/3.2.0"
},
"funding": [
{
@@ -7161,7 +7223,7 @@
"type": "tidelift"
}
],
- "time": "2021-11-15T16:44:33+00:00"
+ "time": "2021-11-26T21:00:12+00:00"
},
{
"name": "doctrine/deprecations",
@@ -7436,16 +7498,16 @@
},
{
"name": "facade/ignition",
- "version": "2.17.1",
+ "version": "2.17.4",
"source": {
"type": "git",
"url": "https://github.com/facade/ignition.git",
- "reference": "317f6110c1977b50e06365bbb155fbe5079035ec"
+ "reference": "95c80bd35ee6858e9e1439b2f6a698295eeb2070"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/facade/ignition/zipball/317f6110c1977b50e06365bbb155fbe5079035ec",
- "reference": "317f6110c1977b50e06365bbb155fbe5079035ec",
+ "url": "https://api.github.com/repos/facade/ignition/zipball/95c80bd35ee6858e9e1439b2f6a698295eeb2070",
+ "reference": "95c80bd35ee6858e9e1439b2f6a698295eeb2070",
"shasum": ""
},
"require": {
@@ -7510,7 +7572,7 @@
"issues": "https://github.com/facade/ignition/issues",
"source": "https://github.com/facade/ignition"
},
- "time": "2021-11-25T10:26:30+00:00"
+ "time": "2021-12-27T15:11:24+00:00"
},
{
"name": "facade/ignition-contracts",
@@ -7567,22 +7629,22 @@
},
{
"name": "fakerphp/faker",
- "version": "v1.16.0",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35"
+ "reference": "b85e9d44eae8c52cca7aa0939483611f7232b669"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/271d384d216e5e5c468a6b28feedf95d49f83b35",
- "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/b85e9d44eae8c52cca7aa0939483611f7232b669",
+ "reference": "b85e9d44eae8c52cca7aa0939483611f7232b669",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0",
"psr/container": "^1.0 || ^2.0",
- "symfony/deprecation-contracts": "^2.2"
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
},
"conflict": {
"fzaninotto/faker": "*"
@@ -7601,7 +7663,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "v1.16-dev"
+ "dev-main": "v1.17-dev"
}
},
"autoload": {
@@ -7626,9 +7688,9 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.16.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.17.0"
},
- "time": "2021-09-06T14:53:37+00:00"
+ "time": "2021-12-05T17:14:47+00:00"
},
{
"name": "filp/whoops",
@@ -8019,16 +8081,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.13.1",
+ "version": "v4.13.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd"
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd",
- "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
"shasum": ""
},
"require": {
@@ -8069,9 +8131,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
},
- "time": "2021-11-03T20:52:16+00:00"
+ "time": "2021-11-30T19:35:32+00:00"
},
{
"name": "nunomaduro/collision",
@@ -8433,16 +8495,16 @@
},
{
"name": "phpspec/prophecy",
- "version": "1.14.0",
+ "version": "v1.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
- "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"shasum": ""
},
"require": {
@@ -8494,22 +8556,22 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
},
- "time": "2021-09-10T09:02:12+00:00"
+ "time": "2021-12-08T12:19:24+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.9",
+ "version": "9.2.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f301eb1453c9e7a1bc912ee8b0ea9db22c60223b"
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f301eb1453c9e7a1bc912ee8b0ea9db22c60223b",
- "reference": "f301eb1453c9e7a1bc912ee8b0ea9db22c60223b",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687",
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687",
"shasum": ""
},
"require": {
@@ -8565,7 +8627,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.9"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10"
},
"funding": [
{
@@ -8573,20 +8635,20 @@
"type": "github"
}
],
- "time": "2021-11-19T15:21:02+00:00"
+ "time": "2021-12-05T09:12:13+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.5",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
"shasum": ""
},
"require": {
@@ -8625,7 +8687,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
},
"funding": [
{
@@ -8633,7 +8695,7 @@
"type": "github"
}
],
- "time": "2020-09-28T05:57:25+00:00"
+ "time": "2021-12-02T12:48:52+00:00"
},
{
"name": "phpunit/php-invoker",
@@ -8818,16 +8880,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.10",
+ "version": "9.5.11",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a"
+ "reference": "2406855036db1102126125537adb1406f7242fdd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
- "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd",
+ "reference": "2406855036db1102126125537adb1406f7242fdd",
"shasum": ""
},
"require": {
@@ -8905,11 +8967,11 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11"
},
"funding": [
{
- "url": "https://phpunit.de/donate.html",
+ "url": "https://phpunit.de/sponsors.html",
"type": "custom"
},
{
@@ -8917,7 +8979,56 @@
"type": "github"
}
],
- "time": "2021-09-25T07:38:51+00:00"
+ "time": "2021-12-25T07:07:57+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
},
{
"name": "react/promise",
@@ -9998,16 +10109,16 @@
},
{
"name": "seld/phar-utils",
- "version": "1.1.2",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/phar-utils.git",
- "reference": "749042a2315705d2dfbbc59234dd9ceb22bf3ff0"
+ "reference": "9f3452c93ff423469c0d56450431562ca423dcee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/749042a2315705d2dfbbc59234dd9ceb22bf3ff0",
- "reference": "749042a2315705d2dfbbc59234dd9ceb22bf3ff0",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee",
+ "reference": "9f3452c93ff423469c0d56450431562ca423dcee",
"shasum": ""
},
"require": {
@@ -10040,22 +10151,22 @@
],
"support": {
"issues": "https://github.com/Seldaek/phar-utils/issues",
- "source": "https://github.com/Seldaek/phar-utils/tree/1.1.2"
+ "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0"
},
- "time": "2021-08-19T21:01:38+00:00"
+ "time": "2021-12-10T11:20:11+00:00"
},
{
"name": "symfony/debug",
- "version": "v4.4.31",
+ "version": "v4.4.36",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0"
+ "reference": "346e1507eeb3f566dcc7a116fefaa407ee84691b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0",
- "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/346e1507eeb3f566dcc7a116fefaa407ee84691b",
+ "reference": "346e1507eeb3f566dcc7a116fefaa407ee84691b",
"shasum": ""
},
"require": {
@@ -10094,7 +10205,7 @@
"description": "Provides tools to ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/debug/tree/v4.4.31"
+ "source": "https://github.com/symfony/debug/tree/v4.4.36"
},
"funding": [
{
@@ -10110,26 +10221,26 @@
"type": "tidelift"
}
],
- "time": "2021-09-24T13:30:14+00:00"
+ "time": "2021-11-29T08:40:48+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.3.4",
+ "version": "v6.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32"
+ "reference": "52b3c9cce673b014915445a432339f282e002ce6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32",
- "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/52b3c9cce673b014915445a432339f282e002ce6",
+ "reference": "52b3c9cce673b014915445a432339f282e002ce6",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php80": "^1.16"
+ "symfony/polyfill-mbstring": "~1.8"
},
"type": "library",
"autoload": {
@@ -10157,7 +10268,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.3.4"
+ "source": "https://github.com/symfony/filesystem/tree/v6.0.0"
},
"funding": [
{
@@ -10173,7 +10284,7 @@
"type": "tidelift"
}
],
- "time": "2021-07-21T12:40:44+00:00"
+ "time": "2021-10-29T07:35:21+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/config/database.php b/config/database.php
index 713634d..235fca5 100644
--- a/config/database.php
+++ b/config/database.php
@@ -67,7 +67,10 @@ return [
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
- 'sslmode' => 'prefer',
+ 'sslmode' => 'disable', //depends on your security level https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS
+ 'sslrootcert' => env('DB_SSLROOTCERT', 'config/ssl/ca.crt'),
+ 'sslcert' => env('DB_SSLCERT', 'config/ssl/client.crt'),
+ 'sslkey' => env('DB_SSLKEY', 'config/ssl/client.key'),
],
'sqlsrv' => [
@@ -92,29 +95,29 @@ return [
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
- 'sslmode' => 'prefer',
+ 'sslmode' => env('DB_SSLMODE', 'prefer'),
// Only set these keys if you want to run en secure mode
// otherwise you can them out of the configuration array
- #'sslcert' => env('DB_SSLCERT', 'client.crt'),
- #'sslkey' => env('DB_SSLKEY', 'client.key'),
- #'sslrootcert' => env('DB_SSLROOTCERT', 'ca.crt'),
+ 'sslcert' => env('DB_SSLCERT', 'config/ssl/client.crt'),
+ 'sslkey' => env('DB_SSLKEY', 'config/ssl/client.key'),
+ 'sslrootcert' => env('DB_SSLROOTCERT', 'config/ssl/ca.crt'),
],
- 'mongodb' => [
- 'driver' => 'mongodb',
- 'host' => env('DB_MONGO_HOST', '127.0.0.1'),
- 'port' => env('DB_MONGO_PORT', 27017),
- 'database' => env('DB_MONGO_DATABASE', 'fido'),
- 'username' => env('DB_MONGO_USERNAME', 'mongo'),
- 'password' => env('DB_MONGO_PASSWORD', 'password'),
- 'options' => [
- // here you can pass more settings to the Mongo Driver Manager
- // see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use
+ 'mongodb' => [
+ 'driver' => 'mongodb',
+ 'host' => env('DB_MONGO_HOST', '127.0.0.1'),
+ 'port' => env('DB_MONGO_PORT', 27017),
+ 'database' => env('DB_MONGO_DATABASE', 'fido'),
+ 'username' => env('DB_MONGO_USERNAME', 'mongo'),
+ 'password' => env('DB_MONGO_PASSWORD', 'password'),
+ 'options' => [
+ // here you can pass more settings to the Mongo Driver Manager
+ // see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use
- 'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
- ],
- ],
+ 'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
+ ],
+ ],
],
/*
diff --git a/database/migrations/2021_06_18_112022_update_zones.php b/database/migrations/2021_06_18_112022_update_zones.php
index 044e253..a240c0b 100644
--- a/database/migrations/2021_06_18_112022_update_zones.php
+++ b/database/migrations/2021_06_18_112022_update_zones.php
@@ -16,11 +16,10 @@ class UpdateZones extends Migration
DB::statement('ALTER TABLE zones ALTER COLUMN domain_id SET NOT NULL');
Schema::table('zones', function (Blueprint $table) {
+ $table->integer('system_id');
$table->dropColumn(['description','ipv4','ipv4_mask','ipv6','ipv6_mask','zt_id']);
$table->string('ztid')->nullable();
$table->dropUnique(['domain_id']);
-
- $table->integer('system_id');
$table->foreign('system_id')->references('id')->on('systems');
});
}
diff --git a/database/migrations/2021_06_21_121910_add_system_to_setups.php b/database/migrations/2021_06_21_121910_add_system_to_setups.php
index 774bed2..5882422 100644
--- a/database/migrations/2021_06_21_121910_add_system_to_setups.php
+++ b/database/migrations/2021_06_21_121910_add_system_to_setups.php
@@ -14,8 +14,8 @@ class AddSystemToSetups extends Migration
public function up()
{
Schema::table('setups', function (Blueprint $table) {
- $table->integer('options');
$table->integer('system_id');
+ $table->integer('options');
$table->foreign('system_id')->references('id')->on('systems');
});
}
diff --git a/database/migrations/2022_01_01_235631_create_mail.php b/database/migrations/2022_01_01_235631_create_mail.php
new file mode 100644
index 0000000..42151e1
--- /dev/null
+++ b/database/migrations/2022_01_01_235631_create_mail.php
@@ -0,0 +1,137 @@
+id();
+ $table->timestamps();
+ $table->softDeletes();
+ $table->string('mid')->nullable();
+
+ $table->string('to',128);
+ $table->string('from',128);
+ $table->string('subject',256);
+ $table->dateTimeTz('datetime');
+ $table->tinyInteger('tzoffset');
+
+ $table->string('msgid')->nullable();
+ $table->string('replyid')->nullable();
+
+ $table->text('msg');
+ $table->string('msg_src')->nullable();
+ $table->string('msg_crc')->nullable();
+ $table->string('tagline')->nullable();
+ $table->string('tearline')->nullable();
+ $table->string('origin')->nullable();
+
+ $table->tinyInteger('flags')->nullable();
+ $table->jsonb('rogue_path')->nullable();
+ $table->jsonb('rogue_seenby')->nullable();
+ $table->jsonb('kludges')->nullable();
+
+ $table->integer('echoarea_id');
+ $table->foreign('echoarea_id')->references('id')->on('echoareas');
+
+ $table->integer('fftn_id');
+ $table->foreign('fftn_id')->references('id')->on('addresses');
+ });
+
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN echomail_id TO mid");
+ DB::statement("ALTER TABLE address_echomail ALTER COLUMN mid DROP NOT NULL");
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN export_date TO export_at");
+ DB::statement("ALTER TABLE address_echomail ALTER COLUMN export_at DROP NOT NULL");
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN sent_date TO sent_at");
+ DB::statement("ALTER TABLE address_echomail RENAME TO echomail_seenby");
+ Schema::table('echomail_seenby', function (Blueprint $table) {
+ $table->integer('echomail_id')->nullable()->first();
+ $table->string('packet')->nullable();
+
+ $table->foreign('echomail_id')->references('id')->on('echomails');
+ });
+
+ Schema::create('echomail_path', function (Blueprint $table) {
+ $table->id();
+
+ $table->integer('address_id');
+ $table->foreign('address_id')->references('id')->on('addresses');
+
+ $table->unique(['id','echomail_id']);
+ $table->unique(['echomail_id','address_id','parent_id']);
+
+ $table->integer('parent_id')->nullable();
+ $table->foreign(['parent_id','echomail_id'])->references(['id','echomail_id'])->on('echomail_path');
+
+ $table->integer('echomail_id');
+ $table->foreign('echomail_id')->references('id')->on('echomails');
+ });
+
+ Schema::create('netmails', function (Blueprint $table) {
+ $table->id();
+ $table->timestamps();
+ $table->softDeletes();
+ $table->string('mid')->nullable();
+
+ $table->string('to',128);
+ $table->string('from',128);
+ $table->string('subject',256);
+
+ $table->dateTimeTz('datetime');
+ $table->tinyInteger('tzoffset')->nullable();
+
+ $table->tinyInteger('flags')->nullable();
+ $table->tinyInteger('cost')->nullable();
+ $table->string('msgid')->nullable();
+ $table->string('replyid')->nullable();
+
+ $table->text('msg');
+ $table->text('msg_src')->nullable();
+ $table->integer('msg_crc')->nullable();
+
+ $table->string('tagline')->nullable();
+ $table->string('tearline')->nullable();
+ $table->boolean('local')->default(FALSE);
+
+ $table->string('recv_pkt')->nullable();
+ $table->string('sent_pkt')->nullable();
+ $table->dateTimeTz('sent_at')->nullable();
+
+ $table->integer('fftn_id');
+ $table->integer('tftn_id');
+ $table->foreign('fftn_id')->references('id')->on('addresses');
+ $table->foreign('tftn_id')->references('id')->on('addresses');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('echomail_seenby', function (Blueprint $table) {
+ $table->dropForeign(['echomail_id']);
+ $table->dropColumn(['packet','echomail_id']);
+ });
+ DB::commit();
+ DB::statement("ALTER TABLE echomail_seenby RENAME TO address_echomail");
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN mid TO echomail_id;");
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN export_at TO export_date;");
+ DB::statement("ALTER TABLE address_echomail RENAME COLUMN sent_at TO sent_date;");
+
+ Schema::dropIfExists('echomail_path');
+ Schema::dropIfExists('echomails');
+ Schema::dropIfExists('netmails');
+ }
+}
diff --git a/resources/views/domain/view.blade.php b/resources/views/domain/view.blade.php
index 9e43f77..b2894ec 100644
--- a/resources/views/domain/view.blade.php
+++ b/resources/views/domain/view.blade.php
@@ -261,7 +261,13 @@
},
},
legend: {
- symbolWidth: 40
+ align: 'right',
+ layout: 'vertical',
+ symbolWidth: 40,
+ floating: false,
+ navigation: {
+ arrowSize: 10
+ },
},
plotOptions: {
series: {
diff --git a/resources/views/echoarea/addedit.blade.php b/resources/views/echoarea/addedit.blade.php
index b3f0ab3..687e714 100644
--- a/resources/views/echoarea/addedit.blade.php
+++ b/resources/views/echoarea/addedit.blade.php
@@ -111,5 +111,46 @@
+
+
+
+
Info
+
There are {{ number_format($o->echomail->count()) }} messages in this area, and the oldest message in this area is {{ $o->last_message ? $o->last_message->format('Y-m-d H:i:s') : 'None' }}.
+
+
+
+ @can('admin',$o)
+ @if($o->addresses->count())
+
+
+
Exporting to the following adresses:
+
+
+
+
+ System |
+ Address |
+ Last Session |
+ Oldest Message |
+ Messages Waiting |
+
+
+
+
+ @foreach ($o->addresses as $ao)
+
+ {{ $ao->system->full_name($ao) }} @auth@if($ao->session('sespass')){{ $ao->session('default') ? '**' : '*' }}@elseif($ao->system->setup)+@endif[{{ $ao->system_id }}]@endauth |
+ {{ $ao->ftn_3d }} |
+ {{ $ao->system->last_session ? $ao->system->last_session->format('Y-m-d H:i') : '-' }} |
+ {{ ($x=$o->waiting($ao))->count() ? $x->first()->datetime->format('Y-m-d H:i') : '-' }} |
+ {{ number_format($x->count()) }} |
+
+ @endforeach
+
+
+
+
+ @endif
+ @endcan
@endsection
\ No newline at end of file
diff --git a/resources/views/system/addedit.blade.php b/resources/views/system/addedit.blade.php
index 64dbc32..6c12e13 100644
--- a/resources/views/system/addedit.blade.php
+++ b/resources/views/system/addedit.blade.php
@@ -217,7 +217,7 @@ use App\Http\Controllers\DomainController as DC;
-
+
@@ -288,6 +288,61 @@ use App\Http\Controllers\DomainController as DC;
+
+
+
+
+
+
+
+
+
+
+ Netmails are waiting for these addresses:
+
+
+
+ Address |
+ Netmail |
+
+
+
+
+ @foreach ($o->addresses->sortBy('zone.zone_id') as $ao)
+
+ {{ $ao->ftn3d }} |
+ {{ $ao->netmailWaiting()->count() }} |
+
+ @endforeach
+
+
+
+
+
+
+ Echomail waiting for these addresses:
+
+
+
+ Address |
+ Echomail |
+
+
+
+
+ @foreach ($o->addresses->sortBy('zone.zone_id') as $ao)
+
+ {{ $ao->ftn3d }} |
+ {{ $ao->echomailWaiting()->count() }} |
+
+ @endforeach
+
+
+
+
+
+
+
@endif
@else
@include('system.form-system')
diff --git a/resources/views/widgets/message.blade.php b/resources/views/widgets/message.blade.php
index e7c0018..be3e063 100644
--- a/resources/views/widgets/message.blade.php
+++ b/resources/views/widgets/message.blade.php
@@ -1,22 +1,22 @@
+
+ TO: {!! \App\Classes\FTN\Message::tr($msg->to) !!}
+
DATE: {{ $msg->datetime->format('Y-m-d H:i:s') }}
-
- MSGID: {{ $msg->msgid }}@if($x=\App\Models\Echomail::where('reply',$msg->msgid)->count()) ({{$x}} replies)@endif @if($msg->reply)
REPLY: {{ $msg->reply }}@endif
-
-
+
FROM: {!! \App\Classes\FTN\Message::tr($msg->from) !!} ({{ $msg->fftn->ftn }})
- TO: {!! \App\Classes\FTN\Message::tr($msg->to) !!}
+ MSGID: {{ $msg->msgid }}@if($x=\App\Models\Echomail::where('replyid',$msg->msgid)->count()) ({{$x}} replies)@endif @if($msg->replyid)
REPLY: {{ $msg->replyid }}@endif
-
+
SUBJECT: {!! \App\Classes\FTN\Message::tr($msg->subject) !!}