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>'; }
public function validation($data, $files) { $errors = parent::validation($data, $files); if ($err = attendance::check_existing_email($data['temail'])) { $errors['temail'] = $err; } return $errors; }
/** * 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; }
$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);
* @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)) {
//****************************************************************** //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!";
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; }
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); } }
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; }
//****************************************************************** 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();
* @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);
<?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]; } }
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);
//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;
* * @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 {
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; }
// //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'; }
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);
/** * 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); }
$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.
$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();
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; }
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);
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; }
*/ 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) {
$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');
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); }
* * @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;
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; }