/** * Get Datepicker Settings * * @param \In2code\Powermail\Domain\Model\Field $field * @return string */ protected function getDatepickerSettings(\In2code\Powermail\Domain\Model\Field $field = NULL) { if ($field === NULL) { return 'datetime'; } return $field->getDatepickerSettings(); }
/** * Get Datepicker Settings * * @param Field $field * @return string */ protected function getDatepickerSettings(Field $field = null) { if ($field === null) { return 'datetime'; } return $field->getDatepickerSettings(); }
/** * Test for render() * * @param string $validation * @param string $expectedResult * @param bool $nativeValidationEnabled * @return void * @dataProvider renderReturnsStringDataProvider * @test */ public function renderReturnsString($validation, $expectedResult, $nativeValidationEnabled) { $this->abstractValidationViewHelperMock->_set('settings', ['validation' => ['native' => $nativeValidationEnabled ? '1' : '0']]); $field = new Field(); $field->setValidation($validation); $result = $this->abstractValidationViewHelperMock->_callRef('render', $field); $this->assertSame($expectedResult, $result); }
/** * 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 ''; }
/** * Test for render() * * @param array $settings * @param array $fieldProperties * @param array $additionalAttributes * @param array $expectedResult * @return void * @dataProvider renderReturnsArrayDataProvider * @test */ public function renderReturnsArray($settings, $fieldProperties, $additionalAttributes, $expectedResult) { $field = new Field(); foreach ($fieldProperties as $propertyName => $propertyValue) { $field->_setProperty($propertyName, $propertyValue); } $this->abstractValidationViewHelperMock->_set('settings', $settings); $result = $this->abstractValidationViewHelperMock->_callRef('render', $field, $additionalAttributes); $this->assertSame($expectedResult, $result); }
/** * Array for multiple upload * * @param \In2code\Powermail\Domain\Model\Field $field * @param \array $additionalAttributes To add further attributes * @return array */ public function render(\In2code\Powermail\Domain\Model\Field $field, $additionalAttributes = array()) { if ($field->getMultiselectForField()) { $additionalAttributes['multiple'] = 'multiple'; } if (!empty($this->settings['misc']['file']['extension'])) { $additionalAttributes['accept'] = $this->getDottedListOfExtensions($this->settings['misc']['file']['extension']); } return $additionalAttributes; }
/** * Parses variables again * * @param \In2code\Powermail\Domain\Model\Field $field * @return string */ public function render(Field $field) { if (!$this->isNativeValidationEnabled()) { return 'text'; } if (array_key_exists($field->getValidation(), $this->html5InputTypes)) { return $this->html5InputTypes[$field->getValidation()]; } return 'text'; }
/** * Set different attributes * * @param \array $dataArray * @param \In2code\Powermail\Domain\Model\Field $field * @param \mixed $iteration * @return void */ protected function addAttributes(&$dataArray, $field) { if ($field->getMaxlength() > 0) { $dataArray['maxlength'] = $field->getMaxlength(); } if ($field->getDisabled()) { $dataArray['disabled'] = 'disabled'; } if ($field->getReadonly()) { $dataArray['readonly'] = 'readonly'; } }
/** * Prefill string for fields * * @param \In2code\Powermail\Domain\Model\Field $field * @param string $class Any string for errorclass * @return string */ public function render(\In2code\Powermail\Domain\Model\Field $field, $class = 'error') { $validationResults = $this->controllerContext->getRequest()->getOriginalRequestMappingResults(); $errors = $validationResults->getFlattenedErrors(); foreach ($errors as $error) { foreach ((array) $error as $singleError) { if ($field->getMarker() === $singleError->getCode()) { return $class; } } } return ''; }
/** * Prefill string for fields * * @param Field $field * @param string $class Any string for errorclass * @return string */ public function render(Field $field, $class = 'error') { $validationResults = $this->controllerContext->getRequest()->getOriginalRequestMappingResults(); $errors = $validationResults->getFlattenedErrors(); foreach ($errors as $error) { /** @var \TYPO3\CMS\Extbase\Error\Error $singleError */ foreach ((array) $error as $singleError) { if ($field->getMarker() === $singleError->getCode()) { return $class; } } } return ''; }
/** * Returns Data Attribute Array for Container Field (powermail fieldwrap) in FE * * @param \In2code\Powermail\Domain\Model\Field $field * @param \array $additionalAttributes To add further attributes * @return \array for data attributes */ public function render(\In2code\Powermail\Domain\Model\Field $field = NULL) { if ($field && $field->getDependency() && $field->getDependencyField()) { return 'data-depends-on="' . $field->getDependencyField()->getMarker() . '" data-depends-on-operator="' . $field->getDependencyOperator() . '" data-depends-on-value="' . $field->getDependencyValue() . '" data-depends-on-action="' . $field->getDependencyAction() . '" data-depends-on-reset="' . $field->getDependencyResetField() . '"'; } return ''; }
/** * Set mandatory attributes * * @param array &$additionalAttributes * @param Field $field * @return void */ protected function addMandatoryAttributes(&$additionalAttributes, Field $field = null) { if ($field !== null && $field->getMandatory()) { if ($this->isNativeValidationEnabled()) { $additionalAttributes['required'] = 'required'; } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required'] = 'true'; } } if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory'); $additionalAttributes['data-parsley-trigger'] = 'change'; } } }
/** * Test for render() * * @param array $settings * @param array $fieldProperties * @param array $additionalAttributes * @param mixed $iteration * @param array $expectedResult * @return void * @dataProvider renderReturnsArrayDataProvider * @test */ public function renderReturnsArray($settings, $fieldProperties, $additionalAttributes, $iteration, $expectedResult) { $field = new Field(); foreach ($fieldProperties as $propertyName => $propertyValue) { $field->_setProperty($propertyName, $propertyValue); } $this->abstractValidationViewHelperMock->_set('settings', $settings); $this->abstractValidationViewHelperMock->_set('extensionName', 'powermail'); $controllerContext = new ControllerContext(); $request = new Request(); $request->setControllerExtensionName('powermail'); $controllerContext->setRequest($request); $this->abstractValidationViewHelperMock->_set('controllerContext', $controllerContext); $result = $this->abstractValidationViewHelperMock->_callRef('render', $field, $additionalAttributes, $iteration); $this->assertSame($expectedResult, $result); }
/** * Returns Data Attribute Array for JS validation with parsley.js * * @param Field $field * @param array $additionalAttributes To add further attributes * @param mixed $iteration Iterationarray for Multi Fields (Radio, Check, ...) * @return array for data attributes */ public function render(Field $field, $additionalAttributes = array(), $iteration = null) { if ($field->getType() !== 'captcha') { return $additionalAttributes; } $dataArray = parent::render($field, $additionalAttributes, $iteration); if ($this->isNativeValidationEnabled()) { $dataArray['required'] = 'required'; } elseif ($this->isClientValidationEnabled()) { $dataArray['data-parsley-required'] = 'true'; } if ($this->isClientValidationEnabled()) { $dataArray['data-parsley-errors-container'] = '.powermail_field_error_container_' . $field->getMarker(); $dataArray['data-parsley-class-handler'] = '.powermail_fieldwrap_' . $field->getUid() . ' > div'; $dataArray['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory'); } return $dataArray; }
/** * 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); }
/** * Test for getFromTypoScriptContentObject() * * @param array $settings * @param string $marker * @param string $expectedResult * @dataProvider getFromTypoScriptContentObjectReturnsStringDataProvider * @test */ public function getFromTypoScriptContentObjectReturnsString(array $settings, $marker, $expectedResult) { $this->initializeTsfe(); $this->abstractValidationViewHelperMock->_set('settings', $settings); $field = new Field(); $field->setMarker($marker); $this->abstractValidationViewHelperMock->_set('field', $field); $this->abstractValidationViewHelperMock->_set('marker', $marker); $this->abstractValidationViewHelperMock->_set('contentObjectRenderer', new ContentObjectRenderer()); $this->assertSame($expectedResult, $this->abstractValidationViewHelperMock->_callRef('getFromTypoScriptContentObject')); }
/** * Test for setValue() * * @param mixed $value * @param mixed $expectedResult * @param string $fieldType * @param string $datepickerSettings * @return void * @dataProvider setValueReturnVoidDataProvider * @test */ public function setValueReturnVoid($value, $expectedResult, $fieldType = null, $datepickerSettings = null) { $this->generalValidatorMock->_setProperty('valueType', 0); if ($fieldType || $datepickerSettings) { $field = new Field(); if ($fieldType) { $field->setType($fieldType); } if ($datepickerSettings) { $formats = array('date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i', 'time' => 'H:i'); $this->generalValidatorMock->_setProperty('translateFormat', $formats[$datepickerSettings]); $this->generalValidatorMock->_setProperty('valueType', 2); $field->setDatepickerSettings($datepickerSettings); } $this->generalValidatorMock->_callRef('setField', $field); } $this->generalValidatorMock->_callRef('setValue', $value); $this->assertSame($expectedResult, $this->generalValidatorMock->_getProperty('value')); }
/** * Set Error * * @param \In2code\Powermail\Domain\Model\Field $field * @param string $label * @return void */ protected function setErrorAndMessage(\In2code\Powermail\Domain\Model\Field $field, $label) { $this->setIsValid(FALSE); $this->addError($label, $field->getMarker()); }
/** * Create relative filename for captcha image * * @param Field $field * @return CalculatingCaptchaService */ public function setPathAndFilename(Field $field) { $this->pathAndFilename = $this->imagePath . sprintf($this->imageFilenamePrefix, $field->getUid()); return $this; }
/** * hasFormAnUploadFieldReturnBool Test * * @return void * @test */ public function hasFormAnUploadFieldReturnBool() { $fieldObjectStorage = new ObjectStorage(); $field = new Field(); $field->setType('captcha'); $fieldObjectStorage->attach($field); $field2 = new Field(); $field2->setType('file'); $fieldObjectStorage->attach($field2); $pagesObjectStorage = new ObjectStorage(); $page = new Page(); $page->setFields($fieldObjectStorage); $pagesObjectStorage->attach($page); $form = new Form(); $form->setPages($pagesObjectStorage); $this->assertTrue(BasicFileUtility::hasFormAnUploadField($form)); $field2->setType('textarea'); $this->assertFalse(BasicFileUtility::hasFormAnUploadField($form)); }
/** * Get mirror value from POST params * * @param Field $field * @return string */ protected function getMirroredValueOfPasswordField(Field $field) { $piVars = GeneralUtility::_GP($this->variablesPrefix); $mirroredValue = $piVars['field'][$field->getMarker() . '_mirror']; return $mirroredValue; }
/** * 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); }
/** * Set different validation attributes * * @param array &$additionalAttributes * @param Field $field * @return void */ protected function addValidationAttributes(&$additionalAttributes, $field) { if ($field->getType() !== 'input' && $field->getType() !== 'textarea') { return; } switch ($field->getValidation()) { /** * EMAIL (+html5) * * html5 example: <input type="email" /> * javascript example: <input type="text" data-parsley-type="email" /> */ case 1: if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) { $additionalAttributes['data-parsley-type'] = 'email'; } break; /** * URL (+html5) * * html5 example: <input type="url" /> * javascript example: <input type="text" data-parsley-type="url" /> */ /** * URL (+html5) * * html5 example: <input type="url" /> * javascript example: <input type="text" data-parsley-type="url" /> */ case 2: if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) { $additionalAttributes['data-parsley-type'] = 'url'; } break; /** * PHONE (+html5) * 01234567890 * 0123 4567890 * 0123 456 789 * (0123) 45678 - 90 * 0012 345 678 9012 * 0012 (0)345 / 67890 - 12 * +123456789012 * +12 345 678 9012 * +12 3456 7890123 * +49 (0) 123 3456789 * +49 (0)123 / 34567 - 89 * * html5 example: * <input type="text" * pattern="/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" /> * javascript example: * <input ... data-parsley-pattern= * "/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" /> */ /** * PHONE (+html5) * 01234567890 * 0123 4567890 * 0123 456 789 * (0123) 45678 - 90 * 0012 345 678 9012 * 0012 (0)345 / 67890 - 12 * +123456789012 * +12 345 678 9012 * +12 3456 7890123 * +49 (0) 123 3456789 * +49 (0)123 / 34567 - 89 * * html5 example: * <input type="text" * pattern="/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" /> * javascript example: * <input ... data-parsley-pattern= * "/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" /> */ case 3: $pattern = '^(\\+\\d{1,4}|0+\\d{1,5}|\\(\\d{1,5})[\\d\\s\\/\\(\\)-]*\\d+$'; if ($this->isNativeValidationEnabled()) { $additionalAttributes['pattern'] = $pattern; } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-pattern'] = $pattern; } } break; /** * NUMBER/INTEGER (+html5) * * html5 example: <input type="number" /> * javascript example: <input type="text" data-parsley-type="integer" /> */ /** * NUMBER/INTEGER (+html5) * * html5 example: <input type="number" /> * javascript example: <input type="text" data-parsley-type="integer" /> */ case 4: if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) { $additionalAttributes['data-parsley-type'] = 'integer'; } break; /** * LETTERS (+html5) * * html5 example: <input type="text" pattern="[a-zA-Z]." /> * javascript example: <input type="text" data-parsley-pattern="[a-zA-Z]." /> */ /** * LETTERS (+html5) * * html5 example: <input type="text" pattern="[a-zA-Z]." /> * javascript example: <input type="text" data-parsley-pattern="[a-zA-Z]." /> */ case 5: if ($this->isNativeValidationEnabled()) { $additionalAttributes['pattern'] = '[A-Za-z]+'; } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-pattern'] = '[a-zA-Z]+'; } } break; /** * MIN NUMBER (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" min="6" /> * javascript example: <input type="text" data-parsley-min="6" /> */ /** * MIN NUMBER (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" min="6" /> * javascript example: <input type="text" data-parsley-min="6" /> */ case 6: if ($this->isNativeValidationEnabled()) { $additionalAttributes['min'] = $field->getValidationConfiguration(); } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-min'] = $field->getValidationConfiguration(); } } break; /** * MAX NUMBER (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" max="12" /> * javascript example: <input type="text" data-parsley-max="12" /> */ /** * MAX NUMBER (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" max="12" /> * javascript example: <input type="text" data-parsley-max="12" /> */ case 7: if ($this->isNativeValidationEnabled()) { $additionalAttributes['max'] = $field->getValidationConfiguration(); } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-max'] = $field->getValidationConfiguration(); } } break; /** * RANGE (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="range" min="1" max="10" /> * javascript example: * <input type="text" data-parsley-type="range" min="1" max="10" /> */ /** * RANGE (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="range" min="1" max="10" /> * javascript example: * <input type="text" data-parsley-type="range" min="1" max="10" /> */ case 8: $values = GeneralUtility::trimExplode(',', $field->getValidationConfiguration(), true); if ((int) $values[0] <= 0) { break; } if (!isset($values[1])) { $values[1] = $values[0]; $values[0] = 1; } if ($this->isNativeValidationEnabled()) { $additionalAttributes['min'] = (int) $values[0]; $additionalAttributes['max'] = (int) $values[1]; } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-min'] = (int) $values[0]; $additionalAttributes['data-parsley-max'] = (int) $values[1]; } } break; /** * LENGTH * * Note: Field validation_configuration for editors viewable * javascript example: * <input type="text" data-parsley-length="[6, 10]" /> */ /** * LENGTH * * Note: Field validation_configuration for editors viewable * javascript example: * <input type="text" data-parsley-length="[6, 10]" /> */ case 9: $values = GeneralUtility::trimExplode(',', $field->getValidationConfiguration(), true); if ((int) $values[0] <= 0) { break; } if (!isset($values[1])) { $values[1] = (int) $values[0]; $values[0] = 1; } if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-length'] = '[' . implode(', ', $values) . ']'; } break; /** * PATTERN (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" pattern="https?://.+" /> * javascript example: * <input type="text" data-parsley-pattern="https?://.+" /> */ /** * PATTERN (+html5) * * Note: Field validation_configuration for editors viewable * html5 example: <input type="text" pattern="https?://.+" /> * javascript example: * <input type="text" data-parsley-pattern="https?://.+" /> */ case 10: if ($this->isNativeValidationEnabled()) { $additionalAttributes['pattern'] = $field->getValidationConfiguration(); } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-pattern'] = $field->getValidationConfiguration(); } } break; /** * Custom Validation Attribute * * If CustomValidation was added via Page TSConfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * <input type="text" data-parsley-custom100="1" /> */ /** * Custom Validation Attribute * * If CustomValidation was added via Page TSConfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * <input type="text" data-parsley-custom100="1" /> */ default: if ($field->getValidation() && $this->isClientValidationEnabled()) { $value = 1; if ($field->getValidationConfiguration()) { $value = $field->getValidationConfiguration(); } $additionalAttributes['data-parsley-custom' . $field->getValidation()] = $value; } } // set errormessage if javascript validation active if ($field->getValidation() && $this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-error-message'] = LocalizationUtility::translate('validationerror_validation.' . $field->getValidation()); } }
/** * Set different remote validation attributes * * @param \array $dataArray * @param \In2code\Powermail\Domain\Model\Field $field * @return void */ protected function addRemoteValidationAttributes(&$dataArray, $field) { if ($field->getValidation()) { $uriBuilder = $this->controllerContext->getUriBuilder(); $uri = $uriBuilder->setCreateAbsoluteUri(TRUE)->setArguments(array('L' => $this->getLanguageUid(), 'tx_powermail_pi1' => array('mail' => array('form' => $field->getPages()->getForms()->getUid())), 'eID' => 'powermailEidValidator'))->build(); $dataArray['data-parsley-remote'] = $uri; $dataArray['data-parsley-trigger'] = 'change'; $dataArray['data-parsley-error-message'] = LocalizationUtility::translate('validationerror_validation.' . $field->getValidation(), $this->extensionName); } }
/** * Get mirror value from POST params * * @param \In2code\Powermail\Domain\Model\Field $field * @return string */ protected function getMirroredValueOfPasswordField(\In2code\Powermail\Domain\Model\Field $field) { $piVars = GeneralUtility::_GP('tx_powermail_pi1'); $mirroredValue = $piVars['field'][$field->getMarker() . '_mirror']; return $mirroredValue; }
/** * 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; }
/** * Set Error * * @param Field $field * @param string $label * @return void */ public function setErrorAndMessage(Field $field, $label) { $this->setValidState(false); $this->addError($label, $field->getMarker()); }
/** * setPathAndFilename Test * * @test */ public function setPathAndFilenameReturnVoid() { $field = new Field(); $field->_setProperty('uid', 123); $this->generalValidatorMock->_set('imagePath', 'typo3temp/'); $this->generalValidatorMock->_set('imageFilenamePrefix', 'abc%ddef.png'); $this->generalValidatorMock->_call('setPathAndFilename', $field); $this->assertSame('typo3temp/abc123def.png', $this->generalValidatorMock->_get('pathAndFilename')); }
/** * Validate a single field * * @param Field $field * @param mixed $value * @return void */ protected function isValidField(Field $field, $value) { // Mandatory Check if ($field->getMandatory()) { if (!$this->validateMandatory($value)) { $this->setErrorAndMessage($field, 'mandatory'); } } // String Checks if (!empty($value) && in_array($field->getType(), $this->validationFieldTypes)) { switch ($field->getValidation()) { // email case 1: if (!$this->validateEmail($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // URL // URL case 2: if (!$this->validateUrl($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // phone // phone case 3: if (!$this->validatePhone($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // numbers only // numbers only case 4: if (!$this->validateNumbersOnly($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // letters only // letters only case 5: if (!$this->validateLettersOnly($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // min number // min number case 6: if (!$this->validateMinNumber($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // max number // max number case 7: if (!$this->validateMaxNumber($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // range // range case 8: if (!$this->validateRange($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // length // length case 9: if (!$this->validateLength($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // pattern // pattern case 10: if (!$this->validatePattern($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; /** * E.g. Validation was extended with Page TSconfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * Register your Class and Method with TypoScript Setup * plugin.tx_powermail.settings.setup.validation.customValidation.100 = * In2code\Powermailextended\Domain\Validator\ZipValidator * * Add method to your class * validate100($value, $validationConfiguration) * * Define your Errormessage with TypoScript Setup * plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 = * Error happens! */ /** * E.g. Validation was extended with Page TSconfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * Register your Class and Method with TypoScript Setup * plugin.tx_powermail.settings.setup.validation.customValidation.100 = * In2code\Powermailextended\Domain\Validator\ZipValidator * * Add method to your class * validate100($value, $validationConfiguration) * * Define your Errormessage with TypoScript Setup * plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 = * Error happens! */ default: if ($field->getValidation()) { $validation = $field->getValidation(); if (!empty($this->settings['validation.']['customValidation.'][$validation])) { $extendedValidator = $this->objectManager->get($this->settings['validation.']['customValidation.'][$validation]); if (method_exists($extendedValidator, 'validate' . ucfirst($validation))) { if (!$extendedValidator->{'validate' . ucfirst($validation)}($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $validation); } } } } } } }
/** * Test for nameCheck() * * @param int $spamIndicator * @param array $answerProperties * @param int $expectedOverallSpamIndicator * @return void * @dataProvider nameCheckReturnsVoidDataProvider * @test */ public function nameCheckReturnsVoid($spamIndicator, $answerProperties, $expectedOverallSpamIndicator) { $mail = new Mail(); foreach ($answerProperties as $fieldName => $value) { $field = new Field(); $field->setMarker($fieldName); $answer = new Answer(); $answer->setField($field); $answer->_setProperty('value', $value); $answer->setValueType(132); $mail->addAnswer($answer); } $this->generalValidatorMock->_callRef('nameCheck', $mail, $spamIndicator); $this->assertSame($expectedOverallSpamIndicator, $this->generalValidatorMock->_callRef('getSpamIndicator')); }