Add script to delete all courses depending on specific creation and access dates - Modified copy of delete_old_courses.php
parent
cf506fde26
commit
ddacf8061a
@ -0,0 +1,63 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* This script synchronize the exercise score (track_e_exercises.exe_result) |
||||||
|
* with the LP score result (lp_item_view.score). |
||||||
|
* This script works only if 1 there's one attempt |
||||||
|
*/ |
||||||
|
|
||||||
|
exit; |
||||||
|
|
||||||
|
require_once '../../main/inc/global.inc.php'; |
||||||
|
|
||||||
|
if (PHP_SAPI !== 'cli') { |
||||||
|
die('This script can only be executed from the command line'); |
||||||
|
} |
||||||
|
|
||||||
|
// The date before which the course must have been created to be considered |
||||||
|
$creation = '2013-01-01'; |
||||||
|
// The last date at which the course must have been accessed to be considered. |
||||||
|
// If it was accessed *after* that date, it will NOT be considered for deletion. |
||||||
|
$access = '2013-01-01'; |
||||||
|
|
||||||
|
$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; |
||||||
|
//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, 3, 1) == 'K') { |
||||||
|
$total += substr($size, 0, 3); |
||||||
|
} |
||||||
|
if (substr($size, 3, 1) == 'M') { |
||||||
|
//$total += ; |
||||||
|
$total += substr($size, 0, 3)*1024; |
||||||
|
} |
||||||
|
$count ++; |
||||||
|
if ($count%100 == 0) { |
||||||
|
echo '### Until now: '.$total.'K in '.$count.' courses'.PHP_EOL; |
||||||
|
} |
||||||
|
//} |
||||||
|
} |
||||||
|
} |
||||||
|
echo $total.'K in '.$count.' courses'.PHP_EOL; |
Loading…
Reference in new issue