/**
* Removes this extension's files
*
* @return void
*
* @since 4.0.0
* @throws \RuntimeException
*/
protected function removeExtensionFiles()
{
$manifest = new PackageManifest(JPATH_MANIFESTS . '/packages/' . $this->extension->element . '.xml');
$error = false;
foreach ($manifest->filelist as $extension) {
$tmpInstaller = new Installer();
$tmpInstaller->setPackageUninstall(true);
$id = $this->_getExtensionId($extension->type, $extension->id, $extension->client, $extension->group);
if ($id) {
if (!$tmpInstaller->uninstall($extension->type, $id)) {
$error = true;
Log::add(Text::sprintf('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_NOT_PROPER', basename($extension->filename)), Log::WARNING, 'jerror');
}
} else {
Log::add(Text::_('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_UNKNOWN_EXTENSION'), Log::WARNING, 'jerror');
}
}
// Remove any language files
$this->parent->removeFiles($this->getManifest()->languages);
// Clean up manifest file after we're done if there were no errors
if ($error) {
throw new \RuntimeException(Text::_('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MANIFEST_NOT_REMOVED'));
}
}