private function extractContent($downloadPath, $path) { $extractDirectory = sys_get_temp_dir() . DIRECTORY_SEPARATOR . uniqid('zip-extract'); FileSystem::createDirectory($extractDirectory, 0777); FileSystem::emptyDirectory($path); if (defined('PHP_WINDOWS_VERSION_BUILD')) { $this->extractContentWindows($downloadPath, $extractDirectory); } else { $this->extractContentUnix($downloadPath, $extractDirectory); } // When there was only one directory in the zip, we extract the content out of it. $files = FileSystem::getDirectoryContent($extractDirectory); if (count($files) === 1 && is_dir(key($files))) { $files = FileSystem::getDirectoryContent(key($files)); } foreach ($files as $file) { $file = (string) $file; FileSystem::rename($file, $path . '/' . basename($file)); } FileSystem::removeDirectory($extractDirectory); }