AutorÃa | Ultima modificación | Ver Log |
<?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/>.require_once("../../config.php");global $DB, $PAGE, $OUTPUT;// Input params.$courseid = required_param('courseid', PARAM_INT);$instanceid = required_param('instanceid', PARAM_INT);// Require course login.$course = $DB->get_record("course", array("id" => $courseid), '*', MUST_EXIST);require_course_login($course);// Require capability to use this plugin in block context.$context = context_block::instance($instanceid);require_capability('block/dedication:use', $context);require_once('dedication_lib.php');// Optional params from request or default values.$action = optional_param('action', 'all', PARAM_ALPHANUM);$id = optional_param('id', 0, PARAM_INT);$download = optional_param('download', false, PARAM_BOOL);// Current url.$pageurl = new moodle_url('/blocks/dedication/dedication.php');$pageurl->params(array('courseid' => $courseid,'instanceid' => $instanceid,'action' => $action,'id' => $id,));// Page format.$PAGE->set_context($context);$PAGE->set_pagelayout('report');$PAGE->set_pagetype('course-view-' . $course->format);$PAGE->navbar->add(get_string('pluginname', 'block_dedication'), new moodle_url('/blocks/dedication/dedication.php', array('courseid' => $courseid, 'instanceid' => $instanceid)));$PAGE->set_url($pageurl);$PAGE->set_title(get_string('pagetitle', 'block_dedication', $course->shortname));$PAGE->set_heading($course->fullname);// Load libraries.require_once('dedication_form.php');// Load calculate params from form, request or set default values.$mform = new dedication_block_selection_form($pageurl, null, 'get');if ($mform->is_submitted()) {// Params from form post.$formdata = $mform->get_data();$mintime = $formdata->mintime;$maxtime = $formdata->maxtime;$limit = $formdata->limit;} else {// Params from request or default values.$mintime = optional_param('mintime', $course->startdate, PARAM_INT);$maxtime = optional_param('maxtime', time(), PARAM_INT);$limit = optional_param('limit', BLOCK_DEDICATION_DEFAULT_SESSION_LIMIT, PARAM_INT);$mform->set_data(array('mintime' => $mintime, 'maxtime' => $maxtime, 'limit' => $limit));}// Url with params for links inside tables.$pageurl->params(array('mintime' => $mintime,'maxtime' => $maxtime,'limit' => $limit,));// Object to store view data.$view = new stdClass();$view->header = array();$tablestyles = block_dedication_utils::get_table_styles();$view->table = new html_table();$view->table->attributes = array('class' => $tablestyles['table_class'] . " table-$action");switch ($action) {case 'user':$userid = required_param('id', PARAM_INT);$user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);if (!is_enrolled(context_course::instance($course->id), $user)) {print_error('usernotincourse');}$dm = new block_dedication_manager($course, $mintime, $maxtime, $limit);if ($download) {$dm->download_user_dedication($user);exit;}// Table formatting & total count.$totaldedication = 0;$rows = $dm->get_user_dedication($user);foreach ($rows as $index => $row) {$totaldedication += $row->dedicationtime;$rows[$index] = array(userdate($row->start_date),block_dedication_utils::format_dedication($row->dedicationtime),block_dedication_utils::format_ips($row->ips),);}$view->header[] = get_string('userdedication', 'block_dedication', $OUTPUT->user_picture($user, array('courseid' => $course->id)) . fullname($user));$view->header[] = get_string('period', 'block_dedication', (object) array('mintime' => userdate($mintime), 'maxtime' => userdate($maxtime)));$view->header[] = get_string('perioddiff', 'block_dedication', format_time($maxtime - $mintime));$view->header[] = get_string('totaldedication', 'block_dedication', block_dedication_utils::format_dedication($totaldedication));$view->header[] = get_string('meandedication', 'block_dedication', block_dedication_utils::format_dedication(count($rows) ? $totaldedication / count($rows) : 0));$view->table->head = array(get_string('sessionstart', 'block_dedication'), get_string('sessionduration', 'block_dedication'), 'IP');$view->table->data = $rows;break;case 'group':case 'all':default:$groups = groups_get_all_groups($course->id);if ($action == 'group') {$groupid = required_param('id', PARAM_INT);if (groups_group_exists($groupid)) {$students = groups_get_members($groupid);} else {// TODO: PUT ERROR STRING NO GROUP.}} else {// Get all students in this course or ordered by group.if ($course->groupmode == NOGROUPS) {$students = get_enrolled_users(context_course::instance($course->id));} else {$students = array();foreach ($groups as $group) {$members = groups_get_members($group->id);$students = array_replace($students, $members);}// Empty groups or missconfigured, get all students anyway.if (!$students) {$students = get_enrolled_users(context_course::instance($course->id));}}}if (!$students) {print_error('noparticipants');}$dm = new block_dedication_manager($course, $mintime, $maxtime, $limit);$rows = $dm->get_students_dedication($students);if ($download) {$dm->download_students_dedication($rows);exit;}// Table formatting & total count.$totaldedication = 0;foreach ($rows as $index => $row) {$totaldedication += $row->dedicationtime;$userurl = new moodle_url($pageurl, array('action' => 'user', 'id' => $row->user->id));$groupurl = new moodle_url($pageurl, array('action' => 'group', 'id' => $row->groupid));$rows[$index] = array($OUTPUT->user_picture($row->user, array('courseid' => $course->id)),html_writer::link($userurl, $row->user->firstname),html_writer::link($userurl, $row->user->lastname),html_writer::link($groupurl, isset($groups[$row->groupid]) ? $groups[$row->groupid]->name : ''),block_dedication_utils::format_dedication($row->dedicationtime),$row->connectionratio);}if ($action == 'group') {$view->header[] = get_string('dedicationgroup', 'block_dedication', $groups[$groupid]->name);} else {$view->header[] = get_string('dedicationall', 'block_dedication');}$view->header[] = get_string('period', 'block_dedication', (object) array('mintime' => userdate($mintime), 'maxtime' => userdate($maxtime)));$view->header[] = get_string('perioddiff', 'block_dedication', format_time($maxtime - $mintime));$view->header[] = get_string('totaldedication', 'block_dedication', block_dedication_utils::format_dedication($totaldedication));$view->header[] = get_string('meandedication', 'block_dedication', block_dedication_utils::format_dedication(count($rows) ? $totaldedication / count($rows) : 0));$view->table->head = array('', get_string('firstname'), get_string('lastname'), get_string('group'),get_string('dedicationrow', 'block_dedication'), get_string('connectionratiorow', 'block_dedication'));$view->table->data = $rows;break;}// START PAGE: layout, headers, title, boxes...echo $OUTPUT->header();// Form.$mform->display();echo $OUTPUT->box_start();foreach ($view->header as $header) {echo $OUTPUT->heading($header, 4);}// Download button.echo html_writer::start_tag('div', array('class' => 'download-dedication'));echo html_writer::start_tag('p');echo $OUTPUT->single_button(new moodle_url($pageurl, array('download' => true)), get_string('downloadexcel'), 'get');echo html_writer::end_tag('p');echo html_writer::end_tag('div');// Format table headers if they exists.if (!empty($view->table->head)) {$headers = array();foreach ($view->table->head as $header) {$cell = new html_table_cell($header);$cell->style = $tablestyles['header_style'];$headers[] = $cell;}$view->table->head = $headers;}echo html_writer::table($view->table);// END PAGE.echo $OUTPUT->box_end();echo $OUTPUT->footer();