diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 73de2bd2cbf..95c6b95ea0b 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -872,9 +872,10 @@ class EmailCollector extends CommonObject * @param string $messagetext Body * @param string $subject Subject * @param string $header Header + * @param string $operationslog String with logs of operations done * @return int 0=OK, Nb of error if error */ - private function overwritePropertiesOfObject(&$object, $actionparam, $messagetext, $subject, $header) + private function overwritePropertiesOfObject(&$object, $actionparam, $messagetext, $subject, $header, &$operationslog) { $errorforthisaction = 0; @@ -909,6 +910,7 @@ class EmailCollector extends CommonObject $sourcefield = $regforregex[1]; $regexstring = $regforregex[2]; } + if (!empty($sourcefield) && !empty($regexstring)) { if (strtolower($sourcefield) == 'body') { $sourcestring = $messagetext; @@ -930,7 +932,6 @@ class EmailCollector extends CommonObject //var_dump($tmpproperty.' - '.$regexstring.' - '.$regexoptions.' - '.$sourcestring); if (preg_match('/'.$regexstring.'/'.$regexoptions, $sourcestring, $regforval)) { - //var_dump($regforval[count($regforval)-1]);exit; // Overwrite param $tmpproperty $valueextracted = isset($regforval[count($regforval) - 1]) ?trim($regforval[count($regforval) - 1]) : null; if (strtolower($sourcefield) == 'header') { @@ -946,9 +947,16 @@ class EmailCollector extends CommonObject $object->$tmpproperty = $this->decodeSMTPSubject($valueextracted); } } + if (preg_match('/^options_/', $tmpproperty)) { + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/'.dol_escape_htmltag($regexoptions).' into '.dol_escape_htmltag($sourcestring).' -> found '.dol_escape_htmltag($object->array_options[preg_replace('/^options_/', '', $tmpproperty)]); + } else { + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/'.dol_escape_htmltag($regexoptions).' into '.dol_escape_htmltag($sourcestring).' -> found '.dol_escape_htmltag($object->$tmpproperty); + } } else { // Regex not found $object->$tmpproperty = null; + + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/'.dol_escape_htmltag($regexoptions).' into '.dol_escape_htmltag($sourcestring).' -> not found, so property '.dol_escape_htmltag($tmpproperty).' is set to null.'; } } else { // Nothing can be done for this param @@ -986,6 +994,8 @@ class EmailCollector extends CommonObject } else { $object->$tmpproperty = $valuetouse; } + + $operationslog .= '
Set value '.dol_escape_htmltag($valuetouse).' into variable '.dol_escape_htmltag($tmpproperty); } } else { $errorforthisaction++; @@ -1479,7 +1489,7 @@ class EmailCollector extends CommonObject $emailto = $this->decodeSMTPSubject($overview[0]->to); - + $operationslog .= '
Process email '.dol_escape_htmltag($iforemailloop)." - References: ".dol_escape_htmltag($headers['References'])." - Subject: ".dol_escape_htmltag($headers['Subject']); dol_syslog("** Process email ".$iforemailloop." References: ".$headers['References']." Subject: ".$headers['Subject']); @@ -2027,15 +2037,15 @@ class EmailCollector extends CommonObject if ($propertytooverwrite == 'id') { $idtouseforthirdparty = isset($regforval[count($regforval) - 1]) ? trim($regforval[count($regforval) - 1]) : null; - $operationslog .= '
Regex /'.$regexstring.'/ms into '.$sourcestring.' -> Found idtouseforthirdparty='.$idtouseforthirdparty; + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/ms into '.dol_escape_htmltag($sourcestring).' -> Found idtouseforthirdparty='.dol_escape_htmltag($idtouseforthirdparty); } elseif ($propertytooverwrite == 'email') { $emailtouseforthirdparty = isset($regforval[count($regforval) - 1]) ? trim($regforval[count($regforval) - 1]) : null; - $operationslog .= '
Regex /'.$regexstring.'/ms into '.$sourcestring.' -> Found propertytooverwrite='.$propertytooverwrite; + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/ms into '.dol_escape_htmltag($sourcestring).' -> Found propertytooverwrite='.dol_escape_htmltag($propertytooverwrite); } else { $nametouseforthirdparty = isset($regforval[count($regforval) - 1]) ? trim($regforval[count($regforval) - 1]) : null; - $operationslog .= '
Regex /'.$regexstring.'/ms into '.$sourcestring.' -> Found nametouseforthirdparty='.$nametouseforthirdparty; + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/ms into '.dol_escape_htmltag($sourcestring).' -> Found nametouseforthirdparty='.dol_escape_htmltag($nametouseforthirdparty); } } else { // Regex not found @@ -2043,13 +2053,13 @@ class EmailCollector extends CommonObject $nametouseforthirdparty = null; $emailtouseforthirdparty = null; - $operationslog .= '
Regex /'.$regexstring.'/ms into '.$sourcestring.' -> Not found'; + $operationslog .= '
Regex /'.dol_escape_htmltag($regexstring).'/ms into '.dol_escape_htmltag($sourcestring).' -> Not found'; } //var_dump($object->$tmpproperty);exit; } else { // Nothing can be done for this param $errorforactions++; - $this->error = 'The extract rule to use to load thirdparty has on an unknown source (must be HEADER, SUBJECT or BODY)'; + $this->error = 'The extract rule to use to load thirdparty has an unknown source (must be HEADER, SUBJECT or BODY)'; $this->errors[] = $this->error; } } elseif (preg_match('/^(SET|SETIFEMPTY):(.*)$/', $valueforproperty, $reg)) { @@ -2058,15 +2068,15 @@ class EmailCollector extends CommonObject if ($propertytooverwrite == 'id') { $idtouseforthirdparty = $reg[2]; - $operationslog .= '
We set property idtouseforthrdparty='.$idtouseforthirdparty; + $operationslog .= '
We set property idtouseforthrdparty='.dol_escape_htmltag($idtouseforthirdparty); } elseif ($propertytooverwrite == 'email') { $emailtouseforthirdparty = $reg[2]; - $operationslog .= '
We set property emailtouseforthrdparty='.$emailtouseforthirdparty; + $operationslog .= '
We set property emailtouseforthrdparty='.dol_escape_htmltag($emailtouseforthirdparty); } else { $nametouseforthirdparty = $reg[2]; - $operationslog .= '
We set property nametouseforthirdparty='.$nametouseforthirdparty; + $operationslog .= '
We set property nametouseforthirdparty='.dol_escape_htmltag($nametouseforthirdparty); } } else { $errorforactions++; @@ -2102,7 +2112,7 @@ class EmailCollector extends CommonObject $thirdpartystatic->email = ($emailtouseforthirdparty ? $emailtouseforthirdparty : $from); // Overwrite values with values extracted from source email - $errorforthisaction = $this->overwritePropertiesOfObject($thirdpartystatic, $operation['actionparam'], $messagetext, $subject, $header); + $errorforthisaction = $this->overwritePropertiesOfObject($thirdpartystatic, $operation['actionparam'], $messagetext, $subject, $header, $operationslog); if ($thirdpartystatic->client && empty($thirdpartystatic->code_client)) { $thirdpartystatic->code_client = 'auto'; @@ -2120,7 +2130,7 @@ class EmailCollector extends CommonObject $this->error = $thirdpartystatic->error; $this->errors = $thirdpartystatic->errors; } else { - $operationslog .= '
Thirdparty created -> id = '.$thirdpartystatic->id; + $operationslog .= '
Thirdparty created -> id = '.dol_escape_htmltag($thirdpartystatic->id); } } } @@ -2197,7 +2207,7 @@ class EmailCollector extends CommonObject //$actioncomm->extraparams = $extraparams; // Overwrite values with values extracted from source email - $errorforthisaction = $this->overwritePropertiesOfObject($actioncomm, $operation['actionparam'], $messagetext, $subject, $header); + $errorforthisaction = $this->overwritePropertiesOfObject($actioncomm, $operation['actionparam'], $messagetext, $subject, $header, $operationslog); //var_dump($fk_element_id); //var_dump($fk_element_type); @@ -2214,7 +2224,7 @@ class EmailCollector extends CommonObject $errorforactions++; $this->errors = $actioncomm->errors; } else { - $operationslog .= '
Event created -> id='.$actioncomm->id; + $operationslog .= '
Event created -> id='.dol_escape_htmltag($actioncomm->id); } } } @@ -2433,7 +2443,7 @@ class EmailCollector extends CommonObject // Overwrite values with values extracted from source email. // This may overwrite any $projecttocreate->xxx properties. - $errorforthisaction = $this->overwritePropertiesOfObject($projecttocreate, $operation['actionparam'], $messagetext, $subject, $header); + $errorforthisaction = $this->overwritePropertiesOfObject($projecttocreate, $operation['actionparam'], $messagetext, $subject, $header, $operationslog); // Set project ref if not yet defined if (empty($projecttocreate->ref)) { @@ -2500,9 +2510,9 @@ class EmailCollector extends CommonObject $this->getmsg($connection, $imapemail, $destdir); } - $operationslog .= '
Project created with attachments -> id='.$projecttocreate->id; + $operationslog .= '
Project created with attachments -> id='.dol_escape_htmltag($projecttocreate->id); } else { - $operationslog .= '
Project created without attachments -> id='.$projecttocreate->id; + $operationslog .= '
Project created without attachments -> id='.dol_escape_htmltag($projecttocreate->id); } } } @@ -2560,7 +2570,7 @@ class EmailCollector extends CommonObject // Overwrite values with values extracted from source email. // This may overwrite any $projecttocreate->xxx properties. - $errorforthisaction = $this->overwritePropertiesOfObject($tickettocreate, $operation['actionparam'], $messagetext, $subject, $header); + $errorforthisaction = $this->overwritePropertiesOfObject($tickettocreate, $operation['actionparam'], $messagetext, $subject, $header, $operationslog); // Set ticket ref if not yet defined if (empty($tickettocreate->ref)) { @@ -2626,9 +2636,9 @@ class EmailCollector extends CommonObject $this->getmsg($connection, $imapemail, $destdir); } - $operationslog .= '
Ticket created with attachments -> id='.$tickettocreate->id; + $operationslog .= '
Ticket created with attachments -> id='.dol_escape_htmltag($tickettocreate->id); } else { - $operationslog .= '
Ticket created without attachments -> id='.$tickettocreate->id; + $operationslog .= '
Ticket created without attachments -> id='.dol_escape_htmltag($tickettocreate->id); } } } @@ -2670,7 +2680,7 @@ class EmailCollector extends CommonObject // Overwrite values with values extracted from source email. // This may overwrite any $projecttocreate->xxx properties. - $errorforthisaction = $this->overwritePropertiesOfObject($candidaturetocreate, $operation['actionparam'], $messagetext, $subject, $header); + $errorforthisaction = $this->overwritePropertiesOfObject($candidaturetocreate, $operation['actionparam'], $messagetext, $subject, $header, $operationslog); // Set candidature ref if not yet defined /*if (empty($candidaturetocreate->ref)) We do not need this because we create object in draft status @@ -2723,7 +2733,7 @@ class EmailCollector extends CommonObject $this->errors = $candidaturetocreate->errors; } - $operationslog .= '
Candidature created without attachments -> id='.$candidaturetocreate->id; + $operationslog .= '
Candidature created without attachments -> id='.dol_escape_htmltag($candidaturetocreate->id); } } } elseif (substr($operation['type'], 0, 4) == 'hook') { @@ -2845,7 +2855,7 @@ class EmailCollector extends CommonObject $this->lastresult = $output; $this->debuginfo .= 'IMAP search string used : '.$search; if ($searchhead) { - $this->debuginfo .= '
Then search string into email header : '.$searchhead; + $this->debuginfo .= '
Then search string into email header : '.dol_escape_htmltag($searchhead); } if ($operationslog) { $this->debuginfo .= $operationslog;