/** * 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; } } } }
/** * 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(); }
/** * 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(); }
/** * 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(); }
/** * 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'); } }
/** * 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; }
/** * 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()); }
/** * 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; }
/** * 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'); } }
/** * 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'); } }