Scripts: Update script to delete old courses

pull/3389/head
Yannick Warnier 5 years ago
parent b61f4e8bb3
commit a9859a1e23
  1. 71
      tests/scripts/delete_old_courses_even_not_empty.php

@ -1,7 +1,8 @@
<?php <?php
/** /**
* This script deletes all courses created and last visited before * This script synchronize the exercise score (track_e_exercises.exe_result)
* a specific date (to be edited below) * with the LP score result (lp_item_view.score).
* This script works only if 1 there's one attempt
*/ */
exit; exit;
@ -13,10 +14,10 @@ if (PHP_SAPI !== 'cli') {
} }
// The date before which the course must have been created to be considered // The date before which the course must have been created to be considered
$creation = '2018-12-14'; $creation = '2019-06-14';
// The last date at which the course must have been accessed to be considered. // 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. // If it was accessed *after* that date, it will NOT be considered for deletion.
$access = '2018-12-14'; $access = '2019-06-14';
$tableExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES); $tableExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
@ -24,10 +25,10 @@ $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT $sql = "SELECT
id, code, directory, creation_date, last_visit id, code, directory, creation_date, last_visit
FROM $tableCourse c FROM $tableCourse c
WHERE creation_date < '$creation' AND (last_visit < '$access' OR last_visit is NULL) ". WHERE creation_date < '$creation' AND (last_visit < '$access' OR last_visit IS NULL) ".
// Change this line to avoid deleting specifi courses // Set course codes and uncomment the next line to exclude these from deletion
// "AND c.code NOT IN ('CHAMILOTEACHER', 'CHAMILOADMIN') ". // " AND c.code NOT IN ('CHAMILOSESSIONS1ES','CHACOBU1ESPRE','CHAPA1ESPRE','CHAPA1FRX','CHACOBU1FRX','CHAPA1ESX','CHACOBU1ESX','DESIGNCHAMILO','EXELEARNING','CHAPA1ENX','CHACOBU1ENX') ".
"ORDER by code " ORDER by code
"; ";
echo $sql.PHP_EOL; echo $sql.PHP_EOL;
@ -41,32 +42,34 @@ if (!empty($items)) {
list($mysize, $mypath) = preg_split('/\t/', $size); list($mysize, $mypath) = preg_split('/\t/', $size);
$size = trim($mysize); $size = trim($mysize);
echo "[$count] Course ".$item['code'].'('.$item['id'].') created on '.$item['creation_date'].' and last used on '.$item['last_visit'].' uses '.$size.PHP_EOL; echo "[$count] Course ".$item['code'].'('.$item['id'].') created on '.$item['creation_date'].' and last used on '.$item['last_visit'].' uses '.$size.PHP_EOL;
CourseManager::delete_course($item['code']); //if (substr($size, 0, 4) == '160K' or substr($size, 0, 4) == '9,1M') {
// The normal procedure moves the course directory to archive, so CourseManager::delete_course($item['code']);
// delete it there as well // The normal procedure moves the course directory to archive, so
echo('rm -rf '.__DIR__.'/../../app/courses/'.$item['directory']).PHP_EOL; // delete it there as well
exec('rm -rf '.__DIR__.'/../../app/courses/'.$item['directory']); echo('rm -rf '.__DIR__.'/../../app/courses/'.$item['directory']).PHP_EOL;
echo('rm -rf '.__DIR__.'/../../app/cache/'.$item['directory'].'_*').PHP_EOL; exec('rm -rf '.__DIR__.'/../../app/courses/'.$item['directory']);
exec('rm -rf '.__DIR__.'/../../app/cache/'.$item['directory'].'_*'); echo('rm -rf '.__DIR__.'/../../app/cache/'.$item['directory'].'_*').PHP_EOL;
// The normal procedure also created a database dump, but it is exec('rm -rf '.__DIR__.'/../../app/cache/'.$item['directory'].'_*');
// stored in the course folder, so no issue there... // The normal procedure also created a database dump, but it is
$matches = []; // stored in the course folder, so no issue there...
preg_match('/^(\d+)(\D)$/', $size, $matches); $matches = [];
switch($matches[2]) { preg_match('/^(\d+)(\D)$/', $size, $matches);
case 'K': switch($matches[2]) {
$total += $matches[1]; case 'K':
break; $total += $matches[1];
case 'M': break;
$total += $matches[1]*1024; case 'M':
break; $total += $matches[1]*1024;
case 'G': break;
$total += $matches[1]*1024*1024; case 'G':
break; $total += $matches[1]*1024*1024;
} break;
$count ++; }
if ($count%100 == 0) { $count ++;
echo '### Until now: '.$total.'K in '.$count.' courses'.PHP_EOL; if ($count%100 == 0) {
} echo '### Until now: '.$total.'K in '.$count.' courses'.PHP_EOL;
}
//}
} }
} }
echo $total.'K in '.$count.' courses'.PHP_EOL; echo $total.'K in '.$count.' courses'.PHP_EOL;

Loading…
Cancel
Save