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}");
     }
 }