function getFilterCollection() { $filters = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $filters->addNew($permName, 'lookup')->setLabel($name)->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_lookup"))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterIdentifier($value, $baseKey); } }); return $filters; }
function getFilterCollection() { $collection = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $sourceCategories = $this->getApplicableCategories(); $options = array_map(function ($i) { return $i['relativePathString']; }, $sourceCategories); $collection->addNew($permName, 'dropdown')->setLabel($name)->setControl(new Tracker\Filter\Control\DropDown("tf_{$permName}_dd", $options))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterCategory((string) $value); } }); $controls = ['any-of' => new Tracker\Filter\Control\MultiSelect("tf_{$permName}_anyd", $options), 'any-of-checkboxes' => new Tracker\Filter\Control\InlineCheckboxes("tf_{$permName}_anyc", $options)]; foreach ($controls as $key => $control) { $collection->addNew($permName, $key)->setLabel(tr('%0 (any of)', $name))->setControl($control)->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $values = $control->getValues(); if (!empty($values)) { $query->filterCategory(implode(' OR ', $values)); } }); } $type = $this->getOption('inputtype'); if ($type == 'm' || $type == 'checkbox') { $controls = ['all-of' => new Tracker\Filter\Control\MultiSelect("tf_{$permName}_alld", $options), 'all-of-checkboxes' => new Tracker\Filter\Control\InlineCheckboxes("tf_{$permName}_allc", $options)]; foreach ($controls as $key => $control) { $collection->addNew($permName, $key)->setLabel(tr('%0 (all of)', $name))->setControl($control)->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $values = $control->getValues(); if (!empty($values)) { $query->filterCategory(implode(' AND ', $values)); } }); } } return $collection; }
function getFilterCollection() { $filters = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $possibilities = $this->getPossibilities(); $filters->addNew($permName, 'dropdown')->setLabel($name)->setControl(new Tracker\Filter\Control\DropDown("tf_{$permName}_dd", $possibilities))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterIdentifier($value, $baseKey); } }); $filters->addNew($permName, 'multiselect')->setLabel($name)->setControl(new Tracker\Filter\Control\MultiSelect("tf_{$permName}_ms", $possibilities))->setApplyCondition(function ($control, Search_Query $query) use($permName, $baseKey) { $values = $control->getValues(); if (!empty($values)) { $sub = $query->getSubQuery("ms_{$permName}"); foreach ($values as $v) { $sub->filterIdentifier((string) $v, $baseKey); } } }); return $filters; }
function getFilterCollection() { $filters = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $possibilities = ['selected' => tr('Yes'), 'unselected' => tr('No')]; $filters->addNew($permName, 'dropdown')->setLabel($name)->setControl(new Tracker\Filter\Control\DropDown("tf_{$permName}_ck", $possibilities))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value == 'selected') { $query->filterContent('y', $baseKey); } elseif ($value == 'unselected') { $query->filterContent('NOT y', $baseKey); } }); return $filters; }
function getFilterCollection() { global $prefs; $filters = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $generateFulltext = function ($field) { return function ($control, Search_Query $query) use($field) { $value = $control->getValue(); if ($value) { $query->filterContent($value, $field); } }; }; if ('y' !== $this->getConfiguration('isMultilingual', 'n')) { $filters->addNew($permName, 'fulltext')->setLabel($name)->setHelp(tr('Full-text search of the content of the field.'))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_ft"))->setApplyCondition($generateFulltext($baseKey)); $filters->addNew($permName, 'initial')->setLabel($name)->setHelp(tr('Search for a value prefix.'))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_init"))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterInitial($value, $baseKey); } }); if ('y' === $this->getOption('exact', 'n')) { $filters->addNew($permName, 'exact')->setLabel($name)->setHelp(tr('Search for a precise value.'))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_em"))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterIdentifier($value, $baseKey . '_exact'); } }); } } else { $language = $prefs['language']; $filters->addNew($permName, "fulltext-current")->setLabel($name)->setHelp(tr('Full-text search in the current language.'))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_current_ft"))->setApplyCondition($generateFulltext("{$baseKey}_{$language}")); $fields = []; foreach ($prefs['available_languages'] as $lang) { $field = "{$baseKey}_{$lang}"; $fields[] = $field; $filters->addNew($permName, "fulltext-{$lang}")->setLabel(tr('%0 (%1)', $name, $lang))->setHelp(tr('Full-text search in a specific language (%0).', $lang))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_{$lang}_ft"))->setApplyCondition($generateFulltext($field)); } $filters->addNew($permName, "fulltext")->setLabel(tr('%0 (any language)', $name))->setHelp(tr('Full-text search in any language.'))->setControl(new Tracker\Filter\Control\TextField("tf_{$permName}_ft"))->setApplyCondition($generateFulltext(implode(',', $fields))); } return $filters; }
function getFilterCollection() { $filters = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $filters->addNew($permName, 'range')->setLabel($name)->setControl(new Tracker\Filter\Control\DateRange("tf_{$permName}_range"))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { if ($control->hasValue()) { $query->filterRange($control->getFrom(), $control->getTo(), $baseKey); } }); return $filters; }
function getFilterCollection() { $collection = new Tracker\Filter\Collection($this->getTrackerDefinition()); $permName = $this->getConfiguration('permName'); $name = $this->getConfiguration('name'); $baseKey = $this->getBaseKey(); $collection->addNew($permName, 'selector')->setLabel($name)->setControl(new Tracker\Filter\Control\ObjectSelector("tf_{$permName}_os", ['type' => 'trackeritem', 'tracker_status' => implode(' OR ', str_split($this->getOption('status', 'opc'), 1)), 'tracker_id' => $this->getOption('trackerId'), '_placeholder' => tr(TikiLib::lib('object')->get_title('tracker', $this->getOption('trackerId')))]))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $query->filterIdentifier((string) $value, $baseKey); } }); $collection->addNew($permName, 'multiselect')->setLabel($name)->setControl(new Tracker\Filter\Control\ObjectSelector("tf_{$permName}_ms", ['type' => 'trackeritem', 'tracker_status' => implode(' OR ', str_split($this->getOption('status', 'opc'), 1)), 'tracker_id' => $this->getOption('trackerId'), '_placeholder' => tr(TikiLib::lib('object')->get_title('tracker', $this->getOption('trackerId')))], true))->setApplyCondition(function ($control, Search_Query $query) use($baseKey) { $value = $control->getValue(); if ($value) { $value = array_map(function ($v) { return str_replace('trackeritem:', '', $v); }, $value); $query->filterMultivalue(implode(' OR ', $value), $baseKey); } }); $indexRemote = array_filter($this->getOption('indexRemote') ?: []); if (count($indexRemote)) { $trklib = TikiLib::lib('trk'); $trackerId = $this->getOption('trackerId'); $item = $trklib->get_tracker_item($this->getItemId()); $definition = Tracker_Definition::get($trackerId); $factory = $definition->getFieldFactory(); foreach ($indexRemote as $fieldId) { $field = $definition->getField($fieldId); $handler = $factory->getHandler($field, $item); if ($handler instanceof Tracker_Field_Filterable) { $handler->setBaseKeyPrefix($permName . '_'); $sub = $handler->getFilterCollection(); $collection->addCloned($permName, $sub); } } } return $collection; }
function action_select_filter($input) { $permName = $input->permName->word(); $trackerId = $input->trackerId->int(); $tracker = \Tracker_Definition::get($trackerId); if (!$tracker) { throw new Services_Exception_NotFound(); } Services_Exception_Denied::checkObject('tiki_p_view_trackers', 'tracker', $trackerId); $schema = new \Tracker\Filter\Collection($tracker); $local = $schema->getFieldCollection($permName); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $column = $schema->addFilter($permName, $input->mode->text()); return ['field' => $column->getField(), 'mode' => $column->getMode(), 'label' => $column->getLabel()]; } return ['title' => tr('Fields in %0', $tracker->getConfiguration('name')), 'trackerId' => $trackerId, 'permName' => $permName, 'collection' => $local]; }