static function create_attendance($data) { //error_log('create_attendance'); $session_id = $data['session_id']; $user_id = $data['user_id']; $time = self::get_horario_value($session_id); $fecha = $data['fecha'] . " {$time}:00"; if (!empty($session_id) && !empty($user_id)) { $attendance = new Attendance(); $course_list = false; global $data_list; if (is_array($data_list) && isset($data_list) && $data_list['boost_sessions']) { $course_list = array(0 => array('code' => $data_list['session_course'][$session_id])); } else { $course_list = SessionManager::get_course_list_by_session_id($session_id); } $attendance_sheet_id = null; if (!empty($course_list)) { //We know there's only one course by session. Take it. $course = current($course_list); //Creating attendance if (isset($course['code'])) { if (is_array($data_list) && isset($data_list) && $data_list['boost_courses']) { $course_info = array('real_id' => $data_list['course_ids'][$course['code']]); } else { $course_info = api_get_course_info($course['code']); } $attendance->set_course_id($course['code']); $attendance->set_course_int_id($course_info['real_id']); $attendance->set_session_id($session_id); if (is_array($data_list) && isset($data_list) && $data_list['boost_sessions'] && isset($data_list['sessions_attendances'][$course_info['real_id']][$session_id])) { $list = $data_list['sessions_attendances'][$course_info['real_id']][$session_id]; foreach ($list as $at_id) { $attendance_list[] = array('id' => $at_id); } } else { $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id); } if (empty($attendance_list)) { $attendance->set_name('Asistencia'); $attendance->set_description(''); //$attendance->set_attendance_qualify_title($_POST['attendance_qualify_title']); //$attendance->set_attendance_weight($_POST['attendance_weight']); $link_to_gradebook = false; //$attendance->category_id = $_POST['category_id']; $attendance_sheet_id = $attendance->attendance_add($link_to_gradebook, self::default_admin_id); if (is_array($data_list) && isset($data_list) && $data_list['boost_sessions']) { $data_list['sessions_attendances'][$course_info['real_id']][$session_id][] = $attendance_sheet_id; } //error_log("Attendance added course code: {$course['code']} - session_id: $session_id"); //only 1 course per session } else { // Only one attendance sheet by course and session (at least during migration) $attendance_data = current($attendance_list); $attendance_sheet_id = $attendance_data['id']; //error_log("Attendance found in attendance_sheet_id = $attendance_sheet_id - course code: {$course['code']} - session_id: $session_id"); } // Now the attendance_sheet has been found or created, check the date if ($attendance_sheet_id) { //error_log('Processing attendance sheet '.$attendance_sheeet_id.' for session '.$session_id.', course '.$course_info['real_id'].', date '.$fecha); //Attendance date exists? $cal_info = array(); $cal_id = null; if (is_array($data_list) && isset($data_list) && $data_list['boost_sessions'] && $data_list['sessions_attendance_dates'][$attendance_sheet_id][$fecha]) { $cal_info['id'] = $data_list['sessions_attendance_dates'][$attendance_sheet_id][$fecha]; } else { $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_sheet_id, $fecha); } // Get (or create) the attendance date ID if (isset($cal_info['id'])) { $cal_id = $cal_info['id']; } else { $attendance->set_date_time($fecha); //Creating the attendance date and get ID $cal_id = $attendance->attendance_calendar_add($attendance_sheet_id, true); if (is_array($data_list) && isset($data_list) && $data_list['boost_sessions']) { $data_list['sessions_attendance_dates'][$attendance_sheet_id][$fecha] = $cal_id; } //error_log("Creating attendance calendar $cal_id"); } //Adding presence for the user (by default everybody is present) $users_present = array($user_id => $data['status']); if (is_array($data_list['create_attendance'])) { $data_list['create_attendance'][] = array($cal_id, $user_id, $data['status'], $attendance_sheet_id, $course_info['real_id'], $fecha); $limit = 100; if (count($data_list['create_attendance']) == $limit) { //error_log('Flushing attendances list because reached '.$limit.": \n".print_r($data_list['create_attendance'],1)); $attendance->attendance_sheet_group_add($data_list['create_attendance'], false, true); $data_list['create_attendance'] = array(); } } else { $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_sheet_id, false, true); } //error_log("Adding calendar to user: $user_id to calendar: $cal_id"); } else { // We should never get here error_log('No attendance_sheet_id created'); } } else { error_log("Course not found for session: {$session_id}"); } } } else { error_log("Missing data: session: {$session_id} - user_id: {$user_id}"); } }