Merge branch 'w43_MDL-37813_m25_filterall' of https://github.com/skodak/moodle into MOODLE_25_STABLE

This commit is contained in:
Marina Glancy
2013-10-23 10:17:58 +11:00
2 changed files with 49 additions and 37 deletions
+14 -2
View File
@@ -714,13 +714,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));
}
@@ -1092,6 +1102,8 @@ function filter_get_global_states() {
function filter_delete_all_for_filter($filter) {
global $DB;
filter_set_applies_to_strings($filter, false);
unset_all_config_for_plugin('filter_' . $filter);
$DB->delete_records('filter_active', array('filter' => $filter));
$DB->delete_records('filter_config', array('filter' => $filter));
+35 -35
View File
@@ -663,49 +663,43 @@ class filter_delete_config_testcase extends advanced_testcase {
}
class filter_filter_set_applies_to_strings extends advanced_testcase {
protected $origcfgstringfilters;
protected $origcfgfilterall;
protected function setUp() {
global $DB, $CFG;
parent::setUp();
$DB->delete_records('filter_active', array());
$DB->delete_records('filter_config', array());
$this->resetAfterTest(false);
// Store original $CFG;
$this->origcfgstringfilters = $CFG->stringfilters;
$this->origcfgfilterall = $CFG->filterall;
}
protected function tearDown() {
global $CFG;
$CFG->stringfilters = $this->origcfgstringfilters;
$CFG->filterall = $this->origcfgfilterall;
parent::tearDown();
}
public function test_set() {
global $CFG;
$this->resetAfterTest();
$this->assertFileExists("$CFG->dirroot/filter/emailprotect"); // Any standard filter.
$this->assertFileExists("$CFG->dirroot/filter/tidy"); // Any standard filter.
$this->assertFileNotExists("$CFG->dirroot/filter/grgrggr"); // Any non-existent filter
// Setup fixture.
$CFG->filterall = 0;
$CFG->stringfilters = '';
set_config('filterall', 0);
set_config('stringfilters', '');
// Exercise SUT.
filter_set_applies_to_strings('name', true);
filter_set_applies_to_strings('tidy', true);
// Validate.
$this->assertEquals('name', $CFG->stringfilters);
$this->assertEquals('tidy', $CFG->stringfilters);
$this->assertEquals(1, $CFG->filterall);
filter_set_applies_to_strings('grgrggr', true);
$this->assertEquals('tidy', $CFG->stringfilters);
$this->assertEquals(1, $CFG->filterall);
filter_set_applies_to_strings('emailprotect', true);
$this->assertEquals('tidy,emailprotect', $CFG->stringfilters);
$this->assertEquals(1, $CFG->filterall);
}
public function test_unset_to_empty() {
global $CFG;
$this->resetAfterTest();
$this->assertFileExists("$CFG->dirroot/filter/tidy"); // Any standard filter.
// Setup fixture.
$CFG->filterall = 1;
$CFG->stringfilters = 'name';
set_config('filterall', 1);
set_config('stringfilters', 'tidy');
// Exercise SUT.
filter_set_applies_to_strings('name', false);
filter_set_applies_to_strings('tidy', false);
// Validate.
$this->assertEquals('', $CFG->stringfilters);
$this->assertEquals('', $CFG->filterall);
@@ -713,13 +707,19 @@ class filter_filter_set_applies_to_strings extends advanced_testcase {
public function test_unset_multi() {
global $CFG;
$this->resetAfterTest();
$this->assertFileExists("$CFG->dirroot/filter/emailprotect"); // Any standard filter.
$this->assertFileExists("$CFG->dirroot/filter/tidy"); // Any standard filter.
$this->assertFileExists("$CFG->dirroot/filter/multilang"); // Any standard filter.
// Setup fixture.
$CFG->filterall = 1;
$CFG->stringfilters = 'name,other';
set_config('filterall', 1);
set_config('stringfilters', 'emailprotect,tidy,multilang');
// Exercise SUT.
filter_set_applies_to_strings('name', false);
filter_set_applies_to_strings('tidy', false);
// Validate.
$this->assertEquals('other', $CFG->stringfilters);
$this->assertEquals('emailprotect,multilang', $CFG->stringfilters);
$this->assertEquals(1, $CFG->filterall);
}
}