$yes ) { $current_mp = GetCurrentMP( 'QTR', $date ); $all_mp = GetAllMP( 'QTR', $current_mp ); //FJ days numbered //FJ multiple school periods for a course period if ( SchoolInfo( 'NUMBER_DAYS_ROTATION' ) !== null ) { $course_periods_RET = DBGet( "SELECT s.COURSE_PERIOD_ID,cpsp.PERIOD_ID,cp.HALF_DAY FROM SCHEDULE s,COURSE_PERIODS cp,ATTENDANCE_CALENDAR ac,SCHOOL_PERIODS sp,COURSE_PERIOD_SCHOOL_PERIODS cpsp WHERE cp.COURSE_PERIOD_ID=cpsp.COURSE_PERIOD_ID AND sp.PERIOD_ID=cpsp.PERIOD_ID AND ac.SCHOOL_DATE='" . $date . "' AND ac.CALENDAR_ID=cp.CALENDAR_ID AND (ac.BLOCK=sp.BLOCK OR sp.BLOCK IS NULL) AND s.COURSE_PERIOD_ID=cp.COURSE_PERIOD_ID AND s.STUDENT_ID='" . $student_id . "' AND cpsp.PERIOD_ID IN (" . $periods_list . ") AND position(',0,' IN cp.DOES_ATTENDANCE)>0 AND (ac.SCHOOL_DATE BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND ac.SCHOOL_DATE>=s.START_DATE)) AND position(substring('MTWHFSU' FROM cast( (SELECT CASE COUNT(school_date)% " . SchoolInfo( 'NUMBER_DAYS_ROTATION' ) . " WHEN 0 THEN " . SchoolInfo( 'NUMBER_DAYS_ROTATION' ) . " ELSE COUNT(school_date)% " . SchoolInfo( 'NUMBER_DAYS_ROTATION' ) . " END AS day_number FROM attendance_calendar WHERE school_date>=(SELECT start_date FROM school_marking_periods WHERE start_date<=ac.SCHOOL_DATE AND end_date>=ac.SCHOOL_DATE AND mp='QTR' AND SCHOOL_ID=ac.SCHOOL_ID) AND school_date<=ac.SCHOOL_DATE AND SCHOOL_ID=ac.SCHOOL_ID) AS INT) FOR 1) IN cpsp.DAYS)>0 AND s.MARKING_PERIOD_ID IN (" . $all_mp . ") AND ac.SCHOOL_ID=s.SCHOOL_ID", array(), array( 'PERIOD_ID' ) ); } else { $course_periods_RET = DBGet( "SELECT s.COURSE_PERIOD_ID,cpsp.PERIOD_ID,cp.HALF_DAY FROM SCHEDULE s,COURSE_PERIODS cp,ATTENDANCE_CALENDAR ac,SCHOOL_PERIODS sp,COURSE_PERIOD_SCHOOL_PERIODS cpsp WHERE sp.PERIOD_ID=cpsp.PERIOD_ID AND ac.SCHOOL_DATE='" . $date . "' AND ac.CALENDAR_ID=cp.CALENDAR_ID AND (ac.BLOCK=sp.BLOCK OR sp.BLOCK IS NULL) AND s.COURSE_PERIOD_ID=cp.COURSE_PERIOD_ID AND s.STUDENT_ID='" . $student_id . "' AND cpsp.PERIOD_ID IN (" . $periods_list . ") AND position(',0,' IN cp.DOES_ATTENDANCE)>0 AND (ac.SCHOOL_DATE BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND ac.SCHOOL_DATE>=s.START_DATE)) AND position(substring('UMTWHFS' FROM cast(extract(DOW FROM ac.SCHOOL_DATE) AS INT)+1 FOR 1) IN cpsp.DAYS)>0 AND s.MARKING_PERIOD_ID IN ($all_mp)", array(), array( 'PERIOD_ID' ) ); } //echo '
'; var_dump($course_periods_RET); echo ''; foreach ( (array) $_REQUEST['period'] as $period_id => $yes ) { if ( ! $yes ) { continue; } $course_period_id = $course_periods_RET[$period_id][1]['COURSE_PERIOD_ID']; if ( $course_period_id && ! ( $course_periods_RET[$period_id][1]['COURSE_PERIOD_ID'] == 'Y' && $state_code == 'H' ) ) { if ( empty( $current_RET[$student_id][$date][$period_id] ) ) { $sql = "INSERT INTO ATTENDANCE_PERIOD (STUDENT_ID,SCHOOL_DATE,PERIOD_ID,MARKING_PERIOD_ID,COURSE_PERIOD_ID,ATTENDANCE_CODE,ATTENDANCE_REASON,ADMIN) VALUES('" . $student_id . "','" . $date . "','" . $period_id . "','" . $current_mp . "','" . $course_period_id . "','" . $_REQUEST['absence_code'] . "','" . $_REQUEST['absence_reason'] . "','Y')"; DBQuery( $sql ); } else { $sql = "UPDATE ATTENDANCE_PERIOD SET ATTENDANCE_CODE='" . $_REQUEST['absence_code'] . "',ATTENDANCE_REASON='" . $_REQUEST['absence_reason'] . "',ADMIN='Y',COURSE_PERIOD_ID='" . $course_period_id . "' WHERE STUDENT_ID='" . $student_id . "' AND SCHOOL_DATE='" . $date . "' AND PERIOD_ID='" . $period_id . "'"; DBQuery( $sql ); } } } UpdateAttendanceDaily( $student_id, $date, ( $_REQUEST['absence_reason'] ? $_REQUEST['absence_reason'] : false ) ); } } $note[] = button( 'check' ) . ' ' . _( 'Absence records were added for the selected students.' ); } else { $error[] = _( 'You must choose at least one period and one student.' ); } // Unset modfunc & redirect URL. RedirectURL( 'modfunc' ); } echo ErrorMessage( $note, 'note' ); echo ErrorMessage( $error ); if ( ! $_REQUEST['modfunc'] ) { $extra['link'] = array( 'FULL_NAME' => false ); $extra['SELECT'] = ",CAST (NULL AS CHAR(1)) AS CHECKBOX"; if ( $_REQUEST['search_modfunc'] === 'list' ) { echo ''; } }