/**
  * Return array of rows where each row is an array of tab objects
  * taking into account permissions of current user
  */
 public function get_tabs()
 {
     $toprow = array();
     $context = $this->att->context;
     $capabilities = array('mod/attendance:manageattendances', 'mod/attendance:takeattendances', 'mod/attendance:changeattendances');
     if (has_any_capability($capabilities, $context)) {
         $toprow[] = new tabobject(self::TAB_SESSIONS, $this->att->url_manage()->out(), get_string('sessions', 'attendance'));
     }
     if (has_capability('mod/attendance:manageattendances', $context)) {
         $toprow[] = new tabobject(self::TAB_ADD, $this->att->url_sessions()->out(true, array('action' => att_sessions_page_params::ACTION_ADD)), get_string('add', 'attendance'));
     }
     if (has_capability('mod/attendance:viewreports', $context)) {
         $toprow[] = new tabobject(self::TAB_REPORT, $this->att->url_report()->out(), get_string('report', 'attendance'));
     }
     if (has_capability('mod/attendance:export', $context)) {
         $toprow[] = new tabobject(self::TAB_EXPORT, $this->att->url_export()->out(), get_string('export', 'attendance'));
     }
     if (has_capability('mod/attendance:changepreferences', $context)) {
         $toprow[] = new tabobject(self::TAB_PREFERENCES, $this->att->url_preferences()->out(), get_string('settings', 'attendance'));
     }
     if (has_capability('mod/attendance:managetemporaryusers', $context)) {
         $toprow[] = new tabobject(self::TAB_TEMPORARYUSERS, $this->att->url_managetemp()->out(), get_string('tempusers', 'attendance'));
     }
     return array($toprow);
 }
示例#2
0
    /**
     * Return array of rows where each row is an array of tab objects
     * taking into account permissions of current user
     */
    public function get_tabs() {
        $toprow = array();
        if ($this->att->perm->can_manage() or
                $this->att->perm->can_take() or
                $this->att->perm->can_change()) {
            $toprow[] = new tabobject(self::TAB_SESSIONS, $this->att->url_manage()->out(), get_string('sessions', 'local_attendance'));
        }

        if ($this->att->perm->can_manage()) {
            $toprow[] = new tabobject(self::TAB_ADD, $this->att->url_sessions()->out(true, array('action' => local_att_sessions_page_params::ACTION_ADD)), get_string('add', 'local_attendance'));
        }

        if ($this->att->perm->can_view_reports()) {
            $toprow[] = new tabobject(self::TAB_REPORT, $this->att->url_report()->out(), get_string('report', 'local_attendance'));
        }

        if ($this->att->perm->can_export()) {
            $toprow[] = new tabobject(self::TAB_EXPORT, $this->att->url_export()->out(), get_string('export', 'local_attendance'));
        }

        if ($this->att->perm->can_change_preferences()) {
            $toprow[] = new tabobject(self::TAB_PREFERENCES, $this->att->url_preferences()->out(), get_string('settings', 'local_attendance'));
        }

        return array($toprow);
    }
 /**
  * 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
 $groupmode = groups_get_activity_groupmode($cm, $course);
 if (!empty($groupmode)) {
     $data->tabhead[] = get_string('groups');
 }
 if (count($reportdata->sessions) > 0) {
     foreach ($reportdata->sessions as $sess) {
         $text = userdate($sess->sessdate, get_string('strftimedmyhm', 'attendance'));
         $text .= ' ';
         $text .= $sess->groupid ? $reportdata->groups[$sess->groupid]->name : get_string('commonsession', 'attendance');
         $data->tabhead[] = $text;
         if (isset($formdata->includeremarks)) {
             $data->tabhead[] = get_string('remark', 'attendance', $text);
         }
     }
 } else {
     print_error('sessionsnotfound', 'attendance', $att->url_manage());
 }
 if ($reportdata->gradable) {
     $data->tabhead[] = get_string('grade');
 }
 $i = 0;
 $data->table = array();
 foreach ($reportdata->users as $user) {
     if (isset($formdata->ident['id'])) {
         $data->table[$i][] = $user->id;
     }
     if (isset($formdata->ident['uname'])) {
         $data->table[$i][] = $user->username;
     }
     $data->table[$i][] = $user->lastname;
     $data->table[$i][] = $user->firstname;
    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.
            $att->view = ATT_VIEW_DAYS;
        }
    }
}
$PAGE->set_url($att->url_manage());
$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');
$tabs = new attendance_tabs($att, attendance_tabs::TAB_SESSIONS);
$filtercontrols = new attendance_filter_controls($att);
$sesstable = new attendance_manage_data($att);
// Output starts here.
echo $output->header();
echo $output->heading(get_string('attendanceforthecourse', 'attendance') . ' :: ' . format_string($course->fullname));
mod_attendance_notifyqueue::show();
echo $output->render($tabs);
echo $output->render($filtercontrols);
示例#6
0
 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);
         redirect($url, get_string('sessionsgenerated', 'attendance'));
     }
     break;
 case att_sessions_page_params::ACTION_UPDATE:
     $sessionid = required_param('sessionid', PARAM_INT);
     $url = $att->url_sessions(array('action' => att_sessions_page_params::ACTION_UPDATE, 'sessionid' => $sessionid));
     $formparams['sessionid'] = $sessionid;
     $mform = new mod_attendance_update_form($url, $formparams);
     if ($mform->is_cancelled()) {
         redirect($att->url_manage());
     }
     if ($formdata = $mform->get_data()) {
         $att->update_session_from_form_data($formdata, $sessionid);
         redirect($att->url_manage(), get_string('sessionupdated', 'attendance'));
     }
     break;
 case att_sessions_page_params::ACTION_DELETE:
     $sessionid = required_param('sessionid', PARAM_INT);
     $confirm = optional_param('confirm', null, PARAM_INT);
     if (isset($confirm) && confirm_sesskey()) {
         $att->delete_sessions(array($sessionid));
         if ($att->grade > 0) {
             att_update_all_users_grades($att->id, $att->course, $att->context, $cm);
         }
         redirect($att->url_manage(), get_string('sessiondeleted', 'attendance'));
$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);
$PAGE->set_cacheable(true);
$PAGE->navbar->add(get_string('attendancereport', 'attendance'));
$output = $PAGE->get_renderer('mod_attendance');
if (isset($pageparams->studentid) && $USER->id != $pageparams->studentid) {
    // Only users with proper permissions should be able to see any user's individual report.
    require_capability('mod/attendance:viewreports', $context);