/** * @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); }
/** * @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); } }
/** * @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); }