* @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. * @license GNU General Public License version 3 or later; see LICENSE */ namespace Joomla\Component\MokoSuiteBackup\Administrator\Engine; defined('_JEXEC') or die; class ZipArchiver implements ArchiverInterface { private \ZipArchive $zip; public function open(string $path): void { $this->zip = new \ZipArchive(); if ($this->zip->open($path, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) !== true) { throw new \RuntimeException('Cannot create ZIP archive: ' . $path); } } public function addFromString(string $localName, string $contents): void { $this->zip->addFromString($localName, $contents); } public function addFile(string $filePath, string $localName): void { $this->zip->addFile($filePath, $localName); } public function close(): void { $this->zip->close(); } public function getExtension(): string { return 'zip'; } }