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 customizable reports* @package block_configurable_reports* @author David Pesce <davidpesce@gmail.com>* @date 2019*/require_once($CFG->dirroot.'/blocks/configurable_reports/plugin.class.php');class plugin_percent extends plugin_base {public function init() {$this->form = true;$this->unique = false;$this->fullname = get_string('percent','block_configurable_reports');$this->reporttypes = array('courses','users','sql','timeline','categories');}public function summary($data) {global $CFG;if ($this->report->type != 'sql') {$components = cr_unserialize($this->report->components);if (!is_array($components) || empty($components['columns']['elements'])) {print_error('nocolumns');}$columns = $components['columns']['elements'];$i = 0;foreach ($columns as $c) {if ($i == $data->column) {return $c['summary'];}$i++;}} else {require_once($CFG->dirroot.'/blocks/configurable_reports/report.class.php');require_once($CFG->dirroot.'/blocks/configurable_reports/reports/'.$this->report->type.'/report.class.php');$reportclassname = 'report_'.$this->report->type;$reportclass = new $reportclassname($this->report);$components = cr_unserialize($this->report->components);$config = (isset($components['customsql']['config']))? $components['customsql']['config'] : new stdclass;if (isset($config->querysql)) {$sql =$config->querysql;$sql = $reportclass->prepare_sql($sql);if ($rs = $reportclass->execute_query($sql)) {foreach ($rs as $row) {$i = 0;foreach ($row as $colname=>$value) {if ($i == $data->column) {return str_replace('_', ' ', $colname);}$i++;}break;}$rs->close();}}}return '';}public function execute($rows) {$result = 0;$totalrows = 0;$resultrows = 0;foreach ($rows as $r) {$r = (is_numeric($r)) ? $r : 0;if ($r >= 1) {$resultrows++;}$totalrows++;}if ($totalrows > 0) {$result = round(($resultrows / $totalrows) * 100, 2);}return $result . ' %';}}