if ($doRecalculate) { // Reset peding recalc, if set if ($register->pendingrecalc) { attendanceregister_set_pending_recalc($register, false); } // Turn off time limit: recalculation can be slow set_time_limit(0); // Cleanup all online Sessions & Aggregates before recalculating [issue #14] attendanceregister_delete_all_users_online_sessions_and_aggregates($register); // Reload tracked Users list before Recalculating [issue #14] $newTrackedUsers = attendanceregister_get_tracked_users($register); // Iterate each user and recalculate Sessions foreach ($newTrackedUsers as $user) { // Recalculate Session for one User $progressbar = new progress_bar('recalcbar_' . $user->id, 500, true); attendanceregister_force_recalc_user_sessions($register, $user->id, $progressbar, false); // No delete needed, having done before [issue #14] } // Reload All Users Sessions $trackedUsers = new attendanceregister_tracked_users($register, $userCapabilities); } } // Notification & Continue button if ($doRecalculate || $doScheduleRecalc) { $notificationStr = get_string($doRecalculate ? 'recalc_complete' : 'recalc_scheduled', 'attendanceregister'); echo $OUTPUT->notification($notificationStr, 'notifysuccess'); } echo $OUTPUT->continue_button(attendanceregister_makeUrl($register, $userId)); $doShowContents = false; } else { if ($doShowContents && $doDeleteOfflineSession) {
/** * Force Recalculating all User's Sessions * Executes quietly (no Progress Bar) * (called after Restore and by Cron) * @param object $register */ function attendanceregister_force_recalc_all($register) { $users = attendanceregister_get_tracked_users($register); // Iterate each user and recalculate Sessions foreach ($users as $user) { attendanceregister_force_recalc_user_sessions($register, $user->id); } }