$values = '\'' . $student_id . '\',\'' . $date . '\',\'' . $period_id . '\',\'' . GetCurrentMP('QTR', $date) . '\',\'' . $period . '\',\'Y\',';
                $go = 0;
                foreach ($columns as $column => $value) {
                    if ($value) {
                        $fields .= $column . ',';
                        $values .= '\'' . str_replace("\\'", "''", $value) . '\',';
                        $go = true;
                    }
                }
                $sql .= '(' . substr($fields, 0, -1) . ') values(' . substr($values, 0, -1) . ')';
                if ($go) {
                    DBQuery($sql);
                }
            }
        }
        UpdateAttendanceDaily($student_id, $date);
    }
    $current_RET = DBGet(DBQuery('SELECT ATTENDANCE_TEACHER_CODE,ATTENDANCE_CODE,ATTENDANCE_REASON,STUDENT_ID,ADMIN,COURSE_PERIOD_ID FROM attendance_period WHERE SCHOOL_DATE=\'' . $date . '\''), array(), array('STUDENT_ID', 'COURSE_PERIOD_ID'));
    unset($_REQUEST['attendance']);
}
$codes_RET = DBGet(DBQuery('SELECT ID,SHORT_NAME,TITLE FROM attendance_codes WHERE SCHOOL_ID=\'' . UserSchool() . '\' AND SYEAR=\'' . UserSyear() . '\''));
$periods_RET = DBGet(DBQuery('SELECT PERIOD_ID,SHORT_NAME,TITLE FROM school_periods WHERE SCHOOL_ID=\'' . UserSchool() . '\' AND SYEAR=\'' . UserSyear() . '\' ORDER BY SORT_ORDER'));
//if(isset($_REQUEST['student_id']) && $_REQUEST['student_id']!='new')
if (isset($_REQUEST['student_id']) && optional_param('student_id', '', PARAM_ALPHANUM) != 'new') {
    //if(UserStudentID() != $_REQUEST['student_id'])
    if (UserStudentID() != optional_param('student_id', '', PARAM_ALPHANUM)) {
        //$_SESSION['student_id'] = $_REQUEST['student_id'];
        $_SESSION['student_id'] = optional_param('student_id', '', PARAM_ALPHANUM);
        echo '<script language=JavaScript>parent.side.location="' . $_SESSION['Side_PHP_SELF'] . '";</script>';
    }
    $functions = array('ATTENDANCE_CODE' => '_makeCodePulldown', 'ATTENDANCE_TEACHER_CODE' => '_makeCode', 'ATTENDANCE_REASON' => '_makeReasonInput');
示例#2
0
#  This program is released under the terms of the GNU General Public License as
#  published by the Free Software Foundation, version 2 of the License.
#  See license.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#***************************************************************************************
include '../../Redirect_modules.php';
DrawBC("" . _('Attendance') . " > " . ProgramTitle());
$message = '<TABLE><TR><TD colspan=7 align=center>' . _('From') . ' ' . PrepareDate(DBDate(), '_min') . ' ' . _('to') . ' ' . PrepareDate(DBDate(), '_max') . '</TD></TR></TABLE>';
if (Prompt_Home(_('Confirm'), _('When do you want to recalculate the daily attendance?'), $message)) {
    $current_RET = DBGet(DBQuery('SELECT DISTINCT DATE_FORMAT(SCHOOL_DATE,\'%d-%m-%Y\') as SCHOOL_DATE FROM attendance_calendar WHERE SCHOOL_ID=\'' . UserSchool() . '\' AND SYEAR=\'' . UserSyear() . '\''), array(), array('SCHOOL_DATE'));
    $students_RET = GetStuList();
    $begin = mktime(0, 0, 0, MonthNWSwitch($_REQUEST['month_min'], 'to_num'), $_REQUEST['day_min'] * 1, $_REQUEST['year_min']) + 43200;
    $end = mktime(0, 0, 0, MonthNWSwitch($_REQUEST['month_max'], 'to_num'), $_REQUEST['day_max'] * 1, $_REQUEST['year_max']) + 43200;
    for ($i = $begin; $i <= $end; $i += 86400) {
        if ($current_RET[strtoupper(date('d-M-y', $i))]) {
            foreach ($students_RET as $student) {
                UpdateAttendanceDaily($student['STUDENT_ID'], date('d-M-y', $i));
            }
        }
    }
    unset($_REQUEST['modfunc']);
    DrawHeader('<table><tr><td><IMG SRC=assets/check.gif></td><td>' . _('The Daily Attendance for that timeframe has been recalculated.') . '</td></tr></table>');
}
if ($_REQUEST['day_end'] && $_REQUEST['month_end'] && $_REQUEST['year_end']) {
    $end_date = $_REQUEST['day_end'] . '-' . $_REQUEST['month_end'] . '-' . substr($_REQUEST['year_end'], 2, 4);
} else {
    $end_date = DBDate();
}
DrawBC("Attendance >> " . ProgramTitle());
if ($_REQUEST['attendance'] && ($_POST['attendance'] || $_REQUEST['ajax']) && AllowEdit()) {
    foreach ($_REQUEST['attendance'] as $student_id => $values) {
        foreach ($values as $school_date => $columns) {
            $sql = 'UPDATE attendance_period SET ADMIN=\'Y\',';
            foreach ($columns as $column => $value) {
                $sql .= $column . '=\'' . str_replace("\\'", "''", $value) . '\',';
            }
            $sql = substr($sql, 0, -1) . ' WHERE SCHOOL_DATE=\'' . $school_date . '\' AND PERIOD_ID=\'' . $_REQUEST['period_id'] . '\' AND STUDENT_ID=\'' . $student_id . '\'';
            DBQuery($sql);
            UpdateAttendanceDaily($student_id, $school_date);
        }
    }
    $current_RET = DBGet(DBQuery('SELECT ATTENDANCE_TEACHER_CODE,ATTENDANCE_CODE,ATTENDANCE_REASON,STUDENT_ID,ADMIN,COURSE_PERIOD_ID FROM attendance_period WHERE SCHOOL_DATE=\'' . $date . '\''), array(), array('STUDENT_ID', 'COURSE_PERIOD_ID'));
    unset($_REQUEST['attendance']);
}
if ($_REQUEST['search_modfunc'] || $_REQUEST['student_id'] || UserStudentID() || User('PROFILE') == 'parent' || User('PROFILE') == 'student') {
    $PHP_tmp_SELF = PreparePHP_SELF();
    $extraM .= "";
    $period_select = "<SELECT name=period_id onchange='this.form.submit();'><OPTION value=\"\">Daily</OPTION>";
    if (!UserStudentID() && !$_REQUEST['student_id']) {
        $periods_RET = DBGet(DBQuery('SELECT PERIOD_ID,TITLE FROM school_periods WHERE SYEAR=\'' . UserSyear() . '\' AND SCHOOL_ID=\'' . UserSchool() . '\' ORDER BY SORT_ORDER'));
        if (count($periods_RET) > 1) {
            foreach ($periods_RET as $period) {
                $period_select .= "<OPTION value=" . $period['PERIOD_ID'] . ($_REQUEST['period_id'] == $period['PERIOD_ID'] ? ' SELECTED' : '') . ">" . $period['TITLE'] . '</OPTION>';
            }
示例#4
0
                            		values('$student_id','$date','$period_id','$current_mp','$course_period_id','$_REQUEST[absence_code]','$_REQUEST[absence_code]','$_REQUEST[absence_reason]','Y')";*/
                            $sql = 'INSERT INTO attendance_period (STUDENT_ID,SCHOOL_DATE,PERIOD_ID,MARKING_PERIOD_ID,COURSE_PERIOD_ID,ATTENDANCE_CODE,ATTENDANCE_TEACHER_CODE,ATTENDANCE_REASON,ADMIN)values(\'' . $student_id . '\',\'' . $date . '\',\'' . $period_id . '\',\'' . $current_mp . '\',\'' . $course_period_id . '\',\'' . optional_param('absence_code', '', PARAM_NUMBER) . '\',\'' . optional_param('absence_code', '', PARAM_NUMBER) . '\',\'' . optional_param('absence_reason', '', PARAM_SPCL) . '\',\'Y\')';
                            DBQuery($sql);
                        }
                    } else {
                        /*$sql = "UPDATE attendance_period SET ATTENDANCE_CODE='$_REQUEST[absence_code]',ATTENDANCE_TEACHER_CODE='$_REQUEST[absence_code]',ATTENDANCE_REASON='$_REQUEST[absence_reason]',ADMIN='Y'
                        			WHERE STUDENT_ID='$student_id' AND SCHOOL_DATE='$date' AND PERIOD_ID='$period_id'";
                        		*/
                        $sql = 'UPDATE attendance_period SET ATTENDANCE_CODE=\'' . optional_param('absence_code', '', PARAM_NUMBER) . '\',ATTENDANCE_TEACHER_CODE=\'' . optional_param('absence_code', '', PARAM_NUMBER) . '\',ATTENDANCE_REASON=\'' . optional_param('absence_reason', '', PARAM_SPCL) . '\',ADMIN=\'Y\'
								WHERE STUDENT_ID=\'' . $student_id . '\' AND SCHOOL_DATE=\'' . $date . '\' AND PERIOD_ID=\'' . $period_id . '\'';
                        DBQuery($sql);
                    }
                }
                $val = optional_param('absence_reason', '', PARAM_SPCL);
                //UpdateAttendanceDaily($student_id,$date,($_REQUEST['absence_reason']?$_REQUEST['absence_reason']:false));
                UpdateAttendanceDaily($student_id, $date, $val ? $val : false);
            }
        }
        //-----------------------For update attendance_completed----------------------------------------
        $current_RET = DBGet(DBQuery('SELECT STUDENT_ID,PERIOD_ID,SCHOOL_DATE,ATTENDANCE_CODE FROM attendance_period WHERE EXTRACT(MONTH FROM SCHOOL_DATE)=\'' . $_REQUEST['month'] * 1 . '\' AND EXTRACT(YEAR FROM SCHOOL_DATE)=\'' . $_REQUEST[year] . '\''), array(), array('SCHOOL_DATE', 'PERIOD_ID'));
        foreach ($_REQUEST['dates'] as $date => $yes) {
            $course_periods_RET = DBGet(DBQuery('SELECT s.COURSE_PERIOD_ID,cpv.PERIOD_ID,cp.TEACHER_ID FROM schedule s,course_periods cp,course_period_var cpv,attendance_calendar ac,school_periods sp WHERE sp.PERIOD_ID=cpv.PERIOD_ID AND cp.COURSE_PERIOD_ID=cpv.COURSE_PERIOD_ID AND ac.SCHOOL_DATE=\'' . date('Y-m-d', strtotime($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 cpv.DOES_ATTENDANCE=\'Y\' 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 DAYOFWEEK(ac.SCHOOL_DATE)  FOR 1) IN cpv.DAYS)>0 AND cp.MARKING_PERIOD_ID IN (' . $all_mp . ') AND s.MARKING_PERIOD_ID IN (' . $all_mp . ') AND NOT (cp.HALF_DAY=\'Y\' AND (SELECT STATE_CODE FROM attendance_codes WHERE ID=\'' . optional_param('absence_code', '', PARAM_NUMBER) . '\')=\'H\')'), array(), array('PERIOD_ID'));
            foreach ($_REQUEST['period'] as $period_id => $yes) {
                $attn_taken = count($current_RET[$date][$period_id]);
                $attn_possible = count($course_periods_RET[$period_id]);
                if ($attn_possible == $attn_taken) {
                    if ($attn_possible > 0) {
                        $RET = DBGet(DBQuery('SELECT \'' . 'completed' . '\' AS COMPLETED FROM attendance_completed WHERE STAFF_ID=\'' . $course_periods_RET[$period_id][1]['TEACHER_ID'] . '\' AND SCHOOL_DATE=\'' . $date . '\' AND PERIOD_ID=\'' . $period_id . '\''));
                        if (!count($RET)) {
                            DBQuery('INSERT INTO attendance_completed (STAFF_ID,SCHOOL_DATE,PERIOD_ID) values(\'' . $course_periods_RET[$period_id][1]['TEACHER_ID'] . '\',\'' . $date . '\',\'' . $period_id . '\')');
                        }
        /*UpdateAttendanceDaily($student_id,$date,($_REQUEST['attendance_day'][$student_id]['COMMENT']?$_REQUEST['attendance_day'][$student_id]['COMMENT']:false));*/
        $val = clean_param($_REQUEST['attendance_day'][$student_id]['COMMENT'], PARAM_SPCL);
        UpdateAttendanceDaily($student_id, $date, $val ? $val : false);
        unset($_REQUEST['attendance_day'][$student_id]);
    }
    echo $_REQUEST['attendance_day'][$student_id]['COMMENT'];
    $current_RET = DBGet(DBQuery("SELECT ATTENDANCE_TEACHER_CODE,ATTENDANCE_CODE,ATTENDANCE_REASON,STUDENT_ID,ADMIN,COURSE_PERIOD_ID FROM {$table} WHERE SCHOOL_DATE='" . $date . "'" . $extra_sql), array(), array('STUDENT_ID', 'COURSE_PERIOD_ID'));
    unset($_REQUEST['attendance']);
    unset($_SESSION['_REQUEST_vars']['attendance']);
    unset($_SESSION['_REQUEST_vars']['attendance_day']);
}
if (count($_REQUEST['attendance_day'])) {
    foreach ($_REQUEST['attendance_day'] as $student_id => $comment) {
        $val = clean_param($comment['COMMENT'], PARAM_SPCL);
        //UpdateAttendanceDaily($student_id,$date,$comment['COMMENT']);
        UpdateAttendanceDaily($student_id, $date, $val);
    }
    unset($_REQUEST['attendance_day']);
}
$codes_RET = DBGet(DBQuery("SELECT ID,SHORT_NAME,TITLE,STATE_CODE FROM ATTENDANCE_CODES WHERE SCHOOL_ID='" . UserSchool() . "' AND SYEAR='" . UserSyear() . "' AND TABLE_NAME='{$_REQUEST['table']}'"));
$periods_RET = DBGet(DBQuery("SELECT PERIOD_ID,SHORT_NAME,TITLE FROM SCHOOL_PERIODS WHERE SCHOOL_ID='" . UserSchool() . "' AND SYEAR='" . UserSyear() . "' AND EXISTS (SELECT * FROM COURSE_PERIODS WHERE PERIOD_ID=SCHOOL_PERIODS.PERIOD_ID AND DOES_ATTENDANCE='Y') ORDER BY SORT_ORDER"));
//if(isset($_REQUEST['student_id']) && $_REQUEST['student_id']!='new')
if (isset($_REQUEST['student_id']) && optional_param('student_id', '', PARAM_ALPHANUM) != 'new') {
    //if(UserStudentID() != $_REQUEST['student_id'])
    if (UserStudentID() != optional_param('student_id', '', PARAM_ALPHANUM)) {
        //$_SESSION['student_id'] = $_REQUEST['student_id'];
        $_SESSION['student_id'] = optional_param('student_id', '', PARAM_ALPHANUM);
        echo '<script language=JavaScript>parent.side.location="' . $_SESSION['Side_PHP_SELF'] . '?modcat="+parent.side.document.forms[0].modcat.value;</script>';
    }
    $functions = array('ATTENDANCE_CODE' => '_makeCodePulldown', 'ATTENDANCE_TEACHER_CODE' => '_makeCode', 'ATTENDANCE_REASON' => '_makeReasonInput');
    /*$schedule_RET = DBGet(DBQuery("SELECT
示例#6
0
                $all_mp = GetAllMP('QTR', $current_mp);
                $course_periods_RET = DBGet(DBQuery("SELECT s.COURSE_PERIOD_ID,cp.PERIOD_ID,cp.HALF_DAY FROM SCHEDULE s,COURSE_PERIODS cp,ATTENDANCE_CALENDAR ac,SCHOOL_PERIODS sp WHERE sp.PERIOD_ID=cp.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 cp.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('{$daysWeek}' FROM cast(extract(DOW FROM ac.SCHOOL_DATE) AS INT)*2+1 FOR 2) IN cp.DAYS)>0 AND s.MARKING_PERIOD_ID IN ({$all_mp})"), array(), array('PERIOD_ID'));
                //echo '<pre>'; var_dump($course_periods_RET); echo '</pre>';
                foreach ($_REQUEST['period'] as $period_id => $yes) {
                    $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 (!$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)\n\t\t\t\t\t\t\t\t\t\tvalues('{$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}'\n\t\t\t\t\t\t\t\tWHERE 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);
            }
        }
        unset($_REQUEST['modfunc']);
        $note = _('Absence records were added for the selected students.');
    } else {
        BackPrompt(_('You must choose at least one period and one student.'));
    }
}
DrawHeader(ProgramTitle());
if (!$_REQUEST['modfunc']) {
    $extra['link'] = array('FULL_NAME' => false);
    $extra['SELECT'] = ",CAST (NULL AS CHAR(1)) AS CHECKBOX";
    if ($_REQUEST['search_modfunc'] == 'list') {
        echo "<FORM action=Modules.php?modname={$_REQUEST['modname']}&modfunc=save METHOD=POST>";
        DrawHeader('', SubmitButton(_('Add Absences to Selected Students')));
                if ($go) {
                    DBQuery($sql);
                }
            }
        }
        UpdateAttendanceDaily($student_id, $date, $_REQUEST['attendance_day'][$student_id]['COMMENT'] ? $_REQUEST['attendance_day'][$student_id]['COMMENT'] : false);
        unset($_REQUEST['attendance_day'][$student_id]);
    }
    $current_RET = DBGet(DBQuery($current_Q), array(), array('STUDENT_ID', 'PERIOD_ID'));
    unset($_REQUEST['attendance']);
    unset($_SESSION['_REQUEST_vars']['attendance']);
    unset($_SESSION['_REQUEST_vars']['attendance_day']);
}
if (count($_REQUEST['attendance_day'])) {
    foreach ($_REQUEST['attendance_day'] as $student_id => $comment) {
        UpdateAttendanceDaily($student_id, $date, $comment['COMMENT']);
    }
    unset($_REQUEST['attendance_day']);
}
$codes_RET = DBGet(DBQuery("SELECT ID,SHORT_NAME,TITLE,STATE_CODE FROM ATTENDANCE_CODES WHERE SCHOOL_ID='" . UserSchool() . "' AND SYEAR='" . UserSyear() . "' AND TABLE_NAME='{$_REQUEST['table']}'"));
$periods_RET = DBGet(DBQuery("SELECT PERIOD_ID,SHORT_NAME,TITLE FROM SCHOOL_PERIODS WHERE SCHOOL_ID='" . UserSchool() . "' AND SYEAR='" . UserSyear() . "' AND EXISTS (SELECT '' FROM COURSE_PERIODS WHERE PERIOD_ID=SCHOOL_PERIODS.PERIOD_ID AND position(',{$_REQUEST['table']},' IN DOES_ATTENDANCE)>0) ORDER BY SORT_ORDER"));
$categories_RET = DBGet(DBQuery("SELECT ID,TITLE FROM ATTENDANCE_CODE_CATEGORIES WHERE SYEAR='" . UserSyear() . "' AND SCHOOL_ID='" . UserSchool() . "'"));
if (count($categories_RET)) {
    $tmp_PHP_SELF = PreparePHP_SELF($_REQUEST, array('table', 'codes'));
    $headerl = '<TABLE><TR>';
    /*if($_REQUEST['table']!=='0')
    	{
    		$tabcolor = '#DFDFDF';
    		$textcolor = '#999999';
    	}
    	else
#  This program is released under the terms of the GNU General Public License as
#  published by the Free Software Foundation, version 2 of the License.
#  See license.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#***************************************************************************************
include '../../RedirectModulesInc.php';
DrawBC("Attendance > " . ProgramTitle());
$message = '<TABLE><TR><TD colspan=7 align=center>From ' . DateInputAY(DBDate('mysql'), 'min', 1) . ' to ' . DateInputAY(DBDate('mysql'), 'max', 2) . '</TD></TR></TABLE>';
if (Prompt_Home('Confirm', 'When do you want to recalculate the daily attendance?', $message)) {
    $current_RET = DBGet(DBQuery('SELECT DISTINCT DATE_FORMAT(SCHOOL_DATE,\'%d-%m-%Y\') as SCHOOL_DATE FROM attendance_calendar WHERE SCHOOL_ID=\'' . UserSchool() . '\' AND SYEAR=\'' . UserSyear() . '\''), array(), array('SCHOOL_DATE'));
    $students_RET = GetStuList();
    $begin = mktime(0, 0, 0, MonthNWSwitch($_REQUEST['month_min'], 'to_num'), $_REQUEST['day_min'] * 1, $_REQUEST['year_min']) + 43200;
    $end = mktime(0, 0, 0, MonthNWSwitch($_REQUEST['month_max'], 'to_num'), $_REQUEST['day_max'] * 1, $_REQUEST['year_max']) + 43200;
    for ($i = $begin; $i <= $end; $i += 86400) {
        if ($current_RET[date('d-m-Y', $i)]) {
            foreach ($students_RET as $student) {
                UpdateAttendanceDaily($student['STUDENT_ID'], date('Y-m-d', $i));
            }
        }
    }
    unset($_REQUEST['modfunc']);
    DrawHeader('<table><tr><td><IMG SRC=assets/check.gif></td><td>The Daily Attendance for that timeframe has been recalculated.</td></tr></table>');
}