mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 03:57:29 -04:00 
			
		
		
		
	- Removed unused uses - Type hinting for method parameters - Removed commented code - Introduced comments for classes and methods - Short array syntax
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php namespace App\Console\Commands;
 | |
| 
 | |
| use DB;
 | |
| use Illuminate\Console\Command;
 | |
| 
 | |
| /**
 | |
|  * Class PruneData
 | |
|  */
 | |
| class PruneData extends Command
 | |
| {
 | |
|     /**
 | |
|      * @var string
 | |
|      */
 | |
|     protected $name = 'ninja:prune-data';
 | |
|     
 | |
|     /**
 | |
|      * @var string
 | |
|      */
 | |
|     protected $description = 'Delete inactive accounts';
 | |
| 
 | |
|     public function fire()
 | |
|     {
 | |
|         $this->info(date('Y-m-d').' Running PruneData...');
 | |
| 
 | |
|         // delete accounts who never registered, didn't create any invoices,
 | |
|         // hansn't logged in within the past 6 months and isn't linked to another account
 | |
|         $sql = 'select a.id
 | |
|                 from (select id, last_login from accounts) a
 | |
|                 left join users u on u.account_id = a.id and u.public_id = 0
 | |
|                 left join invoices i on i.account_id = a.id
 | |
|                 left join user_accounts ua1 on ua1.user_id1 = u.id
 | |
|                 left join user_accounts ua2 on ua2.user_id2 = u.id
 | |
|                 left join user_accounts ua3 on ua3.user_id3 = u.id
 | |
|                 left join user_accounts ua4 on ua4.user_id4 = u.id
 | |
|                 left join user_accounts ua5 on ua5.user_id5 = u.id
 | |
|                 where u.registered = 0
 | |
|                 and a.last_login < DATE_SUB(now(), INTERVAL 6 MONTH)
 | |
|                 and (ua1.id is null and ua2.id is null and ua3.id is null and ua4.id is null and ua5.id is null)
 | |
|                 group by a.id
 | |
|                 having count(i.id) = 0';
 | |
| 
 | |
|         $results = DB::select($sql);
 | |
|         
 | |
|         foreach ($results as $result) {
 | |
|             $this->info("Deleting {$result->id}");        
 | |
|             DB::table('accounts')
 | |
|                 ->where('id', '=', $result->id)
 | |
|                 ->delete();
 | |
|         }
 | |
|         
 | |
|         $this->info('Done');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @return array
 | |
|      */
 | |
|     protected function getArguments()
 | |
|     {
 | |
|         return [];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @return array
 | |
|      */
 | |
|     protected function getOptions()
 | |
|     {
 | |
|         return [];
 | |
|     }
 | |
| }
 |