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 blocks
21
 * @author: Juan leyva <http://www.twitter.com/jleyvadelgado>
22
 * @date: 2009
23
 */
24
 
25
require_once($CFG->dirroot.'/blocks/configurable_reports/plugin.class.php');
26
 
27
class plugin_coursestats extends plugin_base{
28
 
29
    public function init() {
30
        $this->fullname = get_string('coursestats', 'block_configurable_reports');
31
        $this->type = 'undefined';
32
        $this->form = true;
33
        $this->reporttypes = array('courses');
34
    }
35
 
36
    public function summary($data) {
37
        return format_string($data->columname);
38
    }
39
 
40
    public function colformat($data) {
41
        $align = (isset($data->align)) ? $data->align : '';
42
        $size = (isset($data->size)) ? $data->size : '';
43
        $wrap = (isset($data->wrap)) ? $data->wrap : '';
44
        return array($align, $size, $wrap);
45
    }
46
 
47
    // Data -> Plugin configuration data.
48
    // Row -> Complet user row c->id, c->fullname, etc...
49
    public function execute($data, $row, $user, $courseid, $starttime = 0, $endtime = 0) {
50
        global $DB, $CFG;
51
 
52
        $stat = '--';
53
 
54
        $filterstarttime = optional_param('filter_starttime', 0, PARAM_RAW);
55
        $filterendtime = optional_param('filter_endtime', 0, PARAM_RAW);
56
 
57
        // Do not apply filters in timeline report (filters yet applied).
58
        if ($starttime && $endtime) {
59
            $filterstarttime = 0;
60
            $filterendtime = 0;
61
        }
62
 
63
        if ($filterstarttime && $filterendtime) {
64
            $filterstarttime = make_timestamp($filterstarttime['year'], $filterstarttime['month'], $filterstarttime['day']);
65
            $filterendtime = make_timestamp($filterendtime['year'], $filterendtime['month'], $filterendtime['day']);
66
        }
67
 
68
        $starttime = ($filterstarttime) ? $filterstarttime : $starttime;
69
        $endtime = ($filterendtime) ? $filterendtime : $endtime;
70
 
71
        $extrasql = "";
72
        $limit = 0;
73
 
74
        switch($data->stat){
75
            case 'activityview':
76
                $total = 'SUM(stat1)';
77
                $stattype = 'activity';
78
                $extrasql = " AND roleid IN (".implode(',', $data->roles).")";
79
                break;
80
            case 'activitypost':
81
                $total = 'SUM(stat2)';
82
                $stattype = 'activity';
83
                $extrasql = " AND roleid IN (".implode(',', $data->roles).")";
84
                break;
85
            case 'activeenrolments':
86
                $total = 'stat2';
87
                $stattype = 'enrolments';
88
                $extrasql = " ORDER BY timeend DESC";
89
                $limit = 1;
90
                break;
91
            case 'totalenrolments':
92
            default:
93
                $total = 'stat1';
94
                $stattype = 'enrolments';
95
                $extrasql = " ORDER BY timeend DESC";
96
                $limit = 1;
97
        }
98
        $sql = "SELECT $total as total FROM {stats_daily} WHERE stattype = ? AND courseid = ?";
99
        $params = array($stattype, $row->id);
100
 
101
        if ($starttime && $endtime) {
102
            $starttime = usergetmidnight($starttime) + 24 * 60 * 60;
103
            $endtime = usergetmidnight($endtime) + 24 * 60 * 60;
104
            $sql .= " AND timeend >= ? AND timeend <= ?";
105
            $params = array_merge($params, array($starttime, $endtime));
106
        }
107
 
108
        $sql .= $extrasql;
109
 
110
        if ($res = $DB->get_records_sql($sql, $params, 0, $limit)) {
111
            $res = array_shift($res);
112
            if ($res->total != null) {
113
                return $res->total;
114
            } else {
115
                return 0;
116
            }
117
        }
118
 
119
        return $stat;
120
    }
121
}
122