mirror of
https://github.com/moodle/moodle.git
synced 2025-08-03 08:09:47 +02:00
102 lines
3.2 KiB
PHP
102 lines
3.2 KiB
PHP
<?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);
|
|
|
|
?>
|