1 |
efrain |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
/// This page allows to edit entries categories for a particular instance of glossary
|
|
|
4 |
|
|
|
5 |
require_once("../../config.php");
|
|
|
6 |
require_once("lib.php");
|
|
|
7 |
|
|
|
8 |
$id = required_param('id', PARAM_INT); // Course Module ID, or
|
|
|
9 |
$usedynalink = optional_param('usedynalink', 0, PARAM_INT); // category ID
|
|
|
10 |
$confirm = optional_param('confirm', 0, PARAM_INT); // confirm the action
|
|
|
11 |
$name = optional_param('name', '', PARAM_CLEAN); // confirm the name
|
|
|
12 |
|
|
|
13 |
$action = optional_param('action', '', PARAM_ALPHA ); // what to do
|
|
|
14 |
$hook = optional_param('hook', '', PARAM_ALPHANUM); // category ID
|
|
|
15 |
$mode = optional_param('mode', '', PARAM_ALPHA); // cat
|
|
|
16 |
|
|
|
17 |
$action = strtolower($action);
|
|
|
18 |
|
|
|
19 |
$url = new moodle_url('/mod/glossary/editcategories.php', array('id'=>$id));
|
|
|
20 |
if ($usedynalink !== 0) {
|
|
|
21 |
$url->param('usedynalink', $usedynalink);
|
|
|
22 |
}
|
|
|
23 |
if ($confirm !== 0) {
|
|
|
24 |
$url->param('confirm', $confirm);
|
|
|
25 |
}
|
|
|
26 |
if ($name !== 'name') {
|
|
|
27 |
$url->param('name', $name);
|
|
|
28 |
}
|
|
|
29 |
if ($action !== 'action') {
|
|
|
30 |
$url->param('action', $action);
|
|
|
31 |
}
|
|
|
32 |
if ($hook !== 'hook') {
|
|
|
33 |
$url->param('hook', $hook);
|
|
|
34 |
}
|
|
|
35 |
if ($mode !== 'mode') {
|
|
|
36 |
$url->param('mode', $mode);
|
|
|
37 |
}
|
|
|
38 |
|
|
|
39 |
$PAGE->set_url($url);
|
|
|
40 |
|
|
|
41 |
if (! $cm = get_coursemodule_from_id('glossary', $id)) {
|
|
|
42 |
throw new \moodle_exception('invalidcoursemodule');
|
|
|
43 |
}
|
|
|
44 |
|
|
|
45 |
if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
|
|
|
46 |
throw new \moodle_exception('coursemisconf');
|
|
|
47 |
}
|
|
|
48 |
|
|
|
49 |
if (! $glossary = $DB->get_record("glossary", array("id"=>$cm->instance))) {
|
|
|
50 |
throw new \moodle_exception('invalidcoursemodule');
|
|
|
51 |
}
|
|
|
52 |
|
|
|
53 |
if ($hook > 0) {
|
|
|
54 |
if ($category = $DB->get_record("glossary_categories", array("id"=>$hook))) {
|
|
|
55 |
//Check it belongs to the same glossary
|
|
|
56 |
if ($category->glossaryid != $glossary->id) {
|
|
|
57 |
throw new \moodle_exception('invalidid', 'glossary');
|
|
|
58 |
}
|
|
|
59 |
} else {
|
|
|
60 |
throw new \moodle_exception('invalidcategoryid');
|
|
|
61 |
}
|
|
|
62 |
}
|
|
|
63 |
|
|
|
64 |
require_login($course, false, $cm);
|
|
|
65 |
|
|
|
66 |
$context = context_module::instance($cm->id);
|
|
|
67 |
require_capability('mod/glossary:managecategories', $context);
|
|
|
68 |
|
|
|
69 |
$strglossaries = get_string("modulenameplural", "glossary");
|
|
|
70 |
$strglossary = get_string("modulename", "glossary");
|
|
|
71 |
|
|
|
72 |
$PAGE->navbar->add(get_string("categories","glossary"),
|
|
|
73 |
new moodle_url('/mod/glossary/editcategories.php', array('id' => $cm->id,'mode' => 'cat')));
|
|
|
74 |
if (!empty($action)) {
|
|
|
75 |
$navaction = get_string(core_text::strtolower($action."category"), 'glossary');
|
|
|
76 |
$PAGE->navbar->add($navaction);
|
|
|
77 |
}
|
|
|
78 |
$PAGE->set_title($glossary->name);
|
|
|
79 |
$PAGE->set_heading($course->fullname);
|
|
|
80 |
|
|
|
81 |
// Prepare format_string/text options
|
|
|
82 |
$fmtoptions = array(
|
|
|
83 |
'context' => $context);
|
|
|
84 |
|
|
|
85 |
if (right_to_left()) { // RTL table alignment support
|
|
|
86 |
$rightalignment = 'left';
|
|
|
87 |
$leftalignment = 'right';
|
|
|
88 |
} else {
|
|
|
89 |
$rightalignment = 'right';
|
|
|
90 |
$leftalignment = 'left';
|
|
|
91 |
|
|
|
92 |
}
|
|
|
93 |
|
|
|
94 |
if ( $hook >0 ) {
|
|
|
95 |
|
|
|
96 |
if ( $action == "edit" ) {
|
|
|
97 |
if ( $confirm ) {
|
|
|
98 |
require_sesskey();
|
|
|
99 |
$action = "";
|
|
|
100 |
$cat = new stdClass();
|
|
|
101 |
$cat->id = $hook;
|
|
|
102 |
$cat->name = $name;
|
|
|
103 |
$cat->usedynalink = $usedynalink;
|
|
|
104 |
|
|
|
105 |
$DB->update_record("glossary_categories", $cat);
|
|
|
106 |
$event = \mod_glossary\event\category_updated::create(array(
|
|
|
107 |
'context' => $context,
|
|
|
108 |
'objectid' => $hook
|
|
|
109 |
));
|
|
|
110 |
$cat->glossaryid = $glossary->id;
|
|
|
111 |
$event->add_record_snapshot('glossary_categories', $cat);
|
|
|
112 |
$event->add_record_snapshot('glossary', $glossary);
|
|
|
113 |
$event->trigger();
|
|
|
114 |
|
|
|
115 |
// Reset caches.
|
|
|
116 |
\mod_glossary\local\concept_cache::reset_glossary($glossary);
|
|
|
117 |
|
|
|
118 |
} else {
|
|
|
119 |
echo $OUTPUT->header();
|
|
|
120 |
echo $OUTPUT->heading(format_string($glossary->name), 2);
|
|
|
121 |
echo $OUTPUT->heading(format_string(get_string("editcategory", "glossary")), 3);
|
|
|
122 |
|
|
|
123 |
$name = $category->name;
|
|
|
124 |
$usedynalink = $category->usedynalink;
|
|
|
125 |
require "editcategories.html";
|
|
|
126 |
echo $OUTPUT->footer();
|
|
|
127 |
die;
|
|
|
128 |
}
|
|
|
129 |
|
|
|
130 |
} elseif ( $action == "delete" ) {
|
|
|
131 |
if ( $confirm ) {
|
|
|
132 |
require_sesskey();
|
|
|
133 |
$DB->delete_records("glossary_entries_categories", array("categoryid"=>$hook));
|
|
|
134 |
$DB->delete_records("glossary_categories", array("id"=>$hook));
|
|
|
135 |
|
|
|
136 |
$event = \mod_glossary\event\category_deleted::create(array(
|
|
|
137 |
'context' => $context,
|
|
|
138 |
'objectid' => $hook
|
|
|
139 |
));
|
|
|
140 |
$event->add_record_snapshot('glossary_categories', $category);
|
|
|
141 |
$event->add_record_snapshot('glossary', $glossary);
|
|
|
142 |
$event->trigger();
|
|
|
143 |
|
|
|
144 |
// Reset caches.
|
|
|
145 |
\mod_glossary\local\concept_cache::reset_glossary($glossary);
|
|
|
146 |
|
|
|
147 |
redirect("editcategories.php?id=$cm->id", get_string("categorydeleted", "glossary"), 2);
|
|
|
148 |
} else {
|
|
|
149 |
echo $OUTPUT->header();
|
|
|
150 |
echo $OUTPUT->heading(format_string($glossary->name), 2);
|
|
|
151 |
echo $OUTPUT->heading(format_string(get_string("deletecategory", "glossary")), 3);
|
|
|
152 |
|
|
|
153 |
echo $OUTPUT->box_start('generalbox boxaligncenter errorboxcontent boxwidthnarrow');
|
|
|
154 |
echo "<div class=\"boxaligncenter deletecatconfirm\">".format_string($category->name, true, $fmtoptions)."<br/>";
|
|
|
155 |
|
|
|
156 |
$num_entries = $DB->count_records("glossary_entries_categories", array("categoryid"=>$category->id));
|
|
|
157 |
if ( $num_entries ) {
|
|
|
158 |
print_string("deletingnoneemptycategory","glossary");
|
|
|
159 |
}
|
|
|
160 |
echo "<p>";
|
|
|
161 |
print_string("areyousuredelete","glossary");
|
|
|
162 |
echo "</p>";
|
|
|
163 |
?>
|
|
|
164 |
|
|
|
165 |
<table border="0" width="100" class="confirmbuttons">
|
|
|
166 |
<tr>
|
|
|
167 |
<td align="$rightalignment" style="width:50%">
|
|
|
168 |
<form id="form" method="post" action="editcategories.php">
|
|
|
169 |
<div>
|
|
|
170 |
<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />
|
|
|
171 |
<input type="hidden" name="id" value="<?php p($cm->id) ?>" />
|
|
|
172 |
<input type="hidden" name="action" value="delete" />
|
|
|
173 |
<input type="hidden" name="confirm" value="1" />
|
|
|
174 |
<input type="hidden" name="mode" value="<?php echo $mode ?>" />
|
|
|
175 |
<input type="hidden" name="hook" value="<?php echo $hook ?>" />
|
|
|
176 |
<input type="submit" class="btn btn-primary" value=" <?php print_string("yes")?> " />
|
|
|
177 |
</div>
|
|
|
178 |
</form>
|
|
|
179 |
</td>
|
|
|
180 |
<td align="$leftalignment" style="width:50%">
|
|
|
181 |
|
|
|
182 |
<?php
|
|
|
183 |
unset($options);
|
|
|
184 |
$options = array ("id" => $id);
|
|
|
185 |
echo $OUTPUT->single_button(new moodle_url("editcategories.php", $options), get_string("no"));
|
|
|
186 |
echo "</td></tr></table>";
|
|
|
187 |
echo "</div>";
|
|
|
188 |
echo $OUTPUT->box_end();
|
|
|
189 |
}
|
|
|
190 |
}
|
|
|
191 |
|
|
|
192 |
} elseif ( $action == "add" ) {
|
|
|
193 |
if ( $confirm ) {
|
|
|
194 |
require_sesskey();
|
|
|
195 |
$dupcategory = $DB->get_records_sql("SELECT * FROM {glossary_categories} WHERE ".$DB->sql_like('name','?', false)." AND glossaryid=?", array($name, $glossary->id));
|
|
|
196 |
if ( $dupcategory ) {
|
|
|
197 |
redirect("editcategories.php?id=$cm->id&action=add&name=$name", get_string("duplicatecategory", "glossary"), 2);
|
|
|
198 |
|
|
|
199 |
} else {
|
|
|
200 |
$action = "";
|
|
|
201 |
$cat = new stdClass();
|
|
|
202 |
$cat->name = $name;
|
|
|
203 |
$cat->usedynalink = $usedynalink;
|
|
|
204 |
$cat->glossaryid = $glossary->id;
|
|
|
205 |
|
|
|
206 |
$cat->id = $DB->insert_record("glossary_categories", $cat);
|
|
|
207 |
$event = \mod_glossary\event\category_created::create(array(
|
|
|
208 |
'context' => $context,
|
|
|
209 |
'objectid' => $cat->id
|
|
|
210 |
));
|
|
|
211 |
$event->add_record_snapshot('glossary_categories', $cat);
|
|
|
212 |
$event->add_record_snapshot('glossary', $glossary);
|
|
|
213 |
$event->trigger();
|
|
|
214 |
|
|
|
215 |
// Reset caches.
|
|
|
216 |
\mod_glossary\local\concept_cache::reset_glossary($glossary);
|
|
|
217 |
}
|
|
|
218 |
} else {
|
|
|
219 |
echo $OUTPUT->header();
|
|
|
220 |
echo $OUTPUT->heading(format_string($glossary->name), 2);
|
|
|
221 |
echo "<h3 class=\"main\">" . get_string("addcategory", "glossary"). "</h3>";
|
|
|
222 |
$name="";
|
|
|
223 |
require "editcategories.html";
|
|
|
224 |
}
|
|
|
225 |
}
|
|
|
226 |
|
|
|
227 |
if ( $action ) {
|
|
|
228 |
echo $OUTPUT->footer();
|
|
|
229 |
die;
|
|
|
230 |
}
|
|
|
231 |
|
|
|
232 |
echo $OUTPUT->header();
|
|
|
233 |
echo $OUTPUT->heading(format_string($glossary->name), 2);
|
|
|
234 |
|
|
|
235 |
?>
|
|
|
236 |
|
|
|
237 |
<form method="post" action="editcategories.php">
|
|
|
238 |
<table width="40%" class="boxaligncenter generalbox" cellpadding="5">
|
|
|
239 |
<tr>
|
|
|
240 |
<th style="width:90%" align="center">
|
|
|
241 |
<?php p(get_string("categories","glossary")) ?></th>
|
|
|
242 |
<th style="width:10%" align="center">
|
|
|
243 |
<?php p(get_string("action")) ?></th>
|
|
|
244 |
</tr>
|
|
|
245 |
<tr><td style="width:100%" colspan="2">
|
|
|
246 |
|
|
|
247 |
|
|
|
248 |
|
|
|
249 |
<?php
|
|
|
250 |
$categories = $DB->get_records("glossary_categories", array("glossaryid"=>$glossary->id), "name ASC");
|
|
|
251 |
|
|
|
252 |
if ( $categories ) {
|
|
|
253 |
echo '<table width="100%">';
|
|
|
254 |
foreach ($categories as $category) {
|
|
|
255 |
$num_entries = $DB->count_records("glossary_entries_categories", array("categoryid"=>$category->id));
|
|
|
256 |
?>
|
|
|
257 |
|
|
|
258 |
<tr>
|
|
|
259 |
<td style="width:80%" align="$leftalignment">
|
|
|
260 |
<?php
|
|
|
261 |
echo "<span class=\"bold\">".format_string($category->name, true, $fmtoptions)."</span> <span>($num_entries " . get_string("entries","glossary") . ")</span>";
|
|
|
262 |
?>
|
|
|
263 |
</td>
|
|
|
264 |
<td style="width:19%" align="center" class="action">
|
|
|
265 |
<?php
|
|
|
266 |
echo "<a href=\"editcategories.php?id=$cm->id&action=delete&mode=cat&hook=$category->id\">" .
|
|
|
267 |
$OUTPUT->pix_icon('t/delete', get_string('delete')). "</a> ";
|
|
|
268 |
echo "<a href=\"editcategories.php?id=$cm->id&action=edit&mode=cat&hook=$category->id\">" .
|
|
|
269 |
$OUTPUT->pix_icon('t/edit', get_string('edit')). "</a> ";
|
|
|
270 |
?>
|
|
|
271 |
</td>
|
|
|
272 |
</tr>
|
|
|
273 |
|
|
|
274 |
<?php
|
|
|
275 |
|
|
|
276 |
}
|
|
|
277 |
echo '</table>';
|
|
|
278 |
}
|
|
|
279 |
?>
|
|
|
280 |
|
|
|
281 |
</td></tr>
|
|
|
282 |
<tr>
|
|
|
283 |
<td style="width:100%" colspan="2" align="center">
|
|
|
284 |
<?php
|
|
|
285 |
|
|
|
286 |
$options['id'] = $cm->id;
|
|
|
287 |
$options['action'] = "add";
|
|
|
288 |
|
|
|
289 |
echo "<table class=\"editbuttons\" border=\"0\"><tr><td align=\"$rightalignment\">";
|
|
|
290 |
echo $OUTPUT->single_button(new moodle_url("editcategories.php", $options), get_string("addcategory", "glossary"));
|
|
|
291 |
echo "</td><td align=\"$leftalignment\">";
|
|
|
292 |
unset($options['action']);
|
|
|
293 |
$options['mode'] = 'cat';
|
|
|
294 |
$options['hook'] = $hook;
|
|
|
295 |
echo $OUTPUT->single_button(new moodle_url("view.php", $options), get_string("back","glossary"));
|
|
|
296 |
echo "</td></tr>";
|
|
|
297 |
echo "</table>";
|
|
|
298 |
|
|
|
299 |
?>
|
|
|
300 |
</td>
|
|
|
301 |
</tr>
|
|
|
302 |
</table>
|
|
|
303 |
|
|
|
304 |
|
|
|
305 |
</form>
|
|
|
306 |
|
|
|
307 |
<?php
|
|
|
308 |
echo $OUTPUT->footer();
|