From a1b6c704fda88eb257ff3ab0d3c1a2b8c81ff060 Mon Sep 17 00:00:00 2001
From: Markus Guenther <markus@sgalinski.de>
Date: Tue, 15 Nov 2016 21:08:52 +0100
Subject: [PATCH] =?UTF-8?q?[FEATURE]=20Use=20objectManager=20as=20class=20?=
 =?UTF-8?q?variable=20and=20don=C2=B4t=20init=20this=20multiple=20times?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Classes/Service/MailTemplateService.php | 32 ++++++++++++++-----------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php
index b933dca1..6c28e8ab 100644
--- a/Classes/Service/MailTemplateService.php
+++ b/Classes/Service/MailTemplateService.php
@@ -113,30 +113,38 @@ class MailTemplateService {
 
 	/**
 	 * @var \SGalinski\SgMail\Domain\Repository\TemplateRepository
-	 * @inject
 	 */
 	protected $templateRepository;
 
 	/**
 	 * @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
-	 * @inject
 	 */
 	protected $persistenceManager;
 
+	/**
+	 * @var \TYPO3\CMS\Extbase\Object\ObjectManager
+	 */
+	protected $objectManager;
+
 	/**
 	 * MailTemplateService constructor.
 	 */
 	public function __construct() {
-		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
-		$this->mailMessage = $objectManager->get(MailMessage::class);
-
-		$typoScriptSettingsService = $objectManager->get(TypoScriptSettingsService::class);
+		/** @var ObjectManager objectManager */
+		$this->objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+		/** @var MailMessage mailMessage */
+		$this->mailMessage = $this->objectManager->get(MailMessage::class);
+		/** @var TypoScriptSettingsService $typoScriptSettingsService */
+		$typoScriptSettingsService = $this->objectManager->get(TypoScriptSettingsService::class);
 		$this->tsSettings = $typoScriptSettingsService->getSettings(0, 'tx_sgmail');
 		$this->language = $this->tsSettings['templateDefaultLanguage'];
+		/** @var TemplateRepository templateRepository */
+		$this->templateRepository = $this->objectManager->get(TemplateRepository::class);
+		/** @var PersistenceManager persistenceManager */
+		$this->persistenceManager = $this->objectManager->get(PersistenceManager::class);
 
 		$this->fromAddress = $this->tsSettings['mail']['default']['from'];
 		$this->mailMessage->setFrom($this->fromAddress);
-
 		$this->bccAddresses = GeneralUtility::trimExplode(',', $this->tsSettings['mail']['default']['bcc']);
 		$this->ccAddresses = GeneralUtility::trimExplode(',', $this->tsSettings['mail']['default']['cc']);
 
@@ -229,9 +237,8 @@ class MailTemplateService {
 			$this->setMarkers($previewMarker);
 		}
 
-		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
 		/** @var StandaloneView $emailView */
-		$emailView = $objectManager->get(StandaloneView::class);
+		$emailView = $this->objectManager->get(StandaloneView::class);
 
 		if (!isset($defaultTemplateContent)) {
 			$emailView->setTemplateSource($template->getContent());
@@ -269,10 +276,7 @@ class MailTemplateService {
 	 * @param bool $sent
 	 */
 	private function addMailToMailQueue($subject, $emailBody, $priority, $sent = FALSE) {
-		/** @var ObjectManager $objectManager */
-		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
-
-		$mail = $objectManager->get(Mail::class);
+		$mail = $this->objectManager->get(Mail::class);
 		$mail->setFromAddress($this->fromAddress);
 		$mail->setToAddress($this->toAddresses);
 		$mail->setMailSubject($subject);
@@ -282,7 +286,7 @@ class MailTemplateService {
 		$mail->setCcAddresses(implode(',', $this->ccAddresses));
 		$mail->setSent($sent);
 
-		$mailRepository = $objectManager->get(MailRepository::class);
+		$mailRepository = $this->objectManager->get(MailRepository::class);
 		$mailRepository->add($mail);
 		$this->persistenceManager->persistAll();
 	}
-- 
GitLab