Skip to content
This repository has been archived by the owner on Jun 15, 2020. It is now read-only.

Commit

Permalink
Implemented take.php (previously attendance.php)
Browse files Browse the repository at this point in the history
  • Loading branch information
andreev-artem committed Jun 4, 2011
1 parent 2b3b13f commit 1ee0f2c
Show file tree
Hide file tree
Showing 6 changed files with 359 additions and 108 deletions.
80 changes: 70 additions & 10 deletions locallib.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -262,8 +263,8 @@ public function get_significant_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;
Expand Down Expand Up @@ -346,25 +347,75 @@ public function __construct(stdclass $dbrecord, stdclass $cm, stdclass $course,
}

/**
* 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);
}
Expand Down Expand Up @@ -400,7 +451,7 @@ public function url_manage() {
* @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);
}

Expand Down Expand Up @@ -436,11 +487,18 @@ public function url_take() {
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;

Expand Down Expand Up @@ -691,6 +749,8 @@ public function get_session_info($sessionid) {

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;
}
Expand Down
31 changes: 27 additions & 4 deletions renderables.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -297,23 +303,40 @@ public function __construct(attforblock $att) {
$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;
}
Expand Down
Loading

0 comments on commit 1ee0f2c

Please sign in to comment.