* @author Julio Montoya Bug fixing, sql improvements * * @package chamilo.attendance */ require_once __DIR__.'/../inc/global.inc.php'; require_once 'attendance_controller.php'; require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/fe/exportgradebook.php'; $current_course_tool = TOOL_ATTENDANCE; // current section $this_section = SECTION_COURSES; // protect a course script api_protect_course_script(true); // Get actions $actions = [ 'attendance_list', 'attendance_sheet_list', 'attendance_sheet_add', 'attendance_add', 'attendance_edit', 'attendance_delete', 'attendance_delete_select', 'attendance_set_invisible', 'attendance_set_invisible_select', 'attendance_set_visible', 'attendance_set_visible_select', 'attendance_restore', 'attendance_sheet_export_to_pdf', 'attendance_sheet_list_no_edit', 'calendar_logins', ]; $actions_calendar = [ 'calendar_list', 'calendar_add', 'calendar_edit', 'calendar_delete', 'calendar_all_delete', ]; $action = 'attendance_list'; $course_id = ''; if (isset($_GET['cidReq'])) { $course_id = $_GET['cidReq']; } if (isset($_GET['action']) && (in_array($_GET['action'], $actions) || in_array($_GET['action'], $actions_calendar)) ) { $action = $_GET['action']; } if (isset($_GET['isStudentView']) && $_GET['isStudentView'] == 'true') { $action = 'attendance_list'; } // get attendance id $attendance_id = 0; if (isset($_GET['attendance_id'])) { $attendance_id = intval($_GET['attendance_id']); } // get calendar id $calendar_id = ''; if (isset($_GET['calendar_id'])) { $calendar_id = intval($_GET['calendar_id']); } // instance attendance object for using like library here $attendance = new Attendance(); // attendance controller object $attendanceController = new AttendanceController(); $attendance_data = []; // get attendance data if (!empty($attendance_id)) { // attendance data by id $attendance_data = $attendance->get_attendance_by_id($attendance_id); } $htmlHeadXtra[] = ''; $student_param = ''; $student_id = null; if (api_is_drh() && isset($_GET['student_id'])) { $student_id = intval($_GET['student_id']); $student_param = '&student_id='.$student_id; $student_info = api_get_user_info($student_id); $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$student_id, 'name' => $student_info['complete_name'], ]; } if (api_is_in_gradebook()) { $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'gradebook/index.php?'.api_get_cidreq(), 'name' => get_lang('Assessments'), ]; } $interbreadcrumb[] = [ 'url' => 'index.php?'.api_get_cidreq().'&action=attendance_list&'.$student_param, 'name' => get_lang('Attendances'), ]; if ($action == 'attendance_add') { $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Create a new attendance list')]; } if ($action == 'attendance_edit') { $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Edit')]; } if ($action == 'attendance_sheet_list' || $action == 'attendance_sheet_add') { $interbreadcrumb[] = ['url' => '#', 'name' => $attendance_data['name']]; } if ($action == 'calendar_list' || $action == 'calendar_edit' || $action == 'calendar_delete' || $action == 'calendar_all_delete' ) { $interbreadcrumb[] = [ 'url' => 'index.php?'.api_get_cidreq().'&action=attendance_sheet_list&attendance_id='.$attendance_id, 'name' => $attendance_data['name'], ]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Attendance calendar')]; } if ($action == 'calendar_add') { $interbreadcrumb[] = [ 'url' => 'index.php?'.api_get_cidreq().'&action=attendance_sheet_list&attendance_id='.$attendance_id, 'name' => $attendance_data['name'], ]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Add a date and time')]; } $allowToEdit = api_is_allowed_to_edit(null, true); // Delete selected attendance if (isset($_POST['action']) && $_POST['action'] == 'attendance_delete_select' && $allowToEdit) { $attendanceController->attendance_delete($_POST['id']); } if (isset($_POST['action']) && $_POST['action'] == 'attendance_set_invisible_select' && $allowToEdit) { $attendanceController->attendanceSetInvisible($_POST['id']); } if (isset($_POST['action']) && $_POST['action'] == 'attendance_set_visible_select' && $allowToEdit) { $attendanceController->attendanceSetVisible($_POST['id']); } switch ($action) { case 'attendance_list': $attendanceController->attendance_list(); break; case 'attendance_add': if ($allowToEdit) { $attendanceController->attendance_add(); } else { api_not_allowed(true); } break; case 'attendance_edit': if ($allowToEdit) { $attendanceController->attendance_edit($attendance_id); } else { api_not_allowed(true); } break; case 'attendance_delete': if ($allowToEdit) { $attendanceController->attendance_delete($attendance_id); Display::addFlash(Display::return_message(get_lang('Deleted'))); } else { api_not_allowed(true); } break; case 'attendance_set_invisible': if ($allowToEdit) { $attendanceController->attendanceSetInvisible($attendance_id); } else { api_not_allowed(true); } break; case 'attendance_set_visible': if ($allowToEdit) { $attendanceController->attendanceSetVisible($attendance_id); } else { api_not_allowed(true); } break; /*case 'attendance_restore': if ($allowToEdit) { $attendanceController->attendance_restore($attendance_id); } else { api_not_allowed(true); } break;*/ case 'attendance_sheet_list': $attendanceController->attendance_sheet( $action, $attendance_id, $student_id, true ); break; case 'attendance_sheet_list_no_edit': $attendanceController->attendance_sheet( $action, $attendance_id, $student_id, false ); break; case 'attendance_sheet_export_to_pdf': $attendanceController->attendance_sheet_export_to_pdf( $action, $attendance_id, $student_id, $course_id ); break; case 'attendance_sheet_add': if ($allowToEdit) { $attendanceController->attendance_sheet($action, $attendance_id); } else { api_not_allowed(true); } break; case 'lock_attendance': case 'unlock_attendance': if ($allowToEdit) { $attendanceController->lock_attendance($action, $attendance_id); } else { api_not_allowed(true); } break; case 'calendar_add': case 'calendar_edit': case 'calendar_all_delete': case 'calendar_delete': if (!$allowToEdit) { api_not_allowed(true); } //no break case 'calendar_list': $attendanceController->attendance_calendar( $action, $attendance_id, $calendar_id ); break; case 'calendar_logins': if (api_is_course_admin() || api_is_drh()) { $attendanceController->getAttendanceBaseInLogin(false, true); } break; default: $attendanceController->attendance_list(); }