get('name');
}
protected function _setSubject($value)
{
$this->set('name', $value);
}
protected function _hasSubject()
{
return $this->has('name');
}
protected function _hasFromName()
{
return $this->has('fromString');
}
protected function _hasFromAddress()
{
return $this->has('fromString');
}
protected function _hasReplyToName()
{
return $this->has('replyToString');
}
protected function _hasReplyToAddress()
{
return $this->has('replyToString');
}
protected function _getFromName()
{
if (!$this->has('fromString')) return null;
return \Espo\Services\Email::parseFromName($this->get('fromString'));
}
protected function _getFromAddress()
{
if (!$this->has('fromString')) return null;
return \Espo\Services\Email::parseFromAddress($this->get('fromString'));
}
protected function _getReplyToName()
{
if (!$this->has('replyToString')) return null;
$string = $this->get('replyToString');
if (!$string) return null;
$string = trim(explode(';', $string)[0]);
return \Espo\Services\Email::parseFromName($string);
}
protected function _getReplyToAddress()
{
if (!$this->has('replyToString')) return null;
$string = $this->get('replyToString');
if (!$string) return null;
$string = trim(explode(';', $string)[0]);
return \Espo\Services\Email::parseFromAddress($string);
}
protected function _setIsRead($value)
{
$this->setValue('isRead', $value !== false);
if ($value === true || $value === false) {
$this->setValue('isUsers', true);
} else {
$this->setValue('isUsers', false);
}
}
public function isManuallyArchived()
{
return $this->get('status') === 'Archived' && $this->get('createdById') !== 'system';
}
public function addAttachment(\Espo\Entities\Attachment $attachment)
{
if (!empty($this->id)) {
$attachment->set('parentId', $this->id);
$attachment->set('parentType', 'Email');
if ($this->entityManager->saveEntity($attachment)) {
return true;
}
}
}
protected function _getBodyPlain()
{
return $this->getBodyPlain();
}
public function hasBodyPlain()
{
return !empty($this->valuesContainer['bodyPlain']);
}
public function getBodyPlain()
{
if (!empty($this->valuesContainer['bodyPlain'])) {
return $this->valuesContainer['bodyPlain'];
}
$body = $this->get('body');
$breaks = ["
","
","
","
","<br />","<br/>","<br>"];
$body = str_ireplace($breaks, "\r\n", $body);
$body = strip_tags($body);
$reList = [
'&(quot|#34);',
'&(amp|#38);',
'&(lt|#60);',
'&(gt|#62);',
'&(nbsp|#160);',
'&(iexcl|#161);',
'&(cent|#162);',
'&(pound|#163);',
'&(copy|#169);',
'&(reg|#174);',
];
$replaceList = [
'',
'&',
'<',
'>',
' ',
chr(161),
chr(162),
chr(163),
chr(169),
chr(174),
];
foreach ($reList as $i => $re) {
$body = mb_ereg_replace($re, $replaceList[$i], $body, 'i');
}
return $body;
}
public function getBodyPlainForSending()
{
return $this->getBodyPlain();
}
public function getBodyForSending()
{
$body = $this->get('body');
if (!empty($body)) {
$attachmentList = $this->getInlineAttachments();
foreach ($attachmentList as $attachment) {
$body = str_replace("\"?entryPoint=attachment&id={$attachment->id}\"", "\"cid:{$attachment->id}\"", $body);
}
}
$body = str_replace("