/home/techb158/workloadmatch.com/Manager
NameSizeModeActions
core/-0755rm
css/-0755rm
data/-0755rm
fonts/-0755rm
Inc/-0755rm
js/-0755rm
php/-0755rm
addcourse.php180030644editdlrm
addcoursesession.php144240644editdlrm
addcoursesession_bak.php.disabled208600644editdlrm
addcoursetime.php175640644editdlrm
addgroup.php234650644editdlrm
addgroup1.php204630644editdlrm
addholiday.php182830644editdlrm
addmanager.php190600644editdlrm
addremediation.php181400644editdlrm
addretake.php222840644editdlrm
adduser.php304850644editdlrm
adduser1.php231660644editdlrm
Add_Course_Session.php69310644editdlrm
Add_Course_Session_bak.php.disabled69310644editdlrm
add_event.php20040644editdlrm
Add_Teacher_Unavailability.php17240644editdlrm
AI_Generate_Schedule.php110310644editdlrm
ai_schedule.php199750644editdlrm
ajax_fetch_schedule.php38560644editdlrm
ajax_get_group_slots.php8970644editdlrm
ajax_replace_saturday.php316740644editdlrm
ajax_replace_saturday_backup_latest.php314740644editdlrm
ajax_replace_saturday_bak.php.disabled318120644editdlrm
ajax_swap_courses.php43940644editdlrm
approve_teacher_absence.php22300644editdlrm
approve_teacher_unavailability.php22740644editdlrm
assign_course_group.php181150644editdlrm
assign_course_group1.php207520644editdlrm
Assign_Course_Report.php23180644editdlrm
assign_teacher_legacy.php164900644editdlrm
assign_teacher_manual.php175510644editdlrm
assign_teacher_manual_bak.php.disabled227180644editdlrm
assign_teacher_manual_force_conflicts.php227490644editdlrm
availableteacherreport.php125950644editdlrm
Available_Teacher_Report.php35540644editdlrm
batch_schedule.php95820644editdlrm
calendar.php315020644editdlrm
calendar_schedule.php80860644editdlrm
chat.php164370644editdlrm
chat_bak.php.disabled102650644editdlrm
Check_if_Teacher_Report.php16390644editdlrm
complete_schedule_report_by_teacher.php197990644editdlrm
courseflagtime.php35180644editdlrm
Create_Group_Schedule_Algorithm.php39390644editdlrm
Create_Schedule_Algorithm.php906290644editdlrm
Create_Schedule_Algorithm_1.php424300644editdlrm
Create_Schedule_Algorithm_2.php785320644editdlrm
Create_Schedule_Algorithm_2_combined.php921570644editdlrm
Create_Schedule_Algorithm_2_combined_both_slots.php945460644editdlrm
Create_Schedule_Algorithm_2_combined_both_slots_bak.php.disabled946110644editdlrm
Create_Schedule_Algorithm_2_fixed.php788690644editdlrm
Create_Schedule_Algorithm_3.php895940644editdlrm
Create_Schedule_Algorithm_4.php895940644editdlrm
dashboard.php211030644editdlrm
deletecoursesession.php85910644editdlrm
deleteschedulefromgroup.php174240644editdlrm
delete_course.php6070644editdlrm
delete_course_from_teacher.php51260644editdlrm
delete_course_session_handler.php7910644editdlrm
delete_duplicate_assignments.php25370644editdlrm
delete_event.php12550644editdlrm
delete_group.php19130644editdlrm
delete_holiday.php7430644editdlrm
delete_retake.php13240644editdlrm
delete_schedule_from_group.php19400644editdlrm
delete_teacher_absence.php10150644editdlrm
delete_teacher_level.php8280644editdlrm
delete_teacher_unavailability.php13500644editdlrm
delete_timeslot.php6260644editdlrm
display_schedule.php186620644editdlrm
do_remove_saturday.php64020644editdlrm
duplicate_assignment_report.php94230644editdlrm
edit_event.php16630644editdlrm
examschedulereport.php165100644editdlrm
Exam_Schedule_Report.php27620644editdlrm
export_absences.php12580644editdlrm
fetch_all_scheduled_courses.php63250644editdlrm
fetch_courses.php93730644editdlrm
fetch_courses_for_program.php8150644editdlrm
fetch_courses_for_program_by_schedule.php40470644editdlrm
fetch_courses_teacher_preference.php39540644editdlrm
fetch_course_for_added_group.php10460644editdlrm
fetch_course_hours.php7140644editdlrm
fetch_course_sessions.php14050644editdlrm
fetch_dashboard_charts.php42820644editdlrm
fetch_disabled_dates.php5430644editdlrm
fetch_duplicate_assignments.php49020644editdlrm
fetch_events.php10140644editdlrm
fetch_exist_dates.php11410644editdlrm
fetch_groups_exist_in_schedule.php9590644editdlrm
fetch_groups_for_program.php8710644editdlrm
fetch_groups_for_program_legacy.php7750644editdlrm
fetch_group_timeslot.php8780644editdlrm
fetch_lockup_courses-1-1.php140860644editdlrm
fetch_lockup_courses.php145870644editdlrm
fetch_lockup_courses_1.php136380644editdlrm
fetch_lockup_courses_2.php138500644editdlrm
fetch_lockup_courses_bak.php88990644editdlrm
fetch_reserve_courses.php75670644editdlrm
fetch_retake_courses.php9570644editdlrm
fetch_scheduled_courses.php22540644editdlrm
fetch_schedule_report_by_group.php55540644editdlrm
fetch_teachers_by_group.php48880644editdlrm
fetch_teachers_by_group_legacy.php24210644editdlrm
fetch_teachers_by_program.php18710644editdlrm
fetch_teachers_for_group.php32650644editdlrm
fetch_teacher_assignment.php254050644editdlrm
fetch_teacher_by_course.php39820644editdlrm
fetch_teacher_conflicts-1-1.php57930644editdlrm
fetch_teacher_conflicts.php57660644editdlrm
fetch_teacher_conflicts_only-1-1.php82750644editdlrm
fetch_teacher_conflicts_only-1.php87370644editdlrm
fetch_teacher_conflicts_only.php77250644editdlrm
fetch_teacher_conflicts_only_force_conflicts.php72870644editdlrm
fetch_teacher_conflicts_only_legacy.php67020644editdlrm
fetch_teacher_conflicts_showonly-1-1.php106560644editdlrm
fetch_teacher_conflicts_showonly.php105310644editdlrm
fetch_teacher_load.php16330644editdlrm
fetch_teacher_load_legacy.php11440644editdlrm
fetch_teacher_prefrence_courses.php18480644editdlrm
fetch_teacher_prefrence_courses_accounting.php16470644editdlrm
fetch_workload_data.php45200644editdlrm
fetch_workload_hours-1.php22910644editdlrm
fetch_workload_hours-2.php21470644editdlrm
fetch_workload_hours.php23410644editdlrm
find_replacement-1-1.php186030644editdlrm
find_replacement.php183130644editdlrm
Generate Group Schedule.php173300644editdlrm
Generate Group Schedule 1.php184900644editdlrm
generateschedule.php159460644editdlrm
Generate_Schedule.php347430644editdlrm
generate_schedule_handler.php73750644editdlrm
Generate_Schedule_Script.php307290644editdlrm
getlang.php3510644editdlrm
get_groups_by_program.php6290644editdlrm
get_schedule_ai.php377120644editdlrm
get_schedule_report.php24710644editdlrm
group_schedule_form.php173370644editdlrm
Lockup_to_Assign.php120520644editdlrm
Lockup_to_Assign_bak.php113010644editdlrm
main-header-inc.php77940644editdlrm
main-header.php196560644editdlrm
Preference_Accounting.php98100644editdlrm
preference_accounting.php96030644editdlrm
preference_secretarial.php98100644editdlrm
profile.php209760644editdlrm
remove_saturday_course.php193130644editdlrm
report_absence.php210560644editdlrm
report_absence_1.php63850644editdlrm
reserve_course.php192850644editdlrm
rewrite_ajax_replace_saturday.php131890644editdlrm
rewrite_Create_Schedule_Algorithm.php906720644editdlrm
rewrite_Create_Schedule_Algorithm_2.php912680644editdlrm
save_schedule.php31020644editdlrm
save_schedule_group_course.php263010644editdlrm
save_teacher_preference.php22160644editdlrm
schedulereportbygroup.php180130644editdlrm
schedulereportbyteacher.php194240644editdlrm
scheduleteacherbygroupreport.php374180644editdlrm
scheduleteacherreport.php287880644editdlrm
schedule_report.php179440644editdlrm
Schedule_Report_by_Group.php37410644editdlrm
Schedule_Report_by_Teacher.php946340644editdlrm
swapcourses.php198130644editdlrm
teacher_notes.php189360644editdlrm
teacher_preference.php184960644editdlrm
teacher_preference_by_course.php195870644editdlrm
teacher_report_visibility.php157610644editdlrm
teacher_unavailability.php205770644editdlrm
test.php142780644editdlrm
test1.php224250644editdlrm
unassigncoursereport.php150750644editdlrm
unassign_course.php193240644editdlrm
Unassign_Course_Report.php20580644editdlrm
unscheduledgroupreport.php163960644editdlrm
Unscheduled_Group_Report.php24110644editdlrm
updatecourse.php224540644editdlrm
updatecoursesessionhours.php189050644editdlrm
updatecoursetime.php226700644editdlrm
updategroup.php186190644editdlrm
updateholiday.php233320644editdlrm
updateteacherlevel.php254330644editdlrm
updateteacherunavailability.php118330644editdlrm
UpdateUser.php192610644editdlrm
Update_Course_Hours.php20270644editdlrm
update_reserve_course.php20040644editdlrm
update_teacher_absence.php121350644editdlrm
update_teacher_level25080644editdlrm
update_teacher_level.php24990644editdlrm
useraccesslist.php131450644editdlrm
users.php91710644editdlrm
view_swap_log.php9290644editdlrm
workloadhoursreport.php81820644editdlrm
Edit: /home/techb158/workloadmatch.com/Manager/do_remove_saturday.php (6402B)
prepare(" SELECT class_days, Weekend_Class FROM manager_group_name WHERE Group_ID = ? "); $stmt->bind_param("i", $Group_ID); $stmt->execute(); return $stmt->get_result()->fetch_assoc() ?: []; } /** * Build list of holidays in that calendar year */ function get_holidays($mysqli, $Start_Date) { $holidays = []; $sql = " SELECT Event_Start, Event_End FROM Events WHERE Calendar_Year = YEAR(?) "; $stmt = $mysqli->prepare($sql); $stmt->bind_param('s', $Start_Date); $stmt->execute(); $res = $stmt->get_result(); while ($r = $res->fetch_assoc()) { $cur = new DateTime($r['Event_Start']); $end = new DateTime($r['Event_End']); while ($cur <= $end) { $holidays[$cur->format('Y-m-d')] = true; $cur->modify('+1 day'); } } return $holidays; } /** * Build list of retake dates */ function get_retake_dates($mysqli, $Program_ID, $Group_ID) { $rd = []; $stmt = $mysqli->prepare(" SELECT Retake_Date FROM retake_records WHERE Program_ID = ? AND Group_ID = ? "); $stmt->bind_param("ii", $Program_ID, $Group_ID); $stmt->execute(); foreach ($stmt->get_result() as $row) { $rd[$row['Retake_Date']] = true; } return $rd; } /** * Generate next ~400 valid days after $start * (skip July, holidays, retakes, non-class days) */ function generate_valid_dates($start, $classDays, $holidays, $retakes) { $out = []; $cur = new DateTime($start); for ($i = 0; $i < 400; $i++, $cur->modify('+1 day')) { $d = $cur->format('Y-m-d'); $dayName = $cur->format('l'); $month = (int)$cur->format('m'); if ($month === 7) continue; if (!in_array($dayName, $classDays)) continue; if (isset($holidays[$d]) || isset($retakes[$d])) continue; $out[] = $d; } return $out; } // 1) Validate if (empty($_POST['Schedule_ID'])) { http_response_code(400); echo json_encode(['error'=>'Missing Schedule_ID']); exit; } $scheduleID = (int)$_POST['Schedule_ID']; // 2) Fetch the session to delete (reserve flag too) $stmt = $mysqli->prepare(" SELECT Program_ID, Group_ID, Course_ID, Group_Slot_ID, Reserve_Course, Time_Slot, Start_Date, Start_Time, End_Time FROM schedule_course_for_group WHERE Schedule_ID = ? "); $stmt->bind_param('i', $scheduleID); $stmt->execute(); $stmt->bind_result( $programID, $groupID, $courseID, $groupSlotID, $reserveFlag, $timeSlot, $remDate, $remStart, $remEnd ); if (!$stmt->fetch()) { http_response_code(404); echo json_encode(['error'=>'Session not found']); exit; } $stmt->close(); // 3) Delete that session $del = $mysqli->prepare(" DELETE FROM schedule_course_for_group WHERE Schedule_ID = ? "); $del->bind_param('i', $scheduleID); $del->execute(); $del->close(); // 4) Gather class_days, holidays, retakes $grp = get_group_info($mysqli, $groupID); $classDays = array_map('trim', explode(',', $grp['class_days'])); if (empty((bool)$grp['Weekend_Class'])) { // no Saturdays at all $classDays = array_filter($classDays, fn($d) => $d !== 'Saturday'); } $holidays = get_holidays($mysqli, $remDate); $retakes = get_retake_dates($mysqli, $programID, $groupID); // 5) Generate all valid dates after the removed one $allValid = generate_valid_dates($remDate, $classDays, $holidays, $retakes); array_shift($allValid); // drop the very first (the one we just deleted) // 6) Shift all future sessions forward one slot $shiftStmt = $mysqli->prepare(" SELECT Schedule_ID FROM schedule_course_for_group WHERE Program_ID = ? AND Group_ID = ? AND Start_Date > ? ORDER BY Start_Date, Start_Time "); $shiftStmt->bind_param('iis', $programID, $groupID, $remDate); $shiftStmt->execute(); $shiftStmt->bind_result($sid); $toShift = []; while ($shiftStmt->fetch()) { $toShift[] = $sid; } $shiftStmt->close(); $upd = $mysqli->prepare(" UPDATE schedule_course_for_group SET Start_Date = ?, End_Date = ? WHERE Schedule_ID = ? "); foreach ($toShift as $i => $sid) { if (!isset($allValid[$i])) break; $newD = $allValid[$i]; $upd->bind_param('ssi', $newD, $newD, $sid); $upd->execute(); } $upd->close(); // 7) Re-append one session for the deleted course at the end // 7) Re-append one session for the deleted course at the end $inserted = 0; $newScheduleID = null; $newDate = null; if (!empty($allValid)) { $idx = count($toShift); // if that exact slot exists, use it; otherwise fall back to the last valid date $newDate = $allValid[$idx] ?? end($allValid); // lookup Course_Name $nm = $mysqli->prepare("SELECT Course_Name FROM Courses WHERE Course_ID = ?"); $nm->bind_param('i', $courseID); $nm->execute(); $nm->bind_result($courseName); $nm->fetch(); $nm->close(); // re-insert $ins = $mysqli->prepare(" INSERT INTO schedule_course_for_group (Program_ID,Course_ID,Group_ID,Group_Slot_ID,Course_Name, Reserve_Course,Time_Slot,Start_Date,End_Date, Start_Time,End_Time,Assigned,Last_Updated) VALUES (?,?,?,?,?, ?,?,?,?, ?,?, 0, NOW()) "); $ins->bind_param( 'iiiisissssss', $programID, $courseID, $groupID, $groupSlotID, $courseName, $reserveFlag, $timeSlot, $newDate, $newDate, $remStart, $remEnd ); if ($ins->execute()) { $inserted = 1; $newScheduleID = $ins->insert_id; } $ins->close(); } // 8) Return JSON echo json_encode([ 'deleted' => true, 'shifted' => count($toShift), 'added' => $inserted, 'new_schedule_id' => $newScheduleID, 'new_date' => $newDate ]);