json(['message' => ctrans('texts.self_update_not_available')], 403); } if(!$this->testWritable()) throw new FilePermissionsFailure('Cannot update system because files are not writable!'); // Check if new version is available if($updater->source()->isNewVersionAvailable()) { // Get the new version available $versionAvailable = $updater->source()->getVersionAvailable(); // Create a release $release = $updater->source()->fetch($versionAvailable); $updater->source()->update($release); } $cacheCompiled = base_path('bootstrap/cache/compiled.php'); if (file_exists($cacheCompiled)) { unlink ($cacheCompiled); } $cacheServices = base_path('bootstrap/cache/services.php'); if (file_exists($cacheServices)) { unlink ($cacheServices); } Artisan::call('clear-compiled'); Artisan::call('cache:clear'); // Artisan::call('debugbar:clear'); Artisan::call('route:clear'); Artisan::call('view:clear'); Artisan::call('config:clear'); return response()->json(['message' => 'Update completed'], 200); } private function testWritable() { $directoryIterator = new \RecursiveDirectoryIterator(base_path()); foreach (new \RecursiveIteratorIterator($directoryIterator) as $file) { if ($file->isFile() && ! $file->isWritable()) { return false; } } return true; } public function checkVersion() { return trim(file_get_contents(config('ninja.version_url'))); } }