Fix search on not with imapv2
This commit is contained in:
parent
0d8d2528b0
commit
949e288ce0
@ -1096,6 +1096,8 @@ class EmailCollector extends CommonObject
|
|||||||
$searchfilterisanswer = 0;
|
$searchfilterisanswer = 0;
|
||||||
$searchfilterisnotanswer = 0;
|
$searchfilterisnotanswer = 0;
|
||||||
$searchfilterreplyto = 0;
|
$searchfilterreplyto = 0;
|
||||||
|
$searchfilterexcludebody = '';
|
||||||
|
$searchfilterexcludesubject = '';
|
||||||
$operationslog = '';
|
$operationslog = '';
|
||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
@ -1285,10 +1287,20 @@ class EmailCollector extends CommonObject
|
|||||||
array_push($criteria, array($not."CC" => $rule['rulevalue']));
|
array_push($criteria, array($not."CC" => $rule['rulevalue']));
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'subject') {
|
if ($rule['type'] == 'subject') {
|
||||||
array_push($criteria, array($not."SUBJECT" => $rule['rulevalue']));
|
if (strpos($rule['rulevalue'], '!') === 0) {
|
||||||
|
//array_push($criteria, array("NOT SUBJECT" => $rule['rulevalue']));
|
||||||
|
$searchfilterexcludesubject = preg_replace('/^!/', '', $rule['rulevalue']);
|
||||||
|
} else {
|
||||||
|
array_push($criteria, array("SUBJECT" => $rule['rulevalue']));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'body') {
|
if ($rule['type'] == 'body') {
|
||||||
array_push($criteria, array($not."BODY" => $rule['rulevalue']));
|
if (strpos($rule['rulevalue'], '!') === 0) {
|
||||||
|
//array_push($criteria, array("NOT BODY" => $rule['rulevalue']));
|
||||||
|
$searchfilterexcludebody = preg_replace('/^!/', '', $rule['rulevalue']);
|
||||||
|
} else {
|
||||||
|
array_push($criteria, array("BODY" => $rule['rulevalue']));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'header') {
|
if ($rule['type'] == 'header') {
|
||||||
array_push($criteria, array($not."HEADER" => $rule['rulevalue']));
|
array_push($criteria, array($not."HEADER" => $rule['rulevalue']));
|
||||||
@ -1406,10 +1418,20 @@ class EmailCollector extends CommonObject
|
|||||||
$search .= ($search ? ' ' : '').$not.'CC';
|
$search .= ($search ? ' ' : '').$not.'CC';
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'subject') {
|
if ($rule['type'] == 'subject') {
|
||||||
$search .= ($search ? ' ' : '').$not.'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"';
|
if (strpos($rule['rulevalue'], '!') === 0) {
|
||||||
|
//$search .= ($search ? ' ' : '').'NOT BODY "'.str_replace('"', '', $rule['rulevalue']).'"';
|
||||||
|
$searchfilterexcludesubject = preg_replace('/^!/', '', $rule['rulevalue']);
|
||||||
|
} else {
|
||||||
|
$search .= ($search ? ' ' : '').'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'body') {
|
if ($rule['type'] == 'body') {
|
||||||
$search .= ($search ? ' ' : '').$not.'BODY "'.str_replace('"', '', $rule['rulevalue']).'"';
|
if (strpos($rule['rulevalue'], '!') === 0) {
|
||||||
|
//$search .= ($search ? ' ' : '').'NOT BODY "'.str_replace('"', '', $rule['rulevalue']).'"';
|
||||||
|
$searchfilterexcludebody = preg_replace('/^!/', '', $rule['rulevalue']);
|
||||||
|
} else {
|
||||||
|
$search .= ($search ? ' ' : '').'BODY "'.str_replace('"', '', $rule['rulevalue']).'"';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($rule['type'] == 'header') {
|
if ($rule['type'] == 'header') {
|
||||||
$search .= ($search ? ' ' : '').$not.'HEADER '.$rule['rulevalue'];
|
$search .= ($search ? ' ' : '').$not.'HEADER '.$rule['rulevalue'];
|
||||||
@ -1684,8 +1706,6 @@ class EmailCollector extends CommonObject
|
|||||||
$ticketfoundby = '';
|
$ticketfoundby = '';
|
||||||
$candidaturefoundby = '';
|
$candidaturefoundby = '';
|
||||||
|
|
||||||
$this->db->begin();
|
|
||||||
|
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
|
if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
|
||||||
dol_syslog("msgid=".$overview['message_id']." date=".dol_print_date($overview['date'], 'dayrfc', 'gmt')." from=".$overview['from']." to=".$overview['to']." subject=".$overview['subject']);
|
dol_syslog("msgid=".$overview['message_id']." date=".dol_print_date($overview['date'], 'dayrfc', 'gmt')." from=".$overview['from']." to=".$overview['to']." subject=".$overview['subject']);
|
||||||
@ -1719,7 +1739,7 @@ class EmailCollector extends CommonObject
|
|||||||
$attachments = [];
|
$attachments = [];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->getmsg($connection, $imapemail);
|
$this->getmsg($connection, $imapemail); // This set global var $charset, $htmlmsg, $plainmsg, $attachments
|
||||||
}
|
}
|
||||||
//print $plainmsg;
|
//print $plainmsg;
|
||||||
//var_dump($plainmsg); exit;
|
//var_dump($plainmsg); exit;
|
||||||
@ -1729,6 +1749,15 @@ class EmailCollector extends CommonObject
|
|||||||
// Removed emojis
|
// Removed emojis
|
||||||
$messagetext = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $messagetext);
|
$messagetext = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $messagetext);
|
||||||
|
|
||||||
|
if ($searchfilterexcludebody) {
|
||||||
|
if (preg_match('/'.preg_quote($searchfilterexcludebody, '/').'/ms', $messagetext)) {
|
||||||
|
$nbemailprocessed++;
|
||||||
|
$operationslog .= '<br>Discarded - Email body contains string '.$searchfilterexcludebody;
|
||||||
|
dol_syslog(" Discarded - Email body contains string ".$searchfilterexcludebody);
|
||||||
|
continue; // Exclude email
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//var_dump($plainmsg);
|
//var_dump($plainmsg);
|
||||||
//var_dump($htmlmsg);
|
//var_dump($htmlmsg);
|
||||||
//var_dump($messagetext);
|
//var_dump($messagetext);
|
||||||
@ -1812,6 +1841,14 @@ class EmailCollector extends CommonObject
|
|||||||
//var_dump($msgid);exit;
|
//var_dump($msgid);exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($searchfilterexcludesubject) {
|
||||||
|
if (preg_match('/'.preg_quote($searchfilterexcludesubject, '/').'/ms', $subject)) {
|
||||||
|
$nbemailprocessed++;
|
||||||
|
$operationslog .= '<br>Discarded - Email subject contains string '.$searchfilterexcludesubject;
|
||||||
|
dol_syslog(" Discarded - Email subject contains string ".$searchfilterexcludesubject);
|
||||||
|
continue; // Exclude email
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$reg = array();
|
$reg = array();
|
||||||
if (preg_match('/^(.*)<(.*)>$/', $fromstring, $reg)) {
|
if (preg_match('/^(.*)<(.*)>$/', $fromstring, $reg)) {
|
||||||
@ -1830,6 +1867,7 @@ class EmailCollector extends CommonObject
|
|||||||
}
|
}
|
||||||
$fk_element_id = 0; $fk_element_type = '';
|
$fk_element_id = 0; $fk_element_type = '';
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
$contactid = 0; $thirdpartyid = 0; $projectid = 0; $ticketid = 0;
|
$contactid = 0; $thirdpartyid = 0; $projectid = 0; $ticketid = 0;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user