/aamenu/code/trunk/administrator/components/com_aamenu/install/uninstall.php
PHP | 234 lines | 146 code | 31 blank | 57 comment | 27 complexity | c25ff58c1b9f6247a53adae9d1bc98de MD5 | raw file
- <?php
- /**
- * @version $Id: uninstall.php 277 2010-09-13 04:21:14Z eddieajau $
- * @package Artof.AAMenu
- * @subpackage com_aamenu
- * @copyright Copyright (C) 2009 New Life in IT Pty Ltd. All rights reserved.
- * @license GNU General Public License <http://www.gnu.org/copyleft/gpl.html>
- * @link http://www.theartofjoomla.com
- */
- // no direct access
- defined('_JEXEC') or die();
- // load the component language file
- $language = &JFactory::getLanguage();
- $language->load('com_aamenu');
- //$nPaths = $this->_paths;
- $status = new JObject();
- $status->modules = array();
- $status->plugins = array();
- /***********************************************************************************************
- * ---------------------------------------------------------------------------------------------
- * MODULE REMOVAL SECTION
- * ---------------------------------------------------------------------------------------------
- ***********************************************************************************************/
- $modules = &$this->manifest->getElementByPath('modules');
- if (is_a($modules, 'JSimpleXMLElement') && count($modules->children())) {
- foreach ($modules->children() as $module)
- {
- $mname = $module->attributes('module');
- $mclient = JApplicationHelper::getClientInfo($module->attributes('client'), true);
- $mposition = $module->attributes('position');
- // Set the installation path
- if (!empty ($mname)) {
- $this->parent->setPath('extension_root', $mclient->path.DS.'modules'.DS.$mname);
- } else {
- $this->parent->abort(JText::_('J_INSTALL_MODULE').' '.JText::_('J_INSTALL_UNINSTALL').': '.JText::_('J_INSTALL_MODULE_FILE_MISSING'));
- return false;
- }
- /**
- * ---------------------------------------------------------------------------------------------
- * Database Processing Section
- * ---------------------------------------------------------------------------------------------
- */
- $db = &JFactory::getDBO();
- // Lets delete all the module copies for the type we are uninstalling
- $query = 'SELECT `id`' .
- ' FROM `#__modules`' .
- ' WHERE module = '.$db->Quote($mname) .
- ' AND client_id = '.(int)$mclient->id;
- $db->setQuery($query);
- $modules = $db->loadResultArray();
- // Do we have any module copies?
- if (count($modules)) {
- JArrayHelper::toInteger($modules);
- $modID = implode(',', $modules);
- $query = 'DELETE' .
- ' FROM #__modules_menu' .
- ' WHERE moduleid IN ('.$modID.')';
- $db->setQuery($query);
- if (!$db->query()) {
- JError::raiseWarning(100, JText::_('J_INSTALL_MODULE').' '.JText::_('J_INSTALL_UNINSTALL').': '.$db->stderr(true));
- $retval = false;
- }
- }
- // Delete the modules in the #__modules table
- $query = 'DELETE FROM #__modules WHERE module = '.$db->Quote($mname);
- $db->setQuery($query);
- if (!$db->query()) {
- JError::raiseWarning(100, JText::_('J_INSTALL_MODULE').' '.JText::_('J_INSTALL_UNINSTALL').': '.$db->stderr(true));
- $retval = false;
- }
- /**
- * ---------------------------------------------------------------------------------------------
- * Filesystem Processing Section
- * ---------------------------------------------------------------------------------------------
- */
- // Remove all necessary files
- $element = &$module->getElementByPath('files');
- if (is_a($element, 'JSimpleXMLElement') && count($element->children())) {
- $this->parent->removeFiles($element, -1);
- }
- // Remove all necessary files
- $element = &$module->getElementByPath('media');
- if (is_a($element, 'JSimpleXMLElement') && count($element->children())) {
- $this->parent->removeFiles($element, -1);
- }
- $element = &$module->getElementByPath('languages');
- if (is_a($element, 'JSimpleXMLElement') && count($element->children())) {
- $this->parent->removeFiles($element, $mclient->id);
- }
- // Remove the installation folder
- if (!JFolder::delete($this->parent->getPath('extension_root'))) {
- }
- $status->modules[] = array('name'=>$mname,'client'=>$mclient->name);
- }
- }
- /***********************************************************************************************
- * ---------------------------------------------------------------------------------------------
- * PLUGIN REMOVAL SECTION
- * ---------------------------------------------------------------------------------------------
- ***********************************************************************************************/
- $plugins = &$this->manifest->getElementByPath('plugins');
- if (is_a($plugins, 'JSimpleXMLElement') && count($plugins->children())) {
- foreach ($plugins->children() as $plugin)
- {
- $pname = $plugin->attributes('plugin');
- $pgroup = $plugin->attributes('group');
- // Set the installation path
- if (!empty($pname) && !empty($pgroup)) {
- $this->parent->setPath('extension_root', JPATH_ROOT.DS.'plugins'.DS.$pgroup);
- } else {
- $this->parent->abort(JText::_('J_INSTALL_PLUGIN').' '.JText::_('J_INSTALL_UNINSTALL').': '.JText::_('J_INSTALL_PLUGIN_FILE_MISSING'));
- return false;
- }
- /**
- * ---------------------------------------------------------------------------------------------
- * Database Processing Section
- * ---------------------------------------------------------------------------------------------
- */
- $db = &JFactory::getDBO();
- // Delete the plugins in the #__plugins table
- $query = 'DELETE FROM #__plugins WHERE element = '.$db->Quote($pname).' AND folder = '.$db->Quote($pgroup);
- $db->setQuery($query);
- if (!$db->query()) {
- JError::raiseWarning(100, JText::_('J_INSTALL_PLUGIN').' '.JText::_('J_INSTALL_UNINSTALL').': '.$db->stderr(true));
- $retval = false;
- }
- /**
- * ---------------------------------------------------------------------------------------------
- * Filesystem Processing Section
- * ---------------------------------------------------------------------------------------------
- */
- // Remove all necessary files
- $element = &$plugin->getElementByPath('files');
- if (is_a($element, 'JSimpleXMLElement') && count($element->children())) {
- $this->parent->removeFiles($element, -1);
- }
- $element = &$plugin->getElementByPath('languages');
- if (is_a($element, 'JSimpleXMLElement') && count($element->children())) {
- $this->parent->removeFiles($element, 1);
- }
- // If the folder is empty, let's delete it
- $files = JFolder::files($this->parent->getPath('extension_root'));
- if (!count($files)) {
- JFolder::delete($this->parent->getPath('extension_root'));
- }
- $status->plugins[] = array('name'=>$pname,'group'=>$pgroup);
- }
- }
- /***********************************************************************************************
- * ---------------------------------------------------------------------------------------------
- * OUTPUT TO SCREEN
- * ---------------------------------------------------------------------------------------------
- ***********************************************************************************************/
- $rows = 0;
- ?>
- <h2><?php echo JText::_('COM_AAMENU_UnInstall_Heading');?></h2>
- <table class="adminlist">
- <thead>
- <tr>
- <th class="title" colspan="2"><?php echo JText::_('J_INSTALL_EXTENSION'); ?></th>
- <th width="30%"><?php echo JText::_('J_INSTALL_STATUS'); ?></th>
- </tr>
- </thead>
- <tfoot>
- <tr>
- <td colspan="3"></td>
- </tr>
- </tfoot>
- <tbody>
- <tr class="row0">
- <td class="key" colspan="2"><?php echo 'Advanced Administrator Menu '.JText::_('J_INSTALL_COMPONENT'); ?></td>
- <td><strong><?php echo JText::_('J_INSTALL_REMOVED'); ?></strong></td>
- </tr>
- <?php if (count($status->modules)) : ?>
- <tr>
- <th><?php echo JText::_('J_Install_Module'); ?></th>
- <th><?php echo JText::_('J_Install_Client'); ?></th>
- <th></th>
- </tr>
- <?php foreach ($status->modules as $module) : ?>
- <tr class="row<?php echo (++ $rows % 2); ?>">
- <td class="key"><?php echo $module['name']; ?></td>
- <td class="key"><?php echo ucfirst($module['client']); ?></td>
- <td><strong><?php echo JText::_('J_INSTALL_REMOVED'); ?></strong></td>
- </tr>
- <?php endforeach;
- endif;
- if (count($status->plugins)) : ?>
- <tr>
- <th><?php echo JText::_('J_INSTALL_PLUGIN'); ?></th>
- <th><?php echo JText::_('J_INSTALL_GROUP'); ?></th>
- <th></th>
- </tr>
- <?php foreach ($status->plugins as $plugin) : ?>
- <tr class="row<?php echo (++ $rows % 2); ?>">
- <td class="key"><?php echo ucfirst($plugin['name']); ?></td>
- <td class="key"><?php echo ucfirst($plugin['group']); ?></td>
- <td><strong><?php echo JText::_('J_INSTALL_REMOVED'); ?></strong></td>
- </tr>
- <?php endforeach;
- endif; ?>
- </tbody>
- </table>