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_cuserfield extends plugin_base{
28
 
29
    public function init() {
30
        $this->fullname = get_string('cuserfield', 'block_configurable_reports');
31
        $this->reporttypes = array('users');
32
        $this->form = true;
33
    }
34
 
35
    public function summary($data) {
36
        global $DB;
37
 
38
        if (strpos($data->field, 'profile_') === 0) {
39
            $name = $DB->get_field('user_info_field', 'name', array('shortname' => str_replace('profile_', '', $data->field)));
40
            return $name .' '.$data->operator.' '.$data->value;
41
        }
42
        return get_string($data->field).' '.$data->operator.' '.$data->value;
43
 
44
    }
45
 
46
    // Data -> Plugin configuration data.
47
    public function execute($data, $user, $courseid) {
48
        global $DB;
49
 
50
        // TODO - Use $DB->sql_like().
51
        $ilike = " LIKE ";
52
 
53
        if (strpos($data->field, 'profile_') === 0) {
54
 
55
            if ($data->value == "%%CURRENTUSER%%") {
56
                $pfname = str_replace('profile_', '', $data->field);
57
                $data->value = $user->profile[$pfname];
58
            }
59
 
60
            if ($fieldid = $DB->get_field('user_info_field', 'id', ['shortname' => str_replace('profile_', '', $data->field)])) {
61
                switch($data->operator){
62
                    case 'LIKE % %':
63
                        $sql = "fieldid = $fieldid AND data $ilike ?";
64
                        $params = array("%$data->value%");
65
                        break;
66
                    default:
67
                        $sql = "fieldid = $fieldid AND data $data->operator ?";
68
                        $params = array($data->value);
69
                }
70
 
71
                if ($infodata = $DB->get_records_select('user_info_data', $sql, $params)) {
72
                    $finalusersid = array();
73
                    foreach ($infodata as $d) {
74
                        $finalusersid[] = $d->userid;
75
                    }
76
                    return $finalusersid;
77
                }
78
            }
79
        } else {
80
            if ($data->value == "%%CURRENTUSER%%") {
81
                $data->value = $user->{$data->field};
82
            }
83
 
84
            switch($data->operator) {
85
                case 'LIKE % %':    $sql = "$data->field $ilike ?";
86
                                    $params = array("%$data->value%");
87
                                    break;
88
                default:    $sql = "$data->field $data->operator ?";
89
                            $params = array($data->value);
90
            }
91
 
92
            $users = $DB->get_records_select('user', $sql, $params);
93
            if ($users) {
94
                return array_keys($users);
95
            }
96
        }
97
 
98
        return array();
99
    }
100
}