/** * @param \TYPO3\CMS\Extbase\Mvc\Request $request * @return string $text */ public static function plainText($request) { define(NL, "\n"); $text = 'Kontaktdaten:' . NL; if ($request->hasArgument('companyName')) { $text .= 'Firma: ' . $request->getArgument('companyName') . NL; } if ($request->hasArgument('firstName')) { $firstName = $request->getArgument('firstName') . ' '; } else { $firstName = ''; } if ($request->hasArgument('lastName')) { $text .= 'Ansprechpartner: ' . $firstName . $request->getArgument('lastName') . NL . NL; } if ($request->hasArgument('address')) { $text .= $request->getArgument('address') . NL; } if ($request->hasArgument('zip')) { $text .= $request->getArgument('zip') . ' '; } if ($request->hasArgument('city')) { $text .= $request->getArgument('city') . NL; } if ($request->hasArgument('country')) { $text .= $request->getArgument('country') . NL . NL; } if ($request->hasArgument('email')) { $text .= 'E-Mail: ' . $request->getArgument('email') . NL; } if ($request->hasArgument('phone')) { $text .= 'Phone: ' . $request->getArgument('phone') . NL; } return $text; }
/** * Maps arguments delivered by the request object to the local controller arguments. * * @throws Exception\RequiredArgumentMissingException * @return void */ protected function mapRequestArgumentsToControllerArguments() { if ($this->configurationManager->isFeatureEnabled('rewrittenPropertyMapper')) { foreach ($this->arguments as $argument) { $argumentName = $argument->getName(); if ($this->request->hasArgument($argumentName)) { $argument->setValue($this->request->getArgument($argumentName)); } elseif ($argument->isRequired()) { throw new \TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException('Required argument "' . $argumentName . '" is not set for ' . $this->request->getControllerObjectName() . '->' . $this->request->getControllerActionName() . '.', 1298012500); } } } else { // @deprecated since Extbase 1.4, will be removed two versions after Extbase 6.1 $optionalPropertyNames = array(); $allPropertyNames = $this->arguments->getArgumentNames(); foreach ($allPropertyNames as $propertyName) { if ($this->arguments[$propertyName]->isRequired() === FALSE) { $optionalPropertyNames[] = $propertyName; } } /** @var $validator ArgumentsValidator */ $validator = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Mvc\\Controller\\ArgumentsValidator'); $this->deprecatedPropertyMapper->mapAndValidate($allPropertyNames, $this->request->getArguments(), $this->arguments, $optionalPropertyNames, $validator); $this->argumentsMappingResults = $this->deprecatedPropertyMapper->getMappingResults(); } }
/** * Checks if access is allowed * * @return boolean */ public function isAccessAllowed() { if ($this->request->getControllerActionName() === 'error') { return true; } $sessionHasReservation = $this->session->has(ReservationController::SESSION_IDENTIFIER_RESERVATION); $requestHasReservation = $this->request->hasArgument('reservation'); if (!$requestHasReservation) { if ($sessionHasReservation) { $this->accessError = Reservation::ERROR_INCOMPLETE_RESERVATION_IN_SESSION; } return !$sessionHasReservation; } $sessionValue = (int) $this->session->get(ReservationController::SESSION_IDENTIFIER_RESERVATION); $reservationId = $this->getReservationIdFromRequest(); if (!$sessionHasReservation && $requestHasReservation) { $this->accessError = Reservation::ERROR_MISSING_RESERVATION_KEY_IN_SESSION; return false; } if ((bool) $reservationId) { if (!($sessionHasReservation && $sessionValue === $reservationId)) { $this->accessError = Reservation::ERROR_MISMATCH_SESSION_KEY_REQUEST_ARGUMENT; } // allow access if argument reservation matches session value return $sessionHasReservation && $sessionValue === $reservationId; } $this->accessError = Reservation::ERROR_MISSING_SESSION_KEY_AND_REQUEST_ARGUMENT; return false; }
/** * Add support for variable argument lists using a wildcard property name '*'. * This is required for a file multiupload, as you can't guess how many files * will be uploaded when rendering the form (and generating the * trustedPropertiesToken) on the server. * * You can use it like this: * If you write a formfield viewhelper, you have to register all the properties * that should be mapped when processing the input on the server. To allow * the mapping of some properties of all submitted elements, insert a wildcard * in the path at the position where new keys will appear. This class will * enable the mapping of all arguments that are assigned to this path. * * So, if you have this line in your viewhelper: * $this->registerFieldNameForFormTokenGeneration('my_plugin[my_object][object_storage_property][*][foo]'); * and request arguments like this: * array( 'my_object' => array( 'object_storage_property' => array( * 0 => array( 'foo' => 13 ), * 1 => array( 'foo' => 42 ), * 2 => array( 'foo' => false ) * ))) * the PropertyMapper won't complain about missing permissions to "map * attribute my_object.object_storage_property.0". * * This is different from simply using $propertyMappingConfiguration->allowAllProperties() * because: * - You don't have to post that line into each of your controllers * - You can control which sub-properties to map * - You don't override assigned settings for specific keys: if there is a * configuration for my_object.object_storage_property.42, it won't be * changed to the wildcard value. * * @param \TYPO3\CMS\Extbase\Mvc\Request $request * @param \TYPO3\CMS\Extbase\Mvc\Controller\Arguments $controllerArguments * @return void */ public function initializePropertyMappingConfigurationFromRequest(\TYPO3\CMS\Extbase\Mvc\Request $request, \TYPO3\CMS\Extbase\Mvc\Controller\Arguments $controllerArguments) { $trustedPropertiesToken = $request->getInternalArgument('__trustedProperties'); if (!is_string($trustedPropertiesToken)) { return; } $serializedTrustedProperties = $this->hashService->validateAndStripHmac($trustedPropertiesToken); $trustedProperties = unserialize($serializedTrustedProperties); foreach ($trustedProperties as $propertyName => $propertyConfiguration) { if (!$controllerArguments->hasArgument($propertyName)) { continue; } $propertyMappingConfiguration = $controllerArguments->getArgument($propertyName)->getPropertyMappingConfiguration(); // // Extended from parent class - begin // if (is_array($propertyConfiguration)) { foreach (HelhumArrayUtility::getPathsToKey($propertyConfiguration, '*') as $path) { $configurationTemplate = ExtbaseArrayUtility::getValueByPath($propertyConfiguration, $path . '.*'); $propertyConfiguration = ExtbaseArrayUtility::unsetValueByPath($propertyConfiguration, $path . '.*'); if ($request->hasArgument($propertyName) && is_array($request->getArgument($propertyName))) { $rawArgument = ExtbaseArrayUtility::getValueByPath($request->getArgument($propertyName), $path); $subPropertyConfiguration = ExtbaseArrayUtility::getValueByPath($propertyConfiguration, $path); foreach ($rawArgument as $index => $_) { if (!is_int($index) || array_key_exists($index, $subPropertyConfiguration)) { continue; } $propertyConfiguration = ExtbaseArrayUtility::setValueByPath($propertyConfiguration, $path . '.' . $index, $configurationTemplate); } } } } // // Extended from parent class - end // $this->modifyPropertyMappingConfiguration($propertyConfiguration, $propertyMappingConfiguration); } }
/** * Get Cart/Product From Request * * @param array $pluginSettings TypoScript Plugin Settings * @param Request $request Request * @param \Extcode\Cart\Domain\Model\Cart\TaxClass[] $taxClasses Tax Class Array * * @return \Extcode\Cart\Domain\Model\Cart\Product[] */ public function getProductsFromRequest(array $pluginSettings, Request $request, array $taxClasses) { if (!$this->pluginSettings) { $this->pluginSettings = $pluginSettings; } if (!$this->taxClasses) { $this->taxClasses = $taxClasses; } $multiple = 1; if ($this->pluginSettings['multiple']) { $argumentName = $this->pluginSettings['multiple']; if ($request->hasArgument($argumentName)) { $multiple = intval($request->getArgument($argumentName)); } } $products = []; $preCartProductSets = []; if ($multiple == 1) { $preCartProductSets[1] = $this->parserUtility->getPreCartProductSet($pluginSettings, $request); } else { // TODO: iterate over request } foreach ($preCartProductSets as $preCartProductSetKey => $preCartProductSetValue) { if ($preCartProductSetValue['contentId']) { $products[$preCartProductSetKey] = $this->getCartProductFromCE($preCartProductSetValue); } elseif ($preCartProductSetValue['productId']) { $products[$preCartProductSetKey] = $this->getCartProductFromDatabase($preCartProductSetValue); } } return $products; }
/** * @param array $pluginSettings * @param Request $request Request * * @return array */ public function getPreCartProductSet(array $pluginSettings, Request $request) { if (!$this->pluginSettings) { $this->pluginSettings = $pluginSettings; } $productValueSet = []; if ($request->hasArgument('productId')) { $productValueSet['productId'] = intval($request->getArgument('productId')); } if ($request->hasArgument('tableId')) { $productValueSet['tableId'] = intval($request->getArgument('tableId')); } if ($request->hasArgument('repositoryId')) { $productValueSet['repositoryId'] = intval($request->getArgument('repositoryId')); } if ($request->hasArgument('contentId')) { $productValueSet['contentId'] = intval($request->getArgument('contentId')); } if ($request->hasArgument('quantity')) { $quantity = intval($request->getArgument('quantity')); $productValueSet['quantity'] = $quantity ? $quantity : 1; } if ($request->hasArgument('feVariants')) { $requestFeVariants = $request->getArgument('feVariants'); if (is_array($requestFeVariants)) { foreach ($requestFeVariants as $requestFeVariantKey => $requestFeVariantValue) { $productValueSet['feVariants'][$requestFeVariantKey] = $requestFeVariantValue; } } } if ($request->hasArgument('beVariants')) { $requestVariants = $request->getArgument('beVariants'); if (is_array($requestVariants)) { foreach ($requestVariants as $requestVariantKey => $requestVariantValue) { $productValueSet['beVariants'][$requestVariantKey] = intval($requestVariantValue); } } } return $productValueSet; }
/** * Checks honeypot fields * * @param Request $request The request to be checked * * @return boolean */ protected function checkHoneyPotFields(Request $request) { if (!$request->hasArgument('author') || strlen($request->getArgument('author')) > 0) { return FALSE; } if (!$request->hasArgument('link') || strlen($request->getArgument('link')) > 0) { return FALSE; } if (!$request->hasArgument('text') || strlen($request->getArgument('text')) > 0) { return FALSE; } if (!$request->hasArgument('timestamp') || $request->getArgument('timestamp') !== '1368283172') { return FALSE; } return TRUE; }