type fixes

This commit is contained in:
Yuri Kuznetsov
2021-11-04 11:36:52 +02:00
parent 1dda881422
commit b568e96407
17 changed files with 79 additions and 28 deletions

View File

@@ -30,6 +30,7 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\Entities\Email;
use Espo\ORM\Entity;
@@ -52,6 +53,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
/** @var Email $entity */
if ($this->defaultAccessChecker->checkEntityRead($user, $entity, $data)) {
return true;
}
@@ -79,6 +82,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
/** @var Email $entity */
if ($user->isAdmin()) {
return true;
}

View File

@@ -30,6 +30,7 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\Entities\Email;
use Espo\ORM\Entity;
@@ -50,6 +51,8 @@ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
public function checkOwn(User $user, Entity $entity): bool
{
/** @var Email $entity */
if ($user->getId() === $entity->get('assignedUserId')) {
return true;
}

View File

@@ -62,6 +62,8 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
/** @var User $entity */
if ($entity->isSuperAdmin() && !$user->isSuperAdmin()) {
return false;
}
@@ -71,6 +73,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if ($entity->isPortal()) {
if ($this->aclManager->getPermissionLevel($user, 'portal') === Table::LEVEL_YES) {
return true;
@@ -88,6 +92,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if ($entity->isSystem()) {
return false;
}
@@ -107,6 +113,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if (!$user->isAdmin()) {
return false;
}

View File

@@ -30,8 +30,8 @@
namespace Espo\Classes\Acl\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
@@ -47,6 +47,8 @@ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
public function checkTeam(User $user, Entity $entity): bool
{
assert($entity instanceof CoreEntity);
$intersect = array_intersect(
$user->getLinkMultipleIdList('teams'),
$entity->getLinkMultipleIdList('teams')

View File

@@ -33,6 +33,8 @@ use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Portal\AclManager,
Acl\Table,
@@ -72,6 +74,8 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
assert($entity instanceof CoreEntity);
$userIdList = $entity->getLinkMultipleIdLIst('users');
if (is_array($userIdList) && in_array($user->getId(), $userIdList)) {

View File

@@ -43,6 +43,10 @@ use Espo\ORM\Entity;
use Espo\Entities\User;
use Espo\Entities\Notification;
use Espo\Entities\Email as EmailEntity;
use Espo\Repositories\Email as EmailRepository;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use DateTime;
use Exception;
@@ -79,6 +83,8 @@ class Email implements AssignmentNotificator
public function process(Entity $entity, Params $params): void
{
/** @var EmailEntity $entity */
if (!in_array($entity->get('status'), ['Archived', 'Sent', 'Being Imported'])) {
return;
}
@@ -138,12 +144,17 @@ class Email implements AssignmentNotificator
'emailName' => $entity->get('name'),
];
/** @var EmailRepository $emailRepository */
$emailRepository = $this->entityManager->getRepository('Email');
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository('EmailAddress');
if (!$entity->has('from')) {
$this->entityManager->getRepository('Email')->loadFromField($entity);
$emailRepository->loadFromField($entity);
}
if (!$entity->has('to')) {
$this->entityManager->getRepository('Email')->loadToField($entity);
$emailRepository->loadToField($entity);
}
$person = null;
@@ -151,9 +162,7 @@ class Email implements AssignmentNotificator
$from = $entity->get('from');
if ($from) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddress($from, null, ['User', 'Contact', 'Lead']);
$person = $emailAddressRepository->getEntityByAddress($from, null, ['User', 'Contact', 'Lead']);
if ($person) {
$data['personEntityType'] = $person->getEntityType();
@@ -165,7 +174,7 @@ class Email implements AssignmentNotificator
$userIdFrom = null;
if ($person && $person->getEntityType() === 'User') {
$userIdFrom = $person->id;
$userIdFrom = $person->getId();
}
if (empty($data['personEntityId'])) {
@@ -214,7 +223,7 @@ class Email implements AssignmentNotificator
if ($folderId) {
if (
$this->entityManager
->getRepository('EmailFolder')
->getRDBRepository('EmailFolder')
->where([
'id' => $folderId,
'skipNotifications' => true,
@@ -226,6 +235,7 @@ class Email implements AssignmentNotificator
}
}
/** @var User $user */
$user = $this->entityManager->getEntity('User', $userId);
if (!$user) {
@@ -261,7 +271,7 @@ class Email implements AssignmentNotificator
}
$existing = $this->entityManager
->getRepository(Notification::ENTITY_TYPE)
->getRDBRepository(Notification::ENTITY_TYPE)
->where([
'type' => Notification::TYPE_EMAIL_RECEIVED,
'userId' => $userId,

View File

@@ -30,6 +30,8 @@
namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\Duplicate\WhereBuilder;
use Espo\Core\Field\EmailAddressGroup;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\{
Query\Part\Condition as Cond,
@@ -84,10 +86,10 @@ class Company implements WhereBuilder
return $orBuilder->build();
}
private function getEmailAddressList(Entity $entity): array
private function getEmailAddressList(CoreEntity $entity): array
{
if ($entity->get('emailAddressData')) {
/* @var $eaGroup EmailAddressGroup */
/** @var EmailAddressGroup $eaGroup */
$eaGroup = $entity->getValueObject('emailAddress');
return $eaGroup->getAddressList();

View File

@@ -29,6 +29,8 @@
namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Duplicate\WhereBuilder,
Field\EmailAddressGroup,
@@ -93,10 +95,10 @@ class Person implements WhereBuilder
return $orBuilder->build();
}
private function getEmailAddressList(Entity $entity): array
private function getEmailAddressList(CoreEntity $entity): array
{
if ($entity->get('emailAddressData')) {
/* @var $eaGroup EmailAddressGroup */
/** @var EmailAddressGroup $eaGroup */
$eaGroup = $entity->getValueObject('emailAddress');
return $eaGroup->getAddressList();

View File

@@ -50,7 +50,7 @@ class AddressDataLoader implements Loader
public function process(Entity $entity, Params $params): void
{
/* @var $repository EmailRepository */
/** @var EmailRepository $repository */
$repository = $this->entityManager->getRepository('Email');
$repository->loadFromField($entity);

View File

@@ -114,7 +114,7 @@ class IcsDataLoader implements Loader
return;
}
/* @var $emailAddressRepository EmailAddressRepository */
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository(EmailAddress::ENTITY_TYPE);
$attendeeEmailAddressList = $espoEvent->getAttendeeEmailAddressList();

View File

@@ -31,6 +31,8 @@ namespace Espo\Classes\FieldProcessing\Email;
use Espo\ORM\Entity;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
@@ -56,6 +58,8 @@ class StringDataLoader implements Loader
public function process(Entity $entity, Params $params): void
{
/** @var Email $entity */
$userEmailAdddressIdList = [];
$emailAddressCollection = $this->entityManager
@@ -84,9 +88,7 @@ class StringDataLoader implements Loader
$list = [];
foreach ($idList as $emailAddressId) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddressId($emailAddressId, null, true);
$person = $this->getEmailAddressRepository()->getEntityByAddressId($emailAddressId, null, true);
$list[] = $person ? $person->get('name') : $names->$emailAddressId;
}
@@ -103,9 +105,7 @@ class StringDataLoader implements Loader
}
if (!array_key_exists($fromEmailAddressId, $this->fromEmailAddressNameCache)) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddressId($fromEmailAddressId, null, true);
$person = $this->getEmailAddressRepository()->getEntityByAddressId($fromEmailAddressId, null, true);
$fromName = $person ? $person->get('name') : null;
@@ -119,4 +119,9 @@ class StringDataLoader implements Loader
$entity->set('personStringData', $fromName);
}
private function getEmailAddressRepository(): EmailAddressRepository
{
return $this->entityManager->getRepository('EmailAddress');
}
}

View File

@@ -54,7 +54,7 @@ class UserColumnsLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$emailUser = $this->entityManager
->getRepository('EmailUser')
->getRDBRepository('EmailUser')
->select(['isRead', 'isImportant', 'inTrash'])
->where([
'deleted' => false,

View File

@@ -50,7 +50,7 @@ class CountsLoader implements Loader
public function process(Entity $entity, Params $params): void
{
/* @var $repository ImportRepository */
/** @var ImportRepository $repository */
$repository = $this->entityManager->getRepository('Import');
$importedCount = $repository->countResultRecords($entity, 'imported');

View File

@@ -42,7 +42,7 @@ class AttachmentsLoader implements Loader
{
public function process(Entity $entity, Params $params): void
{
/* @var $entity Note */
/** @var Note $entity */
$entity->loadAttachments();
}
}

View File

@@ -31,6 +31,8 @@ namespace Espo\Classes\FieldProcessing\Portal;
use Espo\ORM\Entity;
use Espo\Repositories\Portal as PortalRepository;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
@@ -48,8 +50,11 @@ class UrlLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$this->entityManager
->getRepository('Portal')
->loadUrlField($entity);
$this->getPortalRepository()->loadUrlField($entity);
}
private function getPortalRepository(): PortalRepository
{
return $this->entityManager->getRepository('Portal');
}
}

View File

@@ -30,11 +30,16 @@
namespace Espo\Classes\FieldValidators;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
class LinkMultipleType
{
public function checkRequired(Entity $entity, string $field): bool
{
if (!$entity instanceof CoreEntity) {
return false;
}
return count($entity->getLinkMultipleIdList($field)) > 0;
}
}

View File

@@ -83,7 +83,7 @@ class AuthTokenControl implements JobDataLess
}
$tokenList = $this->entityManager
->getRepository('AuthToken')
->getRDBRepository('AuthToken')
->where($whereClause)
->limit(0, 500)
->find();