63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Update;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use App\Model\helpdesk\Settings\System;
 | |
| use Illuminate\Support\Facades\Artisan;
 | |
| use Illuminate\Support\Facades\Config;
 | |
| 
 | |
| class SyncFaveoToLatestVersion extends Controller
 | |
| {
 | |
|     public function sync()
 | |
|     {
 | |
|         ini_set('memory_limit', '-1');
 | |
|         ini_set('max_execution_time', '-1');
 | |
|         set_time_limit(0);
 | |
| 
 | |
|         $latestVersion = $this->getPhpComaptibleVersion(Config::get('app.version'));
 | |
|         $olderVersion = $this->getOlderVersion();
 | |
| 
 | |
|         if (version_compare($latestVersion, $olderVersion) == 1) {
 | |
|             $this->updateToLatestVersion($olderVersion);
 | |
|         }
 | |
|         Artisan::call('storage:link');
 | |
|         System::first()->update(['version' => Config::get('app.version')]);
 | |
|     }
 | |
| 
 | |
|     private function updateToLatestVersion($olderVersion)
 | |
|     {
 | |
|         Artisan::call('migrate', ['--force' => true]);
 | |
| 
 | |
|         $seederPath = base_path('database'.DIRECTORY_SEPARATOR.'seeders');
 | |
| 
 | |
|         if (file_exists($seederPath)) {
 | |
|             $seederVersions = scandir($seederPath);
 | |
| 
 | |
|             natsort($seederVersions);
 | |
|             $formattedOlderVersion = $olderVersion;
 | |
|             foreach ($seederVersions as $version) {
 | |
|                 if (version_compare($this->getPhpComaptibleVersion($version), $formattedOlderVersion) == 1) {
 | |
|                     Artisan::call('db:seed', ['--class' => "Database\Seeders\\$version\DatabaseSeeder", '--force' => true]);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private function getOlderVersion()
 | |
|     {
 | |
|         if (!isInstall()) {
 | |
|             return '0.0.0';
 | |
|         }
 | |
| 
 | |
|         $version = System::value('version') ?: '0.0.0';
 | |
| 
 | |
|         return $this->getPhpComaptibleVersion($version);
 | |
|     }
 | |
| 
 | |
|     private function getPhpComaptibleVersion($version)
 | |
|     {
 | |
|         return preg_replace('#v\.|v#', '', str_replace('_', '.', $version));
 | |
|     }
 | |
| }
 | 
