findOrfail($this->argument('src')); $dst = Address::withTrashed()->findOrfail($this->argument('dst')); if ((! $this->option('ignore')) && ($src->system_id !== $dst->system_id) && ($src->system->name !== System::default)) { $this->error(sprintf('FTN addresses are from different systems (%s/%s)',$src->system->name,$dst->system->name)); exit(1); } if ((! $this->option('force')) && ($src->ftn !== $dst->ftn)) { $this->error(sprintf('FTN addresses are not the same (%s:%s)',$src->ftn,$dst->ftn)); exit(1); } if ($src->active) { $this->error(sprintf('Source [%s] is still active',$src->ftn)); exit(1); } DB::beginTransaction(); // Find all echomail seenbys $x = DB::update('update echomail_seenby set address_id=? where address_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] echomail seenby records',$x)); // Find all echomail paths $x = DB::update('update echomail_path set address_id=? where address_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] echomail path records',$x)); // Find all echomails $x = DB::update('update echomails set fftn_id=? where fftn_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] echomail source records',$x)); // Find all netmails $x = DB::update('update netmails set fftn_id=? where fftn_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] netmail source records',$x)); // Find all netmails $x = DB::update('update netmails set tftn_id=? where tftn_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] netmail destination records',$x)); // Find all nodelist $x = DB::update('update address_nodelist set address_id=? where address_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] nodelist records',$x)); // Find all file seenbys $x = DB::update('update file_seenby set address_id=? where address_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] file seenby records',$x)); // Find all files $x = DB::update('update files set fftn_id=? where fftn_id=?',[$dst->id,$src->id]); $this->info(sprintf('Updated [%d] file source records',$x)); // Resubscribe echoareas try { $x = DB::update('update address_echoarea set address_id=? where address_id=?',[$dst->id,$src->id]); } catch (QueryException $e) { DB::rollback(); $this->error(sprintf('You may need to remove %s:%s (%d) from echoareas',$src->ftn,$src->system->name,$src->id)); exit(1); } $this->info(sprintf('Updated [%d] echomail subscription records',$x)); // Resubscribe fileareas try { $x = DB::update('update address_filearea set address_id=? where address_id=?',[$dst->id,$src->id]); } catch (QueryException $e) { DB::rollback(); $this->error(sprintf('You may need to remove %s:%s (%d) from fileareas',$src->ftn,$src->system->name,$src->id)); exit(1); } $this->info(sprintf('Updated [%d] filearea subscription records',$x)); if ($this->option('dryrun')) { $this->warn(sprintf('NOT deleting [%s] - DRY RUN',$src->ftn)); DB::rollBack(); } else { if ($src->forceDelete()) { $this->alert(sprintf('%s deleted.', $src->ftn)); DB::commit(); } else { $this->warn(sprintf('Address [%s] didnt delete?',$src->ftn)); DB::rollBack(); } } return Command::SUCCESS; } }