"); mtrace("Server Time: ".date('r',$timenow)."\n\n"); /// Run all cron jobs for each module mtrace("Starting activity modules"); if ($mods = get_records_select("modules", "cron > 0 AND (($timenow - lastcron) > cron)")) { foreach ($mods as $mod) { $libfile = "$CFG->dirroot/mod/$mod->name/lib.php"; if (file_exists($libfile)) { include_once($libfile); $cron_function = $mod->name."_cron"; if (function_exists($cron_function)) { mtrace("Processing module function $cron_function ...", ''); if ($cron_function()) { if (! set_field("modules", "lastcron", $timenow, "id", $mod->id)) { mtrace("Error: could not update timestamp for $mod->fullname"); } } mtrace("done."); } } } } mtrace("Finished activity modules"); /// Run all core cron jobs, but not every time since they aren't too important. /// These don't have a timer to reduce load, so we'll use a random number /// to randomly choose the percentage of times we should run these jobs. srand ((double) microtime() * 10000000); $random100 = rand(0,100); if ($random100 < 20) { // Approximately 20% of the time. mtrace("Running clean-up tasks..."); /// Unenrol users who haven't logged in for $CFG->longtimenosee if ($CFG->longtimenosee) { // value in days $longtime = $timenow - ($CFG->longtimenosee * 3600 * 24); if ($students = get_users_longtimenosee($longtime)) { foreach ($students as $student) { if (unenrol_student($student->userid, $student->course)) { mtrace("Deleted student enrolment for user $student->userid from course $student->course"); } } } } /// Delete users who haven't confirmed within required period $oneweek = $timenow - ($CFG->deleteunconfirmed * 3600); if ($users = get_users_unconfirmed($oneweek)) { foreach ($users as $user) { if (delete_records("user", "id", $user->id)) { mtrace("Deleted unconfirmed user for ".fullname($user, true)." ($user->id)"); } } } flush(); /// Delete duplicate enrolments (don't know what causes these yet - expired sessions?) if ($users = get_records_select("user_students", "userid > 0 GROUP BY course, userid ". "HAVING count(*) > 1", "", "*,count(*)")) { foreach ($users as $user) { delete_records_select("user_students", "userid = '$user->userid' ". "AND course = '$user->course' AND id <> '$user->id'"); } } flush(); /// Delete old logs to save space (this might need a timer to slow it down...) if (!empty($CFG->loglifetime)) { // value in days $loglifetime = $timenow - ($CFG->loglifetime * 3600 * 24); delete_records_select("log", "time < '$loglifetime'"); } flush(); /// Delete old cached texts if (!empty($CFG->cachetext)) { // Defined in config.php $cachelifetime = time() - $CFG->cachetext; delete_records_select("cache_text", "timemodified < '$cachelifetime'"); } flush(); if (!empty($CFG->notifyloginfailures)) { notify_login_failures(); } flush(); } // End of occasional clean-up tasks if (file_exists("$CFG->dataroot/cronextra.php")) { mtrace("Running extra commands in $CFG->dataroot/cronextra.php ..."); include("$CFG->dataroot/cronextra.php"); } if (!isset($CFG->disablescheduledbackups)) { // Defined in config.php //Execute backup's cron //Perhaps a long time and memory could help in large sites @set_time_limit(0); @ini_set("memory_limit","128M"); if (file_exists("$CFG->dirroot/backup/backup_scheduled.php") and file_exists("$CFG->dirroot/backup/backuplib.php") and file_exists("$CFG->dirroot/backup/lib.php") and file_exists("$CFG->libdir/blocklib.php")) { include_once("$CFG->dirroot/backup/backup_scheduled.php"); include_once("$CFG->dirroot/backup/backuplib.php"); include_once("$CFG->dirroot/backup/lib.php"); require_once ("$CFG->libdir/blocklib.php"); mtrace("Running backups if required..."); if (! schedule_backup_cron()) { mtrace("ERORR: Something went wrong while performing backup tasks!!!"); } else { mtrace("Backup tasks finished."); } } } if (!empty($CFG->enablerssfeeds)) { //Defined in admin/variables page if (file_exists("$CFG->dirroot/rss/rsslib.php")) { include_once("$CFG->dirroot/rss/rsslib.php"); mtrace("Running rssfeeds if required..."); if ( ! cron_rss_feeds()) { mtrace("Something went wrong while generating rssfeeds!!!"); } else { mtrace("Rssfeeds finished"); } } } /// Run the enrolment cron, if any require_once("$CFG->dirroot/enrol/$CFG->enrol/enrol.php"); $enrol = new enrolment_plugin(); $enrol->cron(); if (!empty($enrol->log)) { mtrace($enrol->log); } //Unset session variables and destroy it @session_unset(); @session_destroy(); mtrace("Cron script completed correctly"); $difftime = microtime_diff($starttime, microtime()); mtrace("Execution took ".$difftime." seconds"); ?>