From 7bcb6a320e8abd3e7ae93842a89bea84b9942327 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 23 Jun 2020 16:14:11 +0300 Subject: [PATCH] decoupling --- application/Espo/Core/EntryPointManager.php | 20 +++- application/Espo/Core/EntryPoints/Base.php | 22 ++--- .../Espo/Core/EntryPoints/EntryPoint.php | 35 +++++++ application/Espo/Core/EntryPoints/NoAuth.php | 35 +++++++ .../Espo/Core/EntryPoints/NotStrictAuth.php | 35 +++++++ application/Espo/EntryPoints/Attachment.php | 22 +++-- application/Espo/EntryPoints/Avatar.php | 16 ++-- .../Espo/EntryPoints/ChangePassword.php | 52 ++++++---- application/Espo/EntryPoints/ConfirmOptIn.php | 33 +++++-- application/Espo/EntryPoints/Download.php | 46 ++++++--- application/Espo/EntryPoints/Image.php | 30 +++--- application/Espo/EntryPoints/LogoImage.php | 24 +++-- .../Espo/EntryPoints/OauthCallback.php | 14 +-- application/Espo/EntryPoints/Pdf.php | 33 +++++-- application/Espo/EntryPoints/Portal.php | 34 +++++-- .../Crm/EntryPoints/CampaignTrackOpened.php | 42 ++++++--- .../Modules/Crm/EntryPoints/CampaignUrl.php | 66 +++++++++---- .../Crm/EntryPoints/EventConfirmation.php | 54 +++++++---- .../Crm/EntryPoints/SubscribeAgain.php | 88 +++++++++++------ .../Modules/Crm/EntryPoints/Unsubscribe.php | 94 +++++++++++++------ application/Espo/ORM/SthCollection.php | 4 +- 21 files changed, 575 insertions(+), 224 deletions(-) create mode 100644 application/Espo/Core/EntryPoints/EntryPoint.php create mode 100644 application/Espo/Core/EntryPoints/NoAuth.php create mode 100644 application/Espo/Core/EntryPoints/NotStrictAuth.php diff --git a/application/Espo/Core/EntryPointManager.php b/application/Espo/Core/EntryPointManager.php index a8a49b98eb..8ad485f10d 100644 --- a/application/Espo/Core/EntryPointManager.php +++ b/application/Espo/Core/EntryPointManager.php @@ -34,6 +34,8 @@ use Espo\Core\Exceptions\NotFound; use Espo\Core\{ InjectableFactory, Utils\ClassFinder, + EntryPoints\NotStrictAuth, + EntryPoints\NoAuth, }; class EntryPointManager @@ -52,7 +54,14 @@ class EntryPointManager if (!$className) { throw new NotFound(); } - return $className::$authRequired; + + $class = new \ReflectionClass($className); + + if ($class->implementsInterface(NoAuth::class)) { + return false; + } + + return $className::$authRequired ?? true; } public function checkNotStrictAuth(string $name) : bool @@ -61,7 +70,14 @@ class EntryPointManager if (!$className) { throw new NotFound(); } - return $className::$notStrictAuth; + + $class = new \ReflectionClass($className); + + if ($class->implementsInterface(NotStrictAuth::class)) { + return true; + } + + return $className::$notStrictAuth ?? false; } public function run(string $name, array $data = []) diff --git a/application/Espo/Core/EntryPoints/Base.php b/application/Espo/Core/EntryPoints/Base.php index b2fd81298f..91f670c4f8 100644 --- a/application/Espo/Core/EntryPoints/Base.php +++ b/application/Espo/Core/EntryPoints/Base.php @@ -29,18 +29,25 @@ namespace Espo\Core\EntryPoints; -use \Espo\Core\Container; +use Espo\Core\Container; +use Espo\Core\EntryPoint; -use \Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\Forbidden; +/** Deprecated */ abstract class Base { - private $container; - public static $authRequired = true; public static $notStrictAuth = false; + private $container; + + public function __construct(Container $container) + { + $this->container = $container; + } + protected function getContainer() { return $this->container; @@ -100,11 +107,4 @@ abstract class Base { return $this->getContainer()->get('clientManager'); } - - public function __construct(Container $container) - { - $this->container = $container; - } - } - diff --git a/application/Espo/Core/EntryPoints/EntryPoint.php b/application/Espo/Core/EntryPoints/EntryPoint.php new file mode 100644 index 0000000000..62194a7c6a --- /dev/null +++ b/application/Espo/Core/EntryPoints/EntryPoint.php @@ -0,0 +1,35 @@ +getEntityManager()->getEntity('Attachment', $id); + $attachment = $this->entityManager->getEntity('Attachment', $id); if (!$attachment) { throw new NotFound(); } - if (!$this->getAcl()->checkEntity($attachment)) { + if (!$this->acl->checkEntity($attachment)) { throw new Forbidden(); } - $fileName = $this->getEntityManager()->getRepository('Attachment')->getFilePath($attachment); + $fileName = $this->entityManager->getRepository('Attachment')->getFilePath($attachment); if (!file_exists($fileName)) { throw new NotFound(); diff --git a/application/Espo/EntryPoints/Avatar.php b/application/Espo/EntryPoints/Avatar.php index 7d287646e4..f740d21c93 100644 --- a/application/Espo/EntryPoints/Avatar.php +++ b/application/Espo/EntryPoints/Avatar.php @@ -34,11 +34,13 @@ use Espo\Core\Exceptions\Forbidden; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Exceptions\Error; -class Avatar extends Image -{ - public static $authRequired = true; +use Espo\Core\EntryPoints\NotStrictAuth; +use Espo\Core\Di; - public static $notStrictAuth = true; +class Avatar extends Image implements NotStrictAuth, + Di\MetadataAware +{ + use Di\MetadataSetter; protected $systemColor = '#a4b5bd'; @@ -63,7 +65,7 @@ class Avatar extends Image } $x = intval($sum % 128) + 1; - $colorList = $this->getMetadata()->get(['app', 'avatars', 'colorList']) ?? $this->colorList; + $colorList = $this->metadata->get(['app', 'avatars', 'colorList']) ?? $this->colorList; $index = intval($x * count($colorList) / 128); return $colorList[$index]; @@ -77,7 +79,7 @@ class Avatar extends Image $userId = $_GET['id']; - $user = $this->getEntityManager()->getEntity('User', $userId); + $user = $this->entityManager->getEntity('User', $userId); if (!$user) { header('Content-Type: image/png'); $img = imagecreatetruecolor(14, 14); @@ -113,7 +115,7 @@ class Avatar extends Image $hash = $userId; $color = $this->getColor($userId); if ($hash === 'system') { - $color = $this->getMetadata()->get(['app', 'avatars', 'systemColor']) ?? $this->systemColor; + $color = $this->metadata->get(['app', 'avatars', 'systemColor']) ?? $this->systemColor; } $imgContent = $identicon->getImageData($hash, $width, $color); diff --git a/application/Espo/EntryPoints/ChangePassword.php b/application/Espo/EntryPoints/ChangePassword.php index 65bb2dd5cc..df7ff463ec 100644 --- a/application/Espo/EntryPoints/ChangePassword.php +++ b/application/Espo/EntryPoints/ChangePassword.php @@ -29,13 +29,33 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; -class ChangePassword extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + Utils\Config, + Utils\ClientManager, + ORM\EntityManager, +}; + +class ChangePassword implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $config; + protected $clientManager; + protected $entityManager; + + public function __construct(Config $config, ClientManager $clientManager, EntityManager $entityManager) + { + $this->config = $config; + $this->clientManager = $clientManager; + $this->entityManager = $entityManager; + } public function run() { @@ -43,18 +63,17 @@ class ChangePassword extends \Espo\Core\EntryPoints\Base if (!$requestId) throw new BadRequest(); - $config = $this->getConfig(); - $themeManager = $this->getThemeManager(); + $config = $this->config; - $request = $this->getEntityManager()->getRepository('PasswordChangeRequest')->where([ - 'requestId' => $requestId + $request = $this->entityManager->getRepository('PasswordChangeRequest')->where([ + 'requestId' => $requestId, ])->findOne(); $strengthParams = [ - 'passwordStrengthLength' => $this->getConfig()->get('passwordStrengthLength'), - 'passwordStrengthLetterCount' => $this->getConfig()->get('passwordStrengthLetterCount'), - 'passwordStrengthNumberCount' => $this->getConfig()->get('passwordStrengthNumberCount'), - 'passwordStrengthBothCases' => $this->getConfig()->get('passwordStrengthBothCases'), + 'passwordStrengthLength' => $this->config->get('passwordStrengthLength'), + 'passwordStrengthLetterCount' => $this->config->get('passwordStrengthLetterCount'), + 'passwordStrengthNumberCount' => $this->config->get('passwordStrengthNumberCount'), + 'passwordStrengthBothCases' => $this->config->get('passwordStrengthBothCases'), ]; if (!$request) throw new NotFound(); @@ -70,11 +89,6 @@ class ChangePassword extends \Espo\Core\EntryPoints\Base }); "; - $this->getClientManager()->display($runScript); - } - - protected function getThemeManager() - { - return $this->getContainer()->get('themeManager'); + $this->clientManager->display($runScript); } } diff --git a/application/Espo/EntryPoints/ConfirmOptIn.php b/application/Espo/EntryPoints/ConfirmOptIn.php index 4afbf903ce..9a0c4b76b5 100644 --- a/application/Espo/EntryPoints/ConfirmOptIn.php +++ b/application/Espo/EntryPoints/ConfirmOptIn.php @@ -29,14 +29,31 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class ConfirmOptIn extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + Utils\ClientManager, + ServiceFactory, +}; + +class ConfirmOptIn implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $clientManager; + protected $serviceFactory; + + public function __construct(ClientManager $clientManager, ServiceFactory $serviceFactory) + { + $this->clientManager = $clientManager; + $this->serviceFactory = $serviceFactory; + } public function run() { @@ -44,7 +61,7 @@ class ConfirmOptIn extends \Espo\Core\EntryPoints\Base $id = $_GET['id']; - $data = $this->getServiceFactory()->create('LeadCapture')->confirmOptIn($id); + $data = $this->serviceFactory->create('LeadCapture')->confirmOptIn($id); if ($data->status === 'success') { $action = 'optInConfirmationSuccess'; @@ -62,6 +79,6 @@ class ConfirmOptIn extends \Espo\Core\EntryPoints\Base }); "; - $this->getClientManager()->display($runScript); + $this->clientManager->display($runScript); } } diff --git a/application/Espo/EntryPoints/Download.php b/application/Espo/EntryPoints/Download.php index 245d1f9e01..aac4d1dac6 100644 --- a/application/Espo/EntryPoints/Download.php +++ b/application/Espo/EntryPoints/Download.php @@ -29,15 +29,23 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; -class Download extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + Acl, + ORM\EntityManager, +}; + +class Download implements EntryPoint { - public static $authRequired = true; - - protected $fileTypesToShowInline = array( + protected $fileTypesToShowInline = [ 'application/pdf', 'application/vnd.ms-word', 'application/vnd.ms-excel', @@ -45,8 +53,17 @@ class Download extends \Espo\Core\EntryPoints\Base 'application/vnd.oasis.opendocument.spreadsheet', 'text/plain', 'application/msword', - 'application/msexcel' - ); + 'application/msexcel', + ]; + + protected $acl; + protected $entityManager; + + public function __construct(Acl $acl, EntityManager $entityManager) + { + $this->acl = $acl; + $this->entityManager = $entityManager; + } public function run() { @@ -55,25 +72,25 @@ class Download extends \Espo\Core\EntryPoints\Base } $id = $_GET['id']; - $attachment = $this->getEntityManager()->getEntity('Attachment', $id); + $attachment = $this->entityManager->getEntity('Attachment', $id); if (!$attachment) { throw new NotFound(); } - if (!$this->getAcl()->checkEntity($attachment)) { + if (!$this->acl->checkEntity($attachment)) { throw new Forbidden(); } $sourceId = $attachment->getSourceId(); - if ($this->getEntityManager()->getRepository('Attachment')->hasDownloadUrl($attachment)) { - $downloadUrl = $this->getEntityManager()->getRepository('Attachment')->getDownloadUrl($attachment); + if ($this->entityManager->getRepository('Attachment')->hasDownloadUrl($attachment)) { + $downloadUrl = $this->entityManager->getRepository('Attachment')->getDownloadUrl($attachment); header('Location: ' . $downloadUrl); exit; } - $fileName = $this->getEntityManager()->getRepository('Attachment')->getFilePath($attachment); + $fileName = $this->entityManager->getRepository('Attachment')->getFilePath($attachment); if (!file_exists($fileName)) { throw new NotFound(); @@ -103,4 +120,3 @@ class Download extends \Espo\Core\EntryPoints\Base exit; } } - diff --git a/application/Espo/EntryPoints/Image.php b/application/Espo/EntryPoints/Image.php index 5781e65c57..19fe3619d4 100644 --- a/application/Espo/EntryPoints/Image.php +++ b/application/Espo/EntryPoints/Image.php @@ -29,15 +29,23 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\NotFoundSilent; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\NotFoundSilent; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class Image extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\EntryPoint; +use Espo\Core\Di; + +class Image implements EntryPoint, + Di\EntityManagerAware, + Di\AclAware, + Di\FileManagerAware { - public static $authRequired = true; + use Di\EntityManagerSetter; + use Di\AclSetter; + use Di\FileManagerSetter; protected $allowedFileTypes = [ 'image/jpeg', @@ -82,19 +90,19 @@ class Image extends \Espo\Core\EntryPoints\Base protected function show($id, $size, $disableAccessCheck = false) { - $attachment = $this->getEntityManager()->getEntity('Attachment', $id); + $attachment = $this->entityManager->getEntity('Attachment', $id); if (!$attachment) { throw new NotFoundSilent(); } - if (!$disableAccessCheck && !$this->getAcl()->checkEntity($attachment)) { + if (!$disableAccessCheck && !$this->acl->checkEntity($attachment)) { throw new Forbidden(); } $sourceId = $attachment->getSourceId(); - $filePath = $this->getEntityManager()->getRepository('Attachment')->getFilePath($attachment); + $filePath = $this->entityManager->getRepository('Attachment')->getFilePath($attachment); $fileType = $attachment->get('type'); @@ -143,7 +151,7 @@ class Image extends \Espo\Core\EntryPoints\Base $contents = ob_get_contents(); ob_end_clean(); imagedestroy($targetImage); - $this->getContainer()->get('fileManager')->putContents($thumbFilePath, $contents); + $this->fileManager->putContents($thumbFilePath, $contents); } $filePath = $thumbFilePath; diff --git a/application/Espo/EntryPoints/LogoImage.php b/application/Espo/EntryPoints/LogoImage.php index fa3d00efae..5fe62b39d6 100644 --- a/application/Espo/EntryPoints/LogoImage.php +++ b/application/Espo/EntryPoints/LogoImage.php @@ -29,14 +29,21 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class LogoImage extends Image +use Espo\Core\EntryPoints\{ + NoAuth, +}; + +use Espo\Core\Di; + +class LogoImage extends Image implements NoAuth, + Di\ConfigAware { - public static $authRequired = false; + use Di\ConfigSetter; protected $allowedRelatedTypeList = ['Settings', 'Portal']; @@ -44,12 +51,12 @@ class LogoImage extends Image public function run() { - $this->imageSizes['small-logo'] = array(181, 44); + $this->imageSizes['small-logo'] = [181, 44]; if (!empty($_GET['id'])) { $id = $_GET['id']; } else { - $id = $this->getConfig()->get('companyLogoId'); + $id = $this->config->get('companyLogoId'); } if (empty($id)) { @@ -64,4 +71,3 @@ class LogoImage extends Image $this->show($id, $size); } } - diff --git a/application/Espo/EntryPoints/OauthCallback.php b/application/Espo/EntryPoints/OauthCallback.php index 70c4d5f893..58da7217ee 100644 --- a/application/Espo/EntryPoints/OauthCallback.php +++ b/application/Espo/EntryPoints/OauthCallback.php @@ -29,16 +29,16 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; -class OauthCallback extends \Espo\Core\EntryPoints\Base +class OauthCallback implements EntryPoint, NoAuth { - public static $authRequired = false; - public function run() { - echo "EspoCRM rocks! If this window is not closed automatically, it's probable that URL you use to access EspoCRM doesn't match URL specified at Administration > Settings > Site URL."; + echo "EspoCRM rocks! If this window is not closed automatically, it's probable that URL you use to access ". + "EspoCRM doesn't match URL specified at Administration > Settings > Site URL."; } } diff --git a/application/Espo/EntryPoints/Pdf.php b/application/Espo/EntryPoints/Pdf.php index a0cd4c29b2..b128a22074 100644 --- a/application/Espo/EntryPoints/Pdf.php +++ b/application/Espo/EntryPoints/Pdf.php @@ -29,17 +29,31 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\BadRequest; -class Pdf extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, +}; + +use Espo\Core\{ + ORM\EntityManager, + ServiceFactory, +}; + +class Pdf implements EntryPoint { - public static $authRequired = true; + protected $entityManager; + protected $serviceFactory; + + public function __construct(EntityManager $entityManager, ServiceFactory $serviceFactory) + { + $this->entityManager = $entityManager; + $this->serviceFactory = $serviceFactory; + } public function run() { - if (empty($_GET['entityId']) || empty($_GET['entityType']) || empty($_GET['templateId'])) { throw new BadRequest(); } @@ -47,16 +61,15 @@ class Pdf extends \Espo\Core\EntryPoints\Base $entityType = $_GET['entityType']; $templateId = $_GET['templateId']; - $entity = $this->getEntityManager()->getEntity($entityType, $entityId); - $template = $this->getEntityManager()->getEntity('Template', $templateId); + $entity = $this->entityManager->getEntity($entityType, $entityId); + $template = $this->entityManager->getEntity('Template', $templateId); if (!$entity || !$template) { throw new NotFound(); } - $this->getContainer()->get('serviceFactory')->create('Pdf')->buildFromTemplate($entity, $template, true); + $this->serviceFactory->create('Pdf')->buildFromTemplate($entity, $template, true); exit; } } - diff --git a/application/Espo/EntryPoints/Portal.php b/application/Espo/EntryPoints/Portal.php index fce3d02319..5839787dc1 100644 --- a/application/Espo/EntryPoints/Portal.php +++ b/application/Espo/EntryPoints/Portal.php @@ -29,15 +29,31 @@ namespace Espo\EntryPoints; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\NotFound; -class Portal extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + Utils\ClientManager, + Utils\Config, + Portal\Application as PortalApplication, +}; + +class Portal implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $clientManager; + protected $config; - public function run($data = array()) + public function __construct(ClientManager $clientManager, Config $config) + { + $this->clientManager = $clientManager; + $this->config = $config; + } + + public function run($data = []) { if (!empty($_GET['id'])) { $id = $_GET['id']; @@ -53,15 +69,15 @@ class Portal extends \Espo\Core\EntryPoints\Base } if (!$id) { - $id = $this->getConfig()->get('defaultPortalId'); + $id = $this->config->get('defaultPortalId'); } if (!$id) { throw new NotFound(); } } - $application = new \Espo\Core\Portal\Application($id); - $application->setBasePath($this->getContainer()->get('clientManager')->getBasePath()); + $application = new PortalApplication($id); + $application->setBasePath($this->clientManager->getBasePath()); $application->runClient(); } } diff --git a/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php b/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php index 7789769344..0099f5db30 100644 --- a/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php +++ b/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php @@ -29,16 +29,33 @@ namespace Espo\Modules\Crm\EntryPoints; -use \Espo\Core\Utils\Util; +use Espo\Core\Utils\Util; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class CampaignTrackOpened extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + ORM\EntityManager, + ServiceFactory, +}; + +class CampaignTrackOpened implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $entityManager; + protected $serviceFactory; + + public function __construct(EntityManager $entityManager, ServiceFactory $serviceFactory) + { + $this->entityManager = $entityManager; + $this->serviceFactory = $serviceFactory; + } public function run() { @@ -48,7 +65,7 @@ class CampaignTrackOpened extends \Espo\Core\EntryPoints\Base $queueItemId = $_GET['id']; - $queueItem = $this->getEntityManager()->getEntity('EmailQueueItem', $queueItemId); + $queueItem = $this->entityManager->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) { throw new NotFound(); @@ -61,25 +78,25 @@ class CampaignTrackOpened extends \Espo\Core\EntryPoints\Base $targetId = $queueItem->get('targetId'); if ($targetType && $targetId) { - $target = $this->getEntityManager()->getEntity($targetType, $targetId); + $target = $this->entityManager->getEntity($targetType, $targetId); } $massEmailId = $queueItem->get('massEmailId'); if (!$massEmailId) return; - $massEmail = $this->getEntityManager()->getEntity('MassEmail', $massEmailId); + $massEmail = $this->entityManager->getEntity('MassEmail', $massEmailId); if (!$massEmail) return; $campaignId = $massEmail->get('campaignId'); if (!$campaignId) return; - $campaign = $this->getEntityManager()->getEntity('Campaign', $campaignId); + $campaign = $this->entityManager->getEntity('Campaign', $campaignId); if (!$campaign) return; if (!$target) { return; } - $campaignService = $this->getServiceFactory()->create('Campaign'); + $campaignService = $this->serviceFactory->create('Campaign'); $campaignService->logOpened($campaignId, $queueItemId, $target, null, $queueItem->get('isTest')); header('Content-Type: image/png'); @@ -94,4 +111,3 @@ class CampaignTrackOpened extends \Espo\Core\EntryPoints\Base imagedestroy($img); } } - diff --git a/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php b/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php index 23920dabc0..ba2678df93 100644 --- a/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php +++ b/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php @@ -34,13 +34,43 @@ use Espo\Core\Exceptions; use Espo\Modules\Crm\Entities\EmailQueueItem; use Espo\Modules\Crm\Entities\CampaignTrackingUrl; -class CampaignUrl extends \Espo\Core\EntryPoints\Base -{ - public static $authRequired = false; +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; - protected function getHookManager() - { - return $this->getContainer()->get('hookManager'); +use Espo\Core\{ + ORM\EntityManager, + ServiceFactory, + Utils\Hasher, + HookManager, + Utils\ClientManager, + Utils\Metadata, +}; + +class CampaignUrl implements EntryPoint, NoAuth +{ + protected $entityManager; + protected $serviceFactory; + protected $hasher; + protected $hookManager; + protected $clientManager; + protected $metadata; + + public function __construct( + EntityManager $entityManager, + ServiceFactory $serviceFactory, + Hasher $hasher, + HookManager $hookManager, + ClientManager $clientManager, + Metadata $metadata + ) { + $this->entityManager = $entityManager; + $this->serviceFactory = $serviceFactory; + $this->hasher = $hasher; + $this->hookManager = $hookManager; + $this->clientManager = $clientManager; + $this->metadata = $metadata; } public function run() @@ -51,14 +81,14 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base $hash = $_GET['hash'] ?? null; if (!$trackingUrlId) throw new Exceptions\BadRequest(); - $trackingUrl = $this->getEntityManager()->getEntity('CampaignTrackingUrl', $trackingUrlId); + $trackingUrl = $this->entityManager->getEntity('CampaignTrackingUrl', $trackingUrlId); if (!$trackingUrl) throw new Exceptions\NotFound(); if ($emailAddress && $hash) { $this->processWithHash($trackingUrl, $emailAddress, $hash); } else { if (!$queueItemId) throw new Exceptions\BadRequest(); - $queueItem = $this->getEntityManager()->getEntity('EmailQueueItem', $queueItemId); + $queueItem = $this->entityManager->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) throw new Exceptions\NotFound(); $this->processWithQueueItem($trackingUrl, $queueItem); @@ -85,36 +115,36 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base $targetId = $queueItem->get('targetId'); if ($targetType && $targetId) { - $target = $this->getEntityManager()->getEntity($targetType, $targetId); + $target = $this->entityManager->getEntity($targetType, $targetId); } $campaignId = $trackingUrl->get('campaignId'); if ($campaignId) { - $campaign = $this->getEntityManager()->getEntity('Campaign', $campaignId); + $campaign = $this->entityManager->getEntity('Campaign', $campaignId); } if ($target) { - $this->getHookManager()->process('CampaignTrackingUrl', 'afterClick', $trackingUrl, [], [ + $this->hookManager->process('CampaignTrackingUrl', 'afterClick', $trackingUrl, [], [ 'targetId' => $targetId, 'targetType' => $targetType, ]); } if ($campaign && $target) { - $campaignService = $this->getServiceFactory()->create('Campaign'); + $campaignService = $this->serviceFactory->create('Campaign'); $campaignService->logClicked($campaignId, $queueItem->id, $target, $trackingUrl, null, $queueItem->get('isTest')); } } protected function processWithHash(CampaignTrackingUrl $trackingUrl, string $emailAddress, string $hash) { - $hash2 = $this->getContainer()->get('hasher')->hash($emailAddress); + $hash2 = $this->hasher->hash($emailAddress); if ($hash2 !== $hash) { throw new Exceptions\NotFound(); } - $eaRepository = $this->getEntityManager()->getRepository('EmailAddress'); + $eaRepository = $this->entityManager->getRepository('EmailAddress'); $ea = $eaRepository->getByAddress($emailAddress); if (!$ea) { @@ -124,7 +154,7 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base $entityList = $eaRepository->getEntityListByAddressId($ea->id); foreach ($entityList as $target) { - $this->getHookManager()->process('CampaignTrackingUrl', 'afterClick', $trackingUrl, [], [ + $this->hookManager->process('CampaignTrackingUrl', 'afterClick', $trackingUrl, [], [ 'targetId' => $target->id, 'targetType' => $target->getEntityType(), ]); @@ -137,8 +167,8 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base $data = [ 'message' => $message, - 'view' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'trackinkUrlMessageView']), - 'template' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'trackinkUrlMessageTemplate']), + 'view' => $this->metadata->get(['clientDefs', 'Campaign', 'trackinkUrlMessageView']), + 'template' => $this->metadata->get(['clientDefs', 'Campaign', 'trackinkUrlMessageTemplate']), ]; $runScript = " @@ -148,6 +178,6 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base controller.doAction('displayMessage', ".json_encode($data)."); }); "; - $this->getClientManager()->display($runScript); + $this->clientManager->display($runScript); } } diff --git a/application/Espo/Modules/Crm/EntryPoints/EventConfirmation.php b/application/Espo/Modules/Crm/EntryPoints/EventConfirmation.php index 4dad2b70e8..6a934f1b3d 100644 --- a/application/Espo/Modules/Crm/EntryPoints/EventConfirmation.php +++ b/application/Espo/Modules/Crm/EntryPoints/EventConfirmation.php @@ -25,34 +25,54 @@ * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. - ************************************************************************/ + ************************************************************************/ namespace Espo\Modules\Crm\EntryPoints; -use \Espo\Core\Utils\Util; +use Espo\Core\Utils\Util; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class EventConfirmation extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + ORM\EntityManager, + Utils\ClientManager, + HookManager, +}; + +class EventConfirmation implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $entityManager; + protected $clientManager; + protected $hookManager; + + public function __construct(EntityManager $entityManager, ClientManager $clientManager, HookManager $hookManager) { + $this->entityManager = $entityManager; + $this->clientManager = $clientManager; + $this->hookManager = $hookManager; + } public function run() { - $uid = $_GET['uid']; - $action = $_GET['action']; + $uid = $_GET['uid'] ?? null; + $action = $_GET['action'] ?? null; + if (empty($uid) || empty($action)) { throw new BadRequest(); } - if (!in_array($action, array('accept', 'decline', 'tentative'))) { + if (!in_array($action, ['accept', 'decline', 'tentative'])) { throw new BadRequest(); } - $uniqueId = $this->getEntityManager()->getRepository('UniqueId')->where(array('name' => $uid))->findOne(); + $uniqueId = $this->entityManager->getRepository('UniqueId')->where(['name' => $uid])->findOne(); if (!$uniqueId) { throw new NotFound(); @@ -67,8 +87,8 @@ class EventConfirmation extends \Espo\Core\EntryPoints\Base $link = $data->link; if (!empty($eventType) && !empty($eventId) && !empty($inviteeType) && !empty($inviteeId) && !empty($link)) { - $event = $this->getEntityManager()->getEntity($eventType, $eventId); - $invitee = $this->getEntityManager()->getEntity($inviteeType, $inviteeId); + $event = $this->entityManager->getEntity($eventType, $eventId); + $invitee = $this->entityManager->getEntity($inviteeType, $inviteeId); if (!$event || !$invitee) { throw new NotFound(); @@ -91,7 +111,7 @@ class EventConfirmation extends \Espo\Core\EntryPoints\Base $data = (object) [ 'status' => $status ]; - $this->getEntityManager()->getRepository($eventType)->updateRelation($event, $link, $invitee->id, $data); + $this->entityManager->getRepository($eventType)->updateRelation($event, $link, $invitee->id, $data); $actionData = [ 'eventName' => $event->get('name'), @@ -105,7 +125,7 @@ class EventConfirmation extends \Espo\Core\EntryPoints\Base 'inviteeId' => $invitee->id ]; - $this->getEntityManager()->getHookManager()->process($event->getEntityType(), $hookMethodName, $event, [], $actionData); + $this->hookManager->process($event->getEntityType(), $hookMethodName, $event, [], $actionData); $runScript = " Espo.require('crm:controllers/event-confirmation', function (Controller) { @@ -115,7 +135,7 @@ class EventConfirmation extends \Espo\Core\EntryPoints\Base }); "; - $this->getClientManager()->display($runScript); + $this->clientManager->display($runScript); return; } diff --git a/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php b/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php index 2aef03afab..1bdaecf5f1 100644 --- a/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php +++ b/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php @@ -29,20 +29,50 @@ namespace Espo\Modules\Crm\EntryPoints; -use \Espo\Core\Utils\Util; +use Espo\Core\Utils\Util; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class SubscribeAgain extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + ORM\EntityManager, + Utils\ClientManager, + HookManager, + Utils\Config, + Utils\Metadata, + Utils\Hasher, +}; + +class SubscribeAgain implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $entityManager; + protected $clientManager; + protected $hookManager; + protected $config; + protected $metadata; + protected $hasher; - protected function getHookManager() - { - return $this->getContainer()->get('hookManager'); + public function __construct( + EntityManager $entityManager, + ClientManager $clientManager, + HookManager $hookManager, + Config $config, + Metadata $metadata, + Hasher $hasher + ) { + $this->entityManager = $entityManager; + $this->clientManager = $clientManager; + $this->hookManager = $hookManager; + $this->config = $config; + $this->metadata = $metadata; + $this->hasher = $hasher; } public function run() @@ -61,7 +91,7 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base } $queueItemId = $id; - $queueItem = $this->getEntityManager()->getEntity('EmailQueueItem', $queueItemId); + $queueItem = $this->entityManager->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) { throw new NotFound(); @@ -72,18 +102,18 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base $massEmailId = $queueItem->get('massEmailId'); if ($massEmailId) { - $massEmail = $this->getEntityManager()->getEntity('MassEmail', $massEmailId); + $massEmail = $this->entityManager->getEntity('MassEmail', $massEmailId); if ($massEmail) { $campaignId = $massEmail->get('campaignId'); if ($campaignId) { - $campaign = $this->getEntityManager()->getEntity('Campaign', $campaignId); + $campaign = $this->entityManager->getEntity('Campaign', $campaignId); } $targetType = $queueItem->get('targetType'); $targetId = $queueItem->get('targetId'); if ($targetType && $targetId) { - $target = $this->getEntityManager()->getEntity($targetType, $targetId); + $target = $this->entityManager->getEntity($targetType, $targetId); if (!$target) { throw new NotFound(); @@ -92,10 +122,10 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base if ($massEmail->get('optOutEntirely')) { $emailAddress = $target->get('emailAddress'); if ($emailAddress) { - $ea = $this->getEntityManager()->getRepository('EmailAddress')->getByAddress($emailAddress); + $ea = $this->entityManager->getRepository('EmailAddress')->getByAddress($emailAddress); if ($ea) { $ea->set('optOut', false); - $this->getEntityManager()->saveEntity($ea); + $this->entityManager->saveEntity($ea); } } } @@ -114,7 +144,7 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base $targetListList = $massEmail->get('targetLists'); foreach ($targetListList as $targetList) { - $optedInResult = $this->getEntityManager()->getRepository('TargetList')->updateRelation($targetList, $link, $target->id, array( + $optedInResult = $this->entityManager->getRepository('TargetList')->updateRelation($targetList, $link, $target->id, array( 'optedOut' => false )); if ($optedInResult) { @@ -123,11 +153,11 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base 'targetId' => $targetId, 'targetType' => $targetType ]; - $this->getHookManager()->process('TargetList', 'afterCancelOptOut', $targetList, [], $hookData); + $this->hookManager->process('TargetList', 'afterCancelOptOut', $targetList, [], $hookData); } } - $this->getHookManager()->process($target->getEntityType(), 'afterCancelOptOut', $target, [], []); + $this->hookManager->process($target->getEntityType(), 'afterCancelOptOut', $target, [], []); $this->display(['queueItemId' => $queueItemId]); } @@ -136,13 +166,13 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base } if ($campaign && $target) { - $logRecord = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( + $logRecord = $this->entityManager->getRepository('CampaignLogRecord')->where(array( 'queueItemId' => $queueItemId, 'action' => 'Opted Out' ))->order('createdAt', true)->findOne(); if ($logRecord) { - $this->getEntityManager()->removeEntity($logRecord); + $this->entityManager->removeEntity($logRecord); } } @@ -152,8 +182,8 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base { $data = [ 'actionData' => $actionData, - 'view' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'subscribeView']), - 'template' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'subscribeTemplate']), + 'view' => $this->metadata->get(['clientDefs', 'Campaign', 'subscribeView']), + 'template' => $this->metadata->get(['clientDefs', 'Campaign', 'subscribeTemplate']), ]; $runScript = " @@ -163,20 +193,20 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base controller.doAction('subscribeAgain', ".json_encode($data)."); }); "; - $this->getClientManager()->display($runScript); + $this->clientManager->display($runScript); } protected function processWithHash(string $emailAddress, string $hash) { - $secretKey = $this->getConfig()->get('hashSecretKey'); + $secretKey = $this->config->get('hashSecretKey'); - $hash2 = $this->getContainer()->get('hasher')->hash($emailAddress); + $hash2 = $this->hasher->hash($emailAddress); if ($hash2 !== $hash) { throw new NotFound(); } - $repository = $this->getEntityManager()->getRepository('EmailAddress'); + $repository = $this->entityManager->getRepository('EmailAddress'); $ea = $repository->getByAddress($emailAddress); if ($ea) { @@ -184,10 +214,10 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base if ($ea->get('optOut')) { $ea->set('optOut', false); - $this->getEntityManager()->saveEntity($ea); + $this->entityManager->saveEntity($ea); foreach ($entityList as $entity) { - $this->getHookManager()->process($entity->getEntityType(), 'afterCancelOptOut', $entity, [], []); + $this->hookManager->process($entity->getEntityType(), 'afterCancelOptOut', $entity, [], []); } } diff --git a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php index bd41ccc972..a0553b02bc 100644 --- a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php +++ b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php @@ -29,20 +29,54 @@ namespace Espo\Modules\Crm\EntryPoints; -use \Espo\Core\Utils\Util; +use Espo\Core\Utils\Util; -use \Espo\Core\Exceptions\NotFound; -use \Espo\Core\Exceptions\Forbidden; -use \Espo\Core\Exceptions\BadRequest; -use \Espo\Core\Exceptions\Error; +use Espo\Core\Exceptions\NotFound; +use Espo\Core\Exceptions\Forbidden; +use Espo\Core\Exceptions\BadRequest; +use Espo\Core\Exceptions\Error; -class Unsubscribe extends \Espo\Core\EntryPoints\Base +use Espo\Core\EntryPoints\{ + EntryPoint, + NoAuth, +}; + +use Espo\Core\{ + ORM\EntityManager, + Utils\ClientManager, + HookManager, + Utils\Config, + Utils\Metadata, + Utils\Hasher, + ServiceFactory, +}; + +class Unsubscribe implements EntryPoint, NoAuth { - public static $authRequired = false; + protected $entityManager; + protected $clientManager; + protected $hookManager; + protected $config; + protected $metadata; + protected $hasher; + protected $serviceFactory; - protected function getHookManager() - { - return $this->getContainer()->get('hookManager'); + public function __construct( + EntityManager $entityManager, + ClientManager $clientManager, + HookManager $hookManager, + Config $config, + Metadata $metadata, + Hasher $hasher, + ServiceFactory $serviceFactory + ) { + $this->entityManager = $entityManager; + $this->clientManager = $clientManager; + $this->hookManager = $hookManager; + $this->config = $config; + $this->metadata = $metadata; + $this->hasher = $hasher; + $this->serviceFactory = $serviceFactory; } public function run() @@ -61,7 +95,7 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base } $queueItemId = $id; - $queueItem = $this->getEntityManager()->getEntity('EmailQueueItem', $queueItemId); + $queueItem = $this->entityManager->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) { throw new NotFound(); @@ -72,18 +106,18 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base $massEmailId = $queueItem->get('massEmailId'); if ($massEmailId) { - $massEmail = $this->getEntityManager()->getEntity('MassEmail', $massEmailId); + $massEmail = $this->entityManager->getEntity('MassEmail', $massEmailId); if ($massEmail) { $campaignId = $massEmail->get('campaignId'); if ($campaignId) { - $campaign = $this->getEntityManager()->getEntity('Campaign', $campaignId); + $campaign = $this->entityManager->getEntity('Campaign', $campaignId); } $targetType = $queueItem->get('targetType'); $targetId = $queueItem->get('targetId'); if ($targetType && $targetId) { - $target = $this->getEntityManager()->getEntity($targetType, $targetId); + $target = $this->entityManager->getEntity($targetType, $targetId); if (!$target) { throw new NotFound(); @@ -92,10 +126,10 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base if ($massEmail->get('optOutEntirely')) { $emailAddress = $target->get('emailAddress'); if ($emailAddress) { - $ea = $this->getEntityManager()->getRepository('EmailAddress')->getByAddress($emailAddress); + $ea = $this->entityManager->getRepository('EmailAddress')->getByAddress($emailAddress); if ($ea) { $ea->set('optOut', true); - $this->getEntityManager()->saveEntity($ea); + $this->entityManager->saveEntity($ea); } } } @@ -114,7 +148,7 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base $targetListList = $massEmail->get('targetLists'); foreach ($targetListList as $targetList) { - $optedOutResult = $this->getEntityManager()->getRepository('TargetList')->updateRelation($targetList, $link, $target->id, array( + $optedOutResult = $this->entityManager->getRepository('TargetList')->updateRelation($targetList, $link, $target->id, array( 'optedOut' => true )); if ($optedOutResult) { @@ -123,11 +157,11 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base 'targetId' => $targetId, 'targetType' => $targetType ]; - $this->getHookManager()->process('TargetList', 'afterOptOut', $targetList, [], $hookData); + $this->hookManager->process('TargetList', 'afterOptOut', $targetList, [], $hookData); } } - $this->getHookManager()->process($target->getEntityType(), 'afterOptOut', $target, [], []); + $this->hookManager->process($target->getEntityType(), 'afterOptOut', $target, [], []); $this->display(['queueItemId' => $queueItemId]); } @@ -136,8 +170,10 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base } if ($campaign && $target) { - $campaignService = $this->getServiceFactory()->create('Campaign'); - $campaignService->logOptedOut($campaignId, $queueItemId, $target, $queueItem->get('emailAddress'), null, $queueItem->get('isTest')); + $campaignService = $this->serviceFactory->create('Campaign'); + $campaignService->logOptedOut( + $campaignId, $queueItemId, $target, $queueItem->get('emailAddress'), null, $queueItem->get('isTest') + ); } } @@ -145,8 +181,8 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base { $data = [ 'actionData' => $actionData, - 'view' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'unsubscribeView']), - 'template' => $this->getMetadata()->get(['clientDefs', 'Campaign', 'unsubscribeTemplate']), + 'view' => $this->metadata->get(['clientDefs', 'Campaign', 'unsubscribeView']), + 'template' => $this->metadata->get(['clientDefs', 'Campaign', 'unsubscribeTemplate']), ]; $runScript = " @@ -156,20 +192,20 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base controller.doAction('unsubscribe', ".json_encode($data)."); }); "; - $this->getClientManager()->display($runScript); + $this->clientManager->display($runScript); } protected function processWithHash(string $emailAddress, string $hash) { - $secretKey = $this->getConfig()->get('hashSecretKey'); + $secretKey = $this->config->get('hashSecretKey'); - $hash2 = $this->getContainer()->get('hasher')->hash($emailAddress); + $hash2 = $this->hasher->hash($emailAddress); if ($hash2 !== $hash) { throw new NotFound(); } - $repository = $this->getEntityManager()->getRepository('EmailAddress'); + $repository = $this->entityManager->getRepository('EmailAddress'); $ea = $repository->getByAddress($emailAddress); if ($ea) { @@ -177,10 +213,10 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base if (!$ea->get('optOut')) { $ea->set('optOut', true); - $this->getEntityManager()->saveEntity($ea); + $this->entityManager->saveEntity($ea); foreach ($entityList as $entity) { - $this->getHookManager()->process($entity->getEntityType(), 'afterOptOut', $entity, [], []); + $this->hookManager->process($entity->getEntityType(), 'afterOptOut', $entity, [], []); } } diff --git a/application/Espo/ORM/SthCollection.php b/application/Espo/ORM/SthCollection.php index e90ea5d965..02e7864cc1 100644 --- a/application/Espo/ORM/SthCollection.php +++ b/application/Espo/ORM/SthCollection.php @@ -55,12 +55,12 @@ class SthCollection implements \IteratorAggregate, ICollection return $this->entityManager->getQuery(); } - protected function getPdo() : \PDO + protected function getPdo() { return $this->entityManager->getPdo(); } - protected function getEntityFactory() : object + protected function getEntityFactory() { return $this->entityManager->getEntityFactory(); }