public static function createFilter($key, $options = array(), TBGSavedSearch $search = null)
 {
     if (isset($options['o'])) {
         $options['operator'] = $options['o'];
     }
     if (isset($options['v'])) {
         $options['value'] = $options['v'];
     }
     $options = array_merge(array('operator' => '=', 'value' => ''), $options);
     $filter = new TBGSearchFilter();
     $filter->setFilterKey($key);
     $filter->setOperator($options['operator']);
     $filter->setValue($options['value']);
     $filter->setSearchId($search);
     return $filter;
 }
Beispiel #2
0
 public function runFilterGetDynamicChoices(TBGRequest $request)
 {
     $subproject_ids = explode(',', $request['subprojects']);
     $existing_ids = $request['existing_ids'];
     $results = array();
     $projects = $request['project_id'] != '' ? TBGProject::getAllByIDs(explode(',', $request['project_id'])) : TBGProject::getAll();
     $items = array('build' => array(), 'edition' => array(), 'component' => array(), 'milestone' => array());
     foreach ($projects as $project) {
         foreach ($project->getBuilds() as $build) {
             $items['build'][$build->getID()] = $build;
         }
         foreach ($project->getEditions() as $edition) {
             $items['edition'][$edition->getID()] = $edition;
         }
         foreach ($project->getComponents() as $component) {
             $items['component'][$component->getID()] = $component;
         }
         foreach ($project->getMilestones() as $milestone) {
             $items['milestone'][$milestone->getID()] = $milestone;
         }
     }
     $filters = array();
     $filters['build'] = TBGSearchFilter::createFilter('build');
     $filters['edition'] = TBGSearchFilter::createFilter('edition');
     $filters['component'] = TBGSearchFilter::createFilter('component');
     $filters['milestone'] = TBGSearchFilter::createFilter('milestone');
     if (isset($existing_ids['build'])) {
         foreach (TBGBuildsTable::getTable()->getByIDs($existing_ids['build']) as $build) {
             $items['build'][$build->getID()] = $build;
         }
         $filters['build']->setValue(join(',', $existing_ids['build']));
     }
     if (isset($existing_ids['edition'])) {
         foreach (TBGEditionsTable::getTable()->getByIDs($existing_ids['edition']) as $edition) {
             $items['edition'][$edition->getID()] = $edition;
         }
         $filters['edition']->setValue(join(',', $existing_ids['edition']));
     }
     if (isset($existing_ids['component'])) {
         foreach (TBGComponentsTable::getTable()->getByIDs($existing_ids['component']) as $component) {
             $items['component'][$component->getID()] = $component;
         }
         $filters['component']->setValue(join(',', $existing_ids['component']));
     }
     if (isset($existing_ids['milestone'])) {
         foreach (TBGMilestonesTable::getTable()->getByIDs($existing_ids['milestone']) as $milestone) {
             $items['milestone'][$milestone->getID()] = $milestone;
         }
         $filters['milestone']->setValue(join(',', $existing_ids['milestone']));
     }
     foreach (array('build', 'edition', 'component', 'milestone') as $k) {
         $results[$k] = $this->getTemplateHTML('search/interactivefilterdynamicchoicelist', array('filter' => $filters[$k], 'items' => $items[$k]));
     }
     return $this->renderJSON(compact('results'));
 }
Beispiel #3
0
<?php

$show_button = false;
?>
<li id="filter_<?php 
echo $key;
?>
">
	<?php 
if (in_array($filter, TBGSearchFilter::getValidSearchFilters())) {
    ?>
		<?php 
    if ($filter == 'project_id' && !TBGContext::isProjectContext()) {
        ?>
			<label<?php 
        if (!TBGContext::isProjectContext()) {
            ?>
 for="filter_project_id_<?php 
            echo $key;
            ?>
"<?php 
        }
        ?>
><?php 
        echo __('Project');
        ?>
</label>
			<?php 
        if (!TBGContext::isProjectContext()) {
            ?>
				<select name="filters[project_id][<?php 
</div>
				</div>
				<?php 
            break;
        case 'priority':
        case 'resolution':
        case 'reproducability':
        case 'severity':
            include_template('search/interactivefilter_choice', compact('filter'));
            break;
        case 'posted':
        case 'last_updated':
            include_template('search/interactivefilter_date', compact('filter'));
            break;
        default:
            if (!in_array($filter->getFilterKey(), TBGSearchFilter::getValidSearchFilters())) {
                switch ($filter->getFilterType()) {
                    case TBGCustomDatatype::DATE_PICKER:
                        include_template('search/interactivefilter_date', compact('filter'));
                        break;
                    case TBGCustomDatatype::RADIO_CHOICE:
                    case TBGCustomDatatype::DROPDOWN_CHOICE_TEXT:
                        include_template('search/interactivefilter_choice', compact('filter'));
                        break;
                    case TBGCustomDatatype::COMPONENTS_CHOICE:
                    case TBGCustomDatatype::EDITIONS_CHOICE:
                    case TBGCustomDatatype::RELEASES_CHOICE:
                    case TBGCustomDatatype::MILESTONE_CHOICE:
                        include_template('search/interactivefilter_affected', compact('filter'));
                        break;
                    case TBGCustomDatatype::USER_CHOICE:
 protected function _setupGenericFilters()
 {
     if (!isset($this->_filters['issuetype'])) {
         $this->_filters['issuetype'] = TBGSearchFilter::createFilter('issuetype', array(), $this);
     }
     if (!isset($this->_filters['status'])) {
         $this->_filters['status'] = TBGSearchFilter::createFilter('status', array(), $this);
     }
     if (!isset($this->_filters['category'])) {
         $this->_filters['category'] = TBGSearchFilter::createFilter('category', array(), $this);
     }
     if (!TBGContext::isProjectContext() && !isset($this->_filters['project_id'])) {
         $this->_filters['project_id'] = TBGSearchFilter::createFilter('project_id', array(), $this);
     }
 }
    }
    ?>
			<?php 
    if (!$search_object->hasFilter($customtype->getKey())) {
        include_component('search/interactivefilter', array('filter' => TBGSearchFilter::createFilter($customtype->getKey())));
    }
    ?>
		<?php 
}
?>
		<?php 
foreach ($datecustomfields as $customtype) {
    ?>
			<?php 
    if (!$search_object->hasFilter($customtype->getKey())) {
        include_component('search/interactivefilter', array('filter' => TBGSearchFilter::createFilter($customtype->getKey(), array('operator' => '<=', 'value' => time()))));
    }
    ?>
		<?php 
}
?>
	</div>
	<?php 
if (!$tbg_user->isGuest()) {
    ?>
		<div class="fullpage_backdrop" style="display: none;" id="saved_search_details">
			<div class="backdrop_box large">
				<div class="backdrop_detail_header"><?php 
    echo __('Save this search');
    ?>
</div>