/** * */ public static function filter_selection_definition($mform, $dataformid, $prefix = null) { $options = array('' => get_string('choosedots')); $fm = \mod_dataform_filter_manager::instance($dataformid); if ($filters = $fm->get_filters(null, true, true)) { $options = $options + $filters; } $mform->addElement('select', $prefix . 'filterid', get_string('filter', 'dataform'), $options); }
/** * */ public function definition() { global $CFG; $view = $this->_view; $mform =& $this->_form; $editoroptions = $view->editoroptions; $paramtext = !empty($CFG->formatstringstriptags) ? PARAM_TEXT : PARAM_CLEAN; // Buttons. $this->add_action_buttons(); // General. $mform->addElement('header', 'general', get_string('viewgeneral', 'dataform')); // Name. $mform->addElement('text', 'name', get_string('name')); $mform->setType('name', $paramtext); $mform->addRule('name', null, 'required', null, 'client'); $mform->setDefault('name', $this->get_default_view_name()); $mform->addHelpButton('name', 'viewname', 'dataform'); // Description. $mform->addElement('textarea', 'description', get_string('description')); $mform->setType('description', $paramtext); $mform->addHelpButton('description', 'viewdescription', 'dataform'); // Visibility. $mform->addElement('select', 'visible', get_string('viewvisibility', 'dataform'), $view::get_visibility_modes()); $mform->addHelpButton('visible', 'viewvisibility', 'dataform'); $mform->setDefault('visible', 1); // Filter. if (!($filtersmenu = \mod_dataform_filter_manager::instance($view->dataid)->get_filters(null, true))) { $filtersmenu = array(0 => get_string('filtersnonedefined', 'dataform')); } else { $filtersmenu = array(0 => get_string('choose')) + $filtersmenu; } $mform->addElement('select', 'filterid', get_string('viewfilter', 'dataform'), $filtersmenu); $mform->addHelpButton('filterid', 'viewfilter', 'dataform'); $mform->setDefault('filterid', 0); // Entries per page. $options = array(0 => get_string('choose'), 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 15 => 15, 20 => 20, 30 => 30, 40 => 40, 50 => 50, 100 => 100, 200 => 200, 300 => 300, 400 => 400, 500 => 500, 1000 => 1000); $mform->addElement('select', 'perpage', get_string('viewperpage', 'dataform'), $options); $mform->addHelpButton('perpage', 'viewperpage', 'dataform'); // Group by. if (!($fieldsmenu = $view->df->field_manager->get_fields_menu(array('exclude' => array('entry'))))) { $fieldsmenu = array('' => get_string('fieldsnonedefined', 'dataform')); } else { $fieldsmenu = array('' => get_string('choose')) + $fieldsmenu; } // TODO $mform->addElement('select', 'groupby', get_string('viewgroupby', 'dataform'), $fieldsmenu);. // TODO $mform->addHelpButton('groupby', 'viewgroupby', 'dataform');. // View specific definition. $this->definition_view_specific(); // Remove elements. $this->definition_remove_elements(); // Buttons. $this->add_action_buttons(); }
$urlparams->default = optional_param('default', 0, PARAM_INT); // id of filter to default $urlparams->showhide = optional_param('showhide', 0, PARAM_SEQUENCE); // filter ids (comma delimited) to hide/show $urlparams->delete = optional_param('delete', 0, PARAM_SEQUENCE); // filter ids (comma delim) to delete $urlparams->duplicate = optional_param('duplicate', 0, PARAM_SEQUENCE); // filter ids (comma delim) to duplicate $urlparams->confirmed = optional_param('confirmed', 0, PARAM_INT); // Set a dataform object. $df = mod_dataform_dataform::instance($urlparams->d, $urlparams->id); $df->require_manage_permission('filters'); $df->set_page('filter/index', array('urlparams' => $urlparams)); // Activate navigation node. navigation_node::override_active_url(new moodle_url('/mod/dataform/filter/index.php', array('id' => $df->cm->id))); $fm = mod_dataform_filter_manager::instance($df->id); // DATA PROCESSING. if ($urlparams->duplicate and confirm_sesskey()) { // Duplicate any requested filters. $fm->process_filters('duplicate', $urlparams->duplicate, $urlparams->confirmed); } else { if ($urlparams->delete and confirm_sesskey()) { // Delete any requested filters. $fm->process_filters('delete', $urlparams->delete, $urlparams->confirmed); } else { if ($urlparams->showhide and confirm_sesskey()) { // Set filter's visibility (confirmed by default). $fm->process_filters('visible', $urlparams->showhide, true); } else { if ($urlparams->default and confirm_sesskey()) { // Set filter to default.
* @category filter * @copyright 2013 Itamar Tzadok * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once '../../../config.php'; $urlparams = new stdClass(); $urlparams->d = required_param('d', PARAM_INT); $urlparams->fid = optional_param('fid', 0, PARAM_INT); // update filter id // Set a dataform object. $df = mod_dataform_dataform::instance($urlparams->d); $df->set_page('filter/edit', array('urlparams' => $urlparams)); $df->require_manage_permission('filters'); // Activate navigation node. navigation_node::override_active_url(new moodle_url('/mod/dataform/filter/index.php', array('id' => $df->cm->id))); $fm = mod_dataform_filter_manager::instance($urlparams->d); if ($urlparams->fid) { $filter = $fm->get_filter_by_id($urlparams->fid); } else { $filter = $fm->get_filter_blank(); } $mform = $fm->get_filter_form($filter); if ($mform->is_cancelled()) { redirect(new moodle_url('/mod/dataform/filter/index.php', array('d' => $df->id))); } if ($data = $mform->get_submitted_data()) { $filter = $fm->get_filter_from_form($filter, $data, true); $mform = $fm->get_filter_form($filter); if (!empty($data->submitbutton) and $data = $mform->get_data()) { $filter = $fm->get_filter_from_form($filter, $data, true); $filter->update();
/** * */ public function render_filters_menu($view) { $df = $view->get_df(); $filter = $view->filter; $baseurl = $view->baseurl; $filterjump = ''; if (!$view->is_forcing_filter() and ($filter->id or $view->entry_manager->get_count(mod_dataform_entry_manager::COUNT_VIEWABLE))) { $fm = mod_dataform_filter_manager::instance($df->id); if (!($menufilters = $fm->get_filters(null, true))) { $menufilters = array(); } if ($userfilters = $fm->get_user_filters_menu($view->id)) { // Quick filter. if (array_key_exists($fm::USER_FILTER_QUICK, $userfilters)) { $quickfilter = array($fm::USER_FILTER_QUICK => $userfilters[$fm::USER_FILTER_QUICK], $fm::USER_FILTER_QUICK_RESET => $userfilters[$fm::USER_FILTER_QUICK_RESET]); $menufilters[] = array(get_string('filterquick', 'dataform') => $quickfilter); unset($userfilters[$fm::USER_FILTER_QUICK]); unset($userfilters[$fm::USER_FILTER_QUICK_RESET]); } $menufilters[] = array(get_string('filtersaved', 'dataform') => $userfilters); } $baseurl = $baseurl->out_omit_querystring(); $baseurlparams = array('d' => $df->id, 'view' => $view->id); // Display the filter form jump list. $select = new single_select(new moodle_url($baseurl, $baseurlparams), 'filter', $menufilters, $filter->id, array('' => 'choosedots'), 'filterbrowse_jump'); $select->attributes = array('id' => 'id_filtersmenu'); $filterjump = $this->output->render($select); } return $filterjump; }
/** * */ public function set_viewfilter(array $options = array()) { $fm = \mod_dataform_filter_manager::instance($this->dataid); $forcedfilter = null; $filterfromid = null; $filterfromoptions = null; $filterfromurl = null; // Get forced filter if set. if ($this->filterid) { $forcedfilter = $fm->get_filter_by_id($this->filterid, array('view' => $this)); } // Get filter from id option. if (!empty($options['id'])) { $fid = $options['id']; if ($fid != $this->filterid) { $filterfromid = $fm->get_filter_by_id($fid, array('view' => $this)); } unset($options['id']); } // Get filter from other options. if ($this->entrytype) { $options['entrytype'] = $this->entrytype; } if ($this->perpage and empty($options['perpage'])) { $options['perpage'] = $this->perpage; } if (!empty($options)) { $options['dataid'] = $this->dataid; $filterfromoptions = new dataformfilter((object) $options); } // Get filter from url. if ($urloptions = $this->is_active() ? $fm::get_filter_options_from_url() : null) { $urloptions['dataid'] = $this->dataid; $filterfromurl = new dataformfilter((object) $urloptions); } $filterspecified = ($forcedfilter or $filterfromid or $filterfromoptions or $filterfromurl); // Get the base filter for this view. if ($filterspecified) { $filter = $forcedfilter ? $forcedfilter : $fm->get_filter_blank(); $filter->append(array($filterfromid, $filterfromoptions, $filterfromurl)); } else { // If no filter specified and there is default filter, use default. $fid = $this->df->defaultfilter ? $this->df->defaultfilter : 0; $filter = $fm->get_filter_by_id($fid, array('view' => $this)); } // Content fields. if ($patternfields = $this->get_pattern_set('field')) { $filter->contentfields = array_keys($patternfields); } $this->_filter = $filter; }
/** * */ public function set_viewfilter(array $options = null) { $fm = \mod_dataform_filter_manager::instance($this->dataid); $fid = !empty($options['id']) ? $options['id'] : 0; $eids = !empty($options['eids']) ? $options['eids'] : null; $users = !empty($options['users']) ? $options['users'] : null; $groups = !empty($options['groups']) ? $options['groups'] : null; $page = !empty($options['page']) ? $options['page'] : 0; $perpage = !empty($options['perpage']) ? $options['perpage'] : $this->perpage; $groupby = !empty($options['groupby']) ? $options['groupby'] : $this->groupby; $customsort = !empty($options['customsort']) ? $options['customsort'] : null; $search = !empty($options['search']) ? $options['search'] : null; $customsearch = !empty($options['customsearch']) ? $options['customsearch'] : null; $csort = !empty($options['csort']) ? $options['csort'] : null; $csearch = !empty($options['csearch']) ? $options['csearch'] : null; // Url options. if ($urloptions = $this->is_active() ? $fm::get_filter_options_from_url() : null) { // Options that do not require permission. $eids = $eids ? $eids : (!empty($urloptions['eids']) ? $urloptions['eids'] : null); $users = $users ? $users : (!empty($urloptions['users']) ? $urloptions['users'] : null); $groups = $groups ? $groups : (!empty($urloptions['groups']) ? $urloptions['groups'] : null); $page = $page ? $page : (!empty($urloptions['page']) ? $urloptions['page'] : 0); // Options that require permission // $params = array('dataformid' => $this->dataid, 'viewid' => $this->id); // If (\mod_dataform\access\view_filter_override::validate($params)) { // }. } if ($this->filterid) { $fid = $this->filterid; } $filter = $fm->get_filter_by_id($fid, array('view' => $this)); // Set specific entry id. if ($eids) { $filter->eids = $eids; } // Set specific users. if ($users) { $filter->users = is_array($users) ? $users : explode(',', $users); } // Set specific groups. if ($groups) { $filter->groups = is_array($groups) ? $groups : explode(',', $groups); } // Add view specific perpage. if ($perpage) { $filter->perpage = $perpage; } // Add view specific groupby. if ($groupby) { $filter->groupby = $groupby; } // Add page. if ($page) { $filter->page = $page; } // Append sort options. if ($customsort) { $filter->append_sort_options($customsort); } // Append search options. if ($search) { $filter->append_search_options($search); } // Append custom search options. if ($customsearch) { $filter->append_search_options($customsearch); } // Append custom sort options. if ($csort) { $filter->append_sort_options($csort); } // Append custom search options. if ($csearch) { $filter->append_search_options($csearch); } // Content fields. if ($patternfields = $this->get_pattern_set('field')) { $filter->contentfields = array_keys($patternfields); } $this->_filter = $filter; }
/** * Returns the filter manager for the Dataform instance. * * @return mod_dataform_filter_manager */ public function get_filter_manager() { return mod_dataform_filter_manager::instance($this->id); }
protected function get_url_query($fields) { global $OUTPUT; $filter = $this->_filter; // Parse custom settings. $sorturlquery = ''; $searchurlquery = ''; if ($filter->customsort or $filter->customsearch) { // CUSTOM SORT. if ($filter->customsort) { if ($sortfields = unserialize($filter->customsort)) { $sorturlarr = array(); foreach ($sortfields as $fieldid => $elementanddir) { list($element, $sortdir) = $elementanddir; if (empty($fields[$fieldid])) { continue; } // Sort url query. $sorturlarr[] = "{$fieldid} {$sortdir}"; } if ($sorturlarr) { $sorturlquery = '&usort=' . urlencode(implode(',', $sorturlarr)); } } } // CUSTOM SEARCH. if ($filter->customsearch) { if ($searchfields = unserialize($filter->customsearch)) { $searchurlarr = array(); foreach ($searchfields as $fieldid => $searchfield) { if (empty($fields[$fieldid])) { continue; } $fieldoptions = array(); if (!empty($searchfield['AND'])) { $options = array(); foreach ($searchfield['AND'] as $option) { if ($option) { $options[] = $fields[$fieldid]->format_search_value($option); } } $fieldoptions[] = '<b>' . $fields[$fieldid]->name . '</b>:' . implode(' <b>and</b> ', $options); } if (!empty($searchfield['OR'])) { $options = array(); foreach ($searchfield['OR'] as $option) { if ($option) { $options[] = $fields[$fieldid]->format_search_value($option); } } $fieldoptions[] = '<b>' . $fields[$fieldid]->name . '</b> ' . implode(' <b>or</b> ', $options); } if ($fieldoptions) { $searcharr[] = implode('<br />', $fieldoptions); } } if (!empty($searcharr)) { $searchurlquery = '&ucsearch=' . \mod_dataform_filter_manager::get_search_url_query($searchfields); } } else { if ($filter->search) { $searchurlquery = '&usearch=' . urlendcode($filter->search); } } } } return $sorturlquery . $searchurlquery; }