diff --git a/locallib.php b/locallib.php index 37ab9f0..b2969ab 100644 --- a/locallib.php +++ b/locallib.php @@ -234,6 +234,7 @@ class att_take_page_params { public $gridcols; public function init() { + if (!isset($this->group)) $this->group = 0; if (!isset($this->sort)) $this->sort = self::SORT_LASTNAME; $this->init_view_mode(); $this->init_gridcols(); @@ -262,8 +263,8 @@ class att_take_page_params { $params['sessionid'] = $this->sessionid; $params['grouptype'] = $this->grouptype; - if (isset($this->group)) $params['group'] = $this->group; - $params['sort'] = $this->sort; + if ($this->group) $params['group'] = $this->group; + if ($this->sort != self::SORT_LASTNAME) $params['sort'] = $this->sort; if (isset($this->copyfrom)) $params['copyfrom'] = $this->copyfrom; return $params; @@ -346,25 +347,75 @@ class attforblock { } /** - * Returns today sessions for this attendance + * Returns current sessions for this attendance * * Fetches data from {attendance_sessions} * * @return array of records or an empty array */ - public function get_today_sessions() { + public function get_current_sessions() { global $DB; $today = time(); // because we compare with database, we don't need to use usertime() - $sql = "SELECT id, groupid, lasttaken + $sql = "SELECT * FROM {attendance_sessions} WHERE :time BETWEEN sessdate AND (sessdate + duration) - AND courseid = :cid AND attendanceid = :aid"; + AND attendanceid = :aid"; + $params = array( + 'time' => $today, + 'aid' => $this->id); + + return $DB->get_records_sql($sql, $params); + } + + /** + * Returns today sessions for this attendance + * + * Fetches data from {attendance_sessions} + * + * @return array of records or an empty array + */ + public function get_today_sessions() { + global $DB; + + $start = usergetmidnight(time()); + $end = $start + DAYSECS; + + $sql = "SELECT * + FROM {attendance_sessions} + WHERE sessdate >= :start AND sessdate < :end + AND attendanceid = :aid"; $params = array( - 'time' => $today, - 'cid' => $this->course->id, - 'aid' => $this->id); + 'start' => $start, + 'end' => $end, + 'aid' => $this->id); + + return $DB->get_records_sql($sql, $params); + } + + /** + * Returns today sessions suitable for copying attendance log + * + * Fetches data from {attendance_sessions} + * + * @return array of records or an empty array + */ + public function get_today_sessions_for_copy($sess) { + global $DB; + + $start = usergetmidnight($sess->sessdate); + + $sql = "SELECT * + FROM {attendance_sessions} + WHERE sessdate >= :start AND sessdate <= :end AND + (groupid = 0 OR groupid = :groupid) AND + lasttaken > 0 AND attendanceid = :aid"; + $params = array( + 'start' => $start, + 'end' => $sess->sessdate, + 'groupid' => $sess->groupid, + 'aid' => $this->id); return $DB->get_records_sql($sql, $params); } @@ -400,7 +451,7 @@ class attforblock { * @return moodle_url of sessions.php for attendance instance */ public function url_sessions($params=array()) { - $params = array('id' => $this->cm->id) + $params; + $params = array_merge(array('id' => $this->cm->id), $params); return new moodle_url('/mod/attforblock/sessions.php', $params); } @@ -436,11 +487,18 @@ class attforblock { return new moodle_url('/mod/attforblock/take.php', $params); } + public function url_view($params=array()) { + $params = array_merge(array('id' => $this->cm->id), $params); + return new moodle_url('/mod/attforblock/view.php', $params); + } + private function calc_groupmode_sessgroupslist_currentgroup(){ global $USER, $SESSION; $cm = $this->cm; + $this->get_group_mode(); + if ($this->groupmode == NOGROUPS) return; @@ -691,6 +749,8 @@ class attforblock { if (!isset($this->sessioninfo)) $this->sessioninfo = $DB->get_record('attendance_sessions', array('id' => $sessionid)); + $this->sessioninfo->description = file_rewrite_pluginfile_urls($this->sessioninfo->description, + 'pluginfile.php', $this->context->id, 'mod_attforblock', 'session', $this->sessioninfo->id); return $this->sessioninfo; } diff --git a/renderables.php b/renderables.php index d991781..ab2e178 100644 --- a/renderables.php +++ b/renderables.php @@ -280,13 +280,19 @@ class attforblock_take_data implements renderable { public $sessionlog; + public $sessions4copy; + public $updatemode; private $urlpath; private $urlparams; + private $att; public function __construct(attforblock $att) { - $this->users = $att->get_users(); + if ($att->pageparams->grouptype) + $this->users = $att->get_users($att->pageparams->grouptype); + else + $this->users = $att->get_users($att->pageparams->group); $this->pageparams = $att->pageparams; $this->perm = $att->perm; @@ -297,23 +303,40 @@ class attforblock_take_data implements renderable { $this->statuses = $att->get_statuses(); $this->sessioninfo = $att->get_session_info($att->pageparams->sessionid); + $this->updatemode = $this->sessioninfo->lasttaken > 0; + + if (isset($att->pageparams->copyfrom)) + $this->sessionlog = $att->get_session_log($att->pageparams->copyfrom); + elseif ($this->updatemode) + $this->sessionlog = $att->get_session_log($att->pageparams->sessionid); + else + $this->sessionlog = array(); - $this->sessionlog = $att->get_session_log($att->pageparams->sessionid); + + if (!$this->updatemode) + $this->sessions4copy = $att->get_today_sessions_for_copy($this->sessioninfo); $this->urlpath = $att->url_take()->out_omit_querystring(); $params = $att->pageparams->get_significant_params(); $params['id'] = $att->cm->id; $this->urlparams = $params; - $this->updatemode =$this->sessioninfo->lasttaken > 0; + $this->att = $att; } - public function url($params=array()) { + public function url($params=array(), $excludeparams=array()) { $params = array_merge($this->urlparams, $params); + foreach ($excludeparams as $paramkey) + unset($params[$paramkey]); + return new moodle_url($this->urlpath, $params); } + public function url_view($params=array()) { + return new moodle_url($this->att->url_view($params), $params); + } + public function url_path() { return $this->urlpath; } diff --git a/renderer.php b/renderer.php index 960a7dc..d0bda45 100644 --- a/renderer.php +++ b/renderer.php @@ -170,54 +170,60 @@ class mod_attforblock_renderer extends plugin_renderer_base { $i = 0; foreach ($sessdata->sessions as $key => $sess) { $i++; - $actions = ''; - $desc = empty($sess->description) ? get_string('nodescription', 'attforblock') : $sess->description; - - $date = userdate($sess->sessdate, get_string('strftimedmyw', 'attforblock')); - $starttime = userdate($sess->sessdate, get_string('strftimehm', 'attforblock')); - $endtime = userdate($sess->sessdate + $sess->duration, get_string('strftimehm', 'attforblock')); - $time = html_writer::tag('nobr', $starttime . ($sess->duration > 0 ? ' - ' . $endtime : '')); - if($sess->lasttaken > 0) - { - if ($sessdata->perm->can_change()) { - $url = $sessdata->url_take($sess->id, $sess->groupid); - $title = get_string('changeattendance','attforblock'); - - $date = html_writer::link($url, $date, array('title' => $title)); - $time = html_writer::link($url, $time, array('title' => $title)); - } else { - $date = '' . $date . ''; - $time = '' . $time . ''; - } - } else { - if ($sessdata->perm->can_take()) { - $url = $sessdata->url_take($sess->id, $sess->groupid); - $title = get_string('takeattendance','attforblock'); - $actions = $this->output->action_icon($url, new pix_icon('t/go', $title)); - } - } - if($sessdata->perm->can_manage()) { - $url = $sessdata->url_sessions($sess->id, att_sessions_page_params::ACTION_UPDATE); - $title = get_string('editsession','attforblock'); - $actions .= $this->output->action_icon($url, new pix_icon('t/edit', $title)); - - $url = $sessdata->url_sessions($sess->id, att_sessions_page_params::ACTION_DELETE); - $title = get_string('deletesession','attforblock'); - $actions .= $this->output->action_icon($url, new pix_icon('t/delete', $title)); - } + + $dta = $this->construct_date_time_actions($sessdata, $sess); $table->data[$sess->id][] = $i; $table->data[$sess->id][] = $sess->groupid ? $sessdata->groups[$sess->groupid]->name : get_string('commonsession', 'attforblock'); - $table->data[$sess->id][] = $date; - $table->data[$sess->id][] = $time; - $table->data[$sess->id][] = $desc; - $table->data[$sess->id][] = $actions; + $table->data[$sess->id][] = $dta['date']; + $table->data[$sess->id][] = $dta['time']; + $table->data[$sess->id][] = empty($sess->description) ? get_string('nodescription', 'attforblock') : $sess->description; + $table->data[$sess->id][] = $dta['actions']; $table->data[$sess->id][] = html_writer::checkbox('sessid', $sess->id, false); } return html_writer::table($table); } + private function construct_date_time_actions(attforblock_sessions_manage_data $sessdata, $sess) { + $actions = ''; + + $date = userdate($sess->sessdate, get_string('strftimedmyw', 'attforblock')); + $starttime = userdate($sess->sessdate, get_string('strftimehm', 'attforblock')); + $endtime = userdate($sess->sessdate + $sess->duration, get_string('strftimehm', 'attforblock')); + $time = html_writer::tag('nobr', $starttime . ($sess->duration > 0 ? ' - ' . $endtime : '')); + if($sess->lasttaken > 0) + { + if ($sessdata->perm->can_change()) { + $url = $sessdata->url_take($sess->id, $sess->groupid); + $title = get_string('changeattendance','attforblock'); + + $date = html_writer::link($url, $date, array('title' => $title)); + $time = html_writer::link($url, $time, array('title' => $title)); + } else { + $date = '' . $date . ''; + $time = '' . $time . ''; + } + } else { + if ($sessdata->perm->can_take()) { + $url = $sessdata->url_take($sess->id, $sess->groupid); + $title = get_string('takeattendance','attforblock'); + $actions = $this->output->action_icon($url, new pix_icon('t/go', $title)); + } + } + if($sessdata->perm->can_manage()) { + $url = $sessdata->url_sessions($sess->id, att_sessions_page_params::ACTION_UPDATE); + $title = get_string('editsession','attforblock'); + $actions .= $this->output->action_icon($url, new pix_icon('t/edit', $title)); + + $url = $sessdata->url_sessions($sess->id, att_sessions_page_params::ACTION_DELETE); + $title = get_string('deletesession','attforblock'); + $actions .= $this->output->action_icon($url, new pix_icon('t/delete', $title)); + } + + return array('date' => $date, 'time' => $time, 'actions' => $actions); + } + protected function render_sess_control_table(attforblock_sessions_manage_data $sessdata) { $table = new html_table(); $table->attributes['class'] = ' '; @@ -248,31 +254,99 @@ class mod_attforblock_renderer extends plugin_renderer_base { } protected function render_attforblock_take_data(attforblock_take_data $takedata) { - $controls = ''; - if ($takedata->pageparams->grouptype == attforblock::SESSION_COMMON and - ($takedata->groupmode == VISIBLEGROUPS or - ($takedata->groupmode and $takedata->perm->can_access_all_groups()))) { - $controls .= groups_print_activity_menu($takedata->cm, $takedata->url(), true); - } + $controls = $this->render_attforblock_take_controls($takedata); - $controls = html_writer::tag('div', $controls); - - $table = $this->render_attforblock_take_list($takedata); + if ($takedata->pageparams->viewmode == att_take_page_params::SORTED_LIST) + $table = $this->render_attforblock_take_list($takedata); + else + $table = $this->render_attforblock_take_grid($takedata); $table .= html_writer::input_hidden_params($takedata->url()); $params = array( 'type' => 'submit', 'value' => get_string('save','attforblock')); $table .= html_writer::tag('center', html_writer::empty_tag('input', $params)); $table = html_writer::tag('form', $table, array('method' => 'post', 'action' => $takedata->url_path())); - return $table; + + return $controls.$table; } + protected function render_attforblock_take_controls(attforblock_take_data $takedata) { + $table = new html_table(); + $table->attributes['class'] = ' '; + + $table->data[0][] = $this->construct_take_session_info($takedata); + $table->data[0][] = $this->construct_take_controls($takedata); + + return $this->output->container(html_writer::table($table), 'generalbox takecontrols'); + } + + private function construct_take_session_info(attforblock_take_data $takedata) { + $sess = $takedata->sessioninfo; + $date = userdate($sess->sessdate, get_string('strftimedate')); + $starttime = userdate($sess->sessdate, get_string('strftimehm', 'attforblock')); + $endtime = userdate($sess->sessdate + $sess->duration, get_string('strftimehm', 'attforblock')); + $time = html_writer::tag('nobr', $starttime . ($sess->duration > 0 ? ' - ' . $endtime : '')); + $sessinfo = $date.' '.$time; + $sessinfo .= html_writer::empty_tag('br'); + $sessinfo .= html_writer::empty_tag('br'); + $sessinfo .= empty($sess->description) ? get_string('nodescription', 'attforblock') : $sess->description; + + return $sessinfo; + } + + private function construct_take_controls(attforblock_take_data $takedata) { + $controls = ''; + if ($takedata->pageparams->grouptype == attforblock::SESSION_COMMON and + ($takedata->groupmode == VISIBLEGROUPS or + ($takedata->groupmode and $takedata->perm->can_access_all_groups()))) { + $controls .= groups_print_activity_menu($takedata->cm, $takedata->url(), true); + } + + $controls .= html_writer::empty_tag('br'); + + $options = array( + att_take_page_params::SORTED_LIST => get_string('sortedlist','attforblock'), + att_take_page_params::SORTED_GRID => get_string('sortedgrid','attforblock')); + $select = new single_select($takedata->url(), 'viewmode', $options, $takedata->pageparams->viewmode, NULL); + $select->set_label(get_string('viewmode','attforblock')); + $select->class = 'singleselect inline'; + $controls .= $this->output->render($select); + + if ($takedata->pageparams->viewmode == att_take_page_params::SORTED_GRID) { + $options = array (1 => '1 '.get_string('column','attforblock'),'2 '.get_string('columns','attforblock'),'3 '.get_string('columns','attforblock'), + '4 '.get_string('columns','attforblock'),'5 '.get_string('columns','attforblock'),'6 '.get_string('columns','attforblock'), + '7 '.get_string('columns','attforblock'),'8 '.get_string('columns','attforblock'),'9 '.get_string('columns','attforblock'), + '10 '.get_string('columns','attforblock')); + $select = new single_select($takedata->url(), 'gridcols', $options, $takedata->pageparams->gridcols, NULL); + $select->class = 'singleselect inline'; + $controls .= $this->output->render($select); + } + + if (count($takedata->sessions4copy) > 1) { + $controls .= html_writer::empty_tag('br'); + $controls .= html_writer::empty_tag('br'); + + $options = array(); + foreach ($takedata->sessions4copy as $sess) { + $start = userdate($sess->sessdate, get_string('strftimehm', 'attforblock')); + $end = $sess->duration ? ' - '.userdate($sess->sessdate + $sess->duration, get_string('strftimehm', 'attforblock')) : ''; + $options[$sess->id] = $start . $end; + } + $select = new single_select($takedata->url(array(), array('copyfrom')), 'copyfrom', $options); + $select->set_label(get_string('copyfrom','attforblock')); + $select->class = 'singleselect inline'; + $controls .= $this->output->render($select); + } + + return $controls; + } + protected function render_attforblock_take_list(attforblock_take_data $takedata) { $table = new html_table(); $table->width = '0%'; $table->head = array( '#', - $this->get_fullname_head($takedata) + $this->construct_fullname_head($takedata) ); $table->align = array('left', 'left'); $table->size = array('20px', ''); @@ -285,56 +359,76 @@ class mod_attforblock_renderer extends plugin_renderer_base { $table->head[] = get_string('remarks', 'attforblock'); $table->align[] = 'center'; $table->size[] = '20px'; - $table->attributes['class'] = 'generaltable taketable'; + $table->attributes['class'] = 'generaltable takelist'; $i = 0; foreach ($takedata->users as $user) { $i++; $row = new html_table_row(); $row->cells[] = $i; - $row->cells[] = $this->output->render(new user_picture($user)).fullname($user); - if ($user->enrolmentstart > $takedata->sessioninfo->sessdate) { - $cell = new html_table_cell(get_string('enrolmentstart', 'attforblock', userdate($user->enrolmentstart, '%d.%m.%Y'))); - $cell->colspan = count($takedata->statuses) + 1; - $row->cells[] = $cell; - $row->attributes['class'] = 'userwithoutenrol'; - } - elseif ($user->enrolmentstatus == ENROL_USER_SUSPENDED) { - $cell = new html_table_cell(get_string('enrolmentsuspended', 'attforblock')); - $cell->colspan = count($takedata->statuses) + 1; + $fullname = html_writer::link($takedata->url_view(array('student' => $user->id)), fullname($user)); + $row->cells[] = $this->output->render(new user_picture($user)).$fullname; + + $celldata = $this->construct_take_user_controls($takedata, $user); + if (array_key_exists('colspan', $celldata)) { + $cell = new html_table_cell($celldata['text']); + $cell->colspan = $celldata['colspan']; $row->cells[] = $cell; - $row->attributes['class'] = 'userwithoutenrol'; - } - else { - if ($takedata->updatemode and !array_key_exists($user->id, $takedata->sessionlog)) - $row->attributes['class'] = 'userwithoutdata'; - - foreach ($takedata->statuses as $st) { - $params = array( - 'type' => 'radio', - 'name' => 'user'.$user->id, - 'class' => 'st'.$st->id, - 'value' => $st->id); - if (array_key_exists($user->id, $takedata->sessionlog) and $st->id == $takedata->sessionlog[$user->id]->statusid) - $params['checked'] = ''; - $row->cells[] = html_writer::empty_tag('input', $params); - } - $params = array( - 'type' => 'text', - 'name' => 'remarks'.$user->id); - if (array_key_exists($user->id, $takedata->sessionlog)) - $params['value'] = $takedata->sessionlog[$user->id]->remarks; - $row->cells[] = html_writer::empty_tag('input', $params); } - //$row->attributes['class'] = + else + $row->cells = array_merge($row->cells, $celldata['text']); + + if (array_key_exists('class', $celldata)) $row->attributes['class'] = $celldata['class']; $table->data[] = $row; } + return html_writer::table($table); + } + + protected function render_attforblock_take_grid(attforblock_take_data $takedata) { + $table = new html_table(); + for ($i=0; $i < $takedata->pageparams->gridcols; $i++) { + $table->align[] = 'center'; + $table->size[] = '110px'; + } + $table->attributes['class'] = 'generaltable takegrid'; + $table->headspan = $takedata->pageparams->gridcols; + $head = array(); + foreach ($takedata->statuses as $st) { + $head[] = html_writer::link("javascript:select_all_in(null, 'st" . $st->id . "', null);", $st->acronym, array('title' => get_string('setallstatusesto', 'attforblock', $st->description))); + } + $table->head[] = implode('  ', $head); + + $i = 0; + $row = new html_table_row(); + foreach($takedata->users as $user) { + $userpict = new user_picture($user); + $userpict->size = 100; + $celltext = $this->output->render($userpict); + $celltext .= html_writer::empty_tag('br'); + $fullname = html_writer::link($takedata->url_view(array('student' => $user->id)), fullname($user)); + $celltext .= html_writer::tag('span', $fullname, array('class' => 'fullname')); + $celltext .= html_writer::empty_tag('br'); + $celldata = $this->construct_take_user_controls($takedata, $user); + $celltext .= is_array($celldata['text']) ? implode('', $celldata['text']) : $celldata['text']; + + $cell = new html_table_cell($celltext); + if (array_key_exists('class', $celldata)) $cell->attributes['class'] = $celldata['class']; + $row->cells[] = $cell; + + $i++; + if ($i % $takedata->pageparams->gridcols == 0) { + $table->data[] = $row; + $row = new html_table_row(); + } + } + if ($i % $takedata->pageparams->gridcols > 0) $table->data[] = $row; + return html_writer::table($table); } - private function get_fullname_head(attforblock_take_data $takedata) { + private function construct_fullname_head(attforblock_take_data $takedata) { global $CFG; if ($takedata->pageparams->sort == att_take_page_params::SORT_LASTNAME) @@ -356,5 +450,49 @@ class mod_attforblock_renderer extends plugin_renderer_base { return $fullnamehead; } + private function construct_take_user_controls(attforblock_take_data $takedata, $user) { + $celldata = array(); + if ($user->enrolmentstart > $takedata->sessioninfo->sessdate) { + $celldata['text'] = get_string('enrolmentstart', 'attforblock', userdate($user->enrolmentstart, '%d.%m.%Y')); + $celldata['colspan'] = count($takedata->statuses) + 1; + $celldata['class'] = 'userwithoutenrol'; + } + elseif ($user->enrolmentstatus == ENROL_USER_SUSPENDED) { + $celldata['text'] = get_string('enrolmentsuspended', 'attforblock'); + $celldata['colspan'] = count($takedata->statuses) + 1; + $celldata['class'] = 'userwithoutenrol'; + } + else { + if ($takedata->updatemode and !array_key_exists($user->id, $takedata->sessionlog)) + $celldata['class'] = 'userwithoutdata'; + + $celldata['text'] = array(); + foreach ($takedata->statuses as $st) { + $params = array( + 'type' => 'radio', + 'name' => 'user'.$user->id, + 'class' => 'st'.$st->id, + 'value' => $st->id); + if (array_key_exists($user->id, $takedata->sessionlog) and $st->id == $takedata->sessionlog[$user->id]->statusid) + $params['checked'] = ''; + + $input = html_writer::empty_tag('input', $params); + if ($takedata->pageparams->viewmode == att_take_page_params::SORTED_LIST) + $celldata['text'][] = $input; + else { + $celldata['text'][] = html_writer::tag('nobr', $input . $st->acronym); + } + } + $params = array( + 'type' => 'text', + 'name' => 'remarks'.$user->id); + if (array_key_exists($user->id, $takedata->sessionlog)) + $params['value'] = $takedata->sessionlog[$user->id]->remarks; + $celldata['text'][] = html_writer::empty_tag('input', $params); + } + + return $celldata; + } + } ?> diff --git a/styles.css b/styles.css index e1f410e..53c684d 100644 --- a/styles.css +++ b/styles.css @@ -39,36 +39,66 @@ color: red; } -.path-mod-attforblock .taketable td { +.path-mod-attforblock .takelist td { vertical-align: middle; } -.path-mod-attforblock .taketable .userpicture { +.path-mod-attforblock .takelist .userpicture { margin:0 3px; vertical-align:middle; } -.path-mod-attforblock #mod-attforblock-attendances table.controls { +.path-mod-attforblock .takegrid input { + margin: 0px 3px 0px 6px; +} + +.path-mod-attforblock .takegrid .fullname { + font-size: 0.8em; +} + +.path-mod-attforblock table.controls { width: 100%; text-align: center; } -.path-mod-attforblock #mod-attforblock-attendances table.controls tr { +.path-mod-attforblock table.controls tr { vertical-align: top; } -.path-mod-attforblock #mod-attforblock-attendances table.controls td.right, -.path-mod-attforblock #mod-attforblock-attendances table.controls td.left { +.path-mod-attforblock table.controls td.right, +.path-mod-attforblock table.controls td.left { padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; } -.path-mod-attforblock #mod-attforblock-attendances table.controls .right { +.path-mod-attforblock table.controls .right { text-align: right; } /* for IE7*/ .path-mod-attforblock .filtercontrols td { padding:6px; } + +.path-mod-attforblock .takecontrols { + width: 800px; + margin: 0px auto 20px auto; +} +.path-mod-attforblock .takecontrols table{ + margin: 0px auto; +} +.path-mod-attforblock .takecontrols .c0 { + width: 500px; + text-align: left; +} +.path-mod-attforblock .takecontrols .c1 { + text-align: right; +} + +.path-mod-attforblock .inline, +.path-mod-attforblock .inline form, +.path-mod-attforblock .inline div { + display: inline; +} + diff --git a/take.php b/take.php index d7a1469..154c5fe 100644 --- a/take.php +++ b/take.php @@ -11,7 +11,7 @@ $pageparams->grouptype = required_param('grouptype', PARAM_INT); $pageparams->group = optional_param('group', null, PARAM_INT); $pageparams->sort = optional_param('sort', null, PARAM_INT); $pageparams->copyfrom = optional_param('copyfrom', null, PARAM_INT); -$pageparams->view_mode = optional_param('view', null, PARAM_INT); +$pageparams->viewmode = optional_param('viewmode', null, PARAM_INT); $pageparams->gridcols = optional_param('gridcols', null, PARAM_INT); $cm = get_coursemodule_from_id('attforblock', $id, 0, false, MUST_EXIST); diff --git a/view.php b/view.php index f88fa30..c916119 100644 --- a/view.php +++ b/view.php @@ -13,7 +13,7 @@ require_once(dirname(__FILE__).'/../../config.php'); require_once(dirname(__FILE__).'/locallib.php'); $id = required_param('id', PARAM_INT); // Course Module ID, or -$studentid = optional_param('student', 0, PARAM_INT); +$student = optional_param('student', 0, PARAM_INT); $printing = optional_param('printing', 0, PARAM_INT); $mode = optional_param('mode', 'thiscourse', PARAM_ALPHA); $view = optional_param('view', NULL, PARAM_INT); // which page to show