50 lines
1.2 KiB
PHP
50 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands\Debug;
|
|
|
|
use App\Models\Address;
|
|
use Illuminate\Console\Command;
|
|
|
|
class AddressCheckRole extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'debug:address:check:role {--f|fix : Fix the role}';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Check address roles and optionally fix';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*/
|
|
public function handle(): int
|
|
{
|
|
foreach (Address::withTrashed()->with(['zone.domain'])->cursor() as $o) {
|
|
// Trim the role bit from role, since we now work out a role automatically.
|
|
// @todo This doesnt work, because role_id returns back the overridden role, and thus would remove it
|
|
if (($o->role & Address::NODE_ALL) === $o->role_id) {
|
|
$o->role &= ~$o->role_id;
|
|
|
|
if ((! $o->role) || ($o->role === Address::NODE_UNKNOWN))
|
|
$o->role = NULL;
|
|
|
|
if ($o->getDirty())
|
|
if ($this->option('fix')) {
|
|
$o->save();
|
|
|
|
} else {
|
|
$this->warn(sprintf('Not changing [%s](%s) from [%d] to [%d]',$o->ftn,$o->role_name,$o->getOriginal('role'),$o->role));
|
|
}
|
|
}
|
|
}
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
} |