/** * 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 * NOTE - Don't do any embedded replacements in this function. Create the array of replacement values and * they will be done in batch at the end * * @param string $line Text to search in * @param array $replacements Array of replacements: Array( <stringtosearch>=><stringtoreplacewith>, where <stringtosearch> is NOT surrounded with curly braces * @param boolean $anonymized Determines if token data is being used or just replaced with blanks * @return string Text with replaced strings */ function templatereplace($line, $replacements = array(), $anonymized = false, $questionNum = NULL) { global $surveylist, $sitename, $clienttoken, $rooturl; global $thissurvey, $imageurl, $defaulttemplate; global $percentcomplete, $move; global $groupname, $groupdescription; global $question; global $showxquestions, $showgroupinfo, $showqnumcode; global $answer, $navigator; global $help, $surveyformat; global $completed, $register_errormsg; global $privacy, $surveyid; global $publicurl, $templatedir, $token; global $assessments, $s_lang; global $errormsg, $clang; global $saved_id; global $totalBoilerplatequestions, $relativeurl; global $languagechanger; global $captchapath, $loadname; // lets sanitize the survey template if (isset($thissurvey['templatedir'])) { $_templatename = $thissurvey['templatedir']; } else { $_templatename = $defaulttemplate; } # $_templatename = validate_templatedir($_templatename); // Not needed: sGetTemplateURL and sgetTemplatePath do validation // create absolute template URL and template dir vars $_templateurl = sGetTemplateURL($_templatename) . '/'; $templatedir = sgetTemplatePath($_templatename); $interviewer = returnglobal('interviewer'); if (!empty($interviewer) || isset($_SESSION['interviewer']) && $_SESSION['interviewer'] == true) { $interviewer = true; $_SESSION['interviewer'] = true; } else { $interviewer = false; } if (stripos($line, "</head>")) { //queXS Addition $textfocus = ""; if ($interviewer) { $textfocus = '<script type="text/javascript"> $(document).ready(function() { $(".text").focus(); $(".textarea").focus(); }); </script>'; } $line = str_ireplace("</head>", "<script type=\"text/javascript\" src=\"{$rooturl}/scripts/survey_runtime.js\"></script>\n" . "{$textfocus}\n" . use_firebug() . "\t</head>", $line); } // Get some vars : move elsewhere ? // surveyformat if (isset($thissurvey['format'])) { $surveyformat = str_replace(array("A", "S", "G"), array("allinone", "questionbyquestion", "groupbygroup"), $thissurvey['format']); } else { $surveyformat = ""; } /*if (isset($thissurvey['allowjumps']) && $thissurvey['allowjumps']=="Y" && $surveyformat!="allinone" && (isset($_SESSION['step']) && $_SESSION['step']>0)){ $surveyformat .= " withindex"; }*/ if (isset($thissurvey['showprogress']) && $thissurvey['showprogress'] == "Y") { $surveyformat .= " showprogress"; } if (isset($thissurvey['showqnumcode'])) { $surveyformat .= " showqnumcode-" . $thissurvey['showqnumcode']; } // real survey contact if (isset($surveylist['contact'])) { $_surveycontact = $surveylist['contact']; } elseif (isset($thissurvey['admin']) && $thissurvey['admin'] != "") { $_surveycontact = sprintf($clang->gT("Please contact %s ( %s ) for further assistance."), $thissurvey['admin'], $thissurvey['adminemail']); } else { $_surveycontact = ""; } // 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 LimeExpressionManager::ProcessString($line, $questionNum, NULL, false, 1, 1, true); } if ($showgroupinfo == 'both' || $showgroupinfo == 'name' || $showgroupinfo == 'choose' && !isset($thissurvey['showgroupinfo']) || $showgroupinfo == 'choose' && $thissurvey['showgroupinfo'] == 'B' || $showgroupinfo == 'choose' && $thissurvey['showgroupinfo'] == 'N') { $_groupname = $groupname; } else { $_groupname = ''; } if ($showgroupinfo == 'both' || $showgroupinfo == 'description' || $showgroupinfo == 'choose' && !isset($thissurvey['showgroupinfo']) || $showgroupinfo == 'choose' && $thissurvey['showgroupinfo'] == 'B' || $showgroupinfo == 'choose' && $thissurvey['showgroupinfo'] == 'D') { $_groupdescription = $groupdescription; } else { $_groupdescription = ''; } if (is_array($question)) { $_question = $question['all']; $_question_text = $question['text']; $_question_help = $question['help']; $_question_mandatory = $question['mandatory']; $_question_man_message = $question['man_message']; $_question_valid_message = $question['valid_message']; $_question_file_valid_message = $question['file_valid_message']; if (isset($question['sgq'])) { $_question_sgq = $question['sgq']; $_parts = explode('X', $_question_sgq); $_question_gid = $_parts[1]; } else { $_question_sgq = ''; $_question_gid = ''; } $_question_essentials = $question['essentials']; $_question_class = $question['class']; $_question_man_class = $question['man_class']; $_question_input_error_class = $question['input_error_class']; $_aid = isset($question['aid']) ? $question['aid'] : ''; $_sqid = isset($question['sqid']) ? $question['sqid'] : ''; $_question_type = isset($question['type']) ? $question['type'] : ''; } else { $_question = $question; $_question_text = ''; $_question_help = ''; $_question_mandatory = ''; $_question_man_message = ''; $_question_valid_message = ''; $_question_file_valid_message = ''; $_question_gid = ''; $_question_sgq = ''; $_question_essentials = ''; $_question_class = ''; $_question_man_class = ''; $_question_input_error_class = ''; $_aid = ''; $_sqid = ''; $_question_type = ''; } global $answer_id; if ($_question_type == '*') { $_question_text = '<div class="em_equation">' . $_question_text . '</div>'; } if ($showqnumcode == 'both' || $showqnumcode == 'number' || $showqnumcode == 'choose' && !isset($thissurvey['showqnumcode']) || $showqnumcode == 'choose' && $thissurvey['showqnumcode'] == 'B' || $showqnumcode == 'choose' && $thissurvey['showqnumcode'] == 'N') { $_question_number = $question['number']; } else { $_question_number = ''; } if ($showqnumcode == 'both' || $showqnumcode == 'code' || $showqnumcode == 'choose' && !isset($thissurvey['showqnumcode']) || $showqnumcode == 'choose' && $thissurvey['showqnumcode'] == 'B' || $showqnumcode == 'choose' && $thissurvey['showqnumcode'] == 'C') { $_question_code = $question['code']; } else { $_question_code = ''; } if (isset($_SESSION['therearexquestions'])) { $_totalquestionsAsked = $_SESSION['therearexquestions'] - $totalBoilerplatequestions; } else { $_totalquestionsAsked = 0; } if ($showxquestions == 'show' || $showxquestions == 'choose' && !isset($thissurvey['showxquestions']) || $showxquestions == 'choose' && $thissurvey['showxquestions'] == 'Y') { if ($_totalquestionsAsked < 1) { $_therearexquestions = $clang->gT("There are no questions in this survey"); // Singular } elseif ($_totalquestionsAsked == 1) { $_therearexquestions = $clang->gT("There is 1 question in this survey"); //Singular } else { $_therearexquestions = $clang->gT("There are {NUMBEROFQUESTIONS} questions in this survey."); //Note this line MUST be before {NUMBEROFQUESTIONS} } } else { $_therearexquestions = ''; } if (isset($token)) { $_token = $token; } elseif (isset($clienttoken)) { $_token = htmlentities($clienttoken, ENT_QUOTES, 'UTF-8'); } else { $_token = ''; } if (isset($thissurvey['surveyls_dateformat'])) { $dateformatdetails = getDateFormatData($thissurvey['surveyls_dateformat']); } else { $dateformatdetails = getDateFormatData(); } if (isset($thissurvey['expiry'])) { $_datetimeobj = new Date_Time_Converter($thissurvey['expiry'], "Y-m-d"); $_dateoutput = $_datetimeobj->convert($dateformatdetails['phpdate']); } else { $_dateoutput = '-'; } $_submitbutton = "<input class='submit' type='submit' value=' " . $clang->gT("Submit") . " ' name='move2' onclick=\"javascript:document.limesurvey.move.value = 'movesubmit';\" />"; if (isset($thissurvey['surveyls_url']) and $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 = ''; } if (isset($clienttoken)) { $token = $clienttoken; } else { $token = ''; } if (!isset($_SESSION['s_lang'])) { $_s_lang = 'en'; } else { $_s_lang = $_SESSION['s_lang']; } // CLEARALL if ($surveyid && !isCompleted($surveyid, $saved_id)) { $_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') . "')) {\nwindow.open('{$publicurl}/index.php?sid={$surveyid}&move=clearall&lang=" . $_s_lang; if (returnglobal('token')) { $_clearall .= "&token={$_token}"; } $_clearall .= "', '_self')}\" />"; } else { $_clearall = ""; // This survey are already completed or surveyid not set, then don't have access to clearallbtn } if (isset($_SESSION['datestamp'])) { $_datestamp = $_SESSION['datestamp']; } else { $_datestamp = '-'; } //Set up save/load feature if (isset($thissurvey['allowsave']) and $thissurvey['allowsave'] == "Y") { // Find out if the user has any saved data if ($thissurvey['format'] == 'A') { if ($thissurvey['tokenanswerspersistence'] != 'Y' || !tableExists('tokens_' . $surveyid)) { $_saveall = "\t\t\t<input type='button' name='loadall' value='" . $clang->gT("Load Unfinished Survey") . "' class='saveall' onclick=\"javascript:addHiddenField(document.getElementById('limesurvey'),'loadall',this.value);document.getElementById('limesurvey').submit();\" " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>" . "\n\t\t\t<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 = "\t\t\t<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']) { //First page, show LOAD if ($thissurvey['tokenanswerspersistence'] != 'Y' || !tableExists('tokens_' . $surveyid)) { $_saveall = "\t\t\t<input type='button' name='loadall' value='" . $clang->gT("Load Unfinished Survey") . "' class='saveall' onclick=\"javascript:addHiddenField(document.getElementById('limesurvey'),'loadall',this.value);document.getElementById('limesurvey').submit();\" " . ($thissurvey['active'] != "Y" ? "disabled='disabled'" : "") . "/>"; } else { $_saveall = ''; } } elseif (isset($_SESSION['scid']) && (isset($move) && $move == "movelast")) { //Already saved and on Submit Page, dont show Save So Far button $_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 = ""; } $_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"; } if (FlattenText($help, true) != '') { 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 = $imageurl . "/help.gif"; } } $_questionhelp = "<img src='{$helpicon}' alt='Help' align='left' />" . $help; } else { $_questionhelp = $help; } 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."); } if (isset($thissurvey['active']) and $thissurvey['active'] == "N") { $_restart = "<a href='{$publicurl}/index.php?sid={$surveyid}&newtest=Y"; if (isset($s_lang) && $s_lang != '') { $_restart .= "&lang=" . $s_lang; } $_restart .= "'>" . $clang->gT("Restart this Survey") . "</a>"; } else { $restart_extra = ""; $restart_token = returnglobal('token'); if (!empty($restart_token)) { $restart_extra .= "&token=" . urlencode($restart_token); } else { $restart_extra = "&newtest=Y"; } if (!empty($_GET['lang'])) { $restart_extra .= "&lang=" . returnglobal('lang'); } $_restart = "<a href='{$publicurl}/index.php?sid={$surveyid}" . $restart_extra . "'>" . $clang->gT("Restart this Survey") . "</a>"; } if (isset($thissurvey['anonymized']) && $thissurvey['anonymized'] == 'Y') { $_savealert = $clang->gT("To remain anonymous please use a pseudonym as your username, also an email address is not required."); } else { $_savealert = ""; } $_return_to_survey = "<a href='{$relativeurl}/index.php?sid={$surveyid}"; if (returnglobal('token')) { $_return_to_survey .= "&token=" . urlencode(trim(sanitize_xss_string(strip_tags(returnglobal('token'))))); } $_return_to_survey .= "'>" . $clang->gT("Return To Survey") . "</a>"; $_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 (isset($thissurvey['usecaptcha']) && 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>"; $_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 (isset($thissurvey['usecaptcha']) && 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"; $_registerform = "<form method='post' action='{$publicurl}/register.php'>\n"; if (!isset($_REQUEST['lang'])) { $_reglang = GetBaseLanguageFromSurveyID($surveyid); } else { $_reglang = returnglobal('lang'); } $_registerform .= "<input type='hidden' name='lang' value='" . $_reglang . "' />\n"; $_registerform .= "<input type='hidden' name='sid' value='{$surveyid}' id='sid' />\n"; $_registerform .= "<table class='register' summary='Registrationform'>\n" . "<tr><td align='right'>" . $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($thissurvey['usecaptcha']) && 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"; } /* 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"; if (!is_null($surveyid) && function_exists('doAssessment')) { $assessmentdata = doAssessment($surveyid, true); $_assessment_current_total = $assessmentdata['total']; } else { $_assessment_current_total = ''; } if (isset($thissurvey['googleanalyticsapikey']) && trim($thissurvey['googleanalyticsapikey']) != '') { $_googleAnalyticsAPIKey = trim($thissurvey['googleanalyticsapikey']); } else { $_googleAnalyticsAPIKey = trim(getGlobalSetting('googleanalyticsapikey')); } $_googleAnalyticsStyle = isset($thissurvey['googleanalyticsstyle']) ? $thissurvey['googleanalyticsstyle'] : '0'; $_googleAnalyticsJavaScript = ''; if ($_googleAnalyticsStyle != '' && $_googleAnalyticsStyle != 0 && $_googleAnalyticsAPIKey != '') { switch ($_googleAnalyticsStyle) { case '1': // Default Google Tracking $_googleAnalyticsJavaScript = <<<EOD <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '{$_googleAnalyticsAPIKey}']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> EOD; break; case '2': // SurveyName-[SID]/[GSEQ]-GroupName - create custom GSEQ based upon page step $moveInfo = LimeExpressionManager::GetLastMoveResult(); if (is_null($moveInfo)) { $gseq = 'welcome'; } else { if ($moveInfo['finished']) { $gseq = 'finished'; } else { if (isset($moveInfo['at_start']) && $moveInfo['at_start']) { $gseq = 'welcome'; } else { if (is_null($_groupname)) { $gseq = 'printanswers'; } else { $gseq = $moveInfo['gseq'] + 1; } } } } $_trackURL = htmlentities($thissurvey['name'] . '-[' . $surveyid . ']/[' . $gseq . ']-' . $_groupname, ENT_QUOTES); $_googleAnalyticsJavaScript = <<<EOD <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '{$_googleAnalyticsAPIKey}']); _gaq.push(['_trackPageview','{$_trackURL}']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> EOD; break; } } $_endtext = ''; if (isset($thissurvey['surveyls_endtext']) && trim($thissurvey['surveyls_endtext']) != '') { $_endtext = $thissurvey['surveyls_endtext']; } // Set the array of replacement variables here - don't include curly braces // Please put any conditional logic above this section. Here below should just be an alphabetical list of replacement values with no embedded logic. $coreReplacements = array(); $coreReplacements['ACTIVE'] = isset($thissurvey['active']) && !($thissurvey['active'] != "Y"); $coreReplacements['AID'] = $_aid; // global $coreReplacements['ANSWER'] = $answer; // global $coreReplacements['ANSWERSCLEARED'] = $clang->gT("Answers Cleared"); $coreReplacements['ASSESSMENTS'] = $assessments; // global $coreReplacements['ASSESSMENT_CURRENT_TOTAL'] = $_assessment_current_total; $coreReplacements['ASSESSMENT_HEADING'] = $clang->gT("Your Assessment"); $coreReplacements['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>"; $coreReplacements['CLEARALL'] = $_clearall; $coreReplacements['CLOSEWINDOW'] = "<a href='javascript:%20self.close()'>" . $clang->gT("Close this window") . "</a>"; $coreReplacements['COMPLETED'] = $completed; // global $coreReplacements['DATESTAMP'] = $_datestamp; $coreReplacements['ENDTEXT'] = $_endtext; $coreReplacements['EXPIRY'] = $_dateoutput; $coreReplacements['GID'] = $_question_gid; $coreReplacements['GOOGLE_ANALYTICS_API_KEY'] = $_googleAnalyticsAPIKey; $coreReplacements['GOOGLE_ANALYTICS_JAVASCRIPT'] = $_googleAnalyticsJavaScript; $coreReplacements['GROUPDESCRIPTION'] = $_groupdescription; $coreReplacements['GROUPNAME'] = $_groupname; $coreReplacements['LANG'] = $clang->getlangcode(); $coreReplacements['LANGUAGECHANGER'] = $languagechanger; // global $coreReplacements['LOADERROR'] = $errormsg; // global $coreReplacements['LOADFORM'] = $_loadform; $coreReplacements['LOADHEADING'] = $clang->gT("Load A Previously Saved Survey"); $coreReplacements['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 />"; $coreReplacements['NAVIGATOR'] = $navigator; // global $coreReplacements['NOSURVEYID'] = $surveylist['nosid']; // global $coreReplacements['NUMBEROFQUESTIONS'] = $_totalquestionsAsked; $coreReplacements['PASSTHRULABEL'] = ''; $coreReplacements['PASSTHRUVALUE'] = ''; $coreReplacements['PERCENTCOMPLETE'] = $percentcomplete; // global $coreReplacements['PRIVACY'] = $privacy; // global $coreReplacements['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. 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."); $coreReplacements['QID'] = isset($questionNum) ? $questionNum : ''; $coreReplacements['QUESTION'] = $_question; $coreReplacements['QUESTIONHELP'] = $_questionhelp; $coreReplacements['QUESTIONHELPPLAINTEXT'] = strip_tags(addslashes($help)); // global $coreReplacements['QUESTION_CLASS'] = $_question_class; $coreReplacements['QUESTION_CODE'] = $_question_code; $coreReplacements['QUESTION_ESSENTIALS'] = $_question_essentials; $coreReplacements['QUESTION_FILE_VALID_MESSAGE'] = $_question_file_valid_message; $coreReplacements['QUESTION_HELP'] = $_question_help; $coreReplacements['QUESTION_INPUT_ERROR_CLASS'] = $_question_input_error_class; $coreReplacements['QUESTION_MANDATORY'] = $_question_mandatory; $coreReplacements['QUESTION_MAN_CLASS'] = $_question_man_class; $coreReplacements['QUESTION_MAN_MESSAGE'] = $_question_man_message; $coreReplacements['QUESTION_NUMBER'] = $_question_number; $coreReplacements['QUESTION_TEXT'] = $_question_text; $coreReplacements['QUESTION_VALID_MESSAGE'] = $_question_valid_message; $coreReplacements['REGISTERERROR'] = $register_errormsg; // global $coreReplacements['REGISTERFORM'] = $_registerform; $coreReplacements['REGISTERMESSAGE1'] = $clang->gT("You must be registered to complete this survey"); $coreReplacements['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."); $coreReplacements['RESTART'] = $_restart; $coreReplacements['RETURNTOSURVEY'] = $_return_to_survey; $coreReplacements['SAVE'] = $_saveall; $coreReplacements['SAVEALERT'] = $_savealert; $coreReplacements['SAVEDID'] = $saved_id; // global $coreReplacements['SAVEERROR'] = $errormsg; // global - same as LOADERROR $coreReplacements['SAVEFORM'] = $_saveform; $coreReplacements['SAVEHEADING'] = $clang->gT("Save Your Unfinished Survey"); $coreReplacements['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.") . "<br /><br />\n" . $clang->gT("After having clicked the save button you can either close this browser window or continue filling out the survey."); $coreReplacements['SGQ'] = $_question_sgq; $coreReplacements['SID'] = $surveyid; // global $coreReplacements['SITENAME'] = $sitename; // global $coreReplacements['SQID'] = $_sqid; // global $coreReplacements['SUBMITBUTTON'] = $_submitbutton; $coreReplacements['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."); $coreReplacements['SUBMITREVIEW'] = $_strreview; $coreReplacements['SURVEYCONTACT'] = $_surveycontact; $coreReplacements['SURVEYDESCRIPTION'] = isset($thissurvey['description']) ? $thissurvey['description'] : ''; $coreReplacements['SURVEYFORMAT'] = $surveyformat; // global $coreReplacements['SURVEYLANGAGE'] = $clang->langcode; // this misspelling is kept for legacy reasons $coreReplacements['SURVEYLANGUAGE'] = $clang->langcode; $coreReplacements['SURVEYLIST'] = $surveylist['list']; // global $coreReplacements['SURVEYLISTHEADING'] = $surveylist['listheading']; // global $coreReplacements['SURVEYNAME'] = $thissurvey['name']; // global $coreReplacements['TEMPLATECSS'] = $_templatecss; $coreReplacements['TEMPLATEURL'] = $_templateurl; $coreReplacements['THEREAREXQUESTIONS'] = $_therearexquestions; if (!$anonymized) { $coreReplacements['TOKEN'] = $_token; } $coreReplacements['URL'] = $_linkreplace; $coreReplacements['WELCOME'] = isset($thissurvey['welcome']) ? $thissurvey['welcome'] : ''; //queXS Addition include_once "quexs.php"; $coreReplacements['IS_INTERVIEWER'] = $interviewer; $coreReplacements = array_merge($coreReplacements, quexs_core_replace()); if (!is_null($replacements) && is_array($replacements)) { $doTheseReplacements = array_merge($coreReplacements, $replacements); // so $replacements overrides core values } else { $doTheseReplacements = $coreReplacements; } // Now do all of the replacements - In rare cases, need to do 3 deep recursion, that that is default $line = LimeExpressionManager::ProcessString($line, $questionNum, $doTheseReplacements, false, 3, 1); return $line; }
sendcacheheaders(); doHeader(); //TOKEN DOESN'T EXIST OR HAS ALREADY BEEN USED. EXPLAIN PROBLEM AND EXIT echo templatereplace(file_get_contents("{$thistpl}/startpage.pstpl")); echo templatereplace(file_get_contents("{$thistpl}/survey.pstpl")); echo "\t<div id='wrapper'>\n" . "\t<p id='tokenmessage'>\n" . "\t" . $clang->gT("We are sorry but you are not allowed to enter this survey.") . "<br /><br />\n" . "\t" . $clang->gT("Your token seems to be valid but can be used only during a certain time period.") . "<br />\n" . "\t" . sprintf($clang->gT("For further information please contact %s"), $thissurvey['adminname'] . " (<a href='mailto:{$thissurvey['adminemail']}'>" . "{$thissurvey['adminemail']}</a>)") . "\n" . "\t</p>\n" . "\t</div>\n"; echo templatereplace(file_get_contents("{$thistpl}/endpage.pstpl")); doFooter(); killSession(); exit; } } //Clear session and remove the incomplete response if requested. if (isset($_GET['move']) && $_GET['move'] == "clearall") { $s_lang = $_SESSION['s_lang']; if (isset($_SESSION['srid']) && !isCompleted($surveyid, $_SESSION['srid'])) { // delete the response but only if not already completed $result = $connect->query('SELECT id FROM ' . db_table_name('survey_' . $surveyid) . ' WHERE id=' . $_SESSION['srid'] . " AND submitdate IS NULL"); if ($result->RecordCount() > 0) { $connect->query('DELETE FROM ' . db_table_name('survey_' . $surveyid) . ' WHERE id=' . $_SESSION['srid'] . " AND submitdate IS NULL"); // find out if there are any fuqt questions - checked $fieldmap = createFieldMap($surveyid); foreach ($fieldmap as $field) { if ($field['type'] == "|" && !strpos($field['fieldname'], "_filecount")) { if (!isset($qid)) { $qid = array(); } $qid[] = $field['fieldname']; } } // if yes, extract the response json to those questions