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