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
 * Event monitor data generator
19
 *
20
 * @package    tool_monitor
21
 * @category   test
22
 * @copyright  2014 onwards Simey Lameze <simey@moodle.com>
23
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24
 */
25
 
26
defined('MOODLE_INTERNAL') || die();
27
 
28
/**
29
 * Event monitor data generator class
30
 *
31
 * @since       Moodle 2.8
32
 * @package     tool_monitor
33
 * @category    test
34
 * @copyright   2014 onwards Simey Lameze <simey@moodle.com>
35
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36
 */
37
class tool_monitor_generator extends testing_module_generator {
38
 
39
    /**
40
     * @var int keep track of how many rules have been created.
41
     */
42
    protected $rulecount;
43
 
44
    /**
45
     * Function to generate rule data.
46
     *
47
     * @param \stdClass|array $record data to insert as rule entry.
48
     *
49
     * @return \tool_monitor\rule An instance of rule class.
50
     */
51
    public function create_rule($record = null) {
52
        global $USER;
53
 
54
        $this->rulecount++;
55
        $i = $this->rulecount;
56
        $now = time();
57
        $record = (object)(array)$record;
58
 
59
        if (!isset($record->userid)) {
60
            $record->userid = $USER->id;
61
        }
62
        if (!isset($record->courseid)) {
63
            $record->courseid = 0;
64
        }
65
        if (!isset($record->name)) {
66
            $record->name = 'Test rule ' . $i;
67
        }
68
        if (!isset($record->description)) {
69
            $record->description = 'Rule description ' . $i;
70
        }
71
        if (!isset($record->descriptionformat)) {
72
            $record->descriptionformat = FORMAT_HTML;
73
        }
74
        if (!isset($record->frequency)) {
75
            $record->frequency = 5;
76
        }
77
        if (!isset($record->minutes)) {
78
            $record->minutes = 5;
79
        }
80
        if (!isset($record->template)) {
81
            $record->template = 'Rule message template ' . $i;
82
        }
83
        if (!isset($record->templateformat)) {
84
            $record->templateformat = FORMAT_HTML;
85
        }
86
        if (!isset($record->timewindow)) {
87
            $record->timewindow = $record->minutes * 60;
88
        }
89
        if (!isset($record->timecreated)) {
90
            $record->timecreated = $now;
91
        }
92
        if (!isset($record->timemodified)) {
93
            $record->timemodified = $now;
94
        }
95
        if (!isset($record->plugin)) {
96
            $record->plugin = 'core';
97
        }
98
        if (!isset($record->eventname)) {
99
            $record->eventname = '\core\event\blog_entry_created';
100
        }
101
 
102
        unset($record->minutes); // Remove the minutes shortcut to the timewindow.
103
        return \tool_monitor\rule_manager::add_rule($record);
104
    }
105
 
106
    /**
107
     * Function to generate subscription data.
108
     *
109
     * @throws coding_exception if $record->ruleid or $record->userid not present.
110
     * @param \stdClass|array $record data to insert as subscription entry.
111
     *
112
     * @return \tool_monitor\subscription An instance of the subscription class.
113
     */
114
    public function create_subscription($record = null) {
115
 
116
        if (!isset($record->timecreated)) {
117
            $record->timecreated = time();
118
        }
119
        if (!isset($record->courseid)) {
120
            $record->courseid = 0;
121
        }
122
        if (!isset($record->ruleid)) {
123
            throw new coding_exception('$record->ruleid must be present in tool_monitor_generator::create_subscription()');
124
        }
125
        if (!isset($record->cmid)) {
126
            $record->cmid = 0;
127
        }
128
        if (!isset($record->userid)) {
129
            throw new coding_exception('$record->userid must be present in tool_monitor_generator::create_subscription()');
130
        }
131
 
132
        $sid = \tool_monitor\subscription_manager::create_subscription($record->ruleid, $record->courseid,
133
                $record->cmid, $record->userid);
134
        return \tool_monitor\subscription_manager::get_subscription($sid);
135
    }
136
 
137
    /**
138
     * Function to generate event entries.
139
     *
140
     * @param \stdClass|array $record data to insert as event entry.
141
     *
142
     * @return \stdClass $record An object representing the newly created event entry.
143
     */
144
    public function create_event_entries($record = null) {
145
        global $DB, $CFG;
146
 
147
        $record = (object)(array)$record;
148
        $context = \context_system::instance();
149
 
150
        if (!isset($record->eventname)) {
151
            $record->eventname = '\core\event\user_loggedin';
152
        }
153
        if (!isset($record->contextid)) {
154
            $record->contextid = $context->id;
155
        }
156
        if (!isset($record->contextlevel)) {
157
            $record->contextlevel = $context->contextlevel;
158
        }
159
        if (!isset($record->contextinstanceid)) {
160
            $record->contextinstanceid = $context->instanceid;
161
        }
162
        if (!isset($record->link)) {
163
            $record->link = $CFG->wwwroot . '/user/profile.php';
164
        }
165
        if (!isset($record->courseid)) {
166
            $record->courseid = 0;
167
        }
168
        if (!isset($record->timecreated)) {
169
            $record->timecreated = time();
170
        }
171
        $record->id = $DB->insert_record('tool_monitor_events', $record, true);
172
 
173
        return $record;
174
    }
175
 
176
    /**
177
     * Function to generate history data.
178
     *
179
     * @throws coding_exception if $record->sid or $record->userid not present.
180
     * @param \stdClass|array $record data to insert as history entry.
181
     *
182
     * @return \stdClass $record An object representing the newly created history entry.
183
     */
184
    public function create_history($record = null) {
185
        global $DB;
186
        $record = (object)(array)$record;
187
        if (!isset($record->sid)) {
188
            throw new coding_exception('subscription ID must be present in tool_monitor_generator::create_history() $record');
189
        }
190
        if (!isset($record->userid)) {
191
            throw new coding_exception('user ID must be present in tool_monitor_generator::create_history() $record');
192
        }
193
        if (!isset($record->timesent)) {
194
            $record->timesent = time();
195
        }
196
        $record->id = $DB->insert_record('tool_monitor_history', $record, true);
197
 
198
        return $record;
199
    }
200
}