123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- /* For licensing terms, see /license.txt */
- /**
- * This script wipes out your Chamilo installation completely: databases,
- * courses directories, configuration files and all other temp directories.
- * It only works when launched from the command line and requires Chamilo to
- * be installed (otherwise it will not find the references as to the paths and
- * databases to delete). It only wipes out stuff and directories it knows are
- * created by Chamilo though, so don't worry about your own files if you didn't
- * store them in variable Chamilo directories.
- * Requires Chamilo LMS 1.9 or greater
- * @chamilo.tests.scripts
- */
- /**
- * Security checks
- */
- if (PHP_SAPI != 'cli') {
- echo "For security reasons, this script can only be launched from the command line, sorry.";
- exit;
- }
- if (!isset($argv[1]) || $argv[1] != '--i-am-sure') {
- echo " This script will completely erase all Chamilo installations based on this\n",
- " directory. There will be no way to recover it. If you really are sure you\n",
- " want to do this, please launch this script again using the\n --i-am-sure\n",
- " parameter. You've been warned. Don't come complaining!\n";
- exit;
- }
- if (!file_exists(__DIR__.'/../main/inc/global.inc.php')) {
- echo " This script needs to be run from the tests/ directory inside a Chamilo\n", " installation. Please make sure main/inc/global.inc.php exists, then run this\n", " script again.\n";
- exit;
- }
- if (!is_file(__DIR__.'/../main/inc/conf/configuration.php')) {
- echo " This script will only work on an already installed version of Chamilo. The \n", "main/inc/conf/configuration.php file could not be found, which is understood\n", "as Chamilo not being installed.\n";
- exit;
- }
- /**
- * Preparing vars
- */
- ini_set('track_errors',1);
- $_SERVER['SERVER_NAME'] = '';
- $_SERVER['HTTP_HOST'] = 'localhost';
- $root = __DIR__.'/../';
- require $root.'main/inc/global.inc.php';
- $global_db = Database::get_main_database();
- $webpath = api_get_path(WEB_PATH);
- $homepath = api_get_path(SYS_APP_PATH).'home';
- $clean_dirs = array(
- api_get_path(SYS_COURSE_PATH), //courses
- api_get_path(SYS_APP_PATH).'config/',
- api_get_path(SYS_UPLOAD_PATH).'users/',
- api_get_path(SYS_ARCHIVE_PATH)
- );
- // With all this, we will still be missing custom languages and CSS dirs
- /**
- * Running the cleanup
- */
- echo "Assuming ".api_get_path(SYS_PATH)." as Chamilo directory\n";
- foreach ($clean_dirs as $dir) {
- $list = scandir($dir);
- echo "Cleaning $dir\n";
- foreach ($list as $entry) {
- if (substr($entry,0,1) == '.' or
- strcmp($entry,'htaccess')===0 or
- strcmp($entry,'index.html')===0 or
- substr($entry,-9,9)=='.dist.php'
- ) {
- //skip files that are part of the Chamilo installation
- } else {
- if ($dir == $homepath and
- ((is_dir($homepath.$entry) and $entry == 'default_platform_document')
- or (!is_dir($homepath.$entry) and substr($entry,-5)=='.html') and strlen($entry)<=17)
- ) {
- //skip
- } else {
- if (is_dir($dir.$entry)) {
- //echo "Removing ".$dir.$entry."\n";
- rmdirr($dir.$entry);
- } else {
- //echo "Removing ".$dir.$entry."\n";
- unlink($dir.$entry);
- }
- }
- }
- }
- }
- echo "Dropping database ".$global_db."\n";
- $sql = "DROP DATABASE $global_db";
- $res = Database::query($sql);
- if ($res === false) {
- echo "Failed dropping database. Please check manually.\n";
- } else {
- echo "All clean!\n";
- echo "Load $webpath to run install again.\n";
- }
|