<?php /** * This deletes courses that were created but no file was ever uploaded, and * that were created previous to a specific date and last used previous to * another specific date (see $creation and $access) * Use this script with caution, as it will completely remove any trace of the * deleted courses. * Please note that this is not written with the inclusion of the concept ot * sessions. As such, it might delete courses but leave the course reference * in the session, which would cause issues. * Launch from the command line. * Usage: php delete_old_courses.php */ exit; $creation = '2014-01-01'; $access = '2014-07-01'; require_once '../../main/inc/global.inc.php'; if (PHP_SAPI !== 'cli') { die('This script can only be executed from the command line'); } $tableExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES); $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); $sql = "SELECT id, code, directory, db_name, creation_date, last_visit FROM $tableCourse c WHERE creation_date < '$creation' AND last_visit < '$access' ORDER by code "; echo $sql.PHP_EOL; $result = Database::query($sql); $items = Database::store_result($result, 'ASSOC'); $total = 0; $count = 0; if (!empty($items)) { foreach ($items as $item) { $size = exec('du -sh '.__DIR__.'/../../courses/'.$item['directory']); echo "Course ".$item['code'].'('.$item['id'].') created on '.$item['creation_date'].' and last used on '.$item['last_visit'].' uses '.substr($size, 0, 8).PHP_EOL; // Check if it's 160K or 9.1M in size, which is the case for 'empty' // courses (created without or with example content) if (substr($size, 0, 4) == '160K' or substr($size, 0, 4) == '9,1M') { CourseManager::delete_course($item['code']); // The normal procedure moves the course directory to archive, so // delete it there as well echo('rm -rf '.__DIR__.'/../../archive/'.$item['directory'].'_*').PHP_EOL; exec('rm -rf '.__DIR__.'/../../archive/'.$item['directory'].'_*'); // The normal procedure also created a database dump, but it is // stored in the course folder, so no issue there... if (substr($size, 0, 4) == '160K') { $total += 160; } if (substr($size, 0, 4) == '9,1M') { $total += 9100; } $count ++; if ($count%100 == 0) { // Print progressive information about the freed space echo '### Until now: '.$total.'K in '.$count.' courses'.PHP_EOL; } } } } // Print final information about the freed space echo $total.'K in '.$count.' courses'.PHP_EOL;