Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Configurable Reports
19
 * A Moodle block for creating customizable reports
20
 * @package block_configurable_reports
21
 * @author David Pesce <davidpesce@gmail.com>
22
 * @date 2019
23
 */
24
 
25
require_once($CFG->dirroot.'/blocks/configurable_reports/plugin.class.php');
26
 
27
class plugin_percent extends plugin_base {
28
 
29
	public function init() {
30
		$this->form = true;
31
		$this->unique = false;
32
		$this->fullname = get_string('percent','block_configurable_reports');
33
		$this->reporttypes = array('courses','users','sql','timeline','categories');
34
	}
35
 
36
	public function summary($data) {
37
		global $CFG;
38
 
39
		if ($this->report->type != 'sql') {
40
			$components = cr_unserialize($this->report->components);
41
			if (!is_array($components) || empty($components['columns']['elements'])) {
42
				print_error('nocolumns');
43
			}
44
 
45
			$columns = $components['columns']['elements'];
46
			$i = 0;
47
			foreach ($columns as $c) {
48
				if ($i == $data->column) {
49
					return $c['summary'];
50
				}
51
				$i++;
52
			}
53
		} else {
54
			require_once($CFG->dirroot.'/blocks/configurable_reports/report.class.php');
55
			require_once($CFG->dirroot.'/blocks/configurable_reports/reports/'.$this->report->type.'/report.class.php');
56
 
57
			$reportclassname = 'report_'.$this->report->type;
58
			$reportclass = new $reportclassname($this->report);
59
 
60
			$components = cr_unserialize($this->report->components);
61
			$config = (isset($components['customsql']['config']))? $components['customsql']['config'] : new stdclass;
62
 
63
			if (isset($config->querysql)) {
64
				$sql =$config->querysql;
65
				$sql = $reportclass->prepare_sql($sql);
66
				if ($rs = $reportclass->execute_query($sql)) {
67
					foreach ($rs as $row) {
68
						$i = 0;
69
						foreach ($row as $colname=>$value) {
70
							if ($i == $data->column) {
71
								return str_replace('_', ' ', $colname);
72
							}
73
							$i++;
74
						}
75
						break;
76
					}
77
					$rs->close();
78
				}
79
			}
80
		}
81
 
82
		return '';
83
	}
84
 
85
	public function execute($rows) {
86
		$result = 0;
87
		$totalrows = 0;
88
		$resultrows = 0;
89
		foreach ($rows as $r) {
90
			$r = (is_numeric($r)) ? $r : 0;
91
			if ($r >= 1) {
92
			    $resultrows++;
93
			}
94
			$totalrows++;
95
		}
96
		if ($totalrows > 0) {
97
			$result = round(($resultrows / $totalrows) * 100, 2);
98
		}
99
		return $result . ' %';
100
	}
101
}