Exemplo n.º 1
0
 /**
  * doAdditionalValidation
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @param \In2code\Powermail\Domain\Validator\CustomValidator $pObj
  */
 public function doAdditionalValidation($mail, $pObj)
 {
     foreach ($mail->getForm()->getPages() as $page) {
         foreach ($page->getFields() as $field) {
             $answer = $this->getAnswerFromField($field, $mail);
             if ($this->fieldShouldBeValidated($field, $mail)) {
                 switch ($field->getValidation()) {
                     // Date Range
                     case 100:
                         if (!$this->validateDateRange($answer, $field->getValidationConfiguration())) {
                             $pObj->setValidState(FALSE);
                             $pObj->addError('Kein gültiges Datum angegeben!', $field->getMarker());
                         }
                         break;
                         // IBAN
                     // IBAN
                     case 101:
                         if (!$this->validateIBAN($answer, $field->getValidationConfiguration())) {
                             $pObj->setValidState(FALSE);
                             $pObj->addError('Kein gültiger IBAN eingegeben!', $field->getMarker());
                         }
                         break;
                 }
             } else {
                 continue;
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * Validation of given Params
  *
  * @param Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     // stop validation if it's turned off
     if (!$this->isServerValidationEnabled()) {
         return true;
     }
     // iterate through all fields of current form
     foreach ($mail->getForm()->getPages() as $page) {
         foreach ($page->getFields() as $field) {
             $this->isValidField($field, $this->getAnswerFromField($field, $mail));
         }
     }
     return $this->isValidState();
 }
 /**
  * Validation of given Params
  *
  * @param Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     if (!$this->formHasPassword($mail->getForm()) || $this->ignoreValidationIfConfirmation()) {
         return true;
     }
     foreach ($mail->getAnswers() as $answer) {
         if ($answer->getField()->getType() !== 'password') {
             continue;
         }
         if ($answer->getValue() !== $this->getMirroredValueOfPasswordField($answer->getField())) {
             $this->setErrorAndMessage($answer->getField(), 'password');
         }
     }
     return $this->isValidState();
 }
Exemplo n.º 4
0
 /**
  * Validation of given Params
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     // stop validation if it's turned off
     if (!$this->isServerValidationEnabled()) {
         return TRUE;
     }
     // iterate through all fields of current form
     // every page
     foreach ($mail->getForm()->getPages() as $page) {
         // every field
         foreach ($page->getFields() as $field) {
             // check if field should be validated, if a validation condition is attached to it
             if ($this->fieldShouldBeValidated($field, $mail)) {
                 $this->isValidField($field, $this->getAnswerFromField($field, $mail));
             }
         }
     }
     return $this->isValidState();
 }
 /**
  * Validation of given Params
  *
  * @param Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     if ($this->formHasCaptcha($mail->getForm())) {
         foreach ($mail->getAnswers() as $answer) {
             /** @var Answer $answer */
             if ($answer->getField()->getType() === 'captcha') {
                 $this->setCaptchaArgument(true);
                 if (!$this->validCodePreflight($answer->getValue(), $answer->getField())) {
                     $this->setErrorAndMessage($answer->getField(), 'captcha');
                 }
             }
         }
         // if no captcha arguments given (maybe deleted from DOM)
         if (!$this->hasCaptchaArgument()) {
             $this->addError('captcha', 0);
             $this->setValidState(false);
         }
     }
     return $this->isValidState();
 }
Exemplo n.º 6
0
 /**
  * Validation of given Params
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     if (!$this->formHasCaptcha($mail->getForm())) {
         return TRUE;
     }
     foreach ($mail->getAnswers() as $answer) {
         if ($answer->getField()->getType() !== 'captcha') {
             continue;
         }
         $this->captchaArgumentFound = TRUE;
         if (!$this->captchaEngine->validCode($answer->getValue(), $this->clearSession)) {
             $this->setErrorAndMessage($answer->getField(), 'captcha');
         }
     }
     // if no captcha arguments given (maybe deleted from DOM)
     if (!$this->captchaArgumentFound) {
         $this->addError('captcha', 0);
         $this->setIsValid(FALSE);
     }
     return $this->getIsValid();
 }
 /**
  * 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();
 }
Exemplo n.º 8
0
 /**
  * Forward to form action if wrong form in plugin variables
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return void
  */
 protected function ignoreWrongForm(Mail $mail)
 {
     $pluginHasThisAssignedForms = GeneralUtility::intExplode(',', $this->settings['main']['form']);
     if (!in_array($mail->getForm()->getUid(), $pluginHasThisAssignedForms)) {
         $this->forward('form');
     }
 }
