/**
  * 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;
             }
         }
     }
 }
 /**
  * Get Answer from given field out of Mail object
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return \string Answer value
  */
 protected function getAnswerFromField($field, $mail)
 {
     foreach ($mail->getAnswers() as $answer) {
         if ($answer->getField()->getUid() == $field->getUid()) {
             return $answer->getValue();
         }
     }
     return '';
 }
 /**
  * Get Answer from given field out of Mail object
  *
  * @param Field $field
  * @param Mail $mail
  * @return string Answer value
  */
 protected function getAnswerFromField(Field $field, Mail $mail)
 {
     foreach ($mail->getAnswers() as $answer) {
         /** @var Answer $answer */
         if ($answer->getField() === $field) {
             return $answer->getValue();
         }
     }
     return '';
 }
 /**
  * Test for createHash()
  *
  * @return void
  * @test
  */
 public function createHashReturnsString()
 {
     $form = new Form();
     $form->_setProperty('uid', 123);
     $mail = new Mail();
     $mail->_setProperty('uid', 123);
     $mail->_setProperty('pid', 124);
     $mail->setForm($form);
     $result = OptinUtility::createOptinHash($mail);
     $this->assertEquals('abf068777a', $result);
     $this->assertTrue(strlen($result) === 10);
 }
 /**
  * Test for createHash()
  *
  * @return void
  * @test
  */
 public function createHashReturnsString()
 {
     $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = 'abcdef';
     $form = new Form();
     $form->_setProperty('uid', 123);
     $mail = new Mail();
     $mail->_setProperty('uid', 123);
     $mail->_setProperty('pid', 124);
     $mail->setForm($form);
     $result = OptinUtility::createOptinHash($mail);
     $this->assertEquals('cf06c6db71', $result);
     $this->assertTrue(strlen($result) === 10);
 }
 /**
  * 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();
 }
 /**
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @param \In2code\Powermail\Domain\Validator\CustomValidator $object
  */
 public function isValid($mail, $object)
 {
     $answers = $mail->getAnswers();
     $powermailVars = GeneralUtility::_GP('tx_powermail_pi1');
     /** @var \In2code\Powermail\Domain\Model\Answer $answer */
     foreach ($answers as $answer) {
         $field = $answer->getField();
         if ($field->getType() == 'recaptcha') {
             /*
              * Response will be token if valid, an empty string when not valid
              * When the previous step doesn't contain the recaptcha, NULL is
              * returned
              */
             $response = GeneralUtility::_GP('g-recaptcha-response');
             if ($response !== NULL) {
                 // Only check if a response is set
                 /** @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManager configurationManager */
                 $configurationManager = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager');
                 $fullTs = $configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
                 $reCaptchaSettings = $fullTs['plugin.']['tx_powermail.']['settings.']['setup.']['reCAPTCHA.'];
                 if (isset($reCaptchaSettings) && is_array($reCaptchaSettings) && isset($reCaptchaSettings['secretKey']) && $reCaptchaSettings['secretKey']) {
                     $ch = curl_init();
                     $fields = array('secret' => $reCaptchaSettings['secretKey'], 'response' => $response);
                     //url-ify the data for the POST
                     $fieldsString = '';
                     foreach ($fields as $key => $value) {
                         $fieldsString .= $key . '=' . $value . '&';
                     }
                     rtrim($fieldsString, '&');
                     //set the url, number of POST vars, POST data
                     curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
                     curl_setopt($ch, CURLOPT_POST, count($fields));
                     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                     curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldsString);
                     //execute post
                     $result = json_decode(curl_exec($ch));
                     if (!(bool) $result->success) {
                         $object->setErrorAndMessage($field, LocalizationUtility::translate('validation.possible_robot', 'rhrecaptcha'));
                     }
                 } else {
                     throw new InvalidVariableException(LocalizationUtility::translate('error.no_secretKey', 'rhrecaptcha'), 1358349150);
                 }
             }
         }
     }
 }
