webui search fixes

This commit is contained in:
SJ
2012-02-12 16:16:54 +01:00
parent 2a9376222c
commit cfb7b80120
5 changed files with 70 additions and 45 deletions

View File

@ -49,14 +49,22 @@ class ControllerSearchHelper extends Controller {
$this->data['n'] = -1;
if($this->request->post['searchtype'] == 'advanced') {
$this->preprocess_post_advanced_request($this->request->post);
$this->fixup_post_request();
list ($this->data['n'], $this->data['messages']) = $this->model_search_search->search_messages($this->a, ADVANCED_SEARCH, $this->data['page']);
} else if($this->request->post['searchtype'] == 'expert'){
}
else if($this->request->post['searchtype'] == 'expert'){
$this->preprocess_post_expert_request($this->request->post);
$this->fixup_post_request();
list ($this->data['n'], $this->data['messages']) = $this->model_search_search->search_messages($this->a, ADVANCED_SEARCH, $this->data['page']);
} else {
}
else {
$this->fixup_post_simple_request();
list ($this->data['n'], $this->data['messages']) = $this->model_search_search->search_messages($this->request->post, SIMPLE_SEARCH, $this->data['page']);
}
@ -86,12 +94,16 @@ class ControllerSearchHelper extends Controller {
private function fixup_post_request() {
while(list($k, $v) = each($this->a)) {
if($this->a[$k]) { $this->a[$k] = substr($this->a[$k], 1, strlen($this->a[$k])); }
}
$this->a['o_from'] = substr($this->a['o_from'], 1, strlen($this->a['o_from']));
$this->a['f_from'] = substr($this->a['f_from'], 1, strlen($this->a['f_from']));
$this->a['o_to'] = substr($this->a['o_to'], 1, strlen($this->a['o_to']));
$this->a['f_to'] = substr($this->a['f_to'], 1, strlen($this->a['f_to']));
$this->a['from'] = substr($this->a['from'], 1, strlen($this->a['from']));
$this->a['to'] = substr($this->a['to'], 1, strlen($this->a['to']));
$this->a['from_domain'] = substr($this->a['from_domain'], 1, strlen($this->a['from_domain']));
$this->a['to_domain'] = substr($this->a['to_domain'], 1, strlen($this->a['to_domain']));
$this->a['ref'] = $this->request->post['ref'];
$this->a['sort'] = $this->request->post['sort'];
$this->a['order'] = $this->request->post['order'];
}
@ -100,14 +112,14 @@ class ControllerSearchHelper extends Controller {
private function preprocess_post_expert_request($data = array()) {
$token = '';
//print_r($data);
$s = preg_replace("/:/", ": ", $data['search']);
$s = preg_replace("/,/", " ", $s);
$s = preg_replace("/\s{1,}/", " ", $s);
$b = explode(" ", $s);
while(list($k, $v) = each($b)) {
if($v == '') { continue; }
if($v == 'from:') { $token = 'from'; continue; }
else if($v == 'to:') { $token = 'to'; continue; }
else if($v == 'subject:') { $token = 'subject'; continue; }
@ -145,15 +157,42 @@ class ControllerSearchHelper extends Controller {
}
else if($token == 'subject') { $this->a['subject'] .= ' ' . $v; }
else if($token == 'body') { $this->a['body'] .= ' ' . $v; }
else if($token == 'date1') { $this->a['date1'] = $v; }
else if($token == 'date2') { $this->a['date2'] = $v; }
else if($token == 'direction') { $this->a['direction'] = $v; }
else if($token == 'size') { $this->a['size'] .= ' ' . $v; }
else if($token == 'attachment_type') { $this->a['attachment_type'] .= ' ' . $v; }
else if($token == 'date1') { $this->a['date1'] = ' ' . $v; }
else if($token == 'date2') { $this->a['date2'] = ' ' . $v; }
else if($token == 'attachment_type') { $this->a['attachment_type'] .= '|' . $v; }
else if($token == 'tag') { $this->a['tag'] .= ' ' . $v; }
else if($token == 'ref') { $this->a['ref'] = $v; }
else if($token == 'ref') { $this->a['ref'] = ' ' . $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;
}
}
$this->a['attachment_type'] = substr($this->a['attachment_type'], 1, strlen($this->a['attachment_type']));
}
@ -173,7 +212,7 @@ class ControllerSearchHelper extends Controller {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_from'] .= "|$v"; } else { $this->a['f_from'] .= "|$v"; }
}
else {
$this->a['from'] .= "|$v";
$this->a['from'] .= " $v";
}
}
@ -185,28 +224,21 @@ class ControllerSearchHelper extends Controller {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_to'] .= "|$v"; } else { $this->a['f_to'] .= "|$v"; }
}
else {
$this->a['to'] .= "|$v";
$this->a['to'] .= " $v";
}
}
if($f == 'subject') {
$this->a['subject'] .= "|$v";
}
if($f == 'body') {
$this->a['body'] .= "|$v";
}
if($f == 'tag') {
$this->a['tag'] .= "|$v";
}
if($f == 'subject') { $this->a['subject'] .= ' ' . $v; }
if($f == 'body') { $this->a['body'] .= ' ' . $v; }
}
}
if(isset($data['attachment_type'])) { $this->a['attachment_type'] = $data['attachment_type']; }
if(isset($data['direction'])) { $this->a['direction'] = $data['direction']; }
if(isset($data['tag'])) { $this->a['tag'] = $data['tag']; }
if(isset($data['date1'])) { $this->a['date1'] = $data['date1']; }
if(isset($data['date2'])) { $this->a['date2'] = $data['date2']; }
}