"; error_reporting(E_ALL); ini_set('display_errors', true); $testing = false; $addon = !empty($_GET['addon']) ? $_GET['addon'] : ''; if( empty($addon) ) die('addon parameter required'); uninstall_addon($addon, !empty($testing) ); $paths = array( "app/addons/$addon", "js/addons/$addon", "design/backend/css/addons/$addon", "design/backend/mail/templates/addons/$addon", "design/backend/templates/addons/$addon", "design/backend/media/images/addons/$addon" ); $theme_paths = array( "css/addons/$addon", "mail/templates/addons/$addon", "templates/addons/$addon", "media/images/addons/$addon" ); printf("Removing Addon = %s\n", $addon); foreach(glob("design/themes/*", GLOB_ONLYDIR) as $theme ) { foreach($theme_paths as $k => $path) { $dir = sprintf("%s/%s", $theme, $path); recurse_unlink($dir, !empty($testing) ); } } foreach(glob("var/themes_repository/*", GLOB_ONLYDIR) as $repo) { $dir = sprintf("%s/%s", $theme, $path); recurse_unlink($dir, !empty($testing) ); } foreach($paths as $dir) { recurse_unlink($dir, !empty($testing) ); } recurse_unlink("var/cache", !empty($testing), empty($testing)); printf("\nDone\n"); function recurse_unlink($src, $test=false, $silent=false) { $dir = @opendir($src); if( !$dir ) { printf("No such dir '$src'\n"); return; // no such file; } while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($f = ($src . '/' . $file)) ) { recurse_unlink($f, $test, $silent ); } else { if( empty($test) ) { unlink($f); if( !$silent ) printf("unlink($f)\n"); } else printf("Would unlink($f)\n"); } } } if( empty($test) ) { rmdir($src); if( !$silent ) printf("rmdir($src)\n"); } else printf("Would rmdir($src)\n"); closedir($dir); } function uninstall_addon($addon, $test=false) { define('BOOTSTRAP', true); define('AREA', 'A'); define('AREA_NAME', 'admin'); include("config.local.php"); $link = mysqli_connect($config['db_host'], $config['db_user'], $config['db_password'], $config['db_name']); if(!$link) { printf("Unable to connect to %s\n", $config['db_name']); printf("\tError number = %d\n", mysqli_connect_errno()); printf("\Error message: %s\n", mysqli_connect_error()); die; } $result = true; if( !$test ) { $result = mysqli_query($link, "DELETE from cscart_addons WHERE addon='$addon'"); } else printf("Would DELETE '$addon' from cscart_addons\n"); if( $result === false ) { printf("Error message: %s\n", mysqli_error($link) ); die; } else printf("Uninstalled '$addon'\n"); mysqli_close($link); } ?>