Beispiel #8
0
 /**
  * Checks if two email-addresses are equal
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @param \In2code\Powermail\Domain\Validator\AbstractValidator $validator
  */
 public function checkEmails(\In2code\Powermail\Domain\Model\Mail $mail, \In2code\Powermail\Domain\Validator\AbstractValidator $validator)
 {
     $checkEmailEqualFirstId = '';
     $checkEmailEqualSecondId = '';
     if ($this->settings['checkEmailEqual'] && $this->settings['checkEmailEqualFirstId'] && $this->settings['checkEmailEqualSecondId']) {
         /** @var \In2code\Powermail\Domain\Model\Answer $answer */
         foreach ($mail->getAnswers() as $answer) {
             if ($answer->getField()->getUid() == $this->settings['checkEmailEqualFirstId']) {
                 $checkEmailEqualFirstId = $answer->getValue();
             } elseif ($answer->getField()->getUid() == $this->settings['checkEmailEqualSecondId']) {
                 $checkEmailEqualSecondId = $answer->getValue();
             }
         }
         if ($checkEmailEqualFirstId !== $checkEmailEqualSecondId) {
             $validator->setIsValid(false);
         }
     }
 }
 /**
  * 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();
 }
Beispiel #10
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();
 }
 /**
  * Validation of given Mail Params
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return bool
  */
 public function isValid($mail)
 {
     foreach ($mail->getAnswers() as $answer) {
         if ($answer->getValueType() === 3) {
             if (!is_array($answer->getValue())) {
                 continue;
             }
             foreach ($answer->getValue() as $value) {
                 if (!BasicFileUtility::checkExtension($value, $this->settings['misc.']['file.']['extension'])) {
                     $this->setErrorAndMessage($answer->getField(), 'upload_extension');
                     continue;
                 }
                 if (!BasicFileUtility::checkFilesize($value, $this->settings)) {
                     $this->setErrorAndMessage($answer->getField(), 'upload_size');
                     continue;
                 }
             }
         }
     }
     return $this->isValidState();
 }
 /**
  * Validation process
  *
  * @param Mail $mail
  * @return Result
  */
 public function validate($mail)
 {
     $this->emailFieldMarkerArray = GeneralUtility::trimExplode(',', $this->configuration['emailMarker'], true);
     $this->confirmEmailFieldMarkerArray = GeneralUtility::trimExplode(',', $this->configuration['emailConfirmMarker'], true);
     $result = new Result();
     foreach ($mail->getAnswers() as $answer) {
         if (in_array($answer->getField()->getMarker(), $this->emailFieldMarkerArray)) {
             $emailMarker = $answer->getField()->getMarker();
             $email = $answer->getValue();
         }
         if (in_array($answer->getField()->getMarker(), $this->confirmEmailFieldMarkerArray)) {
             $confirmEmailMarker = $answer->getField()->getMarker();
             $confirmEmail = $answer->getValue();
         }
     }
     if ($email && $confirmEmail && $emailMarker && $confirmEmailMarker && $email !== $confirmEmail) {
         $result->addError(new Error(LocalizationUtility::translate('validation_email_match', 't3ecom'), $confirmEmailMarker));
         $result->addError(new Error(LocalizationUtility::translate('validation_email_match', 't3ecom'), $emailMarker));
     }
     return $result;
 }
 /**
  * Test for isValid()
  *
  * @param string $value
  * @param bool $expectedResult
  * @return void
  * @dataProvider validateIsValidReturnsBoolDataProvider
  * @test
  */
 public function validateIsValidReturnsBool($value, $expectedResult)
 {
     $mail = new Mail();
     $field = new Field();
     $field->setType(1);
     $answer1 = new Answer();
     $answer1->setValueType(3);
     $answer1->setValue($value);
     $answer1->setField($field);
     $objectStorage = new ObjectStorage();
     $objectStorage->attach($answer1);
     $mail->setAnswers($objectStorage);
     if ($expectedResult === false) {
         $this->generalValidatorMock->expects($this->once())->method('setErrorAndMessage');
     } else {
         $this->generalValidatorMock->expects($this->never())->method('setErrorAndMessage');
     }
     $this->generalValidatorMock->_callRef('isValid', $mail);
 }
 /**
  * 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());
 }
 /**
  * Update mail record with parsed fields
  *
  * @param array $email
  */
 protected function updateMail(array $email)
 {
     if ($this->type === 'receiver' && $email['variables']['hash'] === null) {
         $this->mail->setSenderMail($email['senderEmail']);
         $this->mail->setSenderName($email['senderName']);
         $this->mail->setSubject($email['subject']);
     }
 }
 /**
  * Returns sendername from a couple of arguments
  *
  * @param Mail $mail Given Params
  * @param string|array $default String as default or cObject array
  * @param string $glue
  * @return string Sender Name
  */
 public function getSenderNameFromArguments(Mail $mail, $default = null, $glue = ' ')
 {
     $name = '';
     foreach ($mail->getAnswers() as $answer) {
         if (method_exists($answer->getField(), 'getUid') && $answer->getField()->getSenderName()) {
             if (!is_array($answer->getValue())) {
                 $value = $answer->getValue();
             } else {
                 $value = implode($glue, $answer->getValue());
             }
             $name .= $value . $glue;
         }
     }
     if (!trim($name) && $default) {
         if (!is_array($default)) {
             $name = $default;
         } else {
             /** @var ContentObjectRenderer $contentObject */
             $contentObject = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer');
             $name = $contentObject->cObjGetSingle($default[0][$default[1]], $default[0][$default[1] . '.']);
         }
     }
     if (empty($name) && !empty($GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'])) {
         $name = $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'];
     }
     if (!trim($name)) {
         $name = LocalizationUtility::translate('error_no_sender_name');
     }
     return trim($name);
 }
Beispiel #18
0
 /**
  * Get value for multi fieldtypes (checkbox, radio)
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \In2code\Powermail\Domain\Model\Mail $mail To prefill in Edit Action
  * @param \int $cycle Cycle Number (1,2,3...) - if filled checkbox or radiobutton
  * @return string
  */
 protected function getMultiValue(\In2code\Powermail\Domain\Model\Field $field, \In2code\Powermail\Domain\Model\Mail $mail = NULL, $cycle = 0)
 {
     $marker = $field->getMarker();
     $uid = $field->getUid();
     $selected = 0;
     $index = $cycle - 1;
     $options = $field->getModifiedSettings();
     // edit view
     if ($mail !== NULL && $mail->getAnswers()) {
         foreach ($mail->getAnswers() as $answer) {
             if ($answer->getField() === $field) {
                 $values = $answer->getValue();
                 foreach ((array) $values as $value) {
                     if ($value === $options[$index]['value'] || $value === $options[$index]['label']) {
                         $selected = 1;
                     }
                 }
             }
         }
     }
     // if GET/POST with marker (&tx_powermail_pi1[field][marker][index]=value)
     if (isset($this->piVars['field'][$marker]) && is_array($this->piVars['field'][$marker])) {
         foreach (array_keys($this->piVars['field'][$marker]) as $key) {
             if ($this->piVars['field'][$marker][$key] === $options[$index]['value'] || $this->piVars['field'][$marker][$key] === $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars['field'][$marker])) {
         if ($this->piVars['field'][$marker] == $options[$index]['value'] || $this->piVars['field'][$marker] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif (isset($this->piVars[$marker]) && is_array($this->piVars[$marker])) {
         foreach (array_keys($this->piVars[$marker]) as $key) {
             if ($this->piVars[$marker][$key] === $options[$index]['value'] || $this->piVars[$marker][$key] === $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars[$marker])) {
         if ($this->piVars[$marker] == $options[$index]['value'] || $this->piVars[$marker] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif (isset($this->piVars['field'][$uid])) {
         if (is_array($this->piVars['field'][$uid])) {
             foreach ($this->piVars['field'][$uid] as $key => $value) {
                 $value = NULL;
                 if ($this->piVars['field'][$uid][$key] == $options[$index]['value'] || $this->piVars['field'][$uid][$key] == $options[$index]['label']) {
                     $selected = 1;
                 }
             }
         } else {
             if ($this->piVars['field'][$uid] == $options[$index]['value'] || $this->piVars['field'][$uid] == $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars['uid' . $uid])) {
         if ($this->piVars['uid' . $uid] == $options[$index]['value'] || $this->piVars['uid' . $uid] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif ($field->getFeuserValue() && intval($GLOBALS['TSFE']->fe_user->user['uid']) !== 0) {
         // if fe_user is logged in
         if ($GLOBALS['TSFE']->fe_user->user[$field->getFeuserValue()] == $options[$index]['value'] || $GLOBALS['TSFE']->fe_user->user[$field->getFeuserValue()] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif ($options[$index]['selected']) {
         $selected = 1;
     } elseif (isset($this->settings['prefill.'][$marker]) || isset($this->settings['prefill.'][$marker . '.'])) {
         if (isset($this->settings['prefill.'][$marker . '.']) && is_array($this->settings['prefill.'][$marker . '.'])) {
             $data = \TYPO3\CMS\Extbase\Reflection\ObjectAccess::getGettableProperties($field);
             $this->cObj->start($data);
             if (isset($this->settings['prefill.'][$marker . '.']['0'])) {
                 /**
                  * plugin.tx_powermail.settings.setup.prefill.marker.0 = TEXT
                  * plugin.tx_powermail.settings.setup.prefill.marker.0.value = red
                  */
                 foreach (array_keys($this->settings['prefill.'][$marker . '.']) as $key) {
                     if (stristr($key, '.')) {
                         continue;
                     }
                     $prefill = $this->cObj->cObjGetSingle($this->settings['prefill.'][$marker . '.'][$key], $this->settings['prefill.'][$marker . '.'][$key . '.']);
                     if ($prefill == $options[$index]['value'] || $prefill == $options[$index]['label']) {
                         $selected = 1;
                     }
                 }
             } else {
                 /**
                  * plugin.tx_powermail.settings.setup.prefill.marker = TEXT
                  * plugin.tx_powermail.settings.setup.prefill.marker.value = red
                  */
                 $prefill = $this->cObj->cObjGetSingle($this->settings['prefill.'][$marker], $this->settings['prefill.'][$marker . '.']);
                 if ($prefill == $options[$index]['value'] || $prefill == $options[$index]['label']) {
                     $selected = 1;
                 }
             }
         } else {
             /**
              * plugin.tx_powermail.settings.setup.prefill.marker = red
              */
             if ($this->settings['prefill.'][$marker] == $options[$index]['value'] || $this->settings['prefill.'][$marker] == $options[$index]['label']) {
                 $selected = 1;
             }
         }
     }
     return $selected;
 }
Beispiel #19
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');
     }
 }
 /**
  * Blacklist String Check: Check if a blacklisted word is in given values
  *
  * @param Mail $mail
  * @param float $indication Indication if check fails
  * @return void
  */
 protected function blacklistStringCheck(Mail $mail, $indication = 1.0)
 {
     if (!$indication) {
         return;
     }
     $blacklist = GeneralUtility::trimExplode(',', $this->settings['spamshield.']['indicator.']['blacklistStringValues'], true);
     foreach ($mail->getAnswers() as $answer) {
         if (is_array($answer->getValue())) {
             continue;
         }
         foreach ((array) $blacklist as $blackword) {
             if ($this->findStringInString($answer->getValue(), $blackword)) {
                 $this->increaseSpamIndicator($indication);
                 $this->addMessage(__FUNCTION__ . ' failed');
                 return;
             }
         }
     }
 }
 /**
  * Test for getSenderNameFromArguments()
  *
  * @param array $values
  * @param string $fallback
  * @param string $defaultMailFromAddress
  * @param string $expectedResult
  * @return void
  * @dataProvider getSenderNameFromArgumentsReturnsStringDataProvider
  * @test
  */
 public function getSenderNameFromArgumentsReturnsString($values, $fallback, $defaultMailFromAddress, $expectedResult)
 {
     $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'] = $defaultMailFromAddress;
     $mail = new Mail();
     if (is_array($values)) {
         foreach ($values as $value) {
             $answer = new Answer();
             $answer->_setProperty('translateFormat', 'Y-m-d');
             $answer->_setProperty('valueType', is_array($values) ? 2 : 0);
             $field = new Field();
             $field->setType('input');
             $field->setSenderName(true);
             $answer->_setProperty('value', $value);
             $answer->setValueType(is_array($value) ? 1 : 0);
             $answer->setField($field);
             $mail->addAnswer($answer);
         }
     }
     $result = $this->generalValidatorMock->_callRef('getSenderNameFromArguments', $mail, $fallback);
     $this->assertSame($expectedResult, $result);
 }
Beispiel #22
0
 /**
  * Blacklist String Check: Check if a blacklisted word is in given values
  *
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @param float $indication Indication if check fails
  * @return void
  */
 protected function blacklistStringCheck(\In2code\Powermail\Domain\Model\Mail $mail, $indication = 1.0)
 {
     if (!$indication) {
         return;
     }
     $blacklist = GeneralUtility::trimExplode(',', $this->settings['spamshield.']['indicator.']['blacklistStringValues'], TRUE);
     // if check failes
     foreach ($mail->getAnswers() as $answer) {
         if (is_array($answer->getValue())) {
             continue;
         }
         foreach ((array) $blacklist as $blackword) {
             if (stristr($answer->getValue(), $blackword)) {
                 $this->increaseSpamIndicator($indication);
                 $this->addMessage(__FUNCTION__ . ' failed');
                 return;
             }
         }
     }
 }
Beispiel #23
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');
     }
 }
Beispiel #24
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;
 }
 /**
  * Returns sendername from a couple of arguments
  *
  * @param Mail $mail Given Params
  * @param string|array $default String as default or cObject array
  * @param string $glue
  * @return string Sender Name
  */
 public function getSenderNameFromArguments(Mail $mail, $default = null, $glue = ' ')
 {
     $name = '';
     foreach ($mail->getAnswers() as $answer) {
         /** @var Answer $answer */
         if (method_exists($answer->getField(), 'getUid') && $answer->getField()->isSenderName()) {
             if (!is_array($answer->getValue())) {
                 $value = $answer->getValue();
             } else {
                 $value = implode($glue, $answer->getValue());
             }
             $name .= $value . $glue;
         }
     }
     if (!trim($name) && $default) {
         if (!is_array($default)) {
             $name = $default;
         } else {
             /** @var ContentObjectRenderer $contentObject */
             $contentObject = GeneralUtility::makeInstance(ObjectManager::class)->get(ContentObjectRenderer::class);
             $name = $contentObject->cObjGetSingle($default[0][$default[1]], $default[0][$default[1] . '.']);
         }
     }
     if (empty($name) && !empty(ConfigurationUtility::getDefaultMailFromName())) {
         $name = ConfigurationUtility::getDefaultMailFromName();
     }
     if (!trim($name)) {
         $name = LocalizationUtility::translate('error_no_sender_name');
     }
     return trim($name);
 }
 /**
  * Test for blacklistStringCheck()
  *
  * @param int $spamIndicator
  * @param array $answerProperties
  * @param string $blacklist
  * @param int $expectedOverallSpamIndicator
  * @return void
  * @dataProvider blacklistStringCheckReturnsVoidDataProvider
  * @test
  */
 public function blacklistStringCheckReturnsVoid($spamIndicator, $answerProperties, $blacklist, $expectedOverallSpamIndicator)
 {
     $mail = new Mail();
     foreach ($answerProperties as $value) {
         $answer = new Answer();
         $answer->setValueType(123);
         $answer->setValue($value);
         $mail->addAnswer($answer);
     }
     $this->generalValidatorMock->_set('settings', ['spamshield.' => ['indicator.' => ['blacklistStringValues' => $blacklist]]]);
     $this->generalValidatorMock->_callRef('blacklistStringCheck', $mail, $spamIndicator);
     $this->assertSame($expectedOverallSpamIndicator, $this->generalValidatorMock->_callRef('getSpamIndicator'));
 }
 /**
  * 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;
 }
 /**
  * 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');
     }
 }