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
 * Model logs table class.
19
 *
20
 * @package    tool_analytics
21
 * @copyright  2017 David Monllao {@link http://www.davidmonllao.com}
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
namespace tool_analytics\output;
26
 
27
defined('MOODLE_INTERNAL') || die;
28
require_once($CFG->libdir . '/tablelib.php');
29
 
30
/**
31
 * Model logs table class.
32
 *
33
 * @package    tool_analytics
34
 * @copyright  2017 David Monllao {@link http://www.davidmonllao.com}
35
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36
 */
37
class model_logs extends \table_sql {
38
 
39
    /**
40
     * @var \core_analytics\model
41
     */
42
    protected $model = null;
43
 
44
    /**
45
     * @var string|false
46
     */
47
    protected $evaluationmode = false;
48
 
49
    /**
50
     * Sets up the table_log parameters.
51
     *
52
     * @param string $uniqueid unique id of form.
53
     * @param \core_analytics\model $model
54
     */
55
    public function __construct($uniqueid, $model) {
56
        global $PAGE;
57
 
58
        parent::__construct($uniqueid);
59
 
60
        $this->model = $model;
61
 
62
        $this->set_attribute('class', 'modellog generaltable generalbox');
63
        $this->set_attribute('aria-live', 'polite');
64
 
65
        $this->define_columns(array('time', 'version', 'evaluationmode', 'indicators', 'timesplitting',
66
            'accuracy', 'info', 'usermodified'));
67
        $this->define_headers(array(
68
            get_string('time'),
69
            get_string('version'),
70
            get_string('evaluationmode', 'tool_analytics'),
71
            get_string('indicators', 'tool_analytics'),
72
            get_string('timesplittingmethod', 'analytics'),
73
            get_string('accuracy', 'tool_analytics'),
74
            get_string('info', 'tool_analytics'),
75
            get_string('fullnameuser'),
76
        ));
77
 
78
        $evaluationmodehelp = new \help_icon('evaluationmode', 'tool_analytics');
79
        $this->define_help_for_headers([null, null, $evaluationmodehelp, null, null, null, null, null]);
80
 
81
        $this->pageable(true);
82
        $this->collapsible(false);
83
        $this->sortable(false);
84
        $this->is_downloadable(false);
85
 
86
        $this->evaluationmode = optional_param('evaluationmode', false, PARAM_ALPHANUM);
87
        if ($this->evaluationmode && $this->evaluationmode != 'configuration' && $this->evaluationmode != 'trainedmodel') {
88
            $this->evaluationmode = '';
89
        }
90
 
91
        $this->define_baseurl($PAGE->url);
92
    }
93
 
94
    /**
95
     * Generate the version column.
96
     *
97
     * @param \stdClass $log log data.
98
     * @return string HTML for the version column
99
     */
100
    public function col_version($log) {
101
        $recenttimestr = get_string('strftimerecent', 'core_langconfig');
102
        return userdate($log->version, $recenttimestr);
103
    }
104
 
105
    /**
106
     * Generate the evaluation mode column.
107
     *
108
     * @param \stdClass $log log data.
109
     * @return string HTML for the evaluationmode column
110
     */
111
    public function col_evaluationmode($log) {
112
        return get_string('evaluationmodecol' . $log->evaluationmode, 'tool_analytics');
113
    }
114
    /**
115
     * Generate the time column.
116
     *
117
     * @param \stdClass $log log data.
118
     * @return string HTML for the time column
119
     */
120
    public function col_time($log) {
121
        $recenttimestr = get_string('strftimerecent', 'core_langconfig');
122
        return userdate($log->timecreated, $recenttimestr);
123
    }
124
 
125
    /**
126
     * Generate the indicators column.
127
     *
128
     * @param \stdClass $log log data.
129
     * @return string HTML for the indicators column
130
     */
131
    public function col_indicators($log) {
132
        $indicatorclasses = json_decode($log->indicators);
133
        $indicators = array();
134
        foreach ($indicatorclasses as $indicatorclass) {
135
            $indicator = \core_analytics\manager::get_indicator($indicatorclass);
136
            if ($indicator) {
137
                $indicators[] = $indicator->get_name();
138
            } else {
139
                debugging('Can\'t load ' . $indicatorclass . ' indicator', DEBUG_DEVELOPER);
140
            }
141
        }
142
        return '<ul><li>' . implode('</li><li>', $indicators) . '</li></ul>';
143
    }
144
 
145
    /**
146
     * Generate the context column.
147
     *
148
     * @param \stdClass $log log data.
149
     * @return string HTML for the context column
150
     */
151
    public function col_timesplitting($log) {
152
        $timesplitting = \core_analytics\manager::get_time_splitting($log->timesplitting);
153
        return $timesplitting->get_name();
154
    }
155
 
156
    /**
157
     * Generate the accuracy column.
158
     *
159
     * @param \stdClass $log log data.
160
     * @return string HTML for the accuracy column
161
     */
162
    public function col_accuracy($log) {
163
        return strval(round($log->score * 100, 2)) . '%';
164
    }
165
 
166
    /**
167
     * Generate the info column.
168
     *
169
     * @param \stdClass $log log data.
170
     * @return string HTML for the score column
171
     */
172
    public function col_info($log) {
173
        global $PAGE;
174
 
175
        if (empty($log->info) && empty($log->dir)) {
176
            return '';
177
        }
178
 
179
        $info = array();
180
        if (!empty($log->info)) {
181
            $info = json_decode($log->info);
182
        }
183
        if (!empty($log->dir)) {
184
            $info[] = get_string('predictorresultsin', 'tool_analytics', $log->dir);
185
        }
186
        $PAGE->requires->js_call_amd('tool_analytics/log_info', 'loadInfo', array($log->id, $info));
187
        return \html_writer::link('#', get_string('view'), array('data-model-log-id' => $log->id));
188
    }
189
 
190
    /**
191
     * Generate the usermodified column.
192
     *
193
     * @param \stdClass $log log data.
194
     * @return string HTML for the usermodified column
195
     */
196
    public function col_usermodified($log) {
197
        $user = \core_user::get_user($log->usermodified);
198
        return fullname($user);
199
    }
200
 
201
    /**
202
     * Query the logs table. Store results in the object for use by build_table.
203
     *
204
     * @param int $pagesize size of page for paginated displayed table.
205
     * @param bool $useinitialsbar do you want to use the initials bar.
206
     */
207
    public function query_db($pagesize, $useinitialsbar = true) {
208
        $total = count($this->model->get_logs());
209
        $this->pagesize($pagesize, $total);
210
        $this->rawdata = $this->model->get_logs($this->get_page_start(), $this->get_page_size());
211
 
212
        // Set initial bars.
213
        if ($useinitialsbar) {
214
            $this->initialbars($total > $pagesize);
215
        }
216
    }
217
}