Exemplo n.º 1
0
 /**
  * @deprecated - added for BC; to be removed in 3.0
  *
  * @param Action[]        $actions
  * @param SubmissionEvent $event
  * @param                 $validationErrors
  * @param                 $lastAlias        Because prior to now the last alias was used regardless
  */
 protected function validateActionCallbacks(SubmissionEvent $event, &$validationErrors, $lastAlias)
 {
     $args = ['post' => $event->getPost(), 'server' => $event->getServer(), 'factory' => $this->factory, 'submission' => $event->getSubmission(), 'fields' => $event->getFields(), 'form' => $event->getSubmission()->getForm(), 'tokens' => $event->getTokens()];
     $actions = $event->getSubmission()->getForm()->getActions();
     $availableActions = $this->formModel->getCustomComponents()['actions'];
     foreach ($actions as $action) {
         $key = $action->getType();
         if (!isset($availableActions[$key])) {
             continue;
         }
         $settings = $availableActions[$key];
         $args['action'] = $action;
         $args['config'] = $action->getProperties();
         if (array_key_exists('validator', $settings)) {
             $callback = $settings['validator'];
             if (is_callable($callback)) {
                 if (is_array($callback)) {
                     $reflection = new \ReflectionMethod($callback[0], $callback[1]);
                 } elseif (strpos($callback, '::') !== false) {
                     $parts = explode('::', $callback);
                     $reflection = new \ReflectionMethod($parts[0], $parts[1]);
                 } else {
                     $reflection = new \ReflectionMethod(null, $callback);
                 }
                 $pass = [];
                 foreach ($reflection->getParameters() as $param) {
                     if (isset($args[$param->getName()])) {
                         $pass[] = $args[$param->getName()];
                     } else {
                         $pass[] = null;
                     }
                 }
                 list($validated, $validatedMessage) = $reflection->invokeArgs($this, $pass);
                 if (!$validated) {
                     $validationErrors[$lastAlias] = $validatedMessage;
                 }
             }
         }
     }
     unset($args, $actions, $availableActions);
 }
Exemplo n.º 2
0
 /**
  * @param Events\SubmissionEvent $event
  */
 public function onFormSubmitActionSendEmail(Events\SubmissionEvent $event)
 {
     if (!$event->checkContext('form.email')) {
         return;
     }
     // replace line brakes with <br> for textarea values
     if ($tokens = $event->getTokens()) {
         foreach ($tokens as $token => &$value) {
             $value = nl2br(html_entity_decode($value));
         }
     }
     $config = $event->getActionConfig();
     $lead = $event->getSubmission()->getLead();
     $leadEmail = $lead->getEmail();
     $emails = $this->getEmailsFromString($config['to']);
     if (!empty($emails)) {
         $this->mailer->setTo($emails);
         if (!empty($leadEmail)) {
             // Reply to lead for user convenience
             $this->mailer->setReplyTo($leadEmail);
         }
         if (!empty($config['cc'])) {
             $emails = $this->getEmailsFromString($config['cc']);
             $this->mailer->setCc($emails);
         }
         if (!empty($config['bcc'])) {
             $emails = $this->getEmailsFromString($config['bcc']);
             $this->mailer->setBcc($emails);
         }
         $this->mailer->setSubject($config['subject']);
         $this->mailer->addTokens($tokens);
         $this->mailer->setBody($config['message']);
         $this->mailer->parsePlainText($config['message']);
         $this->mailer->send(true);
     }
     if ($config['copy_lead'] && !empty($leadEmail)) {
         // Send copy to lead
         $this->mailer->reset();
         $this->mailer->setLead($lead->getProfileFields());
         $this->mailer->setTo($leadEmail);
         $this->mailer->setSubject($config['subject']);
         $this->mailer->addTokens($tokens);
         $this->mailer->setBody($config['message']);
         $this->mailer->parsePlainText($config['message']);
         $this->mailer->send(true);
     }
 }
Exemplo n.º 3
0
 /**
  * @param $string
  * @param $submissionEvent
  */
 private function replacePostSubmitTokens($string, SubmissionEvent $submissionEvent)
 {
     static $tokens = [];
     if (empty($tokens)) {
         $tokens = array_merge($submissionEvent->getTokens(), TokenHelper::findLeadTokens($string, $submissionEvent->getLead()->getProfileFields()));
     }
     return str_replace(array_keys($tokens), array_values($tokens), $string);
 }