Esempio n. 1
0
 /**
  * This metod translates the given text and returns it
  * @param $text
  * @return String
  */
 public static function run($text)
 {
     $text = insertansReplace($text);
     $text = tokenReplace($text);
     // ISSUE - how should anonymized be passed to this function?
     return $text;
 }
 if ($explanation) {
     $explanation = "<b>" . $clang->gT('Only answer this question if the following conditions are met:') . "</b>" . "<br/> ° " . $explanation;
     //"[".sprintf($clang->gT("Only answer this question %s"), $explanation)."]";
 } else {
     $explanation = '';
 }
 ++$total_questions;
 //TIBO map question qid to their q number
 $mapquestionsNumbers[$deqrow['qid']] = $total_questions;
 //END OF GETTING CONDITIONS
 $qid = $deqrow['qid'];
 $fieldname = "{$surveyid}" . "X" . "{$gid}" . "X" . "{$qid}";
 if (isset($showsgqacode) && $showsgqacode == true) {
     $deqrow['question'] = $deqrow['question'] . "<br />" . $clang->gT("ID:") . " {$fieldname} <br />" . $clang->gT("Question code:") . " " . $deqrow['title'];
 }
 $question = array('QUESTION_NUMBER' => $total_questions, 'QUESTION_CODE' => $deqrow['title'], 'QUESTION_TEXT' => preg_replace('/(?:<br ?\\/?>|<\\/(?:p|h[1-6])>)$/is', '', tokenReplace($deqrow['question'])), 'QUESTION_SCENARIO' => $explanation, 'QUESTION_MANDATORY' => '', 'QUESTION_ID' => $deqrow['qid'], 'QUESTION_CLASS' => question_class($deqrow['type']), 'QUESTION_TYPE_HELP' => '', 'QUESTION_MAN_MESSAGE' => '', 'QUESTION_VALID_MESSAGE' => '', 'QUESTION_FILE_VALID_MESSAGE' => '', 'QUESTIONHELP' => '', 'ANSWER' => '');
 if ($deqrow['mandatory'] == 'Y') {
     $question['QUESTION_MANDATORY'] = $clang->gT('*');
     $question['QUESTION_CLASS'] .= ' mandatory';
     $pdfoutput .= $clang->gT("*");
 }
 $pdfoutput = '';
 //DIFFERENT TYPES OF DATA FIELD HERE
 if (isset($_POST['printableexport'])) {
     $pdf->intopdf($deqrow['title'] . " " . $deqrow['question']);
 }
 if ($deqrow['help']) {
     $hh = $deqrow['help'];
     $question['QUESTIONHELP'] = $hh;
     if (isset($_POST['printableexport'])) {
         $pdf->helptextintopdf($hh);
Esempio n. 3
0
function sendsubmitnotification($sendnotification)
{
    global $thissurvey, $debug;
    global $dbprefix, $clang, $emailcharset;
    global $sitename, $homeurl, $surveyid, $publicurl, $maildebug, $tokensexist;
    $subject = sprintf($clang->gT("Response submission for survey %s", "unescaped"), $thissurvey['name']);
    $message = $clang->gT("Hello!", "unescaped") . "\n" . $clang->gT("A new response was submitted for your survey.", "unescaped") . "\n\n";
    if ($thissurvey['allowsave'] == "Y" && isset($_SESSION['scid'])) {
        $message .= $clang->gT("Click the following link to reload the survey:", "unescaped") . "\n";
        $message .= "  {$publicurl}/index.php?sid={$surveyid}&loadall=reload&scid=" . $_SESSION['scid'] . "&loadname=" . urlencode($_SESSION['holdname']) . "&loadpass="******"\n\n";
    }
    $message .= $clang->gT("Click the following link to see the individual response:", "unescaped") . "\n" . "  {$homeurl}/admin.php?action=browse&sid={$surveyid}&subaction=id&id=" . $_SESSION['srid'] . "\n\n" . $clang->gT("Click the following link to edit the individual response:", "unescaped") . "\n" . "  {$homeurl}/admin.php?action=dataentry&sid={$surveyid}&subaction=edit&surveytable=survey_{$surveyid}&id=" . $_SESSION['srid'] . "\n\n" . $clang->gT("View statistics by clicking here:", "unescaped") . "\n" . "  {$homeurl}/admin.php?action=statistics&sid={$surveyid}\n\n";
    $emailresponseto = null;
    if (!empty($thissurvey['emailresponseto'])) {
        if (isset($_SESSION['token']) && $_SESSION['token'] != '' && db_tables_exist($dbprefix . 'tokens_' . $surveyid)) {
            //Gather token data for tokenised surveys
            $_SESSION['thistoken'] = getTokenData($surveyid, $_SESSION['token']);
        } elseif ($_SESSION['insertarray'][0] == 'token') {
            unset($_SESSION['insertarray'][0]);
        }
        //Make an array of email addresses to send to
        if ($erts = explode(";", $thissurvey['emailresponseto'])) {
            foreach ($erts as $ert) {
                $ert = insertansReplace($ert);
                $ert = tokenReplace($ert);
                $emailresponsetos[] = $ert;
            }
        } else {
            $ert = $thissurvey['emailresponseto'];
            $ert = insertansReplace($ert);
            $ert = tokenReplace($ert);
            $emailresponsetos[] = $ert;
        }
        //Now check each of the email addresses that they are valid before creating/adding to the $emailresponseto array
        foreach ($emailresponsetos as $ert) {
            if (validate_email($ert)) {
                $emailresponseto[] = $ert;
            }
        }
    }
    $results = "";
    if ($sendnotification > 1 || $emailresponseto) {
        // Send results
        $results = "----------------------------\n";
        $prevquestion = '';
        $ssubquestion = '';
        $fieldmap = createFieldMap($surveyid, 'full');
        foreach ($_SESSION['insertarray'] as $value) {
            $sQuestion = strip_tags($fieldmap[$value]['question']);
            if (isset($fieldmap[$value]['subquestion2'])) {
                $ssubquestion = "[" . strip_tags($fieldmap[$value]['subquestion1']) . "] [" . strip_tags($fieldmap[$value]['subquestion2']) . "]";
            } elseif (isset($fieldmap[$value]['subquestion'])) {
                $ssubquestion = strip_tags($fieldmap[$value]['subquestion']);
            } else {
                $ssubquestion = '';
            }
            if ($prevquestion != $sQuestion) {
                $prevquestion = $sQuestion;
                $questiontitle = FlattenText($sQuestion, true, $emailcharset);
                $results .= "\n{$questiontitle}: ";
                if ($ssubquestion != '') {
                    $results .= "\n";
                }
            }
            if ($ssubquestion != '') {
                $answeroption = FlattenText($ssubquestion, true, $emailcharset);
                $results .= "\t[{$answeroption}]:   ";
            }
            if ($fieldmap[$value]['type'] == "T" || $fieldmap[$value]['type'] == "U") {
                $results .= "\r\n";
                if (isset($_SESSION[$value])) {
                    foreach (explode("\n", $_SESSION[$value]) as $line) {
                        $results .= "\t" . FlattenText($line, true, $emailcharset);
                        $results .= "\n";
                    }
                }
            } elseif (isset($_SESSION[$value])) {
                $results .= FlattenText(getextendedanswer($value, $_SESSION[$value]), true, $emailcharset);
                $results .= "\n";
            } else {
                $results .= "\n";
            }
        }
        $results .= "\n\n----------------------------\n\n";
    }
    $message .= $results;
    $message .= "LimeSurvey";
    if ($recips = explode(";", $thissurvey['adminemail'])) {
        $from = $thissurvey['adminname'] . ' <' . $recips[0] . '>';
        foreach ($recips as $rc) {
            if (!SendEmailMessage($message, $subject, trim($rc), $from, $sitename, false, getBounceEmail($surveyid))) {
                if ($debug > 0) {
                    echo '<br />Email could not be sent. Reason: ' . $maildebug . '<br/>';
                }
            }
        }
    } else {
        $from = $thissurvey['adminname'] . ' <' . $thissurvey['adminemail'] . '>';
        if (!SendEmailMessage($message, $subject, $thissurvey['adminemail'], $from, $sitename, false, getBounceEmail($surveyid))) {
            if ($debug > 0) {
                echo '<br />Email could not be sent. Reason: ' . $maildebug . '<br/>';
            }
        }
    }
    if ($emailresponseto) {
        $ertmessage = $clang->gT("This email contains confirmation of the responses you made to the survey") . " " . $thissurvey['name'] . "\n";
        $ertmessage .= $results;
        $ertsubject = $clang->gT("Survey submission confirmation");
        foreach ($emailresponseto as $ert) {
            if (!SendEmailMessage($ertmessage, $ertsubject, $ert, $from, $sitename, false, getBounceEmail($surveyid))) {
                if ($debug > 0) {
                    echo '<br />Email could not be sent to EmailReponseTo field. Reason: ' . $maildebug . '<br />';
                }
            }
        }
    }
}
Esempio n. 4
0
/**
 * This function replaces keywords in a text and is mainly intended for templates
 * If you use this functions put your replacement strings into the $replacements variable
 * instead of using global variables
 *
 * @param mixed $line Text to search in
 * @param mixed $replacements Array of replacements:  Array( <stringtosearch>=><stringtoreplacewith>
 * @return string  Text with replaced strings
 */
function templatereplace($line, $replacements = array())
{
    global $surveylist, $sitename, $clienttoken, $rooturl;
    global $thissurvey, $imagefiles, $defaulttemplate;
    global $percentcomplete, $move;
    global $groupname, $groupdescription;
    global $question;
    global $answer, $navigator;
    global $help, $totalquestions, $surveyformat;
    global $completed, $register_errormsg;
    global $notanswered, $privacy, $surveyid;
    global $publicurl, $templatedir, $token;
    global $assessments, $s_lang;
    global $errormsg, $clang;
    global $saved_id, $usertemplaterootdir;
    global $totalBoilerplatequestions, $relativeurl;
    global $languagechanger;
    global $printoutput, $captchapath, $loadname;
    // lets sanitize the survey template
    if (isset($thissurvey['templatedir'])) {
        $templatename = $thissurvey['templatedir'];
    } else {
        $templatename = $defaulttemplate;
    }
    $templatename = validate_templatedir($templatename);
    // create absolute template URL and template dir vars
    $templateurl = sGetTemplateURL($templatename) . '/';
    $templatedir = sgetTemplatePath($templatename);
    if (stripos($line, "</head>")) {
        $line = str_ireplace("</head>", "<script type=\"text/javascript\" src=\"{$rooturl}/scripts/survey_runtime.js\"></script>\n" . use_firebug() . "\t</head>", $line);
    }
    // If there are non-bracketed replacements to be made do so above this line.
    // Only continue in this routine if there are bracketed items to replace {}
    if (strpos($line, "{") === false) {
        return $line;
    }
    foreach ($replacements as $replacementkey => $replacementvalue) {
        if (strpos($line, '{' . $replacementkey . '}') !== false) {
            $line = str_replace('{' . $replacementkey . '}', $replacementvalue, $line);
        }
    }
    if (strpos($line, "{SURVEYLISTHEADING}") !== false) {
        $line = str_replace("{SURVEYLISTHEADING}", $surveylist['listheading'], $line);
    }
    if (strpos($line, "{SURVEYLIST}") !== false) {
        $line = str_replace("{SURVEYLIST}", $surveylist['list'], $line);
    }
    if (strpos($line, "{NOSURVEYID}") !== false) {
        $line = str_replace("{NOSURVEYID}", $surveylist['nosid'], $line);
    }
    if (strpos($line, "{SURVEYCONTACT}") !== false) {
        $line = str_replace("{SURVEYCONTACT}", $surveylist['contact'], $line);
    }
    if (strpos($line, "{SITENAME}") !== false) {
        $line = str_replace("{SITENAME}", $sitename, $line);
    }
    if (strpos($line, "{SURVEYLIST}") !== false) {
        $line = str_replace("{SURVEYLIST}", $surveylist, $line);
    }
    if (strpos($line, "{CHECKJAVASCRIPT}") !== false) {
        $line = str_replace("{CHECKJAVASCRIPT}", "<noscript><span class='warningjs'>" . $clang->gT("Caution: JavaScript execution is disabled in your browser. You may not be able to answer all questions in this survey. Please, verify your browser parameters.") . "</span></noscript>", $line);
    }
    if (strpos($line, "{ANSWERTABLE}") !== false) {
        $line = str_replace("{ANSWERTABLE}", $printoutput, $line);
    }
    if (strpos($line, "{SURVEYNAME}") !== false) {
        $line = str_replace("{SURVEYNAME}", $thissurvey['name'], $line);
    }
    if (strpos($line, "{SURVEYDESCRIPTION}") !== false) {
        $line = str_replace("{SURVEYDESCRIPTION}", $thissurvey['description'], $line);
    }
    if (strpos($line, "{WELCOME}") !== false) {
        $line = str_replace("{WELCOME}", $thissurvey['welcome'], $line);
    }
    if (strpos($line, "{LANGUAGECHANGER}") !== false) {
        $line = str_replace("{LANGUAGECHANGER}", $languagechanger, $line);
    }
    if (strpos($line, "{PERCENTCOMPLETE}") !== false) {
        $line = str_replace("{PERCENTCOMPLETE}", $percentcomplete, $line);
    }
    if (strpos($line, "{GROUPNAME}") !== false) {
        $line = str_replace("{GROUPNAME}", $groupname, $line);
    }
    if (strpos($line, "{GROUPDESCRIPTION}") !== false) {
        $line = str_replace("{GROUPDESCRIPTION}", $groupdescription, $line);
    }
    if (is_array($question)) {
        if (strpos($line, "{QUESTION}") !== false) {
            $line = str_replace("{QUESTION}", $question['all'], $line);
        } else {
            if (strpos($line, "{QUESTION_TEXT}") !== false) {
                $line = str_replace("{QUESTION_TEXT}", $question['text'], $line);
            }
            if (strpos($line, "{QUESTION_HELP}") !== false) {
                $line = str_replace("{QUESTION_HELP}", $question['help'], $line);
            }
            if (strpos($line, "{QUESTION_MANDATORY}") !== false) {
                $line = str_replace("{QUESTION_MANDATORY}", $question['mandatory'], $line);
            }
            if (strpos($line, "{QUESTION_MAN_MESSAGE}") !== false) {
                $line = str_replace("{QUESTION_MAN_MESSAGE}", $question['man_message'], $line);
            }
            if (strpos($line, "{QUESTION_VALID_MESSAGE}") !== false) {
                $line = str_replace("{QUESTION_VALID_MESSAGE}", $question['valid_message'], $line);
            }
        }
    } else {
        if (strpos($line, "{QUESTION}") !== false) {
            $line = str_replace("{QUESTION}", $question, $line);
        }
    }
    if (strpos($line, '{QUESTION_ESSENTIALS}') !== false) {
        $line = str_replace('{QUESTION_ESSENTIALS}', $question['essentials'], $line);
    }
    if (strpos($line, '{QUESTION_CLASS}') !== false) {
        $line = str_replace('{QUESTION_CLASS}', $question['class'], $line);
    }
    if (strpos($line, '{QUESTION_MAN_CLASS}') !== false) {
        $line = str_replace('{QUESTION_MAN_CLASS}', $question['man_class'], $line);
    }
    if (strpos($line, "{QUESTION_INPUT_ERROR_CLASS}") !== false) {
        $line = str_replace("{QUESTION_INPUT_ERROR_CLASS}", $question['input_error_class'], $line);
    }
    if (strpos($line, "{QUESTION_CODE}") !== false) {
        $line = str_replace("{QUESTION_CODE}", $question['code'], $line);
    }
    if (strpos($line, "{ANSWER}") !== false) {
        $line = str_replace("{ANSWER}", $answer, $line);
    }
    $totalquestionsAsked = $totalquestions - $totalBoilerplatequestions;
    if ($totalquestionsAsked < 1) {
        if (strpos($line, "{THEREAREXQUESTIONS}") !== false) {
            $line = str_replace("{THEREAREXQUESTIONS}", $clang->gT("There are no questions in this survey"), $line);
        }
        //Singular
    }
    if ($totalquestionsAsked == 1) {
        if (strpos($line, "{THEREAREXQUESTIONS}") !== false) {
            $line = str_replace("{THEREAREXQUESTIONS}", $clang->gT("There is 1 question in this survey"), $line);
        }
        //Singular
    } else {
        if (strpos($line, "{THEREAREXQUESTIONS}") !== false) {
            $line = str_replace("{THEREAREXQUESTIONS}", $clang->gT("There are {NUMBEROFQUESTIONS} questions in this survey."), $line);
        }
        //Note this line MUST be before {NUMBEROFQUESTIONS}
    }
    if (strpos($line, "{NUMBEROFQUESTIONS}") !== false) {
        $line = str_replace("{NUMBEROFQUESTIONS}", $totalquestionsAsked, $line);
    }
    if (strpos($line, "{TOKEN}") !== false) {
        if (isset($token)) {
            $line = str_replace("{TOKEN}", $token, $line);
        } elseif (isset($clienttoken)) {
            $line = str_replace("{TOKEN}", htmlentities($clienttoken, ENT_QUOTES, 'UTF-8'), $line);
        } else {
            $line = str_replace("{TOKEN}", '', $line);
        }
    }
    if (strpos($line, "{SID}") !== false) {
        $line = str_replace("{SID}", $surveyid, $line);
    }
    if (strpos($line, "{EXPIRY}") !== false) {
        $line = str_replace("{EXPIRY}", $thissurvey['expiry'], $line);
    }
    if (strpos($line, "{EXPIRY-DMY}") !== false) {
        $line = str_replace("{EXPIRY-DMY}", date("d-m-Y", strtotime($thissurvey["expiry"])), $line);
    }
    if (strpos($line, "{EXPIRY-MDY}") !== false) {
        $line = str_replace("{EXPIRY-MDY}", date("m-d-Y", strtotime($thissurvey["expiry"])), $line);
    }
    if (strpos($line, "{NAVIGATOR}") !== false) {
        $line = str_replace("{NAVIGATOR}", $navigator, $line);
    }
    if (strpos($line, "{SUBMITBUTTON}") !== false) {
        $submitbutton = "          <input class='submit' type='submit' value=' " . $clang->gT("Submit") . " ' name='move2' onclick=\"javascript:document.limesurvey.move.value = 'movesubmit';\" />";
        $line = str_replace("{SUBMITBUTTON}", $submitbutton, $line);
    }
    if (strpos($line, "{COMPLETED}") !== false) {
        $line = str_replace("{COMPLETED}", $completed, $line);
    }
    if (strpos($line, "{URL}") !== false) {
        if ($thissurvey['surveyls_url'] != "") {
            if (trim($thissurvey['surveyls_urldescription']) != '') {
                $linkreplace = "<a href='{$thissurvey['surveyls_url']}'>{$thissurvey['surveyls_urldescription']}</a>";
            } else {
                $linkreplace = "<a href='{$thissurvey['surveyls_url']}'>{$thissurvey['surveyls_url']}</a>";
            }
        } else {
            $linkreplace = '';
        }
        $line = str_replace("{URL}", $linkreplace, $line);
        $line = str_replace("{SAVEDID}", $saved_id, $line);
        // to activate the SAVEDID in the END URL
        if (isset($clienttoken)) {
            $token = $clienttoken;
        } else {
            $token = '';
        }
        $line = str_replace("{TOKEN}", urlencode($token), $line);
        // to activate the TOKEN in the END URL
        $line = str_replace("{SID}", $surveyid, $line);
        // to activate the SID in the RND URL
    }
    if (strpos($line, "{PRIVACY}") !== false) {
        $line = str_replace("{PRIVACY}", $privacy, $line);
    }
    if (strpos($line, "{PRIVACYMESSAGE}") !== false) {
        $line = str_replace("{PRIVACYMESSAGE}", "<span style='font-weight:bold; font-style: italic;'>" . $clang->gT("A Note On Privacy") . "</span><br />" . $clang->gT("This survey is anonymous.") . "<br />" . $clang->gT("The record kept of your survey responses does not contain any identifying information about you unless a specific question in the survey has asked for this."), $line);
        // If you have responded to a survey that used an identifying token to allow you to access the survey, you can rest assured that the identifying token is not kept with your responses. It is managed in a separate database, and will only be updated to indicate that you have (or haven't) completed this survey. There is no way of matching identification tokens with survey responses in this survey.
    }
    if (strpos($line, "{CLEARALL}") !== false) {
        $clearall = "          <input type='button' name='clearallbtn' value='" . $clang->gT("Exit and Clear Survey") . "' class='clearall' " . "onclick=\"if (confirm('" . $clang->gT("Are you sure you want to clear all your responses?", 'js') . "')) {window.open('{$publicurl}/index.php?sid={$surveyid}&amp;move=clearall&amp;lang=" . $_SESSION['s_lang'];
        if (returnglobal('token')) {
            $clearall .= "&amp;token=" . urlencode(trim(sanitize_xss_string(strip_tags(returnglobal('token')))));
        }
        $clearall .= "', '_top')}\" />";
        $line = str_replace("{CLEARALL}", $clearall, $line);
    }
    // --> START NEW FEATURE - SAVE
    if (strpos($line, "{DATESTAMP}") !== false) {
        if (isset($_SESSION['datestamp'])) {
            $line = str_replace("{DATESTAMP}", $_SESSION['datestamp'], $line);
        } else {
            $line = str_replace("{DATESTAMP}", "-", $line);
        }
    }
    // <-- END NEW FEATURE - SAVE
    if (strpos($line, "{SAVE}") !== false) {
        //Set up save/load feature
        if ($thissurvey['allowsave'] == "Y") {
            // Find out if the user has any saved data
            if ($thissurvey['format'] == 'A') {
                $saveall = "          <input type='submit' name='loadall' value='" . $clang->gT("Load Unfinished Survey") . "' class='saveall' " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>" . "          <input type='button' name='saveallbtn' value='" . $clang->gT("Resume Later") . "' class='saveall' onclick=\"javascript:document.limesurvey.move.value = this.value;addHiddenField(document.getElementById('limesurvey'),'saveall',this.value);document.getElementById('limesurvey').submit();\" " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>";
                // Show Save So Far button
            } elseif (!isset($_SESSION['step']) || !$_SESSION['step']) {
                $saveall = "          <input type='submit' name='loadall' value='" . $clang->gT("Load Unfinished Survey") . "' class='saveall' " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>";
            } elseif (isset($_SESSION['scid']) && (isset($move) && $move == "movelast")) {
                $saveall = "";
            } else {
                $saveall = "          <input type='button' name='saveallbtn' value='" . $clang->gT("Resume Later") . "' class='saveall' onclick=\"javascript:document.limesurvey.move.value = this.value;addHiddenField(document.getElementById('limesurvey'),'saveall',this.value);document.getElementById('limesurvey').submit();\" " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>";
                // Show Save So Far button
            }
        } else {
            $saveall = "";
        }
        $line = str_replace("{SAVE}", $saveall, $line);
    }
    if (strpos($line, "{TEMPLATEURL}") !== false) {
        $line = str_replace("{TEMPLATEURL}", $templateurl, $line);
    }
    if (strpos($line, "{TEMPLATECSS}") !== false) {
        $templatecss = "<link rel='stylesheet' type='text/css' href='{$templateurl}template.css' />\n";
        if (getLanguageRTL($clang->langcode)) {
            $templatecss .= "<link rel='stylesheet' type='text/css' href='{$templateurl}template-rtl.css' />\n";
        }
        $line = str_replace("{TEMPLATECSS}", $templatecss, $line);
    }
    if (FlattenText($help, true) != '') {
        if (strpos($line, "{QUESTIONHELP}") !== false) {
            if (!isset($helpicon)) {
                if (file_exists($templatedir . '/help.gif')) {
                    $helpicon = $templateurl . 'help.gif';
                } elseif (file_exists($templatedir . '/help.png')) {
                    $helpicon = $templateurl . 'help.png';
                } else {
                    $helpicon = $imagefiles . "/help.gif";
                }
            }
            $line = str_replace("{QUESTIONHELP}", "<img src='{$helpicon}' alt='Help' align='left' />" . $help, $line);
        }
        if (strpos($line, "{QUESTIONHELPPLAINTEXT}") !== false) {
            $line = str_replace("{QUESTIONHELPPLAINTEXT}", strip_tags(addslashes($help)), $line);
        }
    } else {
        if (strpos($line, "{QUESTIONHELP}") !== false) {
            $line = str_replace("{QUESTIONHELP}", $help, $line);
        }
        if (strpos($line, "{QUESTIONHELPPLAINTEXT}") !== false) {
            $line = str_replace("{QUESTIONHELPPLAINTEXT}", strip_tags(addslashes($help)), $line);
        }
    }
    $line = insertansReplace($line);
    if (strpos($line, "{SUBMITCOMPLETE}") !== false) {
        $line = str_replace("{SUBMITCOMPLETE}", "<strong>" . $clang->gT("Thank You!") . "<br /><br />" . $clang->gT("You have completed answering the questions in this survey.") . "</strong><br /><br />" . $clang->gT("Click on 'Submit' now to complete the process and save your answers."), $line);
    }
    if (strpos($line, "{SUBMITREVIEW}") !== false) {
        if (isset($thissurvey['allowprev']) && $thissurvey['allowprev'] == "N") {
            $strreview = "";
        } else {
            $strreview = $clang->gT("If you want to check any of the answers you have made, and/or change them, you can do that now by clicking on the [<< prev] button and browsing through your responses.");
        }
        $line = str_replace("{SUBMITREVIEW}", $strreview, $line);
    }
    $line = tokenReplace($line);
    if (strpos($line, "{ANSWERSCLEARED}") !== false) {
        $line = str_replace("{ANSWERSCLEARED}", $clang->gT("Answers Cleared"), $line);
    }
    if (strpos($line, "{RESTART}") !== false) {
        if ($thissurvey['active'] == "N") {
            $replacetext = "<a href='{$publicurl}/index.php?sid={$surveyid}&amp;newtest=Y";
            if (isset($s_lang) && $s_lang != '') {
                $replacetext .= "&amp;lang=" . $s_lang;
            }
            $replacetext .= "'>" . $clang->gT("Restart this Survey") . "</a>";
            $line = str_replace("{RESTART}", $replacetext, $line);
        } else {
            $restart_extra = "";
            $restart_token = returnglobal('token');
            if (!empty($restart_token)) {
                $restart_extra .= "&amp;token=" . urlencode($restart_token);
            } else {
                $restart_extra = "&amp;newtest=Y";
            }
            if (!empty($_GET['lang'])) {
                $restart_extra .= "&amp;lang=" . returnglobal('lang');
            }
            $line = str_replace("{RESTART}", "<a href='{$publicurl}/index.php?sid={$surveyid}" . $restart_extra . "'>" . $clang->gT("Restart this Survey") . "</a>", $line);
        }
    }
    if (strpos($line, "{CLOSEWINDOW}") !== false) {
        $line = str_replace("{CLOSEWINDOW}", "<a href='javascript:%20self.close()'>" . $clang->gT("Close this Window") . "</a>", $line);
    }
    if (strpos($line, "{SAVEERROR}") !== false) {
        $line = str_replace("{SAVEERROR}", $errormsg, $line);
    }
    if (strpos($line, "{SAVEHEADING}") !== false) {
        $line = str_replace("{SAVEHEADING}", $clang->gT("Save Your Unfinished Survey"), $line);
    }
    if (strpos($line, "{SAVEMESSAGE}") !== false) {
        $line = str_replace("{SAVEMESSAGE}", $clang->gT("Enter a name and password for this survey and click save below.") . "<br />\n" . $clang->gT("Your survey will be saved using that name and password, and can be completed later by logging in with the same name and password.") . "<br /><br />\n" . $clang->gT("If you give an email address, an email containing the details will be sent to you."), $line);
    }
    if (strpos($line, "{RETURNTOSURVEY}") !== false) {
        $savereturn = "<a href='{$relativeurl}/index.php?sid={$surveyid}";
        if (returnglobal('token')) {
            $savereturn .= "&amp;token=" . urlencode(trim(sanitize_xss_string(strip_tags(returnglobal('token')))));
        }
        $savereturn .= "'>" . $clang->gT("Return To Survey") . "</a>";
        $line = str_replace("{RETURNTOSURVEY}", $savereturn, $line);
    }
    if (strpos($line, "{SAVEFORM}") !== false) {
        //SAVE SURVEY DETAILS
        $saveform = "<table><tr><td align='right'>" . $clang->gT("Name") . ":</td><td><input type='text' name='savename' value='";
        if (isset($_POST['savename'])) {
            $saveform .= html_escape(auto_unescape($_POST['savename']));
        }
        $saveform .= "' /></td></tr>\n" . "<tr><td align='right'>" . $clang->gT("Password") . ":</td><td><input type='password' name='savepass' value='";
        if (isset($_POST['savepass'])) {
            $saveform .= html_escape(auto_unescape($_POST['savepass']));
        }
        $saveform .= "' /></td></tr>\n" . "<tr><td align='right'>" . $clang->gT("Repeat Password") . ":</td><td><input type='password' name='savepass2' value='";
        if (isset($_POST['savepass2'])) {
            $saveform .= html_escape(auto_unescape($_POST['savepass2']));
        }
        $saveform .= "' /></td></tr>\n" . "<tr><td align='right'>" . $clang->gT("Your Email") . ":</td><td><input type='text' name='saveemail' value='";
        if (isset($_POST['saveemail'])) {
            $saveform .= html_escape(auto_unescape($_POST['saveemail']));
        }
        $saveform .= "' /></td></tr>\n";
        if (function_exists("ImageCreate") && captcha_enabled('saveandloadscreen', $thissurvey['usecaptcha'])) {
            $saveform .= "<tr><td align='right'>" . $clang->gT("Security Question") . ":</td><td><table><tr><td valign='middle'><img src='{$captchapath}verification.php?sid={$surveyid}' alt='' /></td><td valign='middle' style='text-align:left'><input type='text' size='5' maxlength='3' name='loadsecurity' value='' /></td></tr></table></td></tr>\n";
        }
        $saveform .= "<tr><td align='right'></td><td></td></tr>\n" . "<tr><td></td><td><input type='submit'  id='savebutton' name='savesubmit' value='" . $clang->gT("Save Now") . "' /></td></tr>\n" . "</table>";
        $line = str_replace("{SAVEFORM}", $saveform, $line);
    }
    if (strpos($line, "{LOADERROR}") !== false) {
        $line = str_replace("{LOADERROR}", $errormsg, $line);
    }
    if (strpos($line, "{LOADHEADING}") !== false) {
        $line = str_replace("{LOADHEADING}", $clang->gT("Load A Previously Saved Survey"), $line);
    }
    if (strpos($line, "{LOADMESSAGE}") !== false) {
        $line = str_replace("{LOADMESSAGE}", $clang->gT("You can load a survey that you have previously saved from this screen.") . "<br />" . $clang->gT("Type in the 'name' you used to save the survey, and the password.") . "<br />", $line);
    }
    if (strpos($line, "{LOADFORM}") !== false) {
        //LOAD SURVEY DETAILS
        $loadform = "<table><tr><td align='right'>" . $clang->gT("Saved name") . ":</td><td><input type='text' name='loadname' value='";
        if ($loadname) {
            $loadform .= html_escape(auto_unescape($loadname));
        }
        $loadform .= "' /></td></tr>\n" . "<tr><td align='right'>" . $clang->gT("Password") . ":</td><td><input type='password' name='loadpass' value='";
        if (isset($loadpass)) {
            $loadform .= html_escape(auto_unescape($loadpass));
        }
        $loadform .= "' /></td></tr>\n";
        if (function_exists("ImageCreate") && captcha_enabled('saveandloadscreen', $thissurvey['usecaptcha'])) {
            $loadform .= "<tr><td align='right'>" . $clang->gT("Security Question") . ":</td><td><table><tr><td valign='middle'><img src='{$captchapath}verification.php?sid={$surveyid}' alt='' /></td><td valign='middle'><input type='text' size='5' maxlength='3' name='loadsecurity' value='' alt=''/></td></tr></table></td></tr>\n";
        }
        $loadform .= "<tr><td align='right'></td><td></td></tr>\n" . "<tr><td></td><td><input type='submit' id='loadbutton' value='" . $clang->gT("Load Now") . "' /></td></tr></table>\n";
        $line = str_replace("{LOADFORM}", $loadform, $line);
    }
    //REGISTER SURVEY DETAILS
    if (strpos($line, "{REGISTERERROR}") !== false) {
        $line = str_replace("{REGISTERERROR}", $register_errormsg, $line);
    }
    if (strpos($line, "{REGISTERMESSAGE1}") !== false) {
        $line = str_replace("{REGISTERMESSAGE1}", $clang->gT("You must be registered to complete this survey"), $line);
    }
    if (strpos($line, "{REGISTERMESSAGE2}") !== false) {
        $line = str_replace("{REGISTERMESSAGE2}", $clang->gT("You may register for this survey if you wish to take part.") . "<br />\n" . $clang->gT("Enter your details below, and an email containing the link to participate in this survey will be sent immediately."), $line);
    }
    if (strpos($line, "{REGISTERFORM}") !== false) {
        $registerform = "<form method='post' action='{$publicurl}/register.php'>\n" . "<table class='register' summary='Registrationform'>\n" . "<tr><td align='right'>" . "<input type='hidden' name='sid' value='{$surveyid}' id='sid' />\n" . $clang->gT("First Name") . ":</td>" . "<td align='left'><input class='text' type='text' name='register_firstname'";
        if (isset($_POST['register_firstname'])) {
            $registerform .= " value='" . htmlentities(returnglobal('register_firstname'), ENT_QUOTES, 'UTF-8') . "'";
        }
        $registerform .= " /></td></tr>" . "<tr><td align='right'>" . $clang->gT("Last Name") . ":</td>\n" . "<td align='left'><input class='text' type='text' name='register_lastname'";
        if (isset($_POST['register_lastname'])) {
            $registerform .= " value='" . htmlentities(returnglobal('register_lastname'), ENT_QUOTES, 'UTF-8') . "'";
        }
        $registerform .= " /></td></tr>\n" . "<tr><td align='right'>" . $clang->gT("Email Address") . ":</td>\n" . "<td align='left'><input class='text' type='text' name='register_email'";
        if (isset($_POST['register_email'])) {
            $registerform .= " value='" . htmlentities(returnglobal('register_email'), ENT_QUOTES, 'UTF-8') . "'";
        }
        $registerform .= " /></td></tr>\n";
        if (!isset($_REQUEST['lang'])) {
            $reglang = GetBaseLanguageFromSurveyID($surveyid);
        } else {
            $reglang = returnglobal('lang');
        }
        if (function_exists("ImageCreate") && captcha_enabled('registrationscreen', $thissurvey['usecaptcha'])) {
            $registerform .= "<tr><td align='right'>" . $clang->gT("Security Question") . ":</td><td><table><tr><td valign='middle'><img src='{$captchapath}verification.php?sid={$surveyid}' alt='' /></td><td valign='middle'><input type='text' size='5' maxlength='3' name='loadsecurity' value='' /></td></tr></table></td></tr>\n";
        }
        $registerform .= "<tr><td align='right'><input type='hidden' name='lang' value='" . $reglang . "' /></td><td></td></tr>\n";
        /*      if(isset($thissurvey['attribute1']) && $thissurvey['attribute1'])
                {
                $registerform .= "<tr><td align='right'>".$thissurvey['attribute1'].":</td>\n"
                ."<td align='left'><input class='text' type='text' name='register_attribute1'";
                if (isset($_POST['register_attribute1']))
                {
                $registerform .= " value='".htmlentities(returnglobal('register_attribute1'),ENT_QUOTES,'UTF-8')."'";
                }
                $registerform .= " /></td></tr>\n";
                }
                if(isset($thissurvey['attribute2']) && $thissurvey['attribute2'])
                {
                $registerform .= "<tr><td align='right'>".$thissurvey['attribute2'].":</td>\n"
                ."<td align='left'><input class='text' type='text' name='register_attribute2'";
                if (isset($_POST['register_attribute2']))
                {
                $registerform .= " value='".htmlentities(returnglobal('register_attribute2'),ENT_QUOTES,'UTF-8')."'";
                }
                $registerform .= " /></td></tr>\n";
                }        */
        $registerform .= "<tr><td></td><td><input id='registercontinue' class='submit' type='submit' value='" . $clang->gT("Continue") . "' />" . "</td></tr>\n" . "</table>\n" . "</form>\n";
        $line = str_replace("{REGISTERFORM}", $registerform, $line);
    }
    if (strpos($line, "{ASSESSMENT_CURRENT_TOTAL}") !== false && function_exists('doAssessment')) {
        $assessmentdata = doAssessment($surveyid, true);
        $line = str_replace("{ASSESSMENT_CURRENT_TOTAL}", $assessmentdata['total'], $line);
    }
    if (strpos($line, "{ASSESSMENTS}") !== false) {
        $line = str_replace("{ASSESSMENTS}", $assessments, $line);
    }
    if (strpos($line, "{ASSESSMENT_HEADING}") !== false) {
        $line = str_replace("{ASSESSMENT_HEADING}", $clang->gT("Your Assessment"), $line);
    }
    return $line;
}