コード例 #1
0
 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.';
         }
     }
 }
コード例 #2
0
 /**
  * @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));
 }
コード例 #4
0
 /**
  * @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;
 }
コード例 #5
0
<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