Exemplo n.º 9
0
 /**
  * Forward to formAction if wrong form in plugin variables given
  *        used in optinConfirmAction()
  *
  * @param Mail $mail
  * @return void
  */
 protected function forwardIfFormParamsDoNotMatchForOptinConfirm(Mail $mail)
 {
     $formsToContent = GeneralUtility::intExplode(',', $this->settings['main']['form']);
     if ($mail === null || !in_array($mail->getForm()->getUid(), $formsToContent)) {
         $this->forward('form');
     }
 }
 /**
  * File Upload
  *
  * @param string $destinationPath
  * @param Mail $mail
  * @param string $fileExtensions allowed file extensions
  * @return bool
  */
 public static function fileUpload($destinationPath, Mail $mail, $fileExtensions = '')
 {
     $result = false;
     $files = self::getFilesArray();
     if (isset($files['tx_powermail_pi1']['tmp_name']['field']) && self::hasFormAnUploadField($mail->getForm())) {
         foreach (array_keys($files['tx_powermail_pi1']['tmp_name']['field']) as $marker) {
             foreach ($files['tx_powermail_pi1']['tmp_name']['field'][$marker] as $key => $tmpName) {
                 if (!empty($files['tx_powermail_pi1']['name']['field'][$marker][$key])) {
                     $uniqueFileName = self::getUniqueName($files['tx_powermail_pi1']['name']['field'][$marker][$key], $destinationPath);
                     if (self::checkExtension($uniqueFileName, $fileExtensions) && self::checkFolder($uniqueFileName)) {
                         $result = GeneralUtility::upload_copy_move($tmpName, $uniqueFileName);
                     }
                 }
             }
         }
     }
     return $result;
 }
Exemplo n.º 11
0
 /**
  * Create Hash for Optin Mail
  *
  * @param Mail $mail
  * @return string
  */
 public static function createOptinHash(Mail $mail)
 {
     return self::createHash($mail->getUid() . $mail->getPid() . $mail->getForm()->getUid());
 }
Exemplo n.º 12
0
 /**
  * File Upload
  *
  * @param string $destinationPath
  * @param string $allowedFileExtensions
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return bool
  */
 public static function fileUpload($destinationPath, $allowedFileExtensions = '', \In2code\Powermail\Domain\Model\Mail $mail)
 {
     $result = FALSE;
     if (isset($_FILES['tx_powermail_pi1']['tmp_name']['field']) && self::hasFormAnUploadField($mail->getForm())) {
         foreach (array_keys($_FILES['tx_powermail_pi1']['tmp_name']['field']) as $marker) {
             foreach ($_FILES['tx_powermail_pi1']['tmp_name']['field'][$marker] as $key => $tmpName) {
                 $uniqueFileName = self::getUniqueName($_FILES['tx_powermail_pi1']['name']['field'][$marker][$key], $destinationPath);
                 if (!self::checkExtension($uniqueFileName, $allowedFileExtensions)) {
                     continue;
                 }
                 $result = GeneralUtility::upload_copy_move($tmpName, $uniqueFileName);
             }
         }
     }
     return $result;
 }
Exemplo n.º 13
0
 /**
  * Session Check: Checks if session was started correct on form delivery
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @param float $indication Indication if check fails
  * @return void
  */
 protected function sessionCheck(\In2code\Powermail\Domain\Model\Mail $mail, $indication = 1.0)
 {
     // Stop if indicator was turned to 0 OR if last action was optinConfirm
     if (!$indication || $this->referrer == 'optinConfirm') {
         return;
     }
     $time = Div::getFormStartFromSession($mail->getForm()->getUid());
     // if check failes
     if (!isset($time) || !$time) {
         $this->increaseSpamIndicator($indication);
         $this->addMessage(__FUNCTION__ . ' failed');
     }
 }
Exemplo n.º 14
0
 /**
  * Forward to formAction if wrong form in plugin variables given
  *        used in optinConfirmAction()
  *
  * @param Mail $mail
  * @return void
  */
 protected function forwardIfFormParamsDoNotMatchForOptinConfirm(Mail $mail)
 {
     $formsToContent = GeneralUtility::intExplode(',', $this->settings['main']['form']);
     if ($mail === null || !in_array($mail->getForm()->getUid(), $formsToContent)) {
         GeneralUtility::devLog('Redirect (optin)', $this->extensionName, 2, [$formsToContent, (array) $mail]);
         $this->forward('form');
     }
 }