More search filters

This commit is contained in:
Latif Khalifa
2013-11-30 09:50:05 +01:00
parent e0ff90d225
commit fd2b066d75

View File

@@ -10,7 +10,8 @@ class SearchFilter
public $grid; public $grid;
public $region; public $region;
public $gpu; public $gpu;
public $stacktrace; public $search_type;
public $search_for;
public $signature_id; public $signature_id;
public $sort_by; public $sort_by;
@@ -21,7 +22,7 @@ class SearchFilter
public $offset = 0; public $offset = 0;
public $page = 0; public $page = 0;
var $fields = array("os", "chan", "version", "version_min", "version_max", "grid", "region", "gpu", "stacktrace", "signature_id", "limit", "offset"); var $fields = array("os", "chan", "version", "version_min", "version_max", "grid", "region", "gpu", "search_type", "search_for", "signature_id", "limit", "offset");
function __construct() function __construct()
{ {
@@ -94,18 +95,20 @@ class SearchFilter
if ($this->gpu) $cond[] = kl_str_sql("gpu=!s", $this->gpu); if ($this->gpu) $cond[] = kl_str_sql("gpu=!s", $this->gpu);
if ($this->signature_id) $cond[] = kl_str_sql("signature_id=!s", $this->signature_id); if ($this->signature_id) $cond[] = kl_str_sql("signature_id=!s", $this->signature_id);
if ($this->stacktrace) if ($this->search_for)
{ {
$parts = preg_split("/\\s+/", trim($this->stacktrace)); $fmap = array("stack" => "raw_stacktrace", "gpu" => "gpu", "os" => "os", "region" => "region");
$field = $fmap[$this->search_type];
$parts = preg_split("/\\s+/", trim($this->search_for));
foreach($parts as $part) foreach($parts as $part)
{ {
if ($part[0] == "-") if ($part[0] == "-")
{ {
$cond[] = kl_str_sql("raw_stacktrace not like !s", "%" . substr($part, 1) . "%"); $cond[] = kl_str_sql("$field not like !s", "%" . substr($part, 1) . "%");
} }
else else
{ {
$cond[] = kl_str_sql("raw_stacktrace like !s", "%{$part}%"); $cond[] = kl_str_sql("$field like !s", "%{$part}%");
} }
} }
} }
@@ -268,10 +271,21 @@ for($i = 0; $i < count($grids); $i++)
</select> </select>
</div> </div>
<div class="filterelem"> <div class="filterelem" style="padding-top: 8px;">
Stacktrace contains<br/> <div style="display: inline-block">
<input class="ui-widget-content" type="text" name="stacktrace" value="<?php echo htmlentities($this->stacktrace) ?>" /> <br/>
<input class="toolbarbutton" type="submit" name="do_search" value="Search" /> <select class="ui-widget-content" name="search_type">
<option value="stack" <?php echo $this->search_type == "stack" ? ' selected="selected"' : "" ?>>Stacktrace</option>
<option value="gpu" <?php echo $this->search_type == "gpu" ? ' selected="selected"' : "" ?>>GPU</option>
<option value="os" <?php echo $this->search_type == "os" ? ' selected="selected"' : "" ?>>OS</option>
<option value="region" <?php echo $this->search_type == "region" ? ' selected="selected"' : "" ?>>Region</option>
</select>
</div>
<div style="display: inline-block">
contains<br/>
<input class="ui-widget-content" type="text" name="search_for" value="<?php echo htmlentities($this->search_for) ?>" />
<input class="toolbarbutton" type="submit" name="do_search" value="Search" />
</div>
</div> </div>
</div> </div>