private function _renderSubmissionTemplate($template, Formerly_SubmissionModel $submission)
 {
     $formHandle = $submission->getForm()->handle;
     $formattedTemplate = $template;
     //check that all the tags are valid before passing them to the template engine, otherwise it
     //crashes with a obscure error
     preg_match_all('/{([^}]*)}/', $template, $matches);
     $qs = $submission->getForm()->getQuestions();
     $tagsAllFound = true;
     foreach ($matches[1] as $a) {
         foreach ($qs as $q) {
             if ($q->handle == $formHandle . '_' . $a) {
                 //this is a valid twig field replace it with a temporary start and end tag
                 //(because we want to replace all non matches later with something so twig doesn't try to replace the nonmatches)
                 $formattedTemplate = str_replace("{" . $a . "}", "@@@1" . $formHandle . '_' . $a . '1@@@', $formattedTemplate);
                 break;
             }
         }
     }
     //replace any stragglers
     $formattedTemplate = str_replace("{", "<<<", $formattedTemplate);
     $formattedTemplate = str_replace("}", ">>>", $formattedTemplate);
     //fix up actual matches
     $formattedTemplate = str_replace("@@@1", "{", $formattedTemplate);
     $formattedTemplate = str_replace("1@@@", "}", $formattedTemplate);
     $result = craft()->templates->renderObjectTemplate($formattedTemplate, $submission);
     //put unmatched handles back the way they were
     $result = str_replace('<<<', '{', $result);
     $result = str_replace(">>>", "}", $result);
     return $result;
 }
 private function _renderSubmissionTemplate($template, Formerly_SubmissionModel $submission)
 {
     $formHandle = $submission->getForm()->handle;
     $formattedTemplate = $template;
     //check that all the tags are valid before passing them to the template engine, otherwise it
     //crashes with an obscure error
     preg_match_all('/{(.+?)(\\||})/', $template, $matches);
     $qs = $submission->getForm()->getQuestions();
     $tagsAllFound = true;
     foreach ($matches[1] as $a) {
         foreach ($qs as $q) {
             if (strstr($formHandle . '_' . $a, $q->handle)) {
                 //if multiple result field do replace now
                 //this is a valid twig field replace it with a temporary start and end tag
                 //(because we want to replace all non matches later with something so twig doesn't try to replace the nonmatches)
                 $formattedTemplate = str_replace("{" . $a . "}", "@@@1" . $formHandle . '_' . $a . '1@@@', $formattedTemplate);
                 $formattedTemplate = str_replace("{" . $a . "|", "@@@2" . $formHandle . '_' . $a . '2@@@', $formattedTemplate);
                 break;
             }
         }
     }
     //replace any stragglers
     preg_match_all('/{(.+?)(\\||})/', $template, $matches);
     foreach ($matches[1] as $a) {
         $formattedTemplate = str_replace("{" . $a . "}", "<<<" . $a . '>>>', $formattedTemplate);
     }
     //fix up actual matches
     $formattedTemplate = str_replace("@@@1", "{", $formattedTemplate);
     $formattedTemplate = str_replace("1@@@", "}", $formattedTemplate);
     $formattedTemplate = str_replace("@@@2", "{", $formattedTemplate);
     $formattedTemplate = str_replace("2@@@", "|", $formattedTemplate);
     $result = craft()->templates->renderObjectTemplate($formattedTemplate, $submission);
     //put unmatched handles back the way they were
     $result = str_replace('<<<', '{', $result);
     $result = str_replace(">>>", "}", $result);
     $result = str_replace("{id}", $submission->id, $result);
     $siteUrl = craft()->config->get("siteUrl");
     if (is_array($siteUrl) && count($siteUrl) > 0) {
         $result = str_replace("{siteUrl}", $siteUrl[CRAFT_LOCALE], $result);
     } else {
         $result = str_replace("{siteUrl}", $siteUrl, $result);
     }
     return $result;
 }