2016-01-25 06:04:57 +01:00
< ? php
/**
* Pony . fm - A community for pony fan music .
2021-02-14 03:39:15 +01:00
* Copyright ( C ) 2016 Feld0 .
2016-01-25 06:04:57 +01:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2021-02-14 03:34:58 +01:00
namespace App\Console\Commands ;
2016-01-25 06:04:57 +01:00
2021-02-14 03:34:58 +01:00
use App\Commands\MergeAccountsCommand ;
use App\Models\Album ;
use App\Models\Comment ;
use App\Models\Favourite ;
use App\Models\Follower ;
use App\Models\Image ;
use App\Models\PinnedPlaylist ;
use App\Models\Playlist ;
use App\Models\ResourceLogItem ;
use App\Models\ResourceUser ;
use App\Models\Track ;
use App\Models\User ;
2021-02-14 03:39:15 +01:00
use Carbon\Carbon ;
use Illuminate\Console\Command ;
use Illuminate\Support\Collection ;
2021-02-14 20:46:41 +01:00
use Illuminate\Support\Facades\DB ;
2016-01-25 06:04:57 +01:00
class MergeAccounts extends Command
{
/**
* The name and signature of the console command .
*
* @ var string
*/
protected $signature = ' accounts : merge
{ sourceAccountId : ID of the source account ( the one being disabled and having content transferred out of it )}
{ destinationAccountId : ID of the destination account ( the one gaining content )} ' ;
/**
* The console command description .
*
* @ var string
*/
protected $description = 'Merges two accounts' ;
/**
* Create a new command instance .
*/
public function __construct ()
{
parent :: __construct ();
}
/**
* Execute the console command .
*
* @ return mixed
*/
public function handle ()
{
$sourceAccountId = $this -> argument ( 'sourceAccountId' );
$destinationAccountId = $this -> argument ( 'destinationAccountId' );
$sourceAccount = User :: find ( $sourceAccountId );
$destinationAccount = User :: find ( $destinationAccountId );
2016-12-30 20:22:44 +01:00
// Sanity checks
if ( null !== $sourceAccount -> getAccessToken ()) {
$this -> warn ( " WARNING: The source account (ID { $sourceAccountId } ) is linked to a Poniverse account! Normally, the destination account should be the one that's linked to a Poniverse account as that's the one that the artist will be logging into. " );
$this -> line ( '' );
2021-02-14 03:39:15 +01:00
$this -> warn ( 'If you continue with this merge, the Poniverse account linked to the source Pony.fm account will no longer be able to log into Pony.fm.' );
if ( ! $this -> confirm ( 'Continue merging this set of source and destination accounts?' )) {
2016-12-30 20:22:44 +01:00
$this -> error ( 'Merge aborted.' );
2021-02-14 03:39:15 +01:00
2016-12-30 20:22:44 +01:00
return 1 ;
}
}
if ( null === $destinationAccount -> getAccessToken ()) {
$this -> warn ( " WARNING: The destination account (ID { $destinationAccountId } ) is not linked to a Poniverse account! " );
$this -> warn ( " This is normal if you're merging two archived profiles but not if you're helping an artist claim their profile. " );
2021-02-14 03:39:15 +01:00
if ( ! $this -> confirm ( 'Continue merging this set of source and destination accounts?' )) {
2016-12-30 20:22:44 +01:00
$this -> error ( 'Merge aborted.' );
2021-02-14 03:39:15 +01:00
2016-12-30 20:22:44 +01:00
return 1 ;
}
}
2016-01-25 06:04:57 +01:00
$this -> info ( " Merging { $sourceAccount -> display_name } ( { $sourceAccountId } ) into { $destinationAccount -> display_name } ( { $destinationAccountId } )... " );
$command = new MergeAccountsCommand ( $sourceAccount , $destinationAccount );
$command -> execute ();
2021-02-14 03:39:15 +01:00
2016-12-30 20:22:44 +01:00
return 0 ;
2016-01-25 06:04:57 +01:00
}
}