open($file) || !$zip->extractTo($temp_path)) { return false; } $zip->close(); // Remove Zip File::delete($file); if ($alias == 'core') { // Move all files/folders from temp path then delete it File::copyDirectory($temp_path, base_path()); File::deleteDirectory($temp_path); // Clear cache after update Artisan::call('cache:clear'); // Update database Artisan::call('migrate', ['--force' => true]); // Check if the file mirror was successful /*if (version('short') != $version) { return false; }*/ } else { $module = Module::get($alias); $model = Model::where('alias', $alias)->first(); // Move all files/folders from temp path then delete it File::copyDirectory($temp_path, module_path($module->get('name'))); File::deleteDirectory($temp_path); // Clear cache after update Artisan::call('cache:clear'); // Update database Artisan::call('migrate', ['--force' => true]); // Add history ModelHistory::create([ 'company_id' => session('company_id'), 'module_id' => $model->id, 'category' => $module->get('category'), 'version' => $version, 'description' => trans('modules.history.updated', ['module' => $module->get('name')]), ]); } return true; } public static function download($alias, $version) { $file = null; // Check core first $info = Info::all(); if ($alias == 'core') { $url = 'core/download/' . $version . '/' . $info['php'] . '/' . $info['mysql']; } else { $url = 'modules/items/' . $alias . '/download/' . $version . '/' . $info['akaunting'] . '/' . $info['token']; } $response = static::getRemote($url, ['timeout' => 30, 'referer' => true, 'track_redirects' => true]); if ($response->getStatusCode() == 200) { $file = $response->getBody()->getContents(); } return $file; } public static function all() { // Get data from cache $data = Cache::get('updates'); if (!empty($data)) { return $data; } // No data in cache, grab them from remote $data = array(); $modules = Module::all(); $versions = Versions::latest($modules); foreach ($versions as $alias => $version) { // Modules come as array if ($alias == 'core') { if (version_compare(version('short'), $version) != 0) { $data['core'] = $version; } } else { $module = Module::get($alias); // Up-to-date if (version_compare($module->get('version'), $version) == 0) { continue; } $data[$alias] = $version; } } Cache::put('updates', $data, Date::now()->addHour(6)); return $data; } }