Dan Marsden
8 years ago
6 changed files with 170 additions and 3 deletions
@ -0,0 +1,104 @@ |
|||||
|
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
|
/** |
||||
|
* Attendance course summary report. |
||||
|
* |
||||
|
* @package mod_attendance |
||||
|
* @copyright 2017 onwards Dan Marsden http://danmarsden.com |
||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
|
*/ |
||||
|
|
||||
|
require_once('../../config.php'); |
||||
|
require_once($CFG->dirroot.'/mod/attendance/lib.php'); |
||||
|
require_once($CFG->dirroot.'/mod/attendance/locallib.php'); |
||||
|
require_once($CFG->libdir.'/tablelib.php'); |
||||
|
require_once($CFG->libdir.'/coursecatlib.php'); |
||||
|
|
||||
|
$category = optional_param('category', 0, PARAM_INT); |
||||
|
$download = optional_param('download', '', PARAM_ALPHA); |
||||
|
$sort = optional_param('tsort', '', PARAM_ALPHA); |
||||
|
|
||||
|
require_login(); |
||||
|
if (empty($category)) { |
||||
|
$context = context_system::instance(); |
||||
|
$courses = array(); // Show all courses. |
||||
|
} else { |
||||
|
$context = context_coursecat::instance($category); |
||||
|
$coursecat = coursecat::get($category); |
||||
|
$courses = $coursecat->get_courses(array('recursive' => true, 'idonly' => true)); |
||||
|
} |
||||
|
// Check permissions. |
||||
|
require_capability('mod/attendance:viewsummaryreports', $context); |
||||
|
|
||||
|
$exportfilename = 'attendancecoursesummary.csv'; |
||||
|
|
||||
|
$PAGE->set_url('/mod/attendance/coursesummary.php', array('category' => $category)); |
||||
|
$PAGE->set_context(context_system::instance()); |
||||
|
$PAGE->set_heading($SITE->fullname); |
||||
|
|
||||
|
$table = new flexible_table('attendancecoursesummary'); |
||||
|
$table->define_baseurl($PAGE->url); |
||||
|
|
||||
|
if (!$table->is_downloading($download, $exportfilename)) { |
||||
|
echo $OUTPUT->header(); |
||||
|
echo $OUTPUT->heading(get_string('coursesummary', 'mod_attendance')); |
||||
|
if (empty($category)) { |
||||
|
// Only show tabs if displaying via the admin page. |
||||
|
$tabmenu = attendance_print_settings_tabs('coursesummary'); |
||||
|
echo $tabmenu; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$table->define_columns(array('course', 'percentage')); |
||||
|
$table->define_headers(array(get_string('course'), |
||||
|
get_string('averageattendance', 'attendance'))); |
||||
|
$table->sortable(true); |
||||
|
$table->no_sorting('course'); |
||||
|
$table->set_attribute('cellspacing', '0'); |
||||
|
$table->set_attribute('class', 'generaltable generalbox'); |
||||
|
$table->show_download_buttons_at(array(TABLE_P_BOTTOM)); |
||||
|
$table->setup(); |
||||
|
|
||||
|
// Work out direction of sort required. |
||||
|
$sortcolumns = $table->get_sort_columns(); |
||||
|
// Now do sorting if specified. |
||||
|
|
||||
|
$orderby = ' ORDER BY percentage ASC'; |
||||
|
if (!empty($sort)) { |
||||
|
$direction = ' DESC'; |
||||
|
if (!empty($sortcolumns[$sort]) && $sortcolumns[$sort] == SORT_ASC) { |
||||
|
$direction = ' ASC'; |
||||
|
} |
||||
|
$orderby = " ORDER BY $sort $direction"; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
$records = attendance_course_users_points($courses, $orderby); |
||||
|
foreach ($records as $record) { |
||||
|
if (!$table->is_downloading($download, $exportfilename)) { |
||||
|
$url = new moodle_url('/mod/attendance/index.php', array('id' => $record->courseid)); |
||||
|
$name = html_writer::link($url, $record->coursename); |
||||
|
} else { |
||||
|
$name = $record->coursename; |
||||
|
} |
||||
|
$table->add_data(array($name, round($record->percentage * 100)."%")); |
||||
|
} |
||||
|
$table->finish_output(); |
||||
|
|
||||
|
if (!$table->is_downloading()) { |
||||
|
echo $OUTPUT->footer(); |
||||
|
} |
Loading…
Reference in new issue