/** * Creates a new comment * * @param \TYPO3\TYPO3CR\Domain\Model\NodeInterface $postNode The post node which will contain the new comment * @param \TYPO3\TYPO3CR\Domain\Model\NodeTemplate<RobertLemke.Plugin.Blog:Comment> $nodeTemplate * @return void */ public function createAction(NodeInterface $postNode, NodeTemplate $newComment) { # Workaround until we can validate node templates properly: if (strlen($newComment->getProperty('author')) < 2) { $this->addFlashMessage('Your comment was NOT created - please specify your name.'); $this->redirect('show', 'Frontend\\Node', 'TYPO3.Neos', array('node' => $postNode)); } if (strlen($newComment->getProperty('text')) < 5) { $this->addFlashMessage('Your comment was NOT created - it was too short.'); $this->redirect('show', 'Frontend\\Node', 'TYPO3.Neos', array('node' => $postNode)); } if (filter_var($newComment->getProperty('emailAddress'), FILTER_VALIDATE_EMAIL) === FALSE) { $this->addFlashMessage('Your comment was NOT created - you must specify a valid email address.'); $this->redirect('show', 'Frontend\\Node', 'TYPO3.Neos', array('node' => $postNode)); } $commentNode = $postNode->getNode('comments')->createNodeFromTemplate($newComment, uniqid('comment-')); $commentNode->setProperty('spam', FALSE); $commentNode->setProperty('datePublished', new \DateTime()); if ($this->akismetService->isCommentSpam('', $commentNode->getProperty('text'), 'comment', $commentNode->getProperty('author'), $commentNode->getProperty('emailAddress'))) { $commentNode->setProperty('spam', TRUE); } $this->addFlashMessage('Your new comment was created.'); $this->emitCommentCreated($commentNode, $postNode); $this->redirect('show', 'Frontend\\Node', 'TYPO3.Neos', array('node' => $postNode)); }