mail classes comments and type hinting

This commit is contained in:
Yuri Kuznetsov
2020-07-10 12:55:10 +03:00
parent eb32b41bd4
commit 76273a4d86
7 changed files with 56 additions and 36 deletions

View File

@@ -29,16 +29,10 @@
namespace Espo\Core\Mail;
use \Espo\Entities\Email;
use Espo\Entities\Email;
class FiltersMatcher
{
public function __construct()
{
}
protected function matchTo(Email $email, $filter)
{
if ($email->get('to')) {

View File

@@ -31,25 +31,35 @@ namespace Espo\Core\Mail;
use Laminas\Mime\Mime as Mime;
use \Espo\ORM\Entity;
use \Espo\ORM\Email;
use Espo\Entities\Email;
use Espo\Core\{
Mail\MessageWrapper,
ORM\EntityManager,
Utils\Config,
Notificators\Notificator,
};
use Espo\Notificators\EmailNotificator;
/**
* Imports an email message into CRM. Handles duplicate checking, parent look-up.
*/
class Importer
{
private $entityManager;
private $config;
private $notificator;
private $filtersMatcher;
private $notificator = null;
public function __construct($entityManager, $config, $notificator = null)
public function __construct(EntityManager $entityManager, Config $config, ?Notificator $notificator = null)
{
$this->entityManager = $entityManager;
$this->config = $config;
$this->filtersMatcher = new FiltersMatcher();
$this->notificator = $notificator;
$this->filtersMatcher = new FiltersMatcher();
}
protected function getEntityManager()
@@ -74,16 +84,16 @@ class Importer
public function importMessage(
string $parserType,
$message,
$assignedUserId = null,
$teamsIdList = [],
$userIdList = [],
$filterList = [],
$fetchOnlyHeader = false,
$folderData = null)
{
MessageWrapper $message,
?string $assignedUserId = null,
array $teamsIdList = [],
array $userIdList = [],
iterable $filterList = [],
bool $fetchOnlyHeader = false,
?array $folderData = null
) : ?Email {
$parser = $message->getParser();
$parserClassName = '\\Espo\\Core\\Mail\\Parsers\\' . $parserType;
$parserClassName = 'Espo\\Core\\Mail\\Parsers\\' . $parserType;
if (!$parser || get_class($parser) !== $parserClassName) {
$parser = new $parserClassName($this->getEntityManager());
@@ -154,7 +164,7 @@ class Importer
}
if ($this->getFiltersMatcher()->match($email, $filterList, true)) {
return false;
return null;
}
if ($parser->checkMessageAttribute($message, 'message-Id') && $parser->getMessageAttribute($message, 'message-Id')) {
@@ -165,7 +175,7 @@ class Importer
$email->set('messageIdInternal', $messageId . '-' . $parser->getMessageAttribute($message, 'delivered-To'));
}
if (stripos($messageId, '@espo-system') !== false) {
return;
return null;
}
}
@@ -407,7 +417,7 @@ class Importer
$this->getEntityManager()->getPdo()->query('UNLOCK TABLES');
}
protected function findParent(Entity $email, $emailAddress)
protected function findParent(Email $email, $emailAddress)
{
$contact = $this->getEntityManager()->getRepository('Contact')->where(array(
'emailAddress' => $emailAddress
@@ -444,7 +454,7 @@ class Importer
}
}
protected function findDuplicate(Entity $email)
protected function findDuplicate(Email $email)
{
if ($email->get('messageId')) {
$duplicate = $this->getEntityManager()->getRepository('Email')->select(['id', 'status'])->where([
@@ -456,7 +466,7 @@ class Importer
}
}
protected function processDuplicate(Entity $duplicate, $assignedUserId, $userIdList, $folderData, $teamsIdList)
protected function processDuplicate(Email $duplicate, $assignedUserId, $userIdList, $folderData, $teamsIdList)
{
if ($duplicate->get('status') == 'Archived') {
$this->getEntityManager()->getRepository('Email')->loadFromField($duplicate);

View File

@@ -29,7 +29,7 @@
namespace Espo\Core\Mail;
use \Espo\Entities\Email;
use Espo\Entities\Email;
class MessageWrapper
{
@@ -43,7 +43,7 @@ class MessageWrapper
private $zendMessage = null;
protected $zendMessageClass = '\Laminas\Mail\Storage\Message';
protected $zendMessageClass = 'Laminas\Mail\Storage\Message';
protected $fullRawContent = null;

View File

@@ -29,13 +29,20 @@
namespace Espo\Core\Mail\Parsers;
use ZBateson\MailMimeParser\MailMimeParser as Parser;
use Espo\Entities\Email as EmailEntity;
/**
* An adapter for MailMimeParser library.
*/
class MailMimeParser
{
private $entityManager;
private $parser = array();
private $parser = [];
protected $messageHash = array();
protected $messageHash = [];
public function __construct($entityManager)
{
@@ -50,7 +57,7 @@ class MailMimeParser
protected function getParser()
{
if (!$this->parser) {
$this->parser = new \ZBateson\MailMimeParser\MailMimeParser();
$this->parser = new Parser();
}
return $this->parser;
@@ -149,7 +156,7 @@ class MailMimeParser
return $addressList;
}
public function fetchContentParts(\Espo\Entities\Email $email, $message, &$inlineAttachmentList = [])
public function fetchContentParts(EmailEntity $email, $message, &$inlineAttachmentList = [])
{
$this->loadContent($message);
@@ -195,7 +202,7 @@ class MailMimeParser
}
$attachmentObjList = $this->getMessage($message)->getAllAttachmentParts();
$inlineIds = array();
$inlineIds = [];
foreach ($attachmentObjList as $attachmentObj) {
$attachment = $this->getEntityManager()->getEntity('Attachment');

View File

@@ -29,6 +29,9 @@
namespace Espo\Core\Mail\Parsers;
/**
* @deprecated
*/
class PhpMimeMailParser
{
private $entityManager;

View File

@@ -29,8 +29,11 @@
namespace Espo\Core\Mail\Parsers\PhpMimeMailParser;
use \PhpMimeMailParser\Attachment;
use PhpMimeMailParser\Attachment;
/**
* @deprecated
*/
class Parser extends \PhpMimeMailParser\Parser
{
public function getAttachments($include_inline = true)

View File

@@ -29,6 +29,9 @@
namespace Espo\Core\Mail\Parsers;
/**
* @deprecated
*/
class ZendMail
{
private $entityManager;