public function simpleAction() { if (!\Participation\Plugin::getConfig()->get(\Participation\Plugin::CONFIG_DEMOENABLED, false)) { die('Participation Plugin Demo not enabled in config!'); } $this->view->isFormValid = false; $this->view->invalidFormReason = ''; if ($this->getParam('submit') != '') { $manager = \Participation\Plugin::makeManager(); $captcha = $manager->makeCaptcha(); $response = $this->getParam($captcha->getParameterName()); if ($captcha->isValidResponse($response)) { // @todo validate/sanitize data! $participation = $manager->makeParticipation(); $participation->setEmail($this->getParam('email')); $participation->setFirstname($this->getParam('firstname')); $participation->setLastname($this->getParam('lastname')); // this a demo - only a few fields are used! $participation->save(); $confirmation = $manager->makeConfirmation(); $confirmation->sendEmail($participation); $this->view->isFormValid = true; } else { $this->view->isFormValid = false; $this->view->invalidFormReason = 'Captcha validation failed.'; } } }
/** * @param object $participation * @return void * @throws \Exception */ public function sendEmail($participation) { $email = $participation->getEmail(); $emailDomain = trim(strtolower(preg_replace('/^[^@]+@/', '', $email))); $participation->setEmailDomain($emailDomain); $participation->save(); $confirmationLink = $this->createConfirmationLink($participation->getConfirmationCode()); $parameters = array('confirmationLink' => $confirmationLink, 'participationId' => $participation->getId()); $emailDocumentPath = Plugin::getConfig()->get('emailDocumentPath'); $emailDocument = DocumentModel::getByPath($emailDocumentPath); if (!$emailDocument instanceof EmailDocument) { throw new \Exception("Error: emailDocumentPath [{$emailDocumentPath}] " . "is not a valid email document."); } $mail = new Mail(); $mail->addTo($email); if ($this->getSubject()) { $mail->setSubject($this->getSubject()); } $mail->setDocument($emailDocumentPath); $mail->setParams($parameters); $mail->send(); $note = new Note(); $note->setElement($participation); $note->setDate(time()); $note->setType("confirmation"); $note->setTitle("Email sent"); $note->addData("email", "text", $email); $note->setUser(0); $note->save(); }
public function checkAction() { // reachable via http://your.domain/plugin/Participation/index/confirm $code = $this->getParam('code'); $manager = \Participation\Plugin::makeManager(); $confirmation = $manager->makeConfirmation(); if ($confirmation->confirmParticipationByCode($code)) { $this->redirect(\Participation\Plugin::getConfig()->get(\Participation\Plugin::CONFIG_CONFIRMATION_SUCCESS_URL)); } $this->redirect(\Participation\Plugin::getConfig()->get(\Participation\Plugin::CONFIG_CONFIRMATION_FAILURE_URL)); }
/** * @return AbstractObject|\Pimcore\Model\Object\Participation * @throws \Exception */ public function makeParticipation() { $objectFolderPath = Plugin::getConfig()->get(Plugin::CONFIG_OBJECTFOLDERPATH); $objectFolder = AbstractObject::getByPath($objectFolderPath); if (!$objectFolder instanceof Folder) { throw new \Exception("Error: objectFolderPath [{$objectFolderPath}] " . "is not a valid object folder."); } // create basic object stuff $key = $this->createParticipationKey(); $participation = new Participation(); $participation->setKey($key); $participation->setParent($objectFolder); $participation->setPublished(true); $participation->setCreationDate(time()); $participation->SetIpCreated($_SERVER['REMOTE_ADDR']); $confirmation = $this->makeConfirmation(); $participation->setConfirmationCode($confirmation->createCode()); return $participation; }
<html> <head> <?php $manager = \Participation\Plugin::makeManager(); $captcha = $manager->makeCaptcha(); // pass in additional recaptcha options via a key-value array: // ?> <?php echo $captcha->getWidgetHeadScript(array('hl' => 'de')); ?> </head> <body> <?php if (!$this->isFormValid) { ?> <form action="?" method="POST"> <div style="border: solid 1px red;"><?php echo $this->invalidFormReason; ?> </div> <input type="email" name="email" placeholder="*****@*****.**"><br> <input type="firstname" name="firstname" placeholder="Max"><br> <input type="lastname" name="lastname" placeholder="Mustermann"><br> <?php echo $captcha->getWidgetMarkup(); ?> <br/> <input type="submit" name="submit" value="Submit"> </form> <?php