コード例 #1
0
function print_tempusers($tempusers, attendance $att)
{
    echo '<p></p>';
    echo '<table border="1" bordercolor="#EEEEEE" style="background-color:#fff" cellpadding="2" align="center"' . 'width="80%" summary="' . get_string('temptable', 'attendance') . '"><tr>';
    echo '<th class="header">' . get_string('tusername', 'attendance') . '</th>';
    echo '<th class="header">' . get_string('tuseremail', 'attendance') . '</th>';
    echo '<th class="header">' . get_string('tcreated', 'attendance') . '</th>';
    echo '<th class="header">' . get_string('tactions', 'attendance') . '</th>';
    echo '</tr>';
    $even = false;
    // Used to colour rows.
    foreach ($tempusers as $tempuser) {
        if ($even) {
            echo '<tr style="background-color: #FCFCFC">';
        } else {
            echo '<tr>';
        }
        $even = !$even;
        echo '<td>' . format_string($tempuser->fullname) . '</td>';
        echo '<td>' . format_string($tempuser->email) . '</td>';
        echo '<td>' . userdate($tempuser->created, get_string('strftimedatetime')) . '</td>';
        $params = array('userid' => $tempuser->id);
        $editlink = html_writer::link($att->url_tempedit($params), get_string('edituser', 'attendance'));
        $deletelink = html_writer::link($att->url_tempdelete($params), get_string('deleteuser', 'attendance'));
        $mergelink = html_writer::link($att->url_tempmerge($params), get_string('mergeuser', 'attendance'));
        echo '<td>' . $editlink . ' | ' . $deletelink . ' | ' . $mergelink . '</td>';
        echo '</tr>';
    }
    echo '</table>';
}
コード例 #2
0
 public function validation($data, $files)
 {
     $errors = parent::validation($data, $files);
     if ($err = attendance::check_existing_email($data['temail'])) {
         $errors['temail'] = $err;
     }
     return $errors;
 }
コード例 #3
0
 /**
  * Gets the content for this block
  *
  * @return object $this->content
  */
 public function get_content()
 {
     global $CFG, $USER, $COURSE;
     if ($this->content !== null) {
         return $this->content;
     }
     $this->content = new stdClass();
     $this->content->footer = '';
     $this->content->text = '';
     $attendances = get_all_instances_in_course('attendance', $COURSE, null, true);
     if (count($attendances) == 0) {
         $this->content->text = get_string('needactivity', 'block_attendance');
         return $this->content;
     }
     require_once $CFG->dirroot . '/mod/attendance/locallib.php';
     require_once $CFG->dirroot . '/mod/attendance/renderhelpers.php';
     foreach ($attendances as $attinst) {
         $cmid = $attinst->coursemodule;
         $cm = get_coursemodule_from_id('attendance', $cmid, $COURSE->id, false, MUST_EXIST);
         $context = context_module::instance($cmid, MUST_EXIST);
         $divided = $this->divide_databasetable_and_coursemodule_data($attinst);
         $att = new attendance($divided->atttable, $divided->cm, $COURSE, $context);
         $this->content->text .= html_writer::link($att->url_view(), html_writer::tag('b', format_string($att->name)));
         $this->content->text .= html_writer::empty_tag('br');
         // Link to attendance.
         if ($att->perm->can_take() or $att->perm->can_change()) {
             $this->content->text .= html_writer::link($att->url_manage(array('from' => 'block')), get_string('takeattendance', 'attendance'));
             $this->content->text .= html_writer::empty_tag('br');
         }
         if ($att->perm->can_manage()) {
             $url = $att->url_sessions(array('action' => att_sessions_page_params::ACTION_ADD));
             $this->content->text .= html_writer::link($url, get_string('add', 'attendance'));
             $this->content->text .= html_writer::empty_tag('br');
         }
         if ($att->perm->can_view_reports()) {
             $this->content->text .= html_writer::link($att->url_report(), get_string('report', 'attendance'));
             $this->content->text .= html_writer::empty_tag('br');
         }
         if ($att->perm->can_be_listed() && $att->perm->can_view()) {
             $this->content->text .= construct_full_user_stat_html_table($attinst, $COURSE, $USER, $cm);
         }
         $this->content->text .= "<br />";
     }
     return $this->content;
 }
コード例 #4
0
$pageparams->action = optional_param('action', null, PARAM_INT);
$pageparams->statusid = optional_param('statusid', null, PARAM_INT);
$pageparams->statusset = optional_param('statusset', 0, PARAM_INT);
// Set of statuses to view.
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/attendance:changepreferences', $context);
// Make sure the statusset is valid.
$maxstatusset = attendance_get_max_statusset($att->id);
if ($pageparams->statusset > $maxstatusset + 1) {
    $pageparams->statusset = $maxstatusset + 1;
}
$att = new attendance($att, $cm, $course, $context, $pageparams);
$PAGE->set_url($att->url_preferences());
$PAGE->set_title($course->shortname . ": " . $att->name . ' - ' . get_string('settings', 'attendance'));
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('settings', 'attendance'));
$errors = array();
// Check sesskey if we are performing an action.
if (!empty($att->pageparams->action)) {
    require_sesskey();
}
switch ($att->pageparams->action) {
    case att_preferences_page_params::ACTION_ADD:
        $newacronym = optional_param('newacronym', null, PARAM_TEXT);
        $newdescription = optional_param('newdescription', null, PARAM_TEXT);
コード例 #5
0
 * @package    mod_attendance
 * @copyright  2013 Davo Smith, Synergy Learning
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
global $CFG, $DB, $PAGE, $OUTPUT;
require_once $CFG->dirroot . '/mod/attendance/locallib.php';
require_once $CFG->dirroot . '/mod/attendance/tempedit_form.php';
$id = required_param('id', PARAM_INT);
$userid = required_param('userid', PARAM_INT);
$action = optional_param('action', null, PARAM_ALPHA);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
$tempuser = $DB->get_record('attendance_tempusers', array('id' => $userid), '*', MUST_EXIST);
$att = new attendance($att, $cm, $course);
$params = array('userid' => $tempuser->id);
if ($action) {
    $params['action'] = $action;
}
$PAGE->set_url($att->url_tempedit($params));
require_login($course, true, $cm);
$att->perm->require_managetemp_capability();
$PAGE->set_title($course->shortname . ": " . $att->name . ' - ' . get_string('tempusersedit', 'attendance'));
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->navbar->add(get_string('tempusersedit', 'attendance'));
/** @var mod_attendance_renderer $output */
$output = $PAGE->get_renderer('mod_attendance');
if ($action == 'delete') {
    if (optional_param('confirm', false, PARAM_BOOL)) {
コード例 #6
0
ファイル: add_attendance.php プロジェクト: seans888/APC-CPO
//******************************************************************
//This file was generated by Cobalt, a rapid application development
//framework developed by JV Roig (jvroig@jvroig.com).
//
//Cobalt on the web: http://cobalt.jvroig.com
//******************************************************************
require 'path.php';
init_cobalt('Add attendance');
require 'components/get_listview_referrer.php';
if (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_submit']);
    require 'components/query_string_standard.php';
    require 'subclasses/attendance.php';
    $dbh_attendance = new attendance();
    $object_name = 'dbh_attendance';
    require 'components/create_form_data.php';
    extract($arr_form_data);
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button', $_SERVER['PHP_SELF']);
        redirect("listview_attendance.php?{$query_string}");
    }
    if ($_POST['btn_submit']) {
        log_action('Pressed submit button', $_SERVER['PHP_SELF']);
        $message .= $dbh_attendance->sanitize($arr_form_data)->lst_error;
        extract($arr_form_data);
        if ($dbh_attendance->check_uniqueness($arr_form_data)->is_unique) {
            //Good, no duplicate in database
        } else {
            $message = "Record already exists with the same primary identifiers!";
コード例 #7
0
 public function __construct(attendance $att)
 {
     $this->statuses = $att->get_statuses(false);
     foreach ($this->statuses as $st) {
         $st->haslogs = att_has_logs_for_status($st->id);
     }
     $this->att = $att;
 }
コード例 #8
0
 function action_updateattendance()
 {
     $atnrecord = array();
     $atnrecord['id'] = cm_get_param('atnid', 0);
     $atnrecord['classid'] = $clsid;
     $atnrecord['userid'] = cm_get_param('userid', 0);
     $startyear = cm_get_param('startyear');
     $startmonth = cm_get_param('startmonth');
     $startday = cm_get_param('startday');
     $atnrecord['timestart'] = mktime(0, 0, 0, $startmonth, $startday, $startyear);
     $endyear = cm_get_param('endyear');
     $endmonth = cm_get_param('endmonth');
     $endday = cm_get_param('endday');
     $atnrecord['timeend'] = mktime(0, 0, 0, $endmonth, $endday, $endyear);
     $atnrecord['note'] = cm_get_param('note', '');
     $atn = new attendance($atnrecord);
     if (($status = $atn->update()) !== true) {
         echo cm_error('Record not updated.  Reason: ' . $status->message);
     }
 }
コード例 #9
0
 public function getStats($date = "")
 {
     if ($date == "") {
         $date = date('m/Y');
     }
     $date = explode("/", $date);
     $toReturn = array();
     $classes = classes::where('classAcademicYear', $this->panelInit->selectAcYear)->get();
     $toReturn['classes'] = array();
     $subjList = array();
     foreach ($classes as $class) {
         $class['classSubjects'] = json_decode($class['classSubjects'], true);
         if (is_array($class['classSubjects'])) {
             foreach ($class['classSubjects'] as $subject) {
                 $subjList[] = $subject;
             }
         }
         $toReturn['classes'][$class->id] = $class->className;
     }
     $subjList = array_unique($subjList);
     if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
         $toReturn['subjects'] = array();
         if (count($subjList) > 0) {
             $subjects = subject::whereIN('id', $subjList)->get();
             foreach ($subjects as $subject) {
                 $toReturn['subjects'][$subject->id] = $subject->subjectTitle;
             }
         }
     }
     $toReturn['role'] = $this->data['users']->role;
     $toReturn['attendanceModel'] = $this->data['panelInit']->settingsArray['attendanceModel'];
     if ($this->data['users']->role == "admin" || $this->data['users']->role == "teacher") {
         $attendanceArray = attendance::where('date', 'like', $date[0] . "%")->where('date', 'like', "%" . $date[1])->orderBy('date')->get();
         foreach ($attendanceArray as $value) {
             $dateHere = str_replace("/" . $date[1], "", $value->date);
             $dateHere = str_replace($date[0] . "/", "", $dateHere);
             $dateHere = preg_replace('/^0/', "", $dateHere);
             if (!isset($toReturn['attendance'][$dateHere][0])) {
                 $toReturn['attendance'][$dateHere][0] = 0;
                 $toReturn['attendance'][$dateHere][1] = 0;
                 $toReturn['attendance'][$dateHere][2] = 0;
                 $toReturn['attendance'][$dateHere][3] = 0;
                 $toReturn['attendance'][$dateHere][4] = 0;
             }
             $toReturn['attendance'][$dateHere][$value->status]++;
         }
         $attendanceArrayToday = attendance::where('date', date('m/d/Y'))->get();
         if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
             foreach ($attendanceArrayToday as $value) {
                 if (isset($toReturn['subjects'][$value->subjectId])) {
                     if (!isset($toReturn['attendanceDay'][$toReturn['subjects'][$value->subjectId]])) {
                         $toReturn['attendanceDay'][$toReturn['subjects'][$value->subjectId]] = 0;
                     }
                     $toReturn['attendanceDay'][$toReturn['subjects'][$value->subjectId]]++;
                 }
             }
         } else {
             foreach ($attendanceArrayToday as $value) {
                 if (isset($toReturn['classes'][$value->classId])) {
                     if (!isset($toReturn['attendanceDay'][$toReturn['classes'][$value->classId]])) {
                         $toReturn['attendanceDay'][$toReturn['classes'][$value->classId]] = 0;
                     }
                     $toReturn['attendanceDay'][$toReturn['classes'][$value->classId]]++;
                 }
             }
         }
     } elseif ($this->data['users']->role == "student") {
         $attendanceArray = attendance::where('studentId', $this->data['users']->id)->where('date', 'like', $date[0] . "%")->where('date', 'like', "%" . $date[1])->get();
         foreach ($attendanceArray as $value) {
             $toReturn['studentAttendance'][] = array("date" => $value->date, "status" => $value->status, "subject" => isset($toReturn['subjects'][$value->subjectId]) ? $toReturn['subjects'][$value->subjectId] : "");
         }
     } elseif ($this->data['users']->role == "parent") {
         if ($this->data['users']->parentOf != "") {
             $parentOf = json_decode($this->data['users']->parentOf, true);
             $ids = array();
             while (list(, $value) = each($parentOf)) {
                 $ids[] = $value['id'];
             }
             $studentArray = User::where('role', 'student')->whereIn('id', $ids)->get();
             foreach ($studentArray as $stOne) {
                 $students[$stOne->id] = array('name' => $stOne->fullName, 'studentRollId' => $stOne->studentRollId);
             }
             if (count($ids) > 0) {
                 $attendanceArray = attendance::whereIn('studentId', $ids)->where('date', 'like', $date[0] . "%")->where('date', 'like', "%" . $date[1])->get();
                 foreach ($attendanceArray as $value) {
                     if (!isset($toReturn['studentAttendance'][$value->studentId])) {
                         $toReturn['studentAttendance'][$value->studentId]['n'] = $students[$value->studentId];
                         $toReturn['studentAttendance'][$value->studentId]['d'] = array();
                     }
                     $toReturn['studentAttendance'][$value->studentId]['d'][] = array("date" => $value->date, "status" => $value->status, "subject" => $value->subjectId);
                 }
             }
         }
     }
     return $toReturn;
 }
コード例 #10
0
//******************************************************************
require 'path.php';
init_cobalt('Delete attendance');
if (isset($_GET['id'])) {
    $id = urldecode($_GET['id']);
    require_once 'form_data_attendance.php';
} elseif (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_delete']);
    require 'components/query_string_standard.php';
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button', $_SERVER['PHP_SELF']);
        redirect("listview_attendance.php?{$query_string}");
    } elseif ($_POST['btn_delete']) {
        log_action('Pressed delete button', $_SERVER['PHP_SELF']);
        require_once 'subclasses/attendance.php';
        $dbh_attendance = new attendance();
        $object_name = 'dbh_attendance';
        require 'components/create_form_data.php';
        $dbh_attendance->del($arr_form_data);
        redirect("listview_attendance.php?{$query_string}");
    }
}
require 'subclasses/attendance_html.php';
$html = new attendance_html();
$html->draw_header('Delete Attendance', $message, $message_type);
$html->draw_listview_referrer_info($filter_field_used, $filter_used, $page_from, $filter_sort_asc, $filter_sort_desc);
$html->draw_hidden('id');
$html->detail_view = TRUE;
$html->draw_controls('delete');
$html->draw_footer();
コード例 #11
0
 * @copyright  2011 Artem Andreev <*****@*****.**>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once dirname(__FILE__) . '/add_form.php';
require_once dirname(__FILE__) . '/update_form.php';
require_once dirname(__FILE__) . '/duration_form.php';
$pageparams = new att_sessions_page_params();
$id = required_param('id', PARAM_INT);
$pageparams->action = required_param('action', PARAM_INT);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$att = new attendance($att, $cm, $course, $PAGE->context, $pageparams);
$att->perm->require_manage_capability();
$PAGE->set_url($att->url_sessions());
$PAGE->set_title($course->shortname . ": " . $att->name);
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add($att->name);
$formparams = array('course' => $course, 'cm' => $cm, 'modcontext' => $PAGE->context);
switch ($att->pageparams->action) {
    case att_sessions_page_params::ACTION_ADD:
        $url = $att->url_sessions(array('action' => att_sessions_page_params::ACTION_ADD));
        $mform = new mod_attendance_add_form($url, $formparams);
        if ($formdata = $mform->get_data()) {
            $sessions = construct_sessions_data_for_add($formdata);
            $att->add_sessions($sessions);
コード例 #12
0
<?php

require 'components/get_listview_referrer.php';
require 'subclasses/attendance.php';
$dbh_attendance = new attendance();
$dbh_attendance->set_where("id='" . quote_smart($id) . "'");
if ($result = $dbh_attendance->make_query()->result) {
    $data = $result->fetch_assoc();
    extract($data);
    $data = explode('-', $date);
    if (count($data) == 3) {
        $date_year = $data[0];
        $date_month = $data[1];
        $date_day = $data[2];
    }
}
コード例 #13
0
require_once dirname(__FILE__) . '/locallib.php';
$pageparams = new att_report_page_params();
$id = required_param('id', PARAM_INT);
$from = optional_param('from', null, PARAM_ACTION);
$pageparams->view = optional_param('view', null, PARAM_INT);
$pageparams->curdate = optional_param('curdate', null, PARAM_INT);
$pageparams->group = optional_param('group', null, PARAM_INT);
$pageparams->sort = optional_param('sort', null, PARAM_INT);
$pageparams->page = optional_param('page', 1, PARAM_INT);
$pageparams->perpage = get_config('attendance', 'resultsperpage');
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$attrecord = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$pageparams->init($cm);
$att = new attendance($attrecord, $cm, $course, $PAGE->context, $pageparams);
$att->perm->require_view_reports_capability();
$PAGE->set_url($att->url_report());
$PAGE->set_pagelayout('report');
$PAGE->set_title($course->shortname . ": " . $att->name . ' - ' . get_string('report', 'attendance'));
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('report', 'attendance'));
$output = $PAGE->get_renderer('mod_attendance');
$tabs = new attendance_tabs($att, attendance_tabs::TAB_REPORT);
$filtercontrols = new attendance_filter_controls($att, true);
$reportdata = new attendance_report_data($att);
// Trigger a report viewed event.
$event = \mod_attendance\event\report_viewed::create(array('objectid' => $att->id, 'context' => $PAGE->context, 'other' => array()));
$event->add_record_snapshot('course_modules', $cm);
コード例 #14
0
 //requiered params: username, password and session id
 require_once $CFG->dirroot . '/mod/attendance/locallib.php';
 $pageparams = new stdClass();
 $pageparams->sessionid = $sessionid;
 $pageparams->grouptype = 0;
 $pageparams->sort = optional_param('sort', null, PARAM_INT);
 $pageparams->copyfrom = optional_param('copyfrom', null, PARAM_INT);
 $pageparams->viewmode = optional_param('viewmode', null, PARAM_INT);
 $pageparams->gridcols = optional_param('gridcols', null, PARAM_INT);
 $pageparams->page = optional_param('page', 1, PARAM_INT);
 $pageparams->perpage = optional_param('perpage', get_config('attendance', 'resultsperpage'), PARAM_INT);
 $cm = get_coursemodule_from_id('attendance', $attendanceid, 0, false, MUST_EXIST);
 $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
 $att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
 $context = context_system::instance();
 $att = new attendance($att, $cm, $course, $context, $pageparams);
 $statuses = implode(',', array_keys((array) $att->get_statuses()));
 $statussesarray = explode(",", $statuses);
 // the first string of statuses ($statussesarray[0]) means the value of statusid
 $now = time();
 //late checks whether you took attendance late or not
 $late = optional_param('late', null, PARAM_INT);
 if ($late == 0) {
     //not late
     $statusid = $statussesarray[0];
 } else {
     //late
     $statusid = $statussesarray[1];
 }
 $record = new stdClass();
 $record->studentid = $user->id;
コード例 #15
0
 *
 * @package    mod_attendance
 * @copyright  2013 Davo Smith, Synergy Learning
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
global $CFG, $DB, $PAGE, $OUTPUT;
require_once $CFG->dirroot . '/mod/attendance/locallib.php';
require_once $CFG->dirroot . '/mod/attendance/tempmerge_form.php';
$id = required_param('id', PARAM_INT);
$userid = required_param('userid', PARAM_INT);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
$tempuser = $DB->get_record('attendance_tempusers', array('id' => $userid), '*', MUST_EXIST);
$att = new attendance($att, $cm, $course);
$params = array('userid' => $tempuser->id);
$PAGE->set_url($att->url_tempmerge($params));
require_login($course, true, $cm);
$PAGE->set_title($course->shortname . ": " . $att->name . ' - ' . get_string('tempusermerge', 'attendance'));
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('tempusermerge', 'attendance'));
$formdata = (object) array('id' => $cm->id, 'userid' => $tempuser->id);
$custom = array('description' => format_string($tempuser->fullname) . ' (' . format_string($tempuser->email) . ')');
$mform = new tempmerge_form(null, $custom);
$mform->set_data($formdata);
if ($mform->is_cancelled()) {
    redirect($att->url_managetemp());
} else {
コード例 #16
0
ファイル: renderables.php プロジェクト: anilch/Personel
    public function __construct(attendance $att, $userid) {
        global $CFG;

        $this->user = $att->get_user($userid);

        $this->pageparams = $att->pageparams;

        if (!$this->decimalpoints = grade_get_setting($att->course->id, 'decimalpoints')) {
            $this->decimalpoints = $CFG->grade_decimalpoints;
        }

        if ($this->pageparams->mode == att_view_page_params::MODE_THIS_COURSE) {
            $this->statuses = $att->get_statuses();

            $this->stat = $att->get_user_stat($userid);

            $this->gradable = $att->grade > 0;
            if ($this->gradable) {
                $this->grade = $att->get_user_grade($userid);
                $this->maxgrade = $att->get_user_max_grade($userid);
            }

            $this->filtercontrols = new attendance_filter_controls($att);

            $this->sessionslog = $att->get_user_filtered_sessions_log_extended($userid);

            $this->groups = groups_get_all_groups($att->course->id);
        } else {
            $this->coursesatts = local_att_get_user_courses_attendances($userid);

            $this->statuses = array();
            $this->stat = array();
            $this->gradable = array();
            $this->grade = array();
            $this->maxgrade = array();
            foreach ($this->coursesatts as $ca) {
                $statuses = local_att_get_statuses($ca->attid);
                $user_taken_sessions_count = local_att_get_user_taken_sessions_count($ca->attid, $ca->coursestartdate, $userid);
                $user_statuses_stat = local_att_get_user_statuses_stat($ca->attid, $ca->coursestartdate, $userid);

                $this->statuses[$ca->attid] = $statuses;

                $this->stat[$ca->attid]['completed'] = $user_taken_sessions_count;
                $this->stat[$ca->attid]['statuses'] = $user_statuses_stat;

                $this->gradable[$ca->attid] = $ca->attgrade > 0;

                if ($this->gradable[$ca->attid]) {
                    $this->grade[$ca->attid] = local_att_get_user_grade($user_statuses_stat, $statuses);
                    // For getting sessions count implemented simplest method - taken sessions.
                    // It can have error if users don't have attendance info for some sessions.
                    // In the future we can implement another methods:
                    // * all sessions between user start enrolment date and now;
                    // * all sessions between user start and end enrolment date.
                    $this->maxgrade[$ca->attid] = local_att_get_user_max_grade($user_taken_sessions_count, $statuses);
                } else {
                    // For more comfortable and universal work with arrays.
                    $this->grade[$ca->attid] = null;
                    $this->maxgrade[$ca->attid] = null;
                }
            }
        }

        $this->urlpath = $att->url_view()->out_omit_querystring();
        $params = $att->pageparams->get_significant_params();
        $params['id'] = $att->cm->id;
        $this->urlparams = $params;
    }
コード例 #17
0
ファイル: csv_attendance.php プロジェクト: seans888/APC-CPO
//
//Cobalt on the web: http://cobalt.jvroig.com
//******************************************************************
require 'path.php';
init_cobalt('View attendance');
if (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_submit']);
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button');
        redirect("listview_attendance.php");
    }
    if ($_POST['btn_submit']) {
        log_action('Pressed submit button');
        require 'subclasses/attendance.php';
        $dbh_attendance = new attendance();
        if ($message == "") {
            log_action('Exported table data to CSV');
            $timestamp = date('Y-m-d');
            $token = generate_token(0, 'fs');
            $csv_name = $token . $_SESSION['user'] . '_attendance_' . $timestamp . '.csv';
            $filename = TMP_DIRECTORY . '/' . $csv_name;
            $csv_contents = $dbh_attendance->export_to_csv();
            $csv_file = fopen($filename, "wb");
            fwrite($csv_file, $csv_contents);
            fclose($csv_file);
            chmod($filename, 0755);
            $csv_name = urlencode($csv_name);
            $message = 'CSV file successfully generated: <a href="/' . BASE_DIRECTORY . '/download_generic.php?filename=' . $csv_name . '">Download the CSV file.</a>';
            $message_type = 'system';
        }
コード例 #18
0
require_once dirname(__FILE__) . '/locallib.php';
$pageparams = new att_report_page_params();
$id = required_param('id', PARAM_INT);
$from = optional_param('from', null, PARAM_ACTION);
$pageparams->view = optional_param('view', null, PARAM_INT);
$pageparams->curdate = optional_param('curdate', null, PARAM_INT);
$pageparams->group = optional_param('group', null, PARAM_INT);
$pageparams->sort = optional_param('sort', null, PARAM_INT);
$pageparams->page = optional_param('page', 1, PARAM_INT);
$pageparams->perpage = get_config('attendance', 'resultsperpage');
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$pageparams->init($cm);
$att = new attendance($att, $cm, $course, $PAGE->context, $pageparams);
$att->perm->require_view_reports_capability();
$PAGE->set_url($att->url_report());
$PAGE->set_pagelayout('report');
$PAGE->set_title($course->shortname . ": " . $att->name . ' - ' . get_string('report', 'attendance'));
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('report', 'attendance'));
$output = $PAGE->get_renderer('mod_attendance');
$tabs = new attendance_tabs($att, attendance_tabs::TAB_REPORT);
$filtercontrols = new attendance_filter_controls($att);
$reportdata = new attendance_report_data($att);
// Trigger a report viewed event.
$event = \mod_attendance\event\report_viewed::create(array('objectid' => $att->id, 'context' => $PAGE->context, 'other' => array()));
$event->add_record_snapshot('course_modules', $cm);
コード例 #19
0
 /**
  * Response when updating role succeed.
  *
  * @param  \Orchestra\Model\Role  $role
  *
  * @return mixed
  */
 public function destroySucceed(attendance $attendance)
 {
     $message = trans('orchestra/control::response.roles.delete', ['name' => $attendance->getAttribute('name')]);
     return $this->redirectWithMessage(handles('orchestra::attendance'), $message);
 }
コード例 #20
0
$id = required_param('id', PARAM_INT);
$from = optional_param('from', null, PARAM_ALPHANUMEXT);
$pageparams->view = optional_param('view', null, PARAM_INT);
$pageparams->curdate = optional_param('curdate', null, PARAM_INT);
$pageparams->perpage = get_config('attendance', 'resultsperpage');
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$context = context_module::instance($cm->id);
$capabilities = array('mod/attendance:manageattendances', 'mod/attendance:takeattendances', 'mod/attendance:changeattendances');
if (!has_any_capability($capabilities, $context)) {
    redirect($att->url_view());
}
$pageparams->init($cm);
$att = new attendance($att, $cm, $course, $context, $pageparams);
// If teacher is coming from block, then check for a session exists for today.
if ($from === 'block') {
    $sessions = $att->get_today_sessions();
    $size = count($sessions);
    if ($size == 1) {
        $sess = reset($sessions);
        $nottaken = !$sess->lasttaken && has_capability('mod/attendance:takeattendances', $context);
        $canchange = $sess->lasttaken && has_capability('mod/attendance:changeattendances', $context);
        if ($nottaken || $canchange) {
            redirect($att->url_take(array('sessionid' => $sess->id, 'grouptype' => $sess->groupid)));
        }
    } else {
        if ($size > 1) {
            $att->curdate = $today;
            // Temporarily set $view for single access to page from block.
コード例 #21
0
ファイル: index.php プロジェクト: TheDoxMedia/pgs
$app->put('/attendance/admin', function () {
    require '../attendance/attendance.worker.php';
    $data = json_decode(Slim::getInstance()->request()->getBody(), true);
    $attendance = new attendance();
    $attendance->worker('add_new', $data);
});
// Get User top
$app->get('/attendance/admin/:day', function ($day) {
    require '../attendance/attendance.worker.php';
    $attendance = new attendance();
    $attendance->worker('get_day', $day);
});
// Get characters array
$app->get('/attendance/characters', function () {
    require '../attendance/attendance.worker.php';
    $attendance = new attendance();
    $attendance->worker('get_member_list');
});
// //////////////////////////////
// Admin
// Get Admin Panel
$app->get('/admin', function () {
    require '../admin/admin.worker.php';
    $admin = new admin();
    $admin->worker('panel');
});
// Admin update value
$app->put('/admin/update', function () {
    require '../admin/admin.worker.php';
    $data = json_decode(Slim::getInstance()->request()->getBody(), true);
    $admin = new admin();
コード例 #22
0
ファイル: user.class.php プロジェクト: remotelearner/elis.cm
 public function delete()
 {
     global $CFG;
     $result = false;
     $muser = cm_get_moodleuserid($this->id);
     if (empty($muser) || !is_primary_admin($muser)) {
         $level = context_level_base::get_custom_context_level('user', 'block_curr_admin');
         $result = attendance::delete_for_user($this->id);
         $result = $result && curriculumstudent::delete_for_user($this->id);
         $result = $result && instructor::delete_for_user($this->id);
         $result = $result && student::delete_for_user($this->id);
         $result = $result && student_grade::delete_for_user($this->id);
         $result = $result && usertrack::delete_for_user($this->id);
         $result = $result && usercluster::delete_for_user($this->id);
         $result = $result && clusterassignment::delete_for_user($this->id);
         $result = $result && waitlist::delete_for_user($this->id);
         $result = $result && delete_context($level, $this->id);
         // Delete Moodle user.
         if ($muser = get_record('user', 'idnumber', $this->idnumber, 'mnethostid', $CFG->mnet_localhost_id, 'deleted', 0)) {
             $result = $result && delete_user($muser);
         }
         $result = $result && parent::delete();
     }
     return $result;
 }
コード例 #23
0
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
$pageparams = new att_view_page_params();
$id = required_param('id', PARAM_INT);
$pageparams->studentid = optional_param('studentid', null, PARAM_INT);
$pageparams->mode = optional_param('mode', att_view_page_params::MODE_THIS_COURSE, PARAM_INT);
$pageparams->view = optional_param('view', null, PARAM_INT);
$pageparams->curdate = optional_param('curdate', null, PARAM_INT);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$attendance = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/attendance:view', $context);
$pageparams->init($cm);
$att = new attendance($attendance, $cm, $course, $context, $pageparams);
// Not specified studentid for displaying attendance?
// Redirect to appropriate page if can.
if (!$pageparams->studentid) {
    $capabilities = array('mod/attendance:manageattendances', 'mod/attendance:takeattendances', 'mod/attendance:changeattendances');
    if (has_any_capability($capabilities, $context)) {
        redirect($att->url_manage());
    } else {
        if (has_capability('mod/attendance:viewreports', $context)) {
            redirect($att->url_report());
        }
    }
}
$PAGE->set_url($att->url_view());
$PAGE->set_title($course->shortname . ": " . $att->name);
$PAGE->set_heading($course->fullname);
コード例 #24
0
ファイル: UsersController.php プロジェクト: schoex/Campusmate
 function attendance($id)
 {
     $toReturn = array();
     $toReturn['attendanceModel'] = $this->data['panelInit']->settingsArray['attendanceModel'];
     $toReturn['attendance'] = attendance::where('studentId', $id)->get()->toArray();
     if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
         $subjects = subject::get();
         $toReturn['subjects'] = array();
         foreach ($subjects as $subject) {
             $toReturn['subjects'][$subject->id] = $subject->subjectTitle;
         }
     }
     return $toReturn;
 }
コード例 #25
0
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once dirname(__FILE__) . '/student_attenance_form.php';
$pageparams = new att_sessions_page_params();
// Check that the required parameters are present.
$id = required_param('sessid', PARAM_INT);
$attendance_session_id = required_param('sessid', PARAM_INT);
$attforsession = $DB->get_record('attendance_sessions', array('id' => $id), '*', MUST_EXIST);
$attendance = $DB->get_record('attendance', array('id' => $attforsession->attendanceid), '*', MUST_EXIST);
$cm = get_coursemodule_from_instance('attendance', $attendance->id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
// Require the user is logged in.
require_login($course, true, $cm);
$pageparams->sessionid = $id;
$att = new attendance($attendance, $cm, $course, $PAGE->context, $pageparams);
// Require that a session key is passed to this page.
require_sesskey();
// Create the form.
$mform = new mod_attendance_student_attendance_form(null, array('course' => $course, 'cm' => $cm, 'modcontext' => $PAGE->context, 'session' => $attforsession, 'attendance' => $att));
$PAGE->set_url($att->url_sessions());
if ($mform->is_cancelled()) {
    // The user cancelled the form, so redirect them to the view page.
    $url = new moodle_url('/mod/attendance/view.php', array('id' => $cm->id));
    redirect($url);
} else {
    if ($fromform = $mform->get_data()) {
        if (!empty($fromform->status)) {
            $success = $att->take_from_student($fromform);
            $url = new moodle_url('/mod/attendance/view.php', array('id' => $cm->id));
            if ($success) {
コード例 #26
0
$pageparams->grouptype = required_param('grouptype', PARAM_INT);
$pageparams->sort = optional_param('sort', null, PARAM_INT);
$pageparams->copyfrom = optional_param('copyfrom', null, PARAM_INT);
$pageparams->viewmode = optional_param('viewmode', null, PARAM_INT);
$pageparams->gridcols = optional_param('gridcols', null, PARAM_INT);
$pageparams->page = optional_param('page', 1, PARAM_INT);
$pageparams->perpage = optional_param('perpage', get_config('attendance', 'resultsperpage'), PARAM_INT);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/attendance:takeattendances', $context);
$pageparams->group = groups_get_activity_group($cm, true);
$pageparams->init($course->id);
$att = new attendance($att, $cm, $course, $PAGE->context, $pageparams);
$allowedgroups = groups_get_activity_allowed_groups($cm);
if (!empty($pageparams->grouptype) && !array_key_exists($pageparams->grouptype, $allowedgroups)) {
    $group = groups_get_group($pageparams->grouptype);
    throw new moodle_exception('cannottakeforgroup', 'attendance', '', $group->name);
}
if (($formdata = data_submitted()) && confirm_sesskey()) {
    $att->take_from_form_data($formdata);
}
$PAGE->set_url($att->url_take());
$PAGE->set_title($course->shortname . ": " . $att->name);
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add($att->name);
$output = $PAGE->get_renderer('mod_attendance');
コード例 #27
0
 public function dashboardData()
 {
     $toReturn = array();
     $toReturn['selectedAcYear'] = $this->panelInit->selectAcYear;
     $toReturn['language'] = $this->panelInit->language;
     $toReturn['role'] = $this->data['users']->role;
     $toReturn['stats'] = array();
     $toReturn['stats']['classes'] = classes::count();
     $toReturn['stats']['students'] = User::where('role', 'student')->where('activated', 1)->count();
     $toReturn['stats']['teachers'] = User::where('role', 'teacher')->where('activated', 1)->count();
     $toReturn['stats']['newMessages'] = messagesList::where('userId', $this->data['users']->id)->where('messageStatus', 1)->count();
     $toReturn['messages'] = DB::select(DB::raw("SELECT messagesList.id as id,messagesList.lastMessageDate as lastMessageDate,messagesList.lastMessage as lastMessage,messagesList.messageStatus as messageStatus,users.fullName as fullName,users.id as userId FROM messagesList LEFT JOIN users ON users.id=IF(messagesList.userId = '" . $this->data['users']->id . "',messagesList.toId,messagesList.userId) where userId='" . $this->data['users']->id . "' order by id DESC limit 5"));
     $toReturn['attendanceModel'] = $this->data['panelInit']->settingsArray['attendanceModel'];
     if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
         $subjects = subject::get();
         foreach ($subjects as $subject) {
             $toReturn['subjects'][$subject->id] = $subject->subjectTitle;
         }
     }
     $date = date('m/Y');
     $date = explode("/", $date);
     if ($this->data['users']->role == "student") {
         $attendanceArray = attendance::where('studentId', $this->data['users']->id)->where('date', 'like', $date[0] . "%")->where('date', 'like', "%" . $date[1])->get();
         foreach ($attendanceArray as $value) {
             $toReturn['studentAttendance'][] = array("date" => $value->date, "status" => $value->status, "subject" => isset($toReturn['subjects'][$value->subjectId]) ? $toReturn['subjects'][$value->subjectId] : "");
         }
     } elseif ($this->data['users']->role == "parent") {
         if ($this->data['users']->parentOf != "") {
             $parentOf = json_decode($this->data['users']->parentOf, true);
             $ids = array();
             while (list(, $value) = each($parentOf)) {
                 $ids[] = $value['id'];
             }
             $studentArray = User::where('role', 'student')->whereIn('id', $ids)->get();
             foreach ($studentArray as $stOne) {
                 $students[$stOne->id] = array('name' => $stOne->fullName, 'studentRollId' => $stOne->studentRollId);
             }
             if (count($ids) > 0) {
                 $attendanceArray = attendance::whereIn('studentId', $ids)->where('date', 'like', $date[0] . "%")->where('date', 'like', "%" . $date[1])->get();
                 foreach ($attendanceArray as $value) {
                     if (!isset($toReturn['studentAttendance'][$value->studentId])) {
                         $toReturn['studentAttendance'][$value->studentId]['n'] = $students[$value->studentId];
                         $toReturn['studentAttendance'][$value->studentId]['d'] = array();
                     }
                     $toReturn['studentAttendance'][$value->studentId]['d'][] = array("date" => $value->date, "status" => $value->status, "subject" => $value->subjectId);
                 }
             }
         }
     }
     $toReturn['teacherLeaderBoard'] = User::where('role', 'teacher')->where('isLeaderBoard', '!=', '')->where('isLeaderBoard', '!=', '0')->get()->toArray();
     $toReturn['studentLeaderBoard'] = User::where('role', 'student')->where('isLeaderBoard', '!=', '')->where('isLeaderBoard', '!=', '0')->get()->toArray();
     $toReturn['newsEvents'] = array();
     $newsboard = newsboard::where('newsFor', $this->data['users']->role)->orWhere('newsFor', 'all')->orderBy('id', 'desc')->limit(5)->get();
     foreach ($newsboard as $event) {
         $eventsArray['id'] = $event->id;
         $eventsArray['title'] = $event->newsTitle;
         $eventsArray['type'] = "news";
         $eventsArray['start'] = date("F j, Y", strtotime($event->newsDate));
         $toReturn['newsEvents'][] = $eventsArray;
     }
     $events = events::orderBy('id', 'desc')->where('eventFor', $this->data['users']->role)->orWhere('eventFor', 'all')->limit(5)->get();
     foreach ($events as $event) {
         $eventsArray['id'] = $event->id;
         $eventsArray['title'] = $event->eventTitle;
         $eventsArray['type'] = "event";
         $eventsArray['start'] = date("F j, Y", strtotime($event->eventDate));
         $toReturn['newsEvents'][] = $eventsArray;
     }
     $toReturn['academicYear'] = academicYear::get()->toArray();
     $toReturn['baseUser'] = array("id" => $this->data['users']->id, "fullName" => $this->data['users']->fullName, "username" => $this->data['users']->username);
     $polls = polls::where('pollTarget', $this->data['users']->role)->orWhere('pollTarget', 'all')->where('pollStatus', '1')->first();
     if (count($polls) > 0) {
         $toReturn['polls']['title'] = $polls->pollTitle;
         $toReturn['polls']['id'] = $polls->id;
         $toReturn['polls']['view'] = "vote";
         $userVoted = json_decode($polls->userVoted, true);
         if (is_array($userVoted) and in_array($this->data['users']->id, $userVoted)) {
             $toReturn['polls']['voted'] = true;
             $toReturn['polls']['view'] = "results";
         }
         $toReturn['polls']['items'] = json_decode($polls->pollOptions, true);
         $toReturn['polls']['totalCount'] = 0;
         if (is_array($toReturn['polls']['items']) and count($toReturn['polls']['items']) > 0) {
             while (list($key, $value) = each($toReturn['polls']['items'])) {
                 if (isset($value['count'])) {
                     $toReturn['polls']['totalCount'] += $value['count'];
                 }
                 if (!isset($toReturn['polls']['items'][$key]['prec'])) {
                     $toReturn['polls']['items'][$key]['prec'] = 0;
                 }
             }
         }
     }
     return json_encode($toReturn);
 }
コード例 #28
0
 *
 * @package   mod_attendance
 * @copyright  2011 Artem Andreev <*****@*****.**>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/locallib.php';
require_once dirname(__FILE__) . '/export_form.php';
require_once dirname(__FILE__) . '/renderables.php';
require_once dirname(__FILE__) . '/renderhelpers.php';
$id = required_param('id', PARAM_INT);
$cm = get_coursemodule_from_id('attendance', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$att = $DB->get_record('attendance', array('id' => $cm->instance), '*', MUST_EXIST);
require_login($course, true, $cm);
$att = new attendance($att, $cm, $course, $PAGE->context);
$att->perm->require_export_capability();
$PAGE->set_url($att->url_export());
$PAGE->set_title($course->shortname . ": " . $att->name);
$PAGE->set_heading($course->fullname);
$PAGE->set_cacheable(true);
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('export', 'quiz'));
$formparams = array('course' => $course, 'cm' => $cm, 'modcontext' => $PAGE->context);
$mform = new mod_attendance_export_form($att->url_export(), $formparams);
if ($mform->is_submitted()) {
    $formdata = $mform->get_data();
    $pageparams = new att_page_with_filter_controls();
    $pageparams->init($cm);
    $pageparams->page = 0;
    $pageparams->group = $formdata->group;
コード例 #29
0
 function delete()
 {
     $status = true;
     if (!empty($this->id)) {
         instructor::delete_for_class($this->id);
         student::delete_for_class($this->id);
         trackassignmentclass::delete_for_class($this->id);
         classmoodlecourse::delete_for_class($this->id);
         student_grade::delete_for_class($this->id);
         attendance::delete_for_class($this->id);
         taginstance::delete_for_class($this->id);
         waitlist::delete_for_class($this->id);
         classmoodlecourse::delete_for_class($this->id);
         $level = context_level_base::get_custom_context_level('class', 'block_curr_admin');
         $result = delete_context($level, $this->id);
         $status = $this->data_delete_record();
     }
     return $status;
 }