protected function uninstallObsoleteSubextensions($parent)
{
JLoader::import('joomla.installer.installer');
$db = JFactory::getDBO();
$status = new \stdClass();
$status->modules = array();
$status->plugins = array();
// Modules uninstallation
if (isset($this->uninstallation_queue['modules']) && count($this->uninstallation_queue['modules'])) {
foreach ($this->uninstallation_queue['modules'] as $folder => $modules) {
if (count($modules)) {
foreach ($modules as $module) {
// Find the module ID
$sql = $db->getQuery(true)->select($db->qn('extension_id'))->from($db->qn('#__extensions'))->where($db->qn('element') . ' = ' . $db->q('mod_' . $module))->where($db->qn('type') . ' = ' . $db->q('module'));
$db->setQuery($sql);
$id = $db->loadResult();
// Uninstall the module
if ($id) {
$installer = new JInstaller();
$result = $installer->uninstall('module', $id, 1);
$status->modules[] = array('name' => 'mod_' . $module, 'client' => $folder, 'result' => $result);
}
}
}
}
}
// Plugins uninstallation
if (isset($this->uninstallation_queue['plugins']) && count($this->uninstallation_queue['plugins'])) {
foreach ($this->uninstallation_queue['plugins'] as $folder => $plugins) {
if (count($plugins)) {
foreach ($plugins as $plugin) {
$sql = $db->getQuery(true)->select($db->qn('extension_id'))->from($db->qn('#__extensions'))->where($db->qn('type') . ' = ' . $db->q('plugin'))->where($db->qn('element') . ' = ' . $db->q($plugin))->where($db->qn('folder') . ' = ' . $db->q($folder));
$db->setQuery($sql);
$id = $db->loadResult();
if ($id) {
$installer = new JInstaller();
$result = $installer->uninstall('plugin', $id, 1);
$status->plugins[] = array('name' => 'plg_' . $plugin, 'group' => $folder, 'result' => $result);
}
}
}
}
}
return $status;
}