mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-13 01:37:02 +02:00
automated search support
This commit is contained in:
@ -35,7 +35,6 @@ class ControllerSearchHelper extends Controller {
|
||||
$this->load->model('search/message');
|
||||
$this->load->model('user/user');
|
||||
|
||||
|
||||
$this->data['page'] = 0;
|
||||
if(isset($this->request->post['page'])) { $this->data['page'] = $this->request->post['page']; }
|
||||
|
||||
@ -46,7 +45,7 @@ class ControllerSearchHelper extends Controller {
|
||||
if($this->request->post['searchtype'] == 'expert'){
|
||||
|
||||
if(isset($this->request->post['search']) && preg_match("/(from|to|subject|body|direction|d|size|date1|date2|attachment|a|tag|note|id)\:/", $this->request->post['search'])) {
|
||||
$this->preprocess_post_expert_request($this->request->post);
|
||||
$this->a = $this->model_search_search->preprocess_post_expert_request($this->request->post);
|
||||
}
|
||||
else {
|
||||
$this->naive_preprocess_post_expert_request($this->request->post);
|
||||
@ -164,87 +163,6 @@ class ControllerSearchHelper extends Controller {
|
||||
}
|
||||
|
||||
|
||||
private function preprocess_post_expert_request($data = array()) {
|
||||
$token = 'match';
|
||||
$ndate = 0;
|
||||
$match = array();
|
||||
|
||||
if(!isset($data['search'])) { return; }
|
||||
|
||||
$s = preg_replace("/:/", ": ", $data['search']);
|
||||
$s = preg_replace("/,/", " ", $s);
|
||||
$s = preg_replace("/\(/", "( ", $s);
|
||||
$s = preg_replace("/\)/", ") ", $s);
|
||||
$s = preg_replace("/OR/", "|", $s);
|
||||
$s = preg_replace("/AND/", "", $s);
|
||||
$s = preg_replace("/\s{1,}/", " ", $s);
|
||||
$b = explode(" ", $s);
|
||||
|
||||
while(list($k, $v) = each($b)) {
|
||||
if($v == '') { continue; }
|
||||
|
||||
if($v == 'from:') { $token = 'match'; $this->a['match'][] = '@from'; continue; }
|
||||
else if($v == 'to:') { $token = 'match'; $this->a['match'][] = '@to'; continue; }
|
||||
else if($v == 'subject:') { $token = 'match'; $this->a['match'][] = '@subject'; continue; }
|
||||
else if($v == 'body:') { $token = 'match'; $this->a['match'][] = '@body'; continue; }
|
||||
else if($v == 'direction:' || $v == 'd:') { $token = 'direction'; continue; }
|
||||
else if($v == 'size:') { $token = 'size'; continue; }
|
||||
else if($v == 'date1:') { $token = 'date1'; continue; }
|
||||
else if($v == 'date2:') { $token = 'date2'; continue; }
|
||||
else if($v == 'attachment:' || $v == 'a:') { $token = 'match'; $this->a['match'][] = '@attachment_types'; continue; }
|
||||
else if($v == 'size') { $token = 'size'; continue; }
|
||||
else if($v == 'tag:') { $token = 'tag'; continue; }
|
||||
else if($v == 'note:') { $token = 'note'; continue; }
|
||||
else if($v == 'ref:') { $token = 'ref'; continue; }
|
||||
else if($v == 'id:') { $token = 'id'; continue; }
|
||||
else {
|
||||
if(preg_match("/\d{4}\-\d{1,2}\-\d{1,2}/", $v) || preg_match("/\d{1,2}\/\d{1,2}\/\d{4}/", $v)) {
|
||||
$ndate++;
|
||||
$this->a["date$ndate"] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($token == 'match') { $this->a['match'][] = $v; }
|
||||
else if($token == 'date1') { $this->a['date1'] = ' ' . $v; }
|
||||
else if($token == 'date2') { $this->a['date2'] = ' ' . $v; }
|
||||
else if($token == 'tag') { $this->a['tag'] .= ' ' . $v; }
|
||||
else if($token == 'note') { $this->a['note'] .= ' ' . $v; }
|
||||
else if($token == 'ref') { $this->a['ref'] = ' ' . $v; }
|
||||
else if($token == 'id') { $this->a['id'] .= ' ' . $v; }
|
||||
|
||||
else if($token == 'direction') {
|
||||
if($v == 'inbound') { $this->a['direction'] = "0"; }
|
||||
else if($v == 'outbound') { $this->a['direction'] = 2; }
|
||||
else if($v == 'internal') { $this->a['direction'] = 1; }
|
||||
}
|
||||
|
||||
else if($token == 'size') {
|
||||
$o = substr($v, 0, 1);
|
||||
if($o == '<' || $o == '>') {
|
||||
$v = substr($v, 1, strlen($v));
|
||||
$o1 = substr($v, 0, 1);
|
||||
if($o1 == '=') {
|
||||
$v = substr($v, 1, strlen($v));
|
||||
$o .= $o1;
|
||||
}
|
||||
}
|
||||
else { $o = ''; }
|
||||
|
||||
$s = explode("k", $v);
|
||||
if($s[0] != $v) { $v = $s[0] * 1000; }
|
||||
|
||||
$s = explode("M", $v);
|
||||
if($s[0] != $v) { $v = $s[0] * 1000000; }
|
||||
|
||||
$this->a['size'] .= ' ' . $o . $v;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user