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/>./*** Configurable Reports* A Moodle block for creating Configurable Reports* @package blocks* @author: Juan leyva <http://www.twitter.com/jleyvadelgado>* @date: 2009*/require_once("../../config.php");require_once($CFG->dirroot."/blocks/configurable_reports/locallib.php");$id = optional_param('id', 0, PARAM_INT);$courseid = optional_param('courseid', SITEID, PARAM_INT);$delete = optional_param('delete', 0, PARAM_BOOL);$confirm = optional_param('confirm', 0, PARAM_BOOL);$show = optional_param('show', 0, PARAM_BOOL);$hide = optional_param('hide', 0, PARAM_BOOL);$duplicate = optional_param('duplicate', 0, PARAM_BOOL);$report = null;if ($id) {$courseid = $DB->get_field('block_configurable_reports', 'courseid', ['id' => $id]);}if (!$course = $DB->get_record('course', ['id' => $courseid]) ) {print_error('nosuchcourseid', 'block_configurable_reports');}// Force user login in course (SITE or Course).if ($course->id == SITEID) {require_login();$context = context_system::instance();} else {require_login($course->id);$context = context_course::instance($course->id);}$hasmanagereportcap = has_capability('block/configurable_reports:managereports', $context);if (!$hasmanagereportcap && !has_capability('block/configurable_reports:manageownreports', $context)) {print_error('badpermissions', 'block_configurable_reports');}$PAGE->set_context($context);$PAGE->set_pagelayout('incourse');if ($id) {if (!$report = $DB->get_record('block_configurable_reports', ['id' => $id])) {print_error('reportdoesnotexists', 'block_configurable_reports');}if (!$hasmanagereportcap && $report->ownerid != $USER->id) {print_error('badpermissions', 'block_configurable_reports');}$title = format_string($report->name);$courseid = $report->courseid;if (!$course = $DB->get_record('course', ['id' => $courseid])) {print_error('nosuchcourseid', 'block_configurable_reports');}require_once($CFG->dirroot.'/blocks/configurable_reports/report.class.php');require_once($CFG->dirroot.'/blocks/configurable_reports/reports/'.$report->type.'/report.class.php');$reportclassname = 'report_'.$report->type;$reportclass = new $reportclassname($report->id);$PAGE->set_url('/blocks/configurable_reports/editreport.php', ['id' => $id]);} else {$title = get_string('newreport', 'block_configurable_reports');$PAGE->set_url('/blocks/configurable_reports/editreport.php', null);}if ($report) {$title = format_string($report->name);} else {$title = get_string('report', 'block_configurable_reports');}$courseurl = new \moodle_url($CFG->wwwroot.'/course/view.php', ['id' => $courseid]);$PAGE->navbar->add($course->shortname, $courseurl);if (!empty($report->courseid)) {$params = ['courseid' => $report->courseid];} else {$params = ['courseid' => $courseid];}$managereporturl = new \moodle_url($CFG->wwwroot.'/blocks/configurable_reports/managereport.php', $params);$PAGE->navbar->add(get_string('managereports', 'block_configurable_reports'), $managereporturl);$PAGE->navbar->add($title);// Common actions.if (($show || $hide) && confirm_sesskey()) {$visible = ($show) ? 1 : 0;if (!$DB->set_field('block_configurable_reports', 'visible', $visible, ['id' => $report->id])) {print_error('cannotupdatereport', 'block_configurable_reports');}$action = ($visible) ? 'showed' : 'hidden';cr_add_to_log($report->courseid, 'configurable_reports', 'report '.$action, '/block/configurable_reports/editreport.php?id='.$report->id, $report->id);header("Location: $CFG->wwwroot/blocks/configurable_reports/managereport.php?courseid=$courseid");die;}if ($duplicate && confirm_sesskey()) {$newreport = new stdclass();$newreport = $report;unset($newreport->id);$newreport->name = get_string('copyasnoun').' '.$newreport->name;$newreport->summary = $newreport->summary;if (!$newreportid = $DB->insert_record('block_configurable_reports', $newreport)) {print_error('cannotduplicate', 'block_configurable_reports');}cr_add_to_log($newreport->courseid, 'configurable_reports', 'report duplicated', '/block/configurable_reports/editreport.php?id='.$newreportid, $id);header("Location: $CFG->wwwroot/blocks/configurable_reports/managereport.php?courseid=$courseid");die;}if ($delete && confirm_sesskey()) {if (!$confirm) {$PAGE->set_title($title);$PAGE->set_heading( $title);$PAGE->set_cacheable( true);echo $OUTPUT->header();$message = get_string('confirmdeletereport', 'block_configurable_reports');$optionsyes = ['id' => $report->id, 'delete' => $delete, 'sesskey' => sesskey(), 'confirm' => 1];$optionsno = [];$buttoncontinue = new single_button(new moodle_url('editreport.php', $optionsyes), get_string('yes'), 'get');$buttoncancel = new single_button(new moodle_url('managereport.php', $optionsno), get_string('no'), 'get');echo $OUTPUT->confirm($message, $buttoncontinue, $buttoncancel);echo $OUTPUT->footer();exit;} else {if ($DB->delete_records('block_configurable_reports', ['id' => $report->id])) {cr_add_to_log($report->courseid, 'configurable_reports', 'report deleted', '/block/configurable_reports/editreport.php?id='.$report->id, $report->id);}header("Location: $CFG->wwwroot/blocks/configurable_reports/managereport.php?courseid=$courseid");die;}}require_once('editreport_form.php');if (!empty($report)) {$editform = new report_edit_form('editreport.php', compact('report', 'courseid', 'context'));} else {$editform = new report_edit_form('editreport.php', compact('courseid', 'context'));}if (!empty($report)) {$export = explode(',', $report->export);if (!empty($export)) {foreach ($export as $e) {$report->{'export_'.$e} = 1;}}$editform->set_data($report);}if ($editform->is_cancelled()) {if (!empty($report)) {redirect($CFG->wwwroot.'/blocks/configurable_reports/editreport.php?id='.$report->id);} else {redirect($CFG->wwwroot.'/blocks/configurable_reports/editreport.php');}} else if ($data = $editform->get_data()) {require_once($CFG->dirroot.'/blocks/configurable_reports/report.class.php');require_once($CFG->dirroot.'/blocks/configurable_reports/reports/'.$data->type.'/report.class.php');if (empty($report)) {$reportclassname = 'report_'.$data->type;} else {$reportclassname = 'report_'.$report->type;}$arraydata = (array) $data;$data->export = '';foreach ($arraydata as $key => $d) {if (strpos($key, 'export_') !== false) {$data->export .= str_replace('export_', '', $key).',';}}if (!isset($data->global)) {$data->global = 0;}if (!isset($data->jsordering)) {$data->jsordering = 0;}if (!isset($data->remote)) {$data->remote = 0;}if (!isset($data->cron)) {$data->cron = 0;}if (empty($report)) {$data->ownerid = $USER->id;$data->courseid = $courseid;$data->visible = 1;$data->components = '';// Extra check.if ($data->type == 'sql' && !has_capability('block/configurable_reports:managesqlreports', $context)) {print_error('nosqlpermissions');}if (!$lastid = $DB->insert_record('block_configurable_reports', $data)) {print_error('errorsavingreport', 'block_configurable_reports');} else {cr_add_to_log($courseid, 'configurable_reports', 'report created', '/block/configurable_reports/editreport.php?id='.$lastid, $data->name);$reportclass = new $reportclassname($lastid);redirect($CFG->wwwroot.'/blocks/configurable_reports/editcomp.php?id='.$lastid.'&comp='.$reportclass->components[0]);}} else {cr_add_to_log($report->courseid, 'configurable_reports', 'edit', '/block/configurable_reports/editreport.php?id='.$id, $report->name);$reportclass = new $reportclassname($data->id);$data->type = $report->type;if (!$DB->update_record('block_configurable_reports', $data)) {print_error('errorsavingreport', 'block_configurable_reports');} else {redirect($CFG->wwwroot.'/blocks/configurable_reports/editcomp.php?id='.$data->id.'&comp='.$reportclass->components[0]);}}}$PAGE->set_context($context);$PAGE->set_pagelayout('incourse');$PAGE->set_title($title);$PAGE->set_heading( $title);$PAGE->set_cacheable( true);echo $OUTPUT->header();if ($id) {$currenttab = 'report';include('tabs.php');}$editform->display();echo $OUTPUT->footer();