/** * @Flow\Before("method(TYPO3\Neos\Service\LinkingService->createNodeUri())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint The current join point * @return void */ public function dontResolveShortcuts(JoinPointInterface $joinPoint) { $node = $joinPoint->getMethodArgument('node'); if ($node instanceof NodeInterface) { if (!in_array($node->getProperty('targetMode'), $this->legitShortcutTargets)) { $joinPoint->setMethodArgument('resolveShortcuts', FALSE); } } else { $joinPoint->setMethodArgument('resolveShortcuts', FALSE); } }
/** * Add the current node and all parent identifiers to be used for cache entry tagging * * @Flow\Before("method(TYPO3\Flow\Mvc\Routing\RouterCachingService->extractUuids())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint The current join point * @return void */ public function addCurrentNodeIdentifier(JoinPointInterface $joinPoint) { $values = $joinPoint->getMethodArgument('values'); if (!isset($values['node']) || strpos($values['node'], '@') === false) { return; } // Build context explicitly without authorization checks because the security context isn't available yet // anyway and any Entity Privilege targeted on Workspace would fail at this point: $this->securityContext->withoutAuthorizationChecks(function () use($joinPoint, $values) { $contextPathPieces = NodePaths::explodeContextPath($values['node']); $context = $this->contextFactory->create(['workspaceName' => $contextPathPieces['workspaceName'], 'dimensions' => $contextPathPieces['dimensions'], 'invisibleContentShown' => true]); $node = $context->getNode($contextPathPieces['nodePath']); if (!$node instanceof NodeInterface) { return; } $values['node-identifier'] = $node->getIdentifier(); $node = $node->getParent(); $values['node-parent-identifier'] = array(); while ($node !== null) { $values['node-parent-identifier'][] = $node->getIdentifier(); $node = $node->getParent(); } $joinPoint->setMethodArgument('values', $values); }); }
/** * @Flow\Around("within(TYPO3\Flow\Property\TypeConverter\MediaTypeConverterInterface) && method(.*->convertMediaType())") * @param JoinPointInterface $joinPoint The current joinpoint * @return mixed */ public function rewriteJsonApiOrgMediaTypeToJson(JoinPointInterface $joinPoint) { $mediaType = $joinPoint->getMethodArgument('mediaType'); if (strpos($mediaType, 'application/vnd.api+json') !== false) { $joinPoint->setMethodArgument('mediaType', 'application/json'); } return $joinPoint->getAdviceChain()->proceed($joinPoint); }
/** * @Flow\Around("method(TYPO3\TYPO3CR\Domain\Model\NodeType->__construct())") * @return void */ public function enrichNodeTypeConfiguration(JoinPointInterface $joinPoint) { $configuration = $joinPoint->getMethodArgument('configuration'); $nodeTypeName = $joinPoint->getMethodArgument('name'); $this->addEditorDefaultsToNodeTypeConfiguration($nodeTypeName, $configuration); $this->addLabelsToNodeTypeConfiguration($nodeTypeName, $configuration); $joinPoint->setMethodArgument('configuration', $configuration); $joinPoint->getAdviceChain()->proceed($joinPoint); }
/** * @Flow\Before("method(TYPO3\Neos\Routing\FrontendNodeRoutePartHandler->matchValue())") * @return void */ public function convertRoutePartToLowerCase(\TYPO3\Flow\AOP\JoinPointInterface $joinPoint) { $requestPath = $joinPoint->getMethodArgument('requestPath'); if (strpos($requestPath, 'user')) { $parts = explode("user", $requestPath); $lowerCaseRequestPath = strtolower($parts[0]) . "user" . $parts[1]; } else { $lowerCaseRequestPath = strtolower($requestPath); } $joinPoint->setMethodArgument('requestPath', $lowerCaseRequestPath); }
/** * Add the current node identifier to be used for cache entry tagging * * @Flow\Before("method(TYPO3\Flow\Mvc\Routing\RouterCachingService->extractUuids())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint The current join point * @return void */ public function addCurrentNodeIdentifier(JoinPointInterface $joinPoint) { $values = $joinPoint->getMethodArgument('values'); if (!isset($values['node']) || strpos($values['node'], '@') === false) { return; } list($nodePath, $contextArguments) = explode('@', $values['node']); $context = $this->getContext($contextArguments); $node = $context->getNode($nodePath); if ($node instanceof NodeInterface) { $values['node-identifier'] = $node->getIdentifier(); $joinPoint->setMethodArgument('values', $values); } }
/** * @Flow\Around("method(public TYPO3\Flow\Tests\Functional\Aop\Fixtures\TargetClass01->greet())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint * @return string */ public function changeNameArgumentAdvice(\TYPO3\Flow\Aop\JoinPointInterface $joinPoint) { if ($joinPoint->getMethodArgument('name') === 'Andi') { $joinPoint->setMethodArgument('name', 'Robert'); } return $joinPoint->getAdviceChain()->proceed($joinPoint); }