/**
* Removes this extension's files
*
* @return void
*
* @since 4.0.0
* @throws \RuntimeException
*/
protected function removeExtensionFiles()
{
// Loop through all elements and get list of files and folders
foreach ($this->getManifest()->fileset->files as $eFiles) {
$target = (string) $eFiles->attributes()->target;
// Create folder path
if (empty($target)) {
$targetFolder = JPATH_ROOT;
} else {
$targetFolder = JPATH_ROOT . '/' . $target;
}
$folderList = [];
// Check if all children exists
if (\count($eFiles->children()) > 0) {
// Loop through all filenames elements
foreach ($eFiles->children() as $eFileName) {
if ($eFileName->getName() === 'folder') {
$folderList[] = $targetFolder . '/' . $eFileName;
} else {
$fileName = $targetFolder . '/' . $eFileName;
File::delete($fileName);
}
}
}
// Delete any folders that don't have any content in them.
foreach ($folderList as $folder) {
$files = Folder::files($folder);
if ($files !== false && !\count($files)) {
Folder::delete($folder);
}
}
}
// Lastly, remove the extension_root
$folder = $this->parent->getPath('extension_root');
if (Folder::exists($folder)) {
Folder::delete($folder);
}
$this->parent->removeFiles($this->getManifest()->languages);
}