MDL-37813 remove missing filters when configuring string filters and fix filter uninstall

This commit is contained in:
Petr Škoda
2013-10-18 15:59:22 +02:00
parent b6ced2f7e4
commit 675fa4b813
2 changed files with 50 additions and 37 deletions
+15 -2
View File
@@ -717,13 +717,23 @@ function filter_get_string_filters() {
*/
function filter_set_applies_to_strings($filter, $applytostrings) {
$stringfilters = filter_get_string_filters();
$numstringfilters = count($stringfilters);
$prevfilters = $stringfilters;
$allfilters = filter_get_all_installed();
if ($applytostrings) {
$stringfilters[$filter] = $filter;
} else {
unset($stringfilters[$filter]);
}
if (count($stringfilters) != $numstringfilters) {
// Remove missing filters.
foreach ($stringfilters as $filter) {
if (!isset($allfilters[$filter])) {
unset($stringfilters[$filter]);
}
}
if ($prevfilters != $stringfilters) {
set_config('stringfilters', implode(',', $stringfilters));
set_config('filterall', !empty($stringfilters));
}
@@ -1106,6 +1116,9 @@ function filter_get_global_states() {
*/
function filter_delete_all_for_filter($filter) {
global $DB;
filter_set_applies_to_strings($filter, false);
if (substr($filter, 0, 7) == 'filter/') {
unset_all_config_for_plugin('filter_' . basename($filter));
}