/** * Validation of given Params * * @param Mail $mail * @return bool */ public function isValid($mail) { if (empty($this->settings['validation.']['unique.'])) { return $this->isValidState(); } foreach ($this->settings['validation.']['unique.'] as $marker => $amount) { if ((int) $amount === 0) { continue; } foreach ($mail->getAnswers() as $answer) { /** @var Answer $answer */ if ($answer->getField()->getMarker() === $marker) { $numberOfMails = $this->mailRepository->findByMarkerValueForm($marker, $answer->getValue(), $mail->getForm(), FrontendUtility::getStoragePage($this->getStoragePid()))->count(); if ($amount <= $numberOfMails) { $this->setErrorAndMessage($answer->getField(), 'unique'); } } } } return $this->isValidState(); }
/** * Save mail on submit * * @param Mail $mail * @return void */ protected function saveMail(Mail &$mail = null) { $marketingInfos = SessionUtility::getMarketingInfos(); $mail->setPid(FrontendUtility::getStoragePage($this->settings['main']['pid']))->setSenderMail($this->mailRepository->getSenderMailFromArguments($mail))->setSenderName($this->mailRepository->getSenderNameFromArguments($mail))->setSubject($this->settings['receiver']['subject'])->setReceiverMail($this->settings['receiver']['email'])->setBody(DebugUtility::viewArray($this->mailRepository->getVariablesWithMarkersFromMail($mail)))->setSpamFactor(SessionUtility::getSpamFactorFromSession())->setTime(time() - SessionUtility::getFormStartFromSession($mail->getForm()->getUid(), $this->settings))->setUserAgent(GeneralUtility::getIndpEnv('HTTP_USER_AGENT'))->setMarketingRefererDomain($marketingInfos['refererDomain'])->setMarketingReferer($marketingInfos['referer'])->setMarketingCountry($marketingInfos['country'])->setMarketingMobileDevice($marketingInfos['mobileDevice'])->setMarketingFrontendLanguage($marketingInfos['frontendLanguage'])->setMarketingBrowserLanguage($marketingInfos['browserLanguage'])->setMarketingPageFunnel($marketingInfos['pageFunnel']); if (FrontendUtility::isLoggedInFrontendUser()) { $mail->setFeuser($this->userRepository->findByUid(FrontendUtility::getPropertyFromLoggedInFrontendUser('uid'))); } if (!ConfigurationUtility::isDisableIpLogActive()) { $mail->setSenderIp(GeneralUtility::getIndpEnv('REMOTE_ADDR')); } if ($this->settings['main']['optin'] || $this->settings['db']['hidden']) { $mail->setHidden(true); } foreach ($mail->getAnswers() as $answer) { $answer->setPid(FrontendUtility::getStoragePage($this->settings['main']['pid'])); } $this->mailRepository->add($mail); $this->persistenceManager->persistAll(); }
/** * Test for getStoragePage() * * @return void * @test */ public function getStoragePageReturnsInt() { $result = FrontendUtility::getStoragePage(123); $this->assertSame(123, $result); }