diff --git a/application/Espo/Core/Acl/DefaultAssignmentChecker.php b/application/Espo/Core/Acl/DefaultAssignmentChecker.php index aad8ed3804..d621218058 100644 --- a/application/Espo/Core/Acl/DefaultAssignmentChecker.php +++ b/application/Espo/Core/Acl/DefaultAssignmentChecker.php @@ -31,6 +31,8 @@ namespace Espo\Core\Acl; use Espo\Core\ORM\Entity as CoreEntity; +use Espo\Repositories\User as UserRepository; + use Espo\ORM\{ Entity, EntityManager, @@ -157,9 +159,7 @@ class DefaultAssignmentChecker implements AssignmentChecker $teamIdList = $user->get(self::ATTR_TEAMS_IDS); if ( - !$this->entityManager - ->getRepository('User') - ->checkBelongsToAnyOfTeams($assignedUserId, $teamIdList) + !$this->getUserRepository()->checkBelongsToAnyOfTeams($assignedUserId, $teamIdList) ) { return false; } @@ -168,6 +168,11 @@ class DefaultAssignmentChecker implements AssignmentChecker return true; } + private function getUserRepository(): UserRepository + { + return $this->entityManager->getRepository('User'); + } + protected function isPermittedTeams(User $user, Entity $entity): bool { $assignmentPermission = $this->aclManager->getPermissionLevel($user, 'assignmentPermission'); @@ -352,9 +357,7 @@ class DefaultAssignmentChecker implements AssignmentChecker } if ( - !$this->entityManager - ->getRepository('User') - ->checkBelongsToAnyOfTeams($userId, $teamIdList) + !$this->getUserRepository()->checkBelongsToAnyOfTeams($userId, $teamIdList) ) { return false; } diff --git a/application/Espo/Core/Acl/GlobalRestricton.php b/application/Espo/Core/Acl/GlobalRestricton.php index 892c0dd008..52117c5db2 100644 --- a/application/Espo/Core/Acl/GlobalRestricton.php +++ b/application/Espo/Core/Acl/GlobalRestricton.php @@ -37,7 +37,7 @@ use Espo\Core\{ Utils\Config, }; -use StdClass; +use stdClass; /** * Lists of restricted fields can be obtained from here. Restricted fields @@ -104,7 +104,7 @@ class GlobalRestricton $isFromCache = true; - if (!$this->data instanceof StdClass) { + if (!$this->data instanceof stdClass) { $this->log->error("ACL GlobalRestricton: Bad data fetched from cache."); $this->data = null; @@ -122,7 +122,7 @@ class GlobalRestricton protected function storeCacheFile(): void { - $this->dataCache->store($this->cacheKey, $this->data, true); + $this->dataCache->store($this->cacheKey, $this->data); } protected function buildData(): void diff --git a/application/Espo/Core/Acl/Table/DefaultRoleListProvider.php b/application/Espo/Core/Acl/Table/DefaultRoleListProvider.php index d548e64820..608580f0dd 100644 --- a/application/Espo/Core/Acl/Table/DefaultRoleListProvider.php +++ b/application/Espo/Core/Acl/Table/DefaultRoleListProvider.php @@ -56,7 +56,7 @@ class DefaultRoleListProvider implements RoleListProvider $roleList = []; $userRoleList = $this->entityManager - ->getRepository('User') + ->getRDBRepository('User') ->getRelation($this->user, 'roles') ->find(); @@ -65,13 +65,13 @@ class DefaultRoleListProvider implements RoleListProvider } $teamList = $this->entityManager - ->getRepository('User') + ->getRDBRepository('User') ->getRelation($this->user, 'teams') ->find(); foreach ($teamList as $team) { $teamRoleList = $this->entityManager - ->getRepository('Team') + ->getRDBRepository('Team') ->getRelation($team, 'roles') ->find(); diff --git a/application/Espo/Core/Authentication/AuthToken/EspoManager.php b/application/Espo/Core/Authentication/AuthToken/EspoManager.php index 78c7e8af92..3f7d5a4001 100644 --- a/application/Espo/Core/Authentication/AuthToken/EspoManager.php +++ b/application/Espo/Core/Authentication/AuthToken/EspoManager.php @@ -51,7 +51,7 @@ class EspoManager implements Manager { $this->entityManager = $entityManager; - $this->repository = $entityManager->getRepository(AuthTokenEntity::ENTITY_TYPE); + $this->repository = $entityManager->getRDBRepository(AuthTokenEntity::ENTITY_TYPE); } public function get(string $token): ?AuthToken diff --git a/application/Espo/Core/Authentication/Authentication.php b/application/Espo/Core/Authentication/Authentication.php index bea6addbb3..bb03e1424a 100644 --- a/application/Espo/Core/Authentication/Authentication.php +++ b/application/Espo/Core/Authentication/Authentication.php @@ -289,11 +289,17 @@ class Authentication $this->authTokenManager->renew($authToken); } + $authTokenId = null; + + if (property_exists($authToken, 'id')) { + $authTokenId = $authToken->id ?? null; + } + $user->set('token', $authToken->getToken()); - $user->set('authTokenId', $authToken->id ?? null); + $user->set('authTokenId', $authTokenId); if ($authLogRecord) { - $authLogRecord->set('authTokenId', $authToken->id ?? null); + $authLogRecord->set('authTokenId', $authTokenId); } } diff --git a/application/Espo/Core/Console/Commands/AuthTokenCheck.php b/application/Espo/Core/Console/Commands/AuthTokenCheck.php index 219c45485b..bcd4b36859 100644 --- a/application/Espo/Core/Console/Commands/AuthTokenCheck.php +++ b/application/Espo/Core/Console/Commands/AuthTokenCheck.php @@ -74,7 +74,7 @@ class AuthTokenCheck implements Command $userId = $authToken->getUserId(); $user = $this->entityManager - ->getRepository('User') + ->getRDBRepository('User') ->select('id') ->where([ 'id' => $userId, diff --git a/application/Espo/Core/Console/Commands/Extension.php b/application/Espo/Core/Console/Commands/Extension.php index 9781047630..32bfbafbec 100644 --- a/application/Espo/Core/Console/Commands/Extension.php +++ b/application/Espo/Core/Console/Commands/Extension.php @@ -200,7 +200,7 @@ class Extension implements Command return; } - $id = $record->id; + $id = $record->getId(); } $manager = $this->createExtensionManager(); @@ -244,7 +244,7 @@ class Extension implements Command private function printList(IO $io): void { $collection = $this->entityManager - ->getRepository('Extension') + ->getRDBRepository('Extension') ->find(); if (count($collection) === 0) { diff --git a/application/Espo/Core/Console/Commands/SetPassword.php b/application/Espo/Core/Console/Commands/SetPassword.php index d2d4858555..91e7161906 100644 --- a/application/Espo/Core/Console/Commands/SetPassword.php +++ b/application/Espo/Core/Console/Commands/SetPassword.php @@ -61,7 +61,7 @@ class SetPassword implements Command $em = $this->entityManager; - $user = $em->getRepository('User') + $user = $em->getRDBRepository('User') ->where(['userName' => $userName]) ->findOne(); diff --git a/application/Espo/Core/Field/EmailAddress/EmailAddressGroupFactory.php b/application/Espo/Core/Field/EmailAddress/EmailAddressGroupFactory.php index ef1034f641..7c6c6850f2 100644 --- a/application/Espo/Core/Field/EmailAddress/EmailAddressGroupFactory.php +++ b/application/Espo/Core/Field/EmailAddress/EmailAddressGroupFactory.php @@ -29,6 +29,8 @@ namespace Espo\Core\Field\EmailAddress; +use Espo\Repositories\EmailAddress as Repository; + use Espo\ORM\{ EntityManager, Entity, @@ -99,9 +101,10 @@ class EmailAddressGroupFactory implements ValueFactory } if (!$dataList) { - $dataList = $this->entityManager - ->getRepository('EmailAddress') - ->getEmailAddressData($entity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('EmailAddress'); + + $dataList = $repository->getEmailAddressData($entity); } foreach ($dataList as $item) { diff --git a/application/Espo/Core/Field/PhoneNumber/PhoneNumberGroupFactory.php b/application/Espo/Core/Field/PhoneNumber/PhoneNumberGroupFactory.php index 03b0066ea9..d572504d25 100644 --- a/application/Espo/Core/Field/PhoneNumber/PhoneNumberGroupFactory.php +++ b/application/Espo/Core/Field/PhoneNumber/PhoneNumberGroupFactory.php @@ -29,6 +29,8 @@ namespace Espo\Core\Field\PhoneNumber; +use Espo\Repositories\PhoneNumber as Repository; + use Espo\ORM\{ EntityManager, Entity, @@ -99,9 +101,10 @@ class PhoneNumberGroupFactory implements ValueFactory } if (!$dataList) { - $dataList = $this->entityManager - ->getRepository('PhoneNumber') - ->getPhoneNumberData($entity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('PhoneNumber'); + + $dataList = $repository->getPhoneNumberData($entity); } foreach ($dataList as $item) { diff --git a/application/Espo/Core/FieldProcessing/EmailAddress/AccessChecker.php b/application/Espo/Core/FieldProcessing/EmailAddress/AccessChecker.php index 6312eb5620..bcc643d5cd 100644 --- a/application/Espo/Core/FieldProcessing/EmailAddress/AccessChecker.php +++ b/application/Espo/Core/FieldProcessing/EmailAddress/AccessChecker.php @@ -29,6 +29,8 @@ namespace Espo\Core\FieldProcessing\EmailAddress; +use Espo\Repositories\EmailAddress as Repository; + use Espo\Entities\{ User, EmailAddress, @@ -56,9 +58,10 @@ class AccessChecker public function checkEdit(User $user, EmailAddress $emailAddress, Entity $excludeEntity): bool { - $entityWithSameAddressList = $this->entityManager - ->getRepository('EmailAddress') - ->getEntityListByAddressId($emailAddress->getId(), $excludeEntity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('EmailAddress'); + + $entityWithSameAddressList = $repository->getEntityListByAddressId($emailAddress->getId(), $excludeEntity); foreach ($entityWithSameAddressList as $e) { if ($this->aclManager->checkEntityEdit($user, $e)) { diff --git a/application/Espo/Core/FieldProcessing/EmailAddress/Loader.php b/application/Espo/Core/FieldProcessing/EmailAddress/Loader.php index 3dc5ff030a..8d8aa4644c 100644 --- a/application/Espo/Core/FieldProcessing/EmailAddress/Loader.php +++ b/application/Espo/Core/FieldProcessing/EmailAddress/Loader.php @@ -29,6 +29,8 @@ namespace Espo\Core\FieldProcessing\EmailAddress; +use Espo\Repositories\EmailAddress as Repository; + use Espo\ORM\Entity; use Espo\Core\{ @@ -63,9 +65,10 @@ class Loader implements LoaderInterface return; } - $emailAddressData = $this->entityManager - ->getRepository('EmailAddress') - ->getEmailAddressData($entity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('EmailAddress'); + + $emailAddressData = $repository->getEmailAddressData($entity); $entity->set('emailAddressData', $emailAddressData); $entity->setFetched('emailAddressData', $emailAddressData); diff --git a/application/Espo/Core/FieldProcessing/MultiEnum/Saver.php b/application/Espo/Core/FieldProcessing/MultiEnum/Saver.php index b9833a7cf2..3281bf07f2 100644 --- a/application/Espo/Core/FieldProcessing/MultiEnum/Saver.php +++ b/application/Espo/Core/FieldProcessing/MultiEnum/Saver.php @@ -31,6 +31,8 @@ namespace Espo\Core\FieldProcessing\MultiEnum; use Espo\ORM\Entity; +use Espo\Repositories\ArrayValue as Repository; + use Espo\Core\{ ORM\EntityManager, FieldProcessing\Saver as SaverInterface, @@ -65,9 +67,10 @@ class Saver implements SaverInterface return; } - $this->entityManager - ->getRepository('ArrayValue') - ->storeEntityAttribute($entity, $name); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('ArrayValue'); + + $repository->storeEntityAttribute($entity, $name); } private function getFieldList(string $entityType): array diff --git a/application/Espo/Core/FieldProcessing/NextNumber/BeforeSaveProcessor.php b/application/Espo/Core/FieldProcessing/NextNumber/BeforeSaveProcessor.php index 0be79534de..b3661d53c1 100644 --- a/application/Espo/Core/FieldProcessing/NextNumber/BeforeSaveProcessor.php +++ b/application/Espo/Core/FieldProcessing/NextNumber/BeforeSaveProcessor.php @@ -81,7 +81,7 @@ class BeforeSaveProcessor $this->entityManager->getTransactionManager()->start(); $nextNumber = $this->entityManager - ->getRepository('NextNumber') + ->getRDBRepository('NextNumber') ->where([ 'fieldName' => $field, 'entityType' => $entity->getEntityType(), diff --git a/application/Espo/Core/FieldProcessing/PhoneNumber/AccessChecker.php b/application/Espo/Core/FieldProcessing/PhoneNumber/AccessChecker.php index e8ccb0f0d1..23cf547d16 100644 --- a/application/Espo/Core/FieldProcessing/PhoneNumber/AccessChecker.php +++ b/application/Espo/Core/FieldProcessing/PhoneNumber/AccessChecker.php @@ -29,6 +29,8 @@ namespace Espo\Core\FieldProcessing\PhoneNumber; +use Espo\Repositories\PhoneNumber as Repository; + use Espo\Entities\{ User, PhoneNumber, @@ -56,9 +58,10 @@ class AccessChecker public function checkEdit(User $user, PhoneNumber $phoneNumber, Entity $excludeEntity): bool { - $entityWithSameNumberList = $this->entityManager - ->getRepository('PhoneNumber') - ->getEntityListByPhoneNumberId($phoneNumber->getId(), $excludeEntity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('PhoneNumber'); + + $entityWithSameNumberList = $repository->getEntityListByPhoneNumberId($phoneNumber->getId(), $excludeEntity); foreach ($entityWithSameNumberList as $e) { if ($this->aclManager->checkEntityEdit($user, $e)) { diff --git a/application/Espo/Core/FieldProcessing/PhoneNumber/Loader.php b/application/Espo/Core/FieldProcessing/PhoneNumber/Loader.php index 92da543ab3..8772d437a2 100644 --- a/application/Espo/Core/FieldProcessing/PhoneNumber/Loader.php +++ b/application/Espo/Core/FieldProcessing/PhoneNumber/Loader.php @@ -31,6 +31,8 @@ namespace Espo\Core\FieldProcessing\PhoneNumber; use Espo\ORM\Entity; +use Espo\Repositories\PhoneNumber as Repository; + use Espo\Core\{ ORM\EntityManager, FieldProcessing\Loader as LoaderInterface, @@ -63,9 +65,10 @@ class Loader implements LoaderInterface return; } - $phoneNumberData = $this->entityManager - ->getRepository('PhoneNumber') - ->getPhoneNumberData($entity); + /** @var Repository $repository */ + $repository = $this->entityManager->getRepository('PhoneNumber'); + + $phoneNumberData = $repository->getPhoneNumberData($entity); $entity->set('phoneNumberData', $phoneNumberData); $entity->setFetched('phoneNumberData', $phoneNumberData); diff --git a/application/Espo/Core/Htmlizer/Htmlizer.php b/application/Espo/Core/Htmlizer/Htmlizer.php index d118119b3f..d57c994279 100644 --- a/application/Espo/Core/Htmlizer/Htmlizer.php +++ b/application/Espo/Core/Htmlizer/Htmlizer.php @@ -31,6 +31,8 @@ namespace Espo\Core\Htmlizer; use Espo\Core\ORM\Entity as CoreEntity; +use Espo\Repositories\Attachment as AttachmentRepository; + use Espo\Core\{ Utils\File\Manager as FileManager, Utils\DateTime, @@ -52,7 +54,7 @@ use Espo\ORM\{ use LightnCandy\LightnCandy as LightnCandy; -use StdClass; +use stdClass; use const JSON_PRESERVE_ZERO_FRACTION; @@ -175,15 +177,17 @@ class Htmlizer '/\?entryPoint=attachment\&id=([A-Za-z0-9]*)/', function ($matches) { $id = $matches[1]; + $attachment = $this->entityManager->getEntity('Attachment', $id); - if ($attachment) { - $filePath = $this->entityManager - ->getRepository('Attachment') - ->getFilePath($attachment); - - return $filePath; + if (!$attachment) { + return ''; } + + /** @var AttachmentRepository $repository */ + $repository = $this->entityManager->getRepository('Attachment'); + + return $repository->getFilePath($attachment); }, $html ); @@ -352,7 +356,7 @@ class Htmlizer foreach ($list as $item) { $v = $item; - if ($item instanceof StdClass) { + if ($item instanceof stdClass) { $v = json_decode(json_encode($v, JSON_PRESERVE_ZERO_FRACTION), true); } @@ -373,7 +377,7 @@ class Htmlizer if (!empty($data[$attribute])) { $value = $data[$attribute]; - if ($value instanceof StdClass) { + if ($value instanceof stdClass) { $data[$attribute] = json_decode(json_encode($value, JSON_PRESERVE_ZERO_FRACTION), true); } @@ -437,7 +441,7 @@ class Htmlizer $relationType === 'belongsToParent' ) { $relatedEntity = $this->entityManager - ->getRepository($entity->getEntityType()) + ->getRDBRepository($entity->getEntityType()) ->getRelation($entity, $relation) ->findOne(); diff --git a/application/Espo/Core/Portal/Acl/Table/RoleListProvider.php b/application/Espo/Core/Portal/Acl/Table/RoleListProvider.php index 813a96c05d..460fb078aa 100644 --- a/application/Espo/Core/Portal/Acl/Table/RoleListProvider.php +++ b/application/Espo/Core/Portal/Acl/Table/RoleListProvider.php @@ -59,14 +59,14 @@ class RoleListProvider implements RoleListProviderInterface } /** - * @return array + * @return Role[] */ public function get(): array { $roleList = []; $userRoleList = $this->entityManager - ->getRepository('User') + ->getRDBRepository('User') ->getRelation($this->user, 'portalRoles') ->find(); @@ -75,7 +75,7 @@ class RoleListProvider implements RoleListProviderInterface } $portalRoleList = $this->entityManager - ->getRepository('Portal') + ->getRDBRepository('Portal') ->getRelation($this->portal, 'portalRoles') ->find(); diff --git a/application/Espo/ORM/Repository/Repository.php b/application/Espo/ORM/Repository/Repository.php index 57b55b9859..76fa125269 100644 --- a/application/Espo/ORM/Repository/Repository.php +++ b/application/Espo/ORM/Repository/Repository.php @@ -49,7 +49,7 @@ interface Repository /** * Store an entity. */ - public function save(Entity $entity, array $options): void; + public function save(Entity $entity, array $options = []): void; /** * Remove an entity. diff --git a/application/Espo/Repositories/Email.php b/application/Espo/Repositories/Email.php index 7d6a500624..2376262ef9 100644 --- a/application/Espo/Repositories/Email.php +++ b/application/Espo/Repositories/Email.php @@ -237,8 +237,8 @@ class Email extends \Espo\Core\Repositories\Database implements if (!$p) { $p = $this->entityManager - ->getRepository('InboundEmail') - ->where(array('emailAddress' => $address)) + ->getRDBRepository('InboundEmail') + ->where(['emailAddress' => $address]) ->findOne(); } diff --git a/application/Espo/Repositories/EmailAddress.php b/application/Espo/Repositories/EmailAddress.php index 1c5bd8be0c..6674ec5eaf 100644 --- a/application/Espo/Repositories/EmailAddress.php +++ b/application/Espo/Repositories/EmailAddress.php @@ -170,7 +170,8 @@ class EmailAddress extends \Espo\Core\Repositories\Database implements ]; } - $itemList = $this->entityManager->getRepository('EntityEmailAddress') + $itemList = $this->entityManager + ->getRDBRepository('EntityEmailAddress') ->sth() ->select(['entityType', 'entityId']) ->where($where) @@ -195,7 +196,8 @@ class EmailAddress extends \Espo\Core\Repositories\Database implements $select[] = 'isActive'; } - $entity = $this->entityManager->getRepository($itemEntityType) + $entity = $this->entityManager + ->getRDBRepository($itemEntityType) ->select($select) ->where(['id' => $itemEntityId]) ->findOne(); @@ -232,7 +234,8 @@ class EmailAddress extends \Espo\Core\Repositories\Database implements $where[] = ['entityType' => $entityType]; } - $itemList = $this->entityManager->getRepository('EntityEmailAddress') + $itemList = $this->entityManager + ->getRDBRepository('EntityEmailAddress') ->sth() ->select(['entityType', 'entityId']) ->where($where) @@ -262,7 +265,8 @@ class EmailAddress extends \Espo\Core\Repositories\Database implements $select[] = 'isActive'; } - $entity = $this->entityManager->getRepository($itemEntityType) + $entity = $this->entityManager + ->getRDBRepository($itemEntityType) ->select($select) ->where(['id' => $itemEntityId]) ->findOne(); @@ -292,7 +296,7 @@ class EmailAddress extends \Espo\Core\Repositories\Database implements ): ?Entity { $selectBuilder = $this->entityManager - ->getRepository('EntityEmailAddress') + ->getRDBRepository('EntityEmailAddress') ->select(); $selectBuilder diff --git a/application/Espo/Repositories/User.php b/application/Espo/Repositories/User.php index 5f6f0e048e..afb5c7ff8c 100644 --- a/application/Espo/Repositories/User.php +++ b/application/Espo/Repositories/User.php @@ -151,7 +151,7 @@ class User extends Database } return (bool) $this->entityManager - ->getRepository('TeamUser') + ->getRDBRepository('TeamUser') ->where([ 'deleted' => false, 'userId' => $userId,