$PAGE->set_url($url); $renderer = $PAGE->get_renderer('block_xp'); $filtermanager = $manager->get_filter_manager(); $userfilters = $filtermanager->get_user_filters(); // Saving the data. if (!empty($_POST['save'])) { require_sesskey(); // Saves all the filters. $filterids = array(); $filters = isset($_POST['filters']) ? $_POST['filters'] : array(); foreach ($filters as $filterdata) { $data = $filterdata; $data['ruledata'] = json_encode($data['rule'], true); unset($data['rule']); $data['courseid'] = $manager->get_courseid(); if (!block_xp_filter::validate_data($data)) { throw new moodle_exception('Data could not be validated'); } $filter = block_xp_filter::load_from_data($data); if ($filter->get_id() && !array_key_exists($filter->get_id(), $userfilters)) { throw new moodle_exception('Invalid filter ID'); } $filter->save(); $filterids[$filter->get_id()] = true; } // Check for filters to be deleted. foreach ($userfilters as $filterid => $filter) { if (!array_key_exists($filterid, $filterids)) { $filter->delete(); } }