/**
  *
  */
 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();
 }
Exemple #3
0
$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.
Exemple #4
0
 * @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;
 }