/** * Uninstall an addon. * * @param string Name of the addon */ function uninstall_addon($name) { $addon_row = read_addon_info($name); require_code('zones2'); require_code('zones3'); require_code('abstract_file_manager'); // Clear some cacheing require_code('view_modes'); require_code('zones2'); require_code('zones3'); erase_comcode_page_cache(); erase_tempcode_cache(); persistant_cache_empty(); erase_cached_templates(); erase_cached_language(); global $HOOKS_CACHE; $HOOKS_CACHE = array(); // Remove addon info from database, modules, blocks, and files $last = array(); foreach ($addon_row['addon_files'] as $filename) { if (@file_exists(get_file_base() . '/' . $filename)) { $test = $GLOBALS['SITE_DB']->query_value('addons_files', 'COUNT(*)', array('filename' => $filename)); if ($test <= 1) { if (substr($filename, 0, 37) == 'sources/hooks/systems/addon_registry/') { $last[] = $filename; continue; } $matches = array(); if (preg_match('#([^/]*)/?pages/modules(_custom)?/(.*)\\.php#', $filename, $matches) != 0) { uninstall_module($matches[1], $matches[3]); } if (preg_match('#sources(_custom)?/blocks/(.*)\\.php#', $filename, $matches) != 0) { uninstall_block($matches[2]); } if (preg_match('#^([^/]*)/index.php#', $filename, $matches) != 0) { actual_delete_zone_lite($matches[1]); } if ($filename != 'mod.inf' && $filename != 'mod.php' && $filename != '' && substr($filename, -1) != '/') { $last[] = $filename; } } } } foreach ($last as $filename) { afm_delete_file($filename); } $GLOBALS['SITE_DB']->query_delete('addons_files', array('addon_name' => $addon_row['addon_name'])); $GLOBALS['SITE_DB']->query_delete('addons_dependencies', array('addon_name' => $addon_row['addon_name'])); $GLOBALS['SITE_DB']->query_delete('addons', array('addon_name' => $addon_row['addon_name']), '', 1); global $ADDON_INSTALLED_CACHE; unset($ADDON_INSTALLED_CACHE[$addon_row['addon_name']]); if (function_exists('persistent_cache_set')) { persistent_cache_set('ADDONS_INSTALLED', $ADDON_INSTALLED_CACHE, true); } log_it('UNINSTALL_ADDON', $addon_row['addon_name']); }
/** * The actualiser to uninstall a module. * * @return tempcode The UI */ function uninstall_module() { $module = post_param('module'); $zone = post_param('zone'); require_code('zones2'); if ($zone != '_block') { uninstall_module($zone, $module); } else { uninstall_block($module); } $title = get_page_title('UNINSTALL_MODULE'); // Show it worked / Refresh $url = build_url(array('page' => '_SELF', 'type' => 'view', 'id' => $zone), '_SELF'); return redirect_screen($title, $url, do_lang_tempcode('SUCCESS')); }