clrghouz/app/Console/Commands/Debug/AddressCheckRole.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;
}
}