FOF30\Utils\InstallScript::uninstallObsoleteSubextensions PHP Méthode

uninstallObsoleteSubextensions() protected méthode

Uninstalls obsolete subextensions (modules, plugins) bundled with the main extension
protected uninstallObsoleteSubextensions ( JInstallerAdapterComponent $parent ) : stdClass
$parent JInstallerAdapterComponent The parent object
Résultat stdClass The subextension uninstallation status
    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;
    }