Esempio n. 1
0
$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();
        }
    }