~ubuntu-branches/ubuntu/utopic/moodle/utopic

« back to all changes in this revision

Viewing changes to admin/tool/uploadcourse/classes/tracker.php

  • Committer: Package Import Robot
  • Author(s): Thijs Kinkhorst
  • Date: 2014-05-12 16:10:38 UTC
  • mfrom: (36.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20140512161038-puyqf65k4e0s8ytz
Tags: 2.6.3-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 * Output tracker.
 
19
 *
 
20
 * @package    tool_uploadcourse
 
21
 * @copyright  2013 Frédéric Massart
 
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 
23
 */
 
24
 
 
25
defined('MOODLE_INTERNAL') || die();
 
26
require_once($CFG->libdir . '/weblib.php');
 
27
 
 
28
/**
 
29
 * Class output tracker.
 
30
 *
 
31
 * @package    tool_uploadcourse
 
32
 * @copyright  2013 Frédéric Massart
 
33
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 
34
 */
 
35
class tool_uploadcourse_tracker {
 
36
 
 
37
    /**
 
38
     * Constant to output nothing.
 
39
     */
 
40
    const NO_OUTPUT = 0;
 
41
 
 
42
    /**
 
43
     * Constant to output HTML.
 
44
     */
 
45
    const OUTPUT_HTML = 1;
 
46
 
 
47
    /**
 
48
     * Constant to output plain text.
 
49
     */
 
50
    const OUTPUT_PLAIN = 2;
 
51
 
 
52
    /**
 
53
     * @var array columns to display.
 
54
     */
 
55
    protected $columns = array('line', 'result', 'id', 'shortname', 'fullname', 'idnumber', 'status');
 
56
 
 
57
    /**
 
58
     * @var int row number.
 
59
     */
 
60
    protected $rownb = 0;
 
61
 
 
62
    /**
 
63
     * @var int chosen output mode.
 
64
     */
 
65
    protected $outputmode;
 
66
 
 
67
    /**
 
68
     * @var object output buffer.
 
69
     */
 
70
    protected $buffer;
 
71
 
 
72
    /**
 
73
     * Constructor.
 
74
     *
 
75
     * @param int $outputmode desired output mode.
 
76
     */
 
77
    public function __construct($outputmode = self::NO_OUTPUT) {
 
78
        $this->outputmode = $outputmode;
 
79
        if ($this->outputmode == self::OUTPUT_PLAIN) {
 
80
            $this->buffer = new progress_trace_buffer(new text_progress_trace());
 
81
        }
 
82
    }
 
83
 
 
84
    /**
 
85
     * Finish the output.
 
86
     *
 
87
     * @return void
 
88
     */
 
89
    public function finish() {
 
90
        if ($this->outputmode == self::NO_OUTPUT) {
 
91
            return;
 
92
        }
 
93
 
 
94
        if ($this->outputmode == self::OUTPUT_HTML) {
 
95
            echo html_writer::end_tag('table');
 
96
        }
 
97
    }
 
98
 
 
99
    /**
 
100
     * Output the results.
 
101
     *
 
102
     * @param int $total total courses.
 
103
     * @param int $created count of courses created.
 
104
     * @param int $updated count of courses updated.
 
105
     * @param int $deleted count of courses deleted.
 
106
     * @param int $errors count of errors.
 
107
     * @return void
 
108
     */
 
109
    public function results($total, $created, $updated, $deleted, $errors) {
 
110
        if ($this->outputmode == self::NO_OUTPUT) {
 
111
            return;
 
112
        }
 
113
 
 
114
        $message = array(
 
115
            get_string('coursestotal', 'tool_uploadcourse', $total),
 
116
            get_string('coursescreated', 'tool_uploadcourse', $created),
 
117
            get_string('coursesupdated', 'tool_uploadcourse', $updated),
 
118
            get_string('coursesdeleted', 'tool_uploadcourse', $deleted),
 
119
            get_string('courseserrors', 'tool_uploadcourse', $errors)
 
120
        );
 
121
 
 
122
        if ($this->outputmode == self::OUTPUT_PLAIN) {
 
123
            foreach ($message as $msg) {
 
124
                $this->buffer->output($msg);
 
125
            }
 
126
        } else if ($this->outputmode == self::OUTPUT_HTML) {
 
127
            $buffer = new progress_trace_buffer(new html_list_progress_trace());
 
128
            foreach ($message as $msg) {
 
129
                $buffer->output($msg);
 
130
            }
 
131
            $buffer->finished();
 
132
        }
 
133
    }
 
134
 
 
135
    /**
 
136
     * Output one more line.
 
137
     *
 
138
     * @param int $line line number.
 
139
     * @param bool $outcome success or not?
 
140
     * @param array $status array of statuses.
 
141
     * @param array $data extra data to display.
 
142
     * @return void
 
143
     */
 
144
    public function output($line, $outcome, $status, $data) {
 
145
        global $OUTPUT;
 
146
        if ($this->outputmode == self::NO_OUTPUT) {
 
147
            return;
 
148
        }
 
149
 
 
150
        if ($this->outputmode == self::OUTPUT_PLAIN) {
 
151
            $message = array(
 
152
                $line,
 
153
                $outcome ? 'OK' : 'NOK',
 
154
                isset($data['id']) ? $data['id'] : '',
 
155
                isset($data['shortname']) ? $data['shortname'] : '',
 
156
                isset($data['fullname']) ? $data['fullname'] : '',
 
157
                isset($data['idnumber']) ? $data['idnumber'] : ''
 
158
            );
 
159
            $this->buffer->output(implode("\t", $message));
 
160
            if (!empty($status)) {
 
161
                foreach ($status as $st) {
 
162
                    $this->buffer->output($st, 1);
 
163
                }
 
164
            }
 
165
        } else if ($this->outputmode == self::OUTPUT_HTML) {
 
166
            $ci = 0;
 
167
            $this->rownb++;
 
168
            if (is_array($status)) {
 
169
                $status = implode(html_writer::empty_tag('br'), $status);
 
170
            }
 
171
            if ($outcome) {
 
172
                $outcome = $OUTPUT->pix_icon('i/valid', '');
 
173
            } else {
 
174
                $outcome = $OUTPUT->pix_icon('i/invalid', '');
 
175
            }
 
176
            echo html_writer::start_tag('tr', array('class' => 'r' . $this->rownb % 2));
 
177
            echo html_writer::tag('td', $line, array('class' => 'c' . $ci++));
 
178
            echo html_writer::tag('td', $outcome, array('class' => 'c' . $ci++));
 
179
            echo html_writer::tag('td', isset($data['id']) ? $data['id'] : '', array('class' => 'c' . $ci++));
 
180
            echo html_writer::tag('td', isset($data['shortname']) ? $data['shortname'] : '', array('class' => 'c' . $ci++));
 
181
            echo html_writer::tag('td', isset($data['fullname']) ? $data['fullname'] : '', array('class' => 'c' . $ci++));
 
182
            echo html_writer::tag('td', isset($data['idnumber']) ? $data['idnumber'] : '', array('class' => 'c' . $ci++));
 
183
            echo html_writer::tag('td', $status, array('class' => 'c' . $ci++));
 
184
            echo html_writer::end_tag('tr');
 
185
        }
 
186
    }
 
187
 
 
188
    /**
 
189
     * Start the output.
 
190
     *
 
191
     * @return void
 
192
     */
 
193
    public function start() {
 
194
        if ($this->outputmode == self::NO_OUTPUT) {
 
195
            return;
 
196
        }
 
197
 
 
198
        if ($this->outputmode == self::OUTPUT_PLAIN) {
 
199
            $columns = array_flip($this->columns);
 
200
            unset($columns['status']);
 
201
            $columns = array_flip($columns);
 
202
            $this->buffer->output(implode("\t", $columns));
 
203
        } else if ($this->outputmode == self::OUTPUT_HTML) {
 
204
            $ci = 0;
 
205
            echo html_writer::start_tag('table', array('class' => 'generaltable boxaligncenter flexible-wrap',
 
206
                'summary' => get_string('uploadcoursesresult', 'tool_uploadcourse')));
 
207
            echo html_writer::start_tag('tr', array('class' => 'heading r' . $this->rownb));
 
208
            echo html_writer::tag('th', get_string('csvline', 'tool_uploadcourse'),
 
209
                array('class' => 'c' . $ci++, 'scope' => 'col'));
 
210
            echo html_writer::tag('th', get_string('result', 'tool_uploadcourse'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
211
            echo html_writer::tag('th', get_string('id', 'tool_uploadcourse'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
212
            echo html_writer::tag('th', get_string('shortname'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
213
            echo html_writer::tag('th', get_string('fullname'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
214
            echo html_writer::tag('th', get_string('idnumber'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
215
            echo html_writer::tag('th', get_string('status'), array('class' => 'c' . $ci++, 'scope' => 'col'));
 
216
            echo html_writer::end_tag('tr');
 
217
        }
 
218
    }
 
219
 
 
220
}