Optimise queries for rendering the about page
This commit is contained in:
@@ -91,16 +91,26 @@ if (! function_exists('hexstr')) {
|
||||
*/
|
||||
function our_address(Domain $do=NULL,Address $ao=NULL): Collection|Address|NULL
|
||||
{
|
||||
$our = Setup::findOrFail(config('app.id'))->system->akas;
|
||||
static $so = NULL;
|
||||
static $our = NULL;
|
||||
|
||||
if (! $so)
|
||||
$so = Setup::findOrFail(config('app.id'));
|
||||
|
||||
if (! $our) {
|
||||
$so->load(['system.akas.zone.domain']);
|
||||
$our = $so->system->akas;
|
||||
}
|
||||
|
||||
$filter = $our;
|
||||
if ($do)
|
||||
$our = $our->filter(function($item) use ($do) { return $item->zone->domain_id === $do->id; })->sortBy('role');
|
||||
$filter = $our->filter(function($item) use ($do) { return $item->zone->domain_id === $do->id; })->sortBy('role');
|
||||
|
||||
// If we are looking for a specific address, and there is only 1 result, return it, otherwise return what we have
|
||||
if ($ao && config('fido.strict') && ($x=$our->filter(function($item) use ($ao) { return $item->role <= $ao->role; })->sortBy('role'))->count())
|
||||
if ($ao && config('fido.strict') && ($x=$filter->filter(function($item) use ($ao) { return $item->role <= $ao->role; })->sortBy('role'))->count())
|
||||
$our = $x;
|
||||
|
||||
return $ao ? $our->last() : $our;
|
||||
return $ao ? $our->last() : ($do ? $filter : $our);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user