forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
filters.php
102 lines (87 loc) · 3.15 KB
/
filters.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php // $Id$
require_once('../config.php');
$action = optional_param('action', '', PARAM_ACTION);
$filterpath = optional_param('filterpath', '', PARAM_PATH);
require_login();
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
$returnurl = "$CFG->wwwroot/$CFG->admin/settings.php?section=managefilters";
if (!confirm_sesskey()) {
redirect($returnurl);
}
// get a list of installed filters
$installedfilters = array();
$filterlocations = array('mod','filter');
foreach ($filterlocations as $filterlocation) {
$plugins = get_list_of_plugins($filterlocation);
foreach ($plugins as $plugin) {
$pluginpath = "$CFG->dirroot/$filterlocation/$plugin/filter.php";
if (is_readable($pluginpath)) {
$installedfilters["$filterlocation/$plugin"] = "$filterlocation/$plugin";
}
}
}
// get all the currently selected filters
if (!empty($CFG->textfilters)) {
$activefilters = explode(',', $CFG->textfilters);
} else {
$activefilters = array();
}
//======================
// Process Actions
//======================
switch ($action) {
case 'hide':
$key=array_search($filterpath, $activefilters);
// check filterpath is valid
if ($key===false) {
break;
}
// just delete it
unset($activefilters[$key]);
break;
case 'show':
// check filterpath is valid
if (!array_key_exists($filterpath, $installedfilters)) {
print_error('filternotinstalled', 'error', $url, $filterpath);
} elseif (array_search($filterpath,$activefilters)) {
// filterpath is already active - doubleclick??
} else {
// add it to installed filters
$activefilters[] = $filterpath;
$activefilters = array_unique($activefilters);
}
break;
case 'down':
$key=array_search($filterpath, $activefilters);
// check filterpath is valid
if ($key===false) {
print_error("filternotactive", 'error', $url, $filterpath );
} elseif ($key>=(count($activefilters)-1)) {
// cannot be moved any further down - doubleclick??
} else {
// swap with $key+1
$fsave = $activefilters[$key];
$activefilters[$key] = $activefilters[$key+1];
$activefilters[$key+1] = $fsave;
}
break;
case 'up':
$key=array_search($filterpath, $activefilters);
// check filterpath is valid
if ($key===false) {
print_error("filternotactive", 'error', $url, $filterpath );
} elseif ($key<1) {
//cannot be moved any further up - doubleclick??
} else {
// swap with $key-1
$fsave = $activefilters[$key];
$activefilters[$key] = $activefilters[$key-1];
$activefilters[$key-1] = $fsave;
}
break;
}
// save, reset cache and return
set_config('textfilters', implode(',', $activefilters));
reset_text_filters_cache();
redirect($returnurl);
?>