function getComponentManifestFile($com) { $short_element = str_replace('com_', '', $com); $manifestPath = JPATH_ADMINISTRATOR . '/components/' . $com . '/' . 'manifest.xml'; $shortElementManifestPath = JPATH_ADMINISTRATOR . '/components/' . $com . '/' . $short_element . '.xml'; if (JFile::exists($manifestPath)) { $file = $manifestPath; } if (JFile::exists($shortElementManifestPath)) { $file = $shortElementManifestPath; } if (empty($file)) { return false; } $installer = new JInstaller(); if (version_compare(JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6+ code here $manifest = $installer->isManifest($file); } else { // Joomla! 1.5 code here $manifest = $installer->_isManifest($file); } return $manifest; }
/** * Attempts to uninstall the specified extension * * @param array $pkg the paket package information * @return Boolean True if successful, false otherwise */ function uninstallExtension($package) { //Get an installer instance, always get a new one $installer = new JInstaller(); //attemp to load the manifest file $file = $this->findManifest($package); //check to see if the manifest was found if (isset($file)) { // Is it a valid joomla installation manifest file? $manifest = $installer->_isManifest($file); if (!is_null($manifest)) { // If the root method attribute is set to upgrade, allow file overwrite $root = $manifest->document; if ($root->attributes('method') == 'upgrade') { $installer->_overwrite = true; } // Set the manifest object and path $installer->_manifest = $manifest; $installer->setPath('manifest', $file); // Set the installation source path to that of the manifest file $installer->setPath('source', dirname($file)); } } else { $this->setError(JText::_('COM_TIENDA_UNABLE_TO_LOCATE_MANIFEST_FILE')); return false; } //check if the extension is installed already and if so uninstall it //$manifestInformation = $this->paketItemToManifest($package); $manifestInformation = $package; $elementID = $this->checkIfInstalledAlready($manifestInformation); if (!empty($elementID)) { $clientid = 0; if ($package['client'] == 'administrator') { $clientid = '1'; } //uninstall the extension using the joomla uninstaller if ($installer->uninstall($manifestInformation["type"], $elementID, $clientid)) { $this->setError(JText::_('COM_TIENDA_ELEMENT_UNINSTALLED')); return true; } else { $this->setError(JText::_('COM_TIENDA_ELEMENT_UNINSTALL_FAILED') . " :: " . $installer->getError()); return false; } } $this->setError(JText::_('COM_TIENDA_ELEMENT_NOT_UNINSTALLED')); return false; }