コード例 #1
0
 /**
  * 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();
 }
コード例 #2
0
ファイル: FormController.php プロジェクト: abeyl/powermail
 /**
  * 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();
 }
コード例 #3
0
 /**
  * Test for getStoragePage()
  *
  * @return void
  * @test
  */
 public function getStoragePageReturnsInt()
 {
     $result = FrontendUtility::getStoragePage(123);
     $this->assertSame(123, $result);
 }