/** * It's used for controlling attendace sheet (list, add), * render to attendance_sheet view * @param string action * @param int attendance id */ public function attendance_sheet($action, $attendance_id, $user_id = 0, $edit = true) { $attendance = new Attendance(); $data = array(); $data['attendance_id'] = $attendance_id; $data['attendance_obj'] = $attendance; $data['attendance_states'] = $attendance->get_attendance_states(); $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id); $filter_type = 'today'; if (!empty($user_id)) { $user_id = intval($user_id); } else { $user_id = api_get_user_id(); } if (!empty($_REQUEST['filter'])) { $filter_type = $_REQUEST['filter']; } if ($edit == true) { if (api_is_allowed_to_edit(null, true)) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); } } else { if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_int_id())) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); } else { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, $user_id); } $data['faults'] = $attendance->get_faults_of_user($user_id, $attendance_id); $data['user_id'] = $user_id; } $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { if (isset($_POST['hidden_input'])) { $columns_to_update = $_POST['hidden_input']; $columns_to_update = array_unique(array_filter($columns_to_update)); foreach ($columns_to_update as $cal_id) { $users_result = array(); if (isset($_POST['check_presence'][$cal_id])) { $users_result = $_POST['check_presence'][$cal_id]; } $user_final_results = array(); if (!empty($users_result)) { foreach ($users_result as $result) { //Example: state_1_link_2_12_3 ==> state_[stateid]_YY_[userid]_calid $user_status = explode('_', $result); if (isset($user_status[0]) && $user_status[0] == 'state' && isset($user_status[4]) && isset($user_status[1])) { $user_final_results[$user_status[4]] = $user_status[1]; } } } if (!empty($user_final_results)) { $attendance->attendance_sheet_add($cal_id, $user_final_results, $attendance_id, false, true); } } } $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id); $my_calendar_id = null; if (is_numeric($filter_type)) { $my_calendar_id = $filter_type; $filter_type = 'calendar_id'; } $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type, $my_calendar_id); $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id); $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); } else { $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id); $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type); } $data['edit_table'] = intval($edit); $data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id); $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('attendance_sheet'); $this->view->render(); }
/** * It's used for controlling attendance sheet (list, add), * render to attendance_sheet view * @param string $action * @param int $attendance_id * @param int $student_id * @param bool $edit */ public function attendance_sheet($action, $attendance_id, $student_id = 0, $edit = true) { $attendance = new Attendance(); $data = array(); $data['attendance_id'] = $attendance_id; $groupId = isset($_REQUEST['group_id']) ? $_REQUEST['group_id'] : null; $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id, $groupId); $filter_type = 'today'; if (!empty($_REQUEST['filter'])) { $filter_type = $_REQUEST['filter']; } $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(api_get_user_id(), api_get_course_info()); if ($edit == true) { if (api_is_allowed_to_edit(null, true) || $isDrhOfCourse) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, 0, $groupId); } } else { if (!empty($student_id)) { $user_id = intval($student_id); } else { $user_id = api_get_user_id(); } if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_int_id()) || $isDrhOfCourse) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, 0, $groupId); } else { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, $user_id, $groupId); } $data['faults'] = $attendance->get_faults_of_user($user_id, $attendance_id, $groupId); $data['user_id'] = $user_id; } $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { if (isset($_POST['hidden_input'])) { foreach ($_POST['hidden_input'] as $cal_id) { $users_present = array(); if (isset($_POST['check_presence'][$cal_id])) { $users_present = $_POST['check_presence'][$cal_id]; } $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id); } } $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id, $groupId); $my_calendar_id = null; if (is_numeric($filter_type)) { $my_calendar_id = $filter_type; $filter_type = 'calendar_id'; } $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type, $my_calendar_id, $groupId); $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id, 'all', null, $groupId); $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, 0, $groupId); $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); } else { $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id, 'all', null, $groupId); $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type, null, $groupId); } $data['edit_table'] = intval($edit); $data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id); $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('attendance_sheet'); $this->view->render(); }