* @param integer $sortorder (optional) a position in the sortorder to place this filter.
* If not given defaults to:
* No change in order if we are updating an exsiting record, and not changing to or from TEXTFILTER_DISABLED.
- * Just after the last currently active filter for a change to TEXTFILTER_ON or TEXTFILTER_OFF
- * Just after the very last filter for a change to TEXTFILTER_DISABLED
+ * Just after the last currently active filter when adding an unknown filter
+ * in state TEXTFILTER_ON or TEXTFILTER_OFF, or enabling/diabling an exsisting filter.
+ * Just after the very last filter when adding an unknown filter in state TEXTFILTER_DISABLED
*/
function filter_set_global_state($filter, $state, $sortorder = false) {
global $DB;
// Automatic sort order.
if ($sortorder === false) {
- if ($state == TEXTFILTER_DISABLED) {
+ if ($state == TEXTFILTER_DISABLED && $insert) {
$prevmaxsortorder = $DB->get_field('filter_active', 'MAX(sortorder)', array());
} else {
$prevmaxsortorder = $DB->get_field_select('filter_active', 'MAX(sortorder)', 'active <> ?', array(TEXTFILTER_DISABLED));
* empty array. So, an example return value for this function might be
* array('filter/tex' => array(), 'mod/glossary' => array('glossaryid', 123))
*/
-function get_active_filters($context) {
+function filter_get_active_in_context($context) {
global $DB;
$contextids = str_replace('/', ',', trim($context->path, '/'));
// Exercise SUT.
filter_set_global_state('filter/1', TEXTFILTER_DISABLED);
// Validate.
- $this->assert_global_sort_order(array('filter/2', 'filter/3', 'filter/1'));
+ $this->assert_global_sort_order(array('filter/2', 'filter/1', 'filter/3'));
}
}
}
}
-class get_active_filters_test extends UnitTestCaseUsingDatabase {
+class filter_get_active_in_context_test extends UnitTestCaseUsingDatabase {
private $syscontext;
private $childcontext;
private $childcontext2;
// Setup fixture.
filter_set_global_state('filter/name', TEXTFILTER_ON);
// Exercise SUT.
- $filters = get_active_filters($this->syscontext);
+ $filters = filter_get_active_in_context($this->syscontext);
// Validate.
$this->assert_filter_list(array('filter/name'), $filters);
// Check no config returned correctly.
// Setup fixture.
filter_set_global_state('filter/name', TEXTFILTER_OFF);
// Exercise SUT.
- $filters = get_active_filters($this->childcontext2);
+ $filters = filter_get_active_in_context($this->childcontext2);
// Validate.
$this->assert_filter_list(array(), $filters);
}
filter_set_global_state('filter/name', TEXTFILTER_OFF);
filter_set_local_state('filter/name', $this->childcontext->id, TEXTFILTER_ON);
// Exercise SUT.
- $filters = get_active_filters($this->childcontext2);
+ $filters = filter_get_active_in_context($this->childcontext2);
// Validate.
$this->assert_filter_list(array('filter/name'), $filters);
}
filter_set_global_state('filter/name', TEXTFILTER_ON);
filter_set_local_state('filter/name', $this->childcontext->id, TEXTFILTER_OFF);
// Exercise SUT.
- $filters = get_active_filters($this->childcontext2);
+ $filters = filter_get_active_in_context($this->childcontext2);
// Validate.
$this->assert_filter_list(array(), $filters);
}
filter_set_global_state('filter/name', TEXTFILTER_DISABLED);
filter_set_local_state('filter/name', $this->childcontext->id, TEXTFILTER_ON);
// Exercise SUT.
- $filters = get_active_filters($this->syscontext);
+ $filters = filter_get_active_in_context($this->syscontext);
// Validate.
$this->assert_filter_list(array(), $filters);
}
filter_set_global_state('filter/name', TEXTFILTER_ON);
filter_set_local_config('filter/name', $this->childcontext->id, 'settingname', 'A value');
// Exercise SUT.
- $filters = get_active_filters($this->childcontext);
+ $filters = filter_get_active_in_context($this->childcontext);
// Validate.
$this->assertEqual(array('settingname' => 'A value'), $filters['filter/name']);
}
filter_set_local_config('filter/name', $this->childcontext->id, 'settingname', 'A value');
filter_set_local_config('filter/name', $this->childcontext->id, 'anothersettingname', 'Another value');
// Exercise SUT.
- $filters = get_active_filters($this->childcontext);
+ $filters = filter_get_active_in_context($this->childcontext);
// Validate.
$this->assertEqual(array('settingname' => 'A value', 'anothersettingname' => 'Another value'), $filters['filter/name']);
}
filter_set_local_config('filter/name', $this->childcontext->id, 'settingname', 'A value');
filter_set_local_config('filter/name', $this->childcontext2->id, 'anothersettingname', 'Another value');
// Exercise SUT.
- $filters = get_active_filters($this->childcontext2);
+ $filters = filter_get_active_in_context($this->childcontext2);
// Validate.
$this->assertEqual(array('anothersettingname' => 'Another value'), $filters['filter/name']);
}
filter_set_local_config('filter/name', $this->childcontext->id, 'settingname', 'A value');
filter_set_local_config('filter/other', $this->childcontext->id, 'anothersettingname', 'Another value');
// Exercise SUT.
- $filters = get_active_filters($this->childcontext);
+ $filters = filter_get_active_in_context($this->childcontext);
// Validate.
$this->assertEqual(array('settingname' => 'A value'), $filters['filter/name']);
}