function Uninstall() { $result = FALSE; if ($this->serial) { // Checks if the module exists in modules table // $modquery =& $this->ampdb->Execute('SELECT * FROM modules WHERE id=' . (int) $this->serial); if ($modquery->NumRows() == 1) { $moddata = $modquery->Fields(); // Checks if the module is Ampoliros itself // if ($moddata['modid'] != 'ampoliros') { // Checks if the structure file still exists // if (file_exists(MODULE_PATH . $moddata['modid'] . '/' . Module::STRUCTURE_FILE)) { $this->modname = $moddata['modid']; // Checks if there are depengind modules // $moddeps = new ModuleDep($this->ampdb); $pendingdeps = $moddeps->CheckDependingModules($moddata['modid']); // If dependencies are ok, go on // if ($pendingdeps == FALSE) { if ($moddata['onlyextension'] != $this->ampdb->fmttrue) { $this->DisableToAllSites($moddata['modid']); } $this->HandleStructure(MODULE_PATH . $moddata['modid'] . '/' . Module::STRUCTURE_FILE, Module::INSTALL_MODE_UNINSTALL, TMP_PATH . 'modinst/'); // Removes module archive and directory // if (file_exists(MODULE_PATH . $moddata['modfile'])) { @unlink(MODULE_PATH . $moddata['modfile']); } RecRemoveDir(MODULE_PATH . $moddata['modid']); // Module rows in modules table // $this->ampdb->Execute('DELETE FROM modules WHERE id=' . (int) $this->serial); // Remove cached items // Carthag::import('com.solarix.ampoliros.datatransfer.cache.CacheGarbageCollector'); $cache_gc = new CacheGarbageCollector(); $cache_gc->RemoveModuleItems($moddata['modid']); // Remove dependencies // $moddeps->RemallDep($this->serial); $this->serial = 0; $result = true; if ($GLOBALS['gEnv']['core']['config']->Value('ALERT_ON_MODULE_OPERATION') == '1') { Carthag::import('com.solarix.ampoliros.security.SecurityLayer'); $amp_security = new SecurityLayer(); $amp_security->SendAlert('Module ' . $moddata['modid'] . ' has been removed'); unset($amp_security); } } else { $this->unmetdeps = $pendingdeps; } if ($result == TRUE) { import('com.solarix.ampoliros.io.log.Logger'); $log = new Logger(AMP_LOG); $log->LogEvent('Ampoliros', 'Uninstalled module ' . $this->modname, LOGGER_NOTICE); } } else { import('com.solarix.ampoliros.io.log.Logger'); $log = new Logger(AMP_LOG); $log->LogEvent('ampoliros.modules_library.modules_class.uninstall', 'Structure file ' . MODULE_PATH . $moddata['modid'] . '/' . Module::STRUCTURE_FILE . ' for module ' . $moddata['modid'] . ' was not found', LOGGER_ERROR); } } else { import('com.solarix.ampoliros.io.log.Logger'); $log = new Logger(AMP_LOG); $log->LogEvent('ampoliros.modules_library.modules_class.uninstall', 'Cannot uninstall Ampoliros', LOGGER_ERROR); } } else { import('com.solarix.ampoliros.io.log.Logger'); $log = new Logger(AMP_LOG); $log->LogEvent('ampoliros.modules_library.modules_class.uninstall', 'A module with serial ' . $this->serial . ' was not found in modules table', LOGGER_ERROR); } $modquery->Free(); } else { import('com.solarix.ampoliros.io.log.Logger'); $log = new Logger(AMP_LOG); $log->LogEvent('ampoliros.modules_library.modules_class.uninstall', 'Empty module serial', LOGGER_ERROR); } return $result; }