/**
* Extracts the provided zip file to the plugin directory
*/
public function extract(string
$zipFilePath, bool
$delete, string
$type): void
{ $archive = ZipUtils::
openZip($zipFilePath);
$destination =
$this->extensionDirectories
[$type];
if (!
is_writable($destination)) { throw new PluginExtractionException(sprintf('Destination directory "%s" is not writable',
$destination));
} $pluginName =
$this->
getPluginName($archive);
$this->
validatePluginZip($pluginName,
$archive);
$oldFile =
$this->
findOldFile($destination,
$pluginName);
$backupFile =
$this->
createBackupFile($oldFile);
try { $archive->
extractTo($destination);