function showLanguage() { global $survey; $allowed = explode("~", $survey->getAllowedLanguages(getSurveyMode())); if (sizeof($allowed) == 1) { return ""; } $rgid = $this->engine->getRgid(); $variablenames = $this->getRealVariables(explode("~", $this->engine->getDisplayed())); $template = $this->engine->getTemplate(); $click = ""; if ($template != "") { $group = $this->engine->getGroup($template); $click = $this->engine->replaceFills($group->getClickLanguageChange()); } else { $vars = explode("~", $variablenames); $var = $this->engine->getVariableDescriptive($vars[0]); $click = $this->engine->replaceFills($var->getClickLanguageChange()); } $click = str_replace("'", "", $click); $current = getSurveyLanguage(); $langs = Language::getLanguagesArray(); foreach ($langs as $key => $lang) { if (inArray($lang["value"], $allowed)) { $check = ''; if ($lang["value"] == getSurveyLanguage()) { // $check = ' <span class="glyphicon glyphicon-ok"></span>'; } else { $returnStr .= '<button type="button" class="btn btn-sm btn-warning" onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_LASTACTION => $this->engine->getLastSurveyAction(), SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->primkey, SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => getSurveyMode(), SESSION_PARAM_TEMPLATE => getSurveyTemplate(), SESSION_PARAM_VERSION => getSurveyVersion(), SESSION_PARAM_LANGUAGE => $current, SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWLANGUAGE => $lang["value"]))) . '"; document.getElementById("navigation").value="' . NAVIGATION_LANGUAGE_CHANGE . '"; ' . $click . ' document.getElementById("form").submit(); \'>' . $lang["name"] . $check . '</button>'; } } } return $returnStr; }
function getEntries($setting, $language = "", $mode = "", $version = "") { global $db; if ($language == "") { $language = getSurveyLanguage(); } if ($mode == "") { $mode = getSurveyMode(); } if ($version == "") { $version = getSurveyVersion(); } $arr = array(); $query = "select * from " . Config::dbSurvey() . "_tracks where suid=" . prepareDatabaseString($this->suid) . " and object=" . prepareDatabaseString($this->object) . " and objecttype=" . prepareDatabaseString($this->objecttype) . " and setting='" . prepareDatabaseString($setting) . "' and language=" . prepareDatabaseString($language) . " and mode=" . prepareDatabaseString($mode) . " and version=" . prepareDatabaseString($version) . " order by ts desc"; //echo $query; $res = $db->selectQuery($query); if ($res) { if ($db->getNumberOfRows($res) > 0) { while ($row = $db->getRow($res)) { $arr[] = $row; } } } return $arr; }
function addAction($primkey, $urid, $page, $systemtype = USCIC_SMS, $actiontype = 1) { global $db; $query = 'INSERT INTO ' . Config::dbSurveyData() . '_actions (primkey, sessionid, urid, suid, ipaddress, systemtype, action, actiontype, params, language, mode, version) VALUES ('; if ($primkey != '') { $query .= '\'' . prepareDatabaseString($primkey) . '\', '; } else { $query .= 'NULL, '; } $query .= '\'' . session_id() . '\', '; if ($urid != '') { $query .= '\'' . $urid . '\', '; } else { $query .= 'NULL, '; } if ($systemtype == USCIC_SURVEY) { $query .= getSurvey() . ', '; } else { $query .= 'NULL, '; } $query .= '\'' . prepareDatabaseString(getClientIp()) . '\', '; $query .= $systemtype . ', '; $query .= '\'' . prepareDatabaseString($page) . '\', '; $query .= $actiontype . ', '; if (Config::logParams()) { //log post vars? $query .= ' AES_ENCRYPT(\'' . prepareDatabaseString(serialize($_POST)) . '\', \'' . Config::logActionParamsKey() . '\'), '; } else { $query .= ' NULL, '; } if ($systemtype == USCIC_SURVEY) { $query .= getSurveyLanguage() . ', '; $query .= getSurveyMode() . ', '; $query .= getSurveyVersion(); } else { $query .= 'NULL, NULL, NULL'; } $query .= ")"; $db->executeQuery($query); if (isset($this->LogActions[$primkey])) { //unset so it is read in again.. unset($this->LogActions[$primkey]); } }
function showOutputRouting() { $survey = new Survey($_SESSION['SUID']); $returnStr = $this->showOutputHeader($headers, false); require_once 'papergenerator.php'; $gen = new PaperGenerator($_SESSION['SUID'], getSurveyVersion()); $gen->generate(1); $returnStr .= $gen->getString(); $returnStr .= '</p></div> </div>'; //container and wrap $returnStr .= $this->showFooter(false); return $returnStr; }
function captureScreenshot($result) { global $engine, $survey, $db; $l = getSurveyLanguage(); $m = getSurveyMode(); $v = getSurveyVersion(); $key = $survey->getDataEncryptionKey(); $stateid = $engine->getStateId(); if ($engine->getForward() == true) { $stateid++; } //$screen = gzcompress(preg_replace($i, $ii, $result), 9); $screen = gzcompress($result, 9); if ($stateid == "") { $stateid = 1; } $primkey = $engine->getPrimaryKey(); $bp = new BindParam(); $suid = $engine->getSuid(); $scid = null; $bp->add(MYSQL_BINDING_INTEGER, $scid); $bp->add(MYSQL_BINDING_INTEGER, $suid); $bp->add(MYSQL_BINDING_STRING, $primkey); $bp->add(MYSQL_BINDING_INTEGER, $stateid); $bp->add(MYSQL_BINDING_STRING, $screen); $bp->add(MYSQL_BINDING_INTEGER, $m); $bp->add(MYSQL_BINDING_INTEGER, $l); $bp->add(MYSQL_BINDING_INTEGER, $v); if ($key == "") { $query = "insert into " . Config::dbSurveyData() . "_screendumps(scdid, suid, primkey, stateid, screen, mode, language, version) values (?,?,?,?,?,?,?,?)"; } else { $query = "insert into " . Config::dbSurveyData() . "_screendumps(scdid, suid, primkey, stateid, screen, mode, language, version) values (?,?,?,?,aes_encrypt(?, '" . $key . "'),?,?,?)"; } //echo $query; //print_r($bp->get()); $db->executeBoundQuery($query, $bp->get()); return ""; }
private function storeAnswer($primkey, $variable, $answer, $striptags = true) { global $engine; $localdb = null; if (Config::useTransactions() == true) { global $transdb; $localdb = $transdb; } else { global $db; $localdb = $db; } $dirty = $this->getDirty(); $prim = $primkey; $var = $variable; //$engine->prefixVariableName($variable); $ans = $answer; if ($ans == "" && $ans !== 0) { // preserve '0' as answer $ans = null; } $version = getSurveyVersion(); $language = getSurveyLanguage(); $mode = getSurveyMode(); $suid = getSurvey(); // set session language/mode here if changed through routing! if ($ans != null) { if (strtoupper($variable) == strtoupper(VARIABLE_LANGUAGE)) { $_SESSION['PARAMS'][SESSION_PARAM_LANGUAGE] = $ans; } else { if (strtoupper($variable) == strtoupper(VARIABLE_MODE)) { $_SESSION['PARAMS'][SESSION_PARAM_MODE] = $ans; } else { if (strtoupper($variable) == strtoupper(VARIABLE_VERSION)) { $_SESSION['PARAMS'][SESSION_PARAM_VERSION] = $ans; } else { if (strtoupper($variable) == strtoupper(VARIABLE_TEMPLATE)) { $_SESSION['PARAMS'][SESSION_PARAM_TEMPLATE] = $ans; } } } } } /* set attributes for data record processing in export */ $this->suid = $suid; $this->primkey = $prim; $this->language = $language; $this->mode = $mode; $this->version = $version; $this->ts = date("Y-m-d h:i:s", time()); if (Config::prepareDataQueries() == false) { global $survey; $key = $survey->getDataEncryptionKey(); if ($ans == null && $ans !== 0) { $answer = 'null'; } else { $answer = '"' . prepareDatabaseString($ans, $striptags) . '"'; if ($key != "") { $answer = "aes_encrypt('" . prepareDatabaseString($ans, $striptags) . "', '" . $key . "')"; } } $queryparams = 'suid, primkey, variablename, answer, dirty, version, language, mode'; $queryvalues = prepareDatabaseString($suid); $queryvalues .= ",'" . prepareDatabaseString($prim) . "'"; $queryvalues .= ",'" . prepareDatabaseString($var) . "'"; $queryvalues .= "," . $answer; $queryvalues .= "," . prepareDatabaseString($dirty); $queryvalues .= "," . prepareDatabaseString($version); $queryvalues .= "," . prepareDatabaseString($language); $queryvalues .= "," . prepareDatabaseString($mode); $query = 'REPLACE INTO ' . Config::dbSurveyData() . '_data (' . $queryparams . ') VALUES (' . $queryvalues . ')'; //echo $query; if ($localdb->executeQuery($query)) { $this->variable["answer"] = $ans; // hook for extra storage if (function_exists("storeAnswerExtra")) { storeAnswerExtra($query); } return true; } return false; } else { $bp = new BindParam(); $bp->add(MYSQL_BINDING_STRING, $suid); $bp->add(MYSQL_BINDING_STRING, $prim); $bp->add(MYSQL_BINDING_STRING, $var); $bp->add(MYSQL_BINDING_STRING, $ans); $bp->add(MYSQL_BINDING_INTEGER, $dirty); $bp->add(MYSQL_BINDING_INTEGER, $version); $bp->add(MYSQL_BINDING_INTEGER, $language); $bp->add(MYSQL_BINDING_INTEGER, $mode); global $survey; $key = $survey->getDataEncryptionKey(); $answer = "?"; if ($key != "") { $answer = "aes_encrypt(?, '" . $key . "')"; } $queryparams = 'suid, primkey, variablename, answer, dirty, version, language, mode'; $queryvalues = '?,?,?,' . $answer . ',?,?,?,?'; $query = 'REPLACE INTO ' . Config::dbSurveyData() . '_data (' . $queryparams . ') VALUES (' . $queryvalues . ')'; if ($localdb->executeBoundQuery($query, $bp->get())) { $this->variable["answer"] = $ans; // hook for extra storage if (function_exists("storeAnswerExtra")) { storeAnswerExtra($queryparams, $queryvalues, $bp); } return true; } return false; } }
return $this->importNubis(); case IMPORT_TYPE_MMIC: return $this->importMMIC(); case IMPORT_TYPE_BLAISE: break; } } function importNubis() { $arr = $_FILES[SETTING_IMPORT_TEXT]; if (sizeof($arr) == 0) { return Language::messageImportNoFile(); } $name = $arr["name"]; if (!endsWith($name, EXPORT_FILE_NUBIS)) { return Language::messageImportInvalidFile(); } $str = file_get_contents($arr["tmp_name"]); if ($str == "") { return Language::messageImportInvalidFile(); } $urid = $_SESSION['URID']; $user = new User($urid); if (loadvar(SETTING_IMPORT_AS) == IMPORT_TARGET_ADD) { $surveys = new Surveys(); $this->addtosuid = $surveys->getMaximumSuid() + 1; } else { if (loadvar(SETTING_IMPORT_AS) == IMPORT_TARGET_REPLACE) { $this->addtosuid = 1; /* delete existing content */ $tables = Common::surveyTables(); foreach ($tables as $table) { $query = "delete from " . Config::dbSurvey() . $table; $this->db->executeQuery($query); } /* delete existing data */ $tables = Common::surveyDataTables(); foreach ($tables as $table) { if ($table == "_actions") { $query = "delete from " . Config::dbSurvey() . $table . " where suid != ''"; } else { $query = "delete from " . Config::dbSurvey() . $table; } $this->db->executeQuery($query); } /* delete test data */ $tables = Common::surveyTestDataTables(); foreach ($tables as $table) { if ($table == "_actions") { $query = "delete from " . Config::dbSurvey() . $table . " where suid != ''"; } else { $query = "delete from " . Config::dbSurvey() . $table; } $this->db->executeQuery($query); } } } // add suid and urid $str = str_ireplace(EXPORT_PLACEHOLDER_URID, $urid, $str); $str = str_ireplace(EXPORT_PLACEHOLDER_SUID, $this->addtosuid, $str); $queries = explode("\r\n", $str); $tables = Common::surveyExportTables(); foreach ($queries as $q) { $q = explode(EXPORT_DELIMITER, trim($q)); if (sizeof($q) != 3) { continue; } if (!inArray($q[0], $tables)) { continue; } //echo $q[1]; $fields = sizeof(explode(",", $q[1])); $f = ""; for ($i = 0; $i < $fields; $i++) { if ($f != "") { $f .= ","; } $f .= "?"; } $query = IMPORT_STATEMENT_INSERT . ' ' . Config::dbSurvey() . $q[0] . " (" . $q[1] . ") " . IMPORT_STATEMENT_INSERT_VALUES . " (" . $f . ")"; $bp = new BindParam(); $fields2 = sizeof(explode(",", $q[2])); if ($fields != $fields2) { continue; // mismatch column count and value count } $it = explode(",", $q[2]); for ($i = 0; $i < $fields2; $i++) { $val =& prepareImportString($it[$i]); $bp->add(MYSQL_BINDING_STRING, $val); //echo 'adding: ' . $val . '----'; } //echo print_r($bp->get()) . "<br/>"; $this->db->executeBoundQuery($query, $bp->get()); } // prepare set_time_limit(0); // compile $survey = new Survey($this->addtosuid); $compiler = new Compiler($this->addtosuid, getSurveyVersion($survey)); // sections $sections = $survey->getSections(); foreach ($sections as $section) { $mess = $compiler->generateEngine($section->getSeid()); } $mess = $compiler->generateSections(); $mess = $compiler->generateVariableDescriptives(); $mess = $compiler->generateTypes(); $mess = $compiler->generateGetFills(); $mess = $compiler->generateSetFills(); $mess = $compiler->generateInlineFields(); $mess = $compiler->generateGroups(); $user = new User($_SESSION['URID']); $mods = explode("~", $survey->getAllowedModes());
public function showNavBar() { $returnStr = $this->showCalculator(); //language $rgid = $this->engine->getRgid(); $variablenames = $this->getRealVariables(explode("~", $this->engine->getDisplayed())); $variablenamesfull = $this->engine->getDisplayed(); $template = $this->engine->getTemplate(); $click = ""; if ($template != "") { $group = $this->engine->getGroup($template); $click = $this->engine->replaceFills($group->getClickLanguageChange()); } else { $vars = explode("~", $variablenames); $var = $this->engine->getVariableDescriptive($vars[0]); $click = $this->engine->replaceFills($var->getClickLanguageChange()); } $click = str_replace("'", "", $click); // begin language global $survey; if (getSurveyLanguageAllowChange() == LANGUAGE_CHANGE_RESPONDENT_ALLOWED) { $allowed = explode("~", $survey->getAllowedLanguages(getSurveyMode())); if (sizeof($allowed) > 1) { $returnStr .= '<li class="dropdown">'; $returnStr .= ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Language <b class="caret"></b></a><ul class="dropdown-menu">'; $langs = Language::getLanguagesArray(); //getSurveyLanguages($this->engine->survey); foreach ($langs as $lang) { if (inArray($lang["value"], $allowed)) { $check = ''; if ($lang["value"] == getSurveyLanguage()) { $check = ' <span class="glyphicon glyphicon-ok"></span>'; } $returnStr .= '<li><a href=# onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->engine->getPrimaryKey(), SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => getSurveyMode(), SESSION_PARAM_LANGUAGE => getSurveyLanguage(), SESSION_PARAM_TEMPLATE => getSurveyTemplate(), SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWLANGUAGE => $lang["value"]))) . '"; document.getElementById("navigation").value="' . addslashes(Language::buttonUpdate()) . '"; ' . $click . ' document.getElementById("form").submit(); \'>' . $lang["name"] . $check . '</a></li>'; } } $returnStr .= '</ul></li>'; } //end language } $user = new User($_SESSION['URID']); $returnStr .= '<li class="dropdown"> <a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown">' . $user->getName() . ' <b class="caret"></b></a> <ul class="dropdown-menu"> <li class="dropdown-header">' . $this->engine->primkey . '</li> <li class="dropdown-header">' . $variablenamesfull . '</li>'; //$returnStr .= '<li><a href=# data-toggle="modal" data-target="#calculator">Calculator</a></li>'; $returnStr .= '<li><a href="#" data-toggle="modal" data-target="#calculator"><span class="glyphicon glyphicon-th"></span> ' . Language::linkCalculator() . '</a></li>'; $windowopen = 'window.open(\'tester/' . setSessionParams(array('type' => "2", 'testpage' => 'watch', 'watchurid' => $_SESSION['URID'], 'watchsuid' => $this->engine->getSuid(), 'watchseid' => $this->engine->getSeid(), 'watchmainseid' => $this->engine->getMainSeid(), 'watchrgid' => $rgid, 'watchdisplayed' => $variablenames, 'watchlanguage' => getSurveyLanguage(), 'watchmode' => getSurveyMode(), 'watchversion' => getSurveyVersion(), 'watchprimkey' => $this->engine->getPrimarykey())) . '\', \'popupWindow\', \'width=770,height=650,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-zoom-in"></span> ' . Language::linkWatch() . '</a></li>'; $windowopen = 'window.open(\'tester/' . setSessionParams(array('type' => "2", 'testpage' => 'update', 'watchurid' => $_SESSION['URID'], 'watchsuid' => $this->engine->getSuid(), 'watchseid' => $this->engine->getSeid(), 'watchmainseid' => $this->engine->getMainSeid(), 'watchrgid' => $rgid, 'watchdisplayed' => $variablenames, 'watchlanguage' => getSurveyLanguage(), 'watchmode' => getSurveyMode(), 'watchversion' => getSurveyVersion(), 'watchprimkey' => $this->engine->getPrimarykey())) . '\', \'popupWindow\', \'width=1200,height=650,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-zoom-in"></span> ' . Language::linkUpdate() . '</a></li>'; $first = $this->engine->isFirstState(); if ($first == false || $first == true && $this->engine->getForward() == true) { if ($this->engine->getForward() == true) { $stateid = $this->engine->getStateId() + 1; } else { $stateid = $this->engine->getStateId(); } $windowopen = 'window.open(\'tester/' . setSessionParams(array('type' => "2", 'testpage' => 'jumpback', 'jumpurid' => $_SESSION['URID'], 'jumpsuid' => $this->engine->getSuid(), 'jumpstateid' => $stateid, 'jumpprimkey' => $this->engine->getPrimaryKey())) . '\', \'popupWindow\', \'width=770,height=300,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-arrow-left"></span> ' . Language::linkJumpBack() . '</a></li>'; } $returnStr .= '<li><a href="' . setSessionParams(array('page' => 'interviewer.backfromsms', 'primkey' => $this->engine->primkey, 'suid' => $this->engine->getSuid())) . '&se=' . addslashes(USCIC_SMS) . '"><span class="glyphicon glyphicon-home"></span> ' . Language::linkBackToSMS() . '</a></li> <li class="divider"></li> <li><a href="index.php?rs=1&se=2"><span class="glyphicon glyphicon-log-out"></span> ' . Language::linkLogout() . '</a></li> </ul> </li> </ul> '; $returnStr .= '</div><!--/.nav-collapse --> </div> </div>'; return $returnStr; }
function displayParadataScripts($paradata) { //only for surveys if ($_SESSION['SYSTEM_ENTRY'] != USCIC_SURVEY) { return; } // check config if ($paradata == false) { return; } // http://greensock.com/forums/topic/9059-cross-browser-to-detect-tab-or-window-is-active-so-animations-stay-in-sync-using-html5-visibility-api/ if (!isRegisteredScript("js/TabWindowVisibilityManager.min.js")) { registerScript('js/TabWindowVisibilityManager.min.js'); $returnStr = getScript('js/TabWindowVisibilityManager.min.js'); } if (!isRegisteredScript("js/datetimepicker/moment-min.js")) { registerScript('js/datetimepicker/moment-min.js'); $returnStr .= getScript("js/datetimepicker/moment-min.js"); } //if (!isRegisteredScript("js/zip/lzstring.js")) { // registerScript('js/zip/lzstring.js'); // $returnStr .= '<script type=text/javascript src="js/zip/lzstring.js"></script>'; //} $params = array(POST_PARAM_DEFAULT_LANGUAGE => getDefaultSurveyLanguage(), POST_PARAM_DEFAULT_MODE => getDefaultSurveyMode(), POST_PARAM_RGID => $this->engine->getRgid(), POST_PARAM_LANGUAGE => getSurveyLanguage(), POST_PARAM_MODE => getSurveyMode(), SESSION_PARAM_TEMPLATE => getSurveyTemplate(), POST_PARAM_VERSION => getSurveyVersion(), POST_PARAM_STATEID => $this->engine->getStateId(), POST_PARAM_DISPLAYED => urlencode(serialize($this->engine->getDisplayNumbers())), POST_PARAM_PRIMKEY => $this->engine->getPrimaryKey(), POST_PARAM_SUID => $this->engine->getSuid()); $r = setSessionsParamString($params); $returnStr .= '<script type="text/javascript">'; $str = ' // bind listeners $(document).ready(function(){ '; if (Config::logParadataMouseMovement()) { $str .= '$("html").mousemove(function(event) { window.mousex = event.pageX; window.mousey = event.pageY; });'; } $str .= ' $("html").click(function(event){ var name = ""; if (event.target.name) { name = event.target.name; } logParadata("MC:"+event.pageX+":"+event.pageY+":"+event.which+":"+name); }); $("html").keyup(function(event){ var name = ""; if (event.target.name) { name = event.target.name; } logParadata("KE:"+event.keyCode+":"+name); }); });'; if (Config::logParadataMouseMovement()) { $str .= ' window.mousex = 0; window.mousey = 0; window.lastx = window.mousex; window.lasty = window.mousey; function mousemov() { if (window.lastx != window.mousex || window.lasty != window.mousey) { logParadata("MM:"+window.mousex+":"+window.mousey); window.lastx = window.mousex; window.lasty = window.mousey; } } window.onload=setInterval(mousemov, ' . Config::logParadataMouseMovementInterval() . '); // capture mouse movement every 5 seconds '; } $str .= ' // compress function function compress(string) { return string; //return LZString.compressToUTF16(string); } // function to log paradata function logParadata(para) { $("#pid").val($("#pid").val() + "||" + compress(para + "=" + moment())); //alert($("#pid").val().length); // if length exceeds limit //if ($("#pid").val().length > 1024) { //alert($("#pid").val().length); //sendParadata($("#pid").val()); // send to server //$("#pid").val(""); // reset //} } // function to send paradata to the server function sendParadata(paradata) { $.ajax({ type: "POST", url: "ajax/index.php", data: {ajaxr: "' . $r . '", p: "storeparadata", ' . POST_PARAM_PARADATA . ': paradata}, async: true }); } var firedin = false; var firedout = false; $(window).TabWindowVisibilityManager({ onFocusCallback: function(){ if (firedin == false) { //document.title="visible"; logParadata("FI:"); } firedin = true; firedout = false; }, onBlurCallback: function(){ if (firedout == false) { //document.title="invisible"; logParadata("FO:"); } firedout = true; firedin = false; } });'; $returnStr .= minifyScript($str); $returnStr .= '</script>'; return $returnStr; }
function showEditVariableRes($suid, $vsid) { $survey = new Survey($suid); $var = $survey->getVariableDescriptive($vsid); $texttype = loadvar("texttype"); $value = loadvarAllowHTML("text"); switch ($texttype) { case SETTING_QUESTION: $var->setQuestion($value); break; case SETTING_PRETEXT: $var->setPretext($value); break; case SETTING_POSTTEXT: $var->setPostText($value); break; case SETTING_OPTIONS: $code = loadvar("answercode"); $current = explode("\r\n", $var->getOptionsText()); foreach ($current as $k => $c) { if (startsWith($c, $code . " ")) { $current[$k] = $code . ' ' . $value; break; } } $var->setOptionsText(implode("\r\n", $current)); default: break; } $var->save(); $compiler = new Compiler($suid, getSurveyVersion($survey)); $mess = $compiler->generateVariableDescriptives(array($var)); $mess = $compiler->generateGetFills(array($var)); $mess = $compiler->generateInlineFields(array($var)); }
public function showLoginDirect($primkey, $message) { global $survey, $engine; require_once "display/templates/displayquestion_" . $survey->getTemplate() . ".php"; $returnStr = $this->showHeader($survey->getTitle(), '<link href="bootstrap/css/sticky-footer-navbar.min.css" rel="stylesheet">'); if (true) { if ($primkey != '') { $returnStr .= '<form method="post" id="startform">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_PRIMKEY . '" value="' . decryptC($primkey, Config::directLoginKey()) . '">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_SUID . '" value="' . $survey->getSuid() . '">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_LANGUAGE . '" value="' . loadvar(POST_PARAM_LANGUAGE) . '">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_PRELOAD . '" value="' . loadvar(POST_PARAM_PRELOAD) . '">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_MODE . '" value="' . loadvar(POST_PARAM_MODE) . '">'; $returnStr .= '<input type=hidden name="' . POST_PARAM_URID . '" value="' . loadvar(POST_PARAM_URID) . '">'; if (loadvar(POST_PARAM_URID) != '') { $_SESSION['URID'] = loadvar(POST_PARAM_URID); } $returnStr .= '<div style="display: none;"><input type=submit></div>'; $returnStr .= '</form>'; $returnStr .= '<script>'; $returnStr .= '$(document).ready(function(){ $("#startform").submit(); }); '; $returnStr .= '</script>'; } else { $returnStr .= '<div id="wrap">'; $returnStr .= '<div class="container"><p>'; $engine = loadEngine($survey->getSuid(), $primkey, '', getSurveyVersion(), getBaseSectionSeid($survey->getSuid())); $do = $engine->getDisplayObject(); $returnStr .= $do->showDirectAccessOnlySurvey(); //$returnStr .= Language::errorDirectLogin(); } } else { $returnStr .= '<div id="wrap">'; $returnStr .= '<div class="container"><p>'; //$returnStr .= Language::errorDirectLogin(); $engine = loadEngine($survey->getSuid(), $primkey, '', getSurveyVersion(), getBaseSectionSeid($survey->getSuid())); $do = $engine->getDisplayObject(); $returnStr .= $do->showDirectAccessOnlySurvey(); } /* footer */ $returnStr .= $this->showFooter(); return $returnStr; }
function __construct() { $primkey = getFromSessionParams('watchprimkey'); $seid = getSurveySection(getFromSessionParams('watchsuid'), $primkey); $this->engine = loadEngine(getFromSessionParams('watchsuid'), $primkey, "", getSurveyVersion(), $seid); }
function showCompileRes() { /* update last page */ $_SESSION['LASTPAGE'] = substr($_SESSION['LASTPAGE'], 0, strripos($_SESSION['LASTPAGE'], "res")); $displaySysAdmin = new DisplaySysAdmin(); $compile = loadvar("compile"); $components = loadvar("components"); if ($compile == "") { return $displaySysAdmin->showCompile($displaySysAdmin->displayWarning(Language::messageToolsCompileSelectSurvey())); } if ($components == "") { return $displaySysAdmin->showCompile($displaySysAdmin->displayWarning(Language::messageToolsCompileSelectComponent())); } set_time_limit(0); $messages = array(); foreach ($compile as $comp) { $survey = new Survey($comp); $compiler = new Compiler($comp, getSurveyVersion($survey)); if (inArray(SURVEY_COMPONENT_SECTION, $components)) { $sections = $survey->getSections(); foreach ($sections as $section) { $mess = $compiler->generateEngine($section->getSeid()); if (sizeof($mess) > 0) { $messages[] = $mess; } $mess = $compiler->generateProgressBar($section->getSeid()); if (sizeof($mess) > 0) { $messages[] = $mess; } } $mess = $compiler->generateSections(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_VARIABLE, $components)) { $mess = $compiler->generateVariableDescriptives(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_TYPE, $components)) { $mess = $compiler->generateTypes(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_SETTING, $components)) { $mess = $compiler->generateSurveySettings(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_FILL, $components)) { $mess = $compiler->generateGetFills(); if (sizeof($mess) > 0) { $messages[] = $mess; } $mess = $compiler->generateSetFills(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_INLINEFIELDS, $components)) { $mess = $compiler->generateInlineFields(); if (sizeof($mess) > 0) { $messages[] = $mess; } } if (inArray(SURVEY_COMPONENT_GROUP, $components)) { $mess = $compiler->generateGroups(); if (sizeof($mess) > 0) { $messages[] = $mess; } } } if (sizeof($messages) == 0) { $content = $displaySysAdmin->displaySuccess(Language::messageToolsCompileOk()); } else { $content = $displaySysAdmin->displayError(Language::messageToolsCompileNotOk()); } return $displaySysAdmin->showCompile($content); }
function showMode() { global $survey; $allowed = explode("~", $survey->getAllowedModes()); if (sizeof($allowed) == 1) { return ""; } $rgid = $this->engine->getRgid(); $variablenames = $this->getRealVariables(explode("~", $this->engine->getDisplayed())); $template = $this->engine->getTemplate(); $click = ""; if ($template != "") { $group = $this->engine->getGroup($template); $click = $this->engine->replaceFills($group->getClickModeChange()); } else { $vars = explode("~", $variablenames); $var = $this->engine->getVariableDescriptive($vars[0]); $click = $this->engine->replaceFills($var->getClickModeChange()); } $click = str_replace("'", "", $click); $returnStr = '<div class="btn-group"> <button type="button" class="btn btn-default dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"> ' . Language::surveyChangeMode() . ' <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu">'; $current = getSurveyMode(); $modes = Common::surveyModes(); foreach ($modes as $key => $mode) { if (inArray($key, $allowed)) { $check = ''; if ($key == $current) { $check = ' <span class="glyphicon glyphicon-ok"></span>'; } $returnStr .= '<li><a href=# onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_LASTACTION => $this->engine->getLastSurveyAction(), SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->primkey, SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => $current, SESSION_PARAM_VERSION => getSurveyVersion(), SESSION_PARAM_LANGUAGE => getSurveyLanguage(), SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWMODE => $key))) . '"; document.getElementById("navigation").value="' . NAVIGATION_MODE_CHANGE . '"; ' . $click . ' document.getElementById("form").submit(); \'>' . $mode . $check . '</a></li>'; } } $returnStr .= ' </ul> </div>'; return $returnStr; }
function surveyEntry() { global $engine; if ($this->checkDateTime() == false) { /* get whatever the language is (either post or default) and use it */ $l = getSurveyLanguage(); if (file_exists("language/language" . getSurveyLanguagePostFix($l) . ".php")) { require_once 'language' . getSurveyLanguagePostFix($l) . '.php'; // language } else { require_once 'language_en.php'; // fall back on english language file } $login = new Login(session_id()); return $login->getClosedScreen(); } $logactions = new LogActions(); $nosessionactions = $logactions->getNumberOfSurveyActionsBySession($this->phpid, USCIC_SURVEY); /* no entry yet, then ask for prim_key in login screen */ if ($nosessionactions == 0 || loadvarSurvey(POST_PARAM_NEW_PRIMKEY) == '1') { //no entry yet: ask for prim_key! if (loadvarSurvey(POST_PARAM_NEW_PRIMKEY) == '1') { $logactions->deleteLoggedInSurveySession($this->phpid); } /* get whatever the language is (either post or default) and use it */ $l = getSurveyLanguage(); if (file_exists("language/language" . getSurveyLanguagePostFix($l) . ".php")) { require_once 'language' . getSurveyLanguagePostFix($l) . '.php'; // language } else { require_once 'language_en.php'; // fall back on english language file } $logactions->addAction('', '', "loginstart", USCIC_SURVEY, 1); $login = new Login($this->phpid); return $login->getLoginScreen(); } else { //entry: is this person logged in? $loggedin = $logactions->getLoggedInSurveySession($this->phpid); // gets the last logged in action /* no prim_key assigned to this sessionid. Assign if given (and check for pwd etc??)! */ if ($loggedin["count"] == 0) { /* we don't have active session, so take the template we can get */ global $survey; require_once "display/templates/displayquestion_" . getSurveyTemplate() . ".php"; // we don't have an active session, so fall back to whatever was passed along as language in post OR is the default language $l = getSurveyLanguage(); if (file_exists("language/language" . getSurveyLanguagePostFix($l) . ".php")) { //echo 'well done'; require_once 'language' . getSurveyLanguagePostFix($l) . '.php'; // language } else { require_once 'language_en.php'; // fall back on english language file } $primkey = loadvarSurvey(POST_PARAM_PRIMKEY); $_SESSION['PRIMKEY'] = $primkey; if ($primkey != '' && strlen($primkey) < 20) { // make sure primkey is not encrypted! //check!!!!!! $login = new Login($this->phpid); if ($login->checkAccess()) { $primkey = $_SESSION['PRIMKEY']; $logactions->addAction($primkey, '', "loggedin", USCIC_SURVEY, 1); // pass along primkey to load correct engine! $engine = loadEngine(getSurvey(), $primkey, $this->phpid, getSurveyVersion(), getSurveySection(getSurvey(), $primkey)); $engine->setFirstForm(true); return $engine->getNextQuestion(); } else { // incorrect login..start new session endSession(); session_start(); session_regenerate_id(true); $logactions->addAction('', '', "loginempty", USCIC_SURVEY, 1); $login = new Login(session_id()); global $survey; return $login->getLoginScreen($survey->getLoginError()); } } else { $logactions->addAction('', '', "loginempty", USCIC_SURVEY, 1); $login = new Login($this->phpid); global $survey; if ($survey->getAccessType() == LOGIN_ANONYMOUS) { return $login->getLoginScreen(Language::messageEnterPrimKey()); } else { if ($survey->getAccessType() == LOGIN_LOGINCODE) { return $login->getLoginScreen($survey->getLoginError()); } else { return $login->getLoginScreen(Language::messageEnterPrimKeyDirectAccess()); } } } } else { //continue interview! EXTRA CHECK!!! /* update survey info with what we know from the last session action */ setSurvey($loggedin["suid"]); /* include survey template now that we know which survey we are in */ global $survey; require_once "display/templates/displayquestion_" . getSurveyTemplate() . ".php"; /* update interview mode with what we know from the last session action * IF we are not changing the interview mode right now */ if (isset($_POST['navigation']) && $_POST['navigation'] != NAVIGATION_MODE_CHANGE && $survey->getReentryMode() == MODE_REENTRY_YES) { setSurveyMode($loggedin["mode"]); } /* update language with what we know from the last session action * IF we are not changing the language right now */ if (isset($_POST['navigation']) && $_POST['navigation'] != NAVIGATION_LANGUAGE_CHANGE && $survey->getReentryLanguage(getSurveyMode()) == LANGUAGE_REENTRY_YES) { setSurveyLanguage($loggedin["language"]); } /* update version with what we know from the last session action */ setSurveyVersion($loggedin["version"]); // include language file $l = getSurveyLanguage(); //echo 'NOW: ' . $l; if (file_exists("language/language" . getSurveyLanguagePostFix($l) . ".php")) { //echo 'well done'; require_once 'language' . getSurveyLanguagePostFix($l) . '.php'; // language } else { require_once 'language_en.php'; // fall back on english language file } // pass along primkey to load correct engine! $engine = loadEngine(getSurvey(), $loggedin["primkey"], $this->phpid, getSurveyVersion(), getSurveySection(getSurvey(), $loggedin["primkey"])); /* handle button click */ return $engine->getNextQuestion(); } } }
function showXiCompileRes($content = "") { $returnStr = $this->showToolsHeader(Language::headerToolsXiCompiler()); $returnStr .= $content; require_once "xicompiler.php"; set_time_limit(0); $compile = loadvar("compile"); $_SESSION['PARAMETER_RETRIEVAL'] = PARAMETER_SURVEY_RETRIEVAL; $xi = new XiCompiler($compile, loadvar("ximode"), getSurveyVersion()); $xi->generateTypes(); $xi->generateVariableDescriptives(); $seid = getBaseSectionSeid($_SESSION["SUID"]); $xi->generateRouting($seid); $_SESSION['PARAMETER_RETRIEVAL'] = PARAMETER_ADMIN_RETRIEVAL; $returnStr .= '<div> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#vars" aria-controls="vars" role="tab" data-toggle="tab">' . Language::linkVariables() . '</a></li> <li role="presentation" class=""><a href="#types" aria-controls="types" role="tab" data-toggle="tab">' . Language::linkTypes() . '</a></li> <li role="presentation" class=""><a href="#routing" aria-controls="routing" role="tab" data-toggle="tab">' . Language::linkRouting() . '</a></li> </ul> <div class="tab-content">'; // variables $returnStr .= "<div role='tabpanel' class='tab-pane active' id='vars'><textarea class='form-control' name=variablestext id=variablestext style='width: min-width 500px; width: 100%; min-height: 800px; height: 100%'>"; $returnStr .= "<?php\r\n\r\n" . implode("\r\n", $xi->getVariableDescriptivesOutput()) . "\r\n\r\n?>"; $returnStr .= "</textarea></div>"; // types $returnStr .= "<div role='tabpanel' class='tab-pane' id='types'><textarea class='form-control' name=typestext id=typestext style='width: min-width 500px; width: 100%; min-height: 800px; height: 100%'>"; $returnStr .= "<?php\r\n\r\n" . implode("\r\n", $xi->getTypesOutput()) . "\r\n\r\n?>"; $returnStr .= "</textarea></div>"; // routing $returnStr .= "<div role='tabpanel' class='tab-pane' id='routing'><textarea class='form-control' name=routingtext id=routingtext style='width: min-width 500px; width: 100%; min-height: 800px; height: 100%'>"; $returnStr .= "<?php\r\n\r\n" . implode("", $xi->getRoutingOutput($seid)) . "\r\n\r\n?>"; $returnStr .= "</textarea></div>"; $returnStr .= "</div></div>"; $returnStr .= '</p></div> </div>'; //container and wrap $returnStr .= $this->showBottomBar(); /*$returnStr .= $this->getCodeMirror(); $returnStr .= '<script src="js/codemirror/mode/php/php.js"></script>'; $returnStr .= '<script type="text/javascript"> $(document).ready(function() { //var editor1 = CodeMirror.fromTextArea(document.getElementById("variablestext"), {lineNumbers: true, mode: "application/x-php"}); //var editor2 = CodeMirror.fromTextArea(document.getElementById("typestext"), {lineNumbers: true, mode: "application/x-php"}); var editor3 = CodeMirror.fromTextArea(document.getElementById("routingtext"), {lineNumbers: true, mode: "application/x-httpd-php"}); }); </script>'; //var editor = CodeMirror.fromTextArea(document.getElementById("variables"), lineNumbers: true, matchBrackets: true, mode: "application/x-httpd-php", indentUnit: 4, indentWithTabs: true}); */ $returnStr .= $this->showFooter(false); return $returnStr; }
function getCompiledCode() { global $db, $survey; $q = "select engine from " . Config::dbSurvey() . "_engines where suid=" . prepareDatabaseString($this->getSuid()) . " and seid=" . prepareDatabaseString($this->getSeid()) . " and version=" . prepareDatabaseString(getSurveyVersion($survey)); $r = $db->selectQuery($q); if ($db->getNumberOfRows($r) > 0) { $row = $db->getRow($r); return unserialize(gzuncompress($row["engine"])); } return ""; }
} function loadData($data) { if ($data != "") { $this->data = unserialize(gzuncompress($data)); } } function saveState() { global $db, $survey; $key = $survey->getDataEncryptionKey(); $data = "?"; $assignments = "?"; $fills = "?"; if ($key != "") { $data = "aes_encrypt(?, '" . $key . "')"; $assignments = "aes_encrypt(?, '" . $key . "')"; $fills = "aes_encrypt(?, '" . $key . "')"; } $query = "replace into " . Config::dbSurveyData() . "_states (suid, mainseid, seid, parentseid, parentrgid, prefix, parentprefix, stateid, primkey, rgid, displayed, looprgid, loopstring, looplastaction, whilergid, whilelastaction, template, assigned, data, assignments, fills, subdisplays, inlinefields, language, mode, version) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,{$data},{$assignments},{$fills},?,?,?,?,?)"; $bp = new BindParam(); $bp->add(MYSQL_BINDING_INTEGER, $this->suid); $bp->add(MYSQL_BINDING_INTEGER, $this->mainseid); $bp->add(MYSQL_BINDING_INTEGER, $this->seid); $bp->add(MYSQL_BINDING_INTEGER, $this->parentseid); $bp->add(MYSQL_BINDING_INTEGER, $this->parentrgid); $bp->add(MYSQL_BINDING_STRING, $this->prefix); $bp->add(MYSQL_BINDING_STRING, $this->parentprefix); $bp->add(MYSQL_BINDING_INTEGER, $this->stateid); $bp->add(MYSQL_BINDING_STRING, $this->primkey); $bp->add(MYSQL_BINDING_INTEGER, $this->rgid); $bp->add(MYSQL_BINDING_STRING, $this->displayed); $bp->add(MYSQL_BINDING_INTEGER, $this->looprgid); $bp->add(MYSQL_BINDING_STRING, $this->loopstring); if ($this->leftoff == null) { $this->leftoff = ""; } $bp->add(MYSQL_BINDING_STRING, $this->leftoff); $bp->add(MYSQL_BINDING_INTEGER, $this->whilergid); if ($this->whileleftoff == null) { $this->whileleftoff = ""; } $bp->add(MYSQL_BINDING_STRING, $this->whileleftoff); $bp->add(MYSQL_BINDING_STRING, $this->template); $assigned = implode("~", $this->getAssigned()); $bp->add(MYSQL_BINDING_STRING, $assigned); $data = gzcompress($this->saveData()); $assignments = gzcompress($this->saveAssignments()); $fills = gzcompress($this->saveFillText()); $subdisplays = gzcompress($this->saveSubDisplays()); $inlinefields = gzcompress($this->saveInlineFields()); $bp->add(MYSQL_BINDING_STRING, $data); $bp->add(MYSQL_BINDING_STRING, $assignments); $bp->add(MYSQL_BINDING_STRING, $fills); $bp->add(MYSQL_BINDING_STRING, $subdisplays); $bp->add(MYSQL_BINDING_STRING, $inlinefields); $l = getSurveyLanguage(); $m = getSurveyMode();
public function showNavBar() { $returnStr = $this->getHeader(); //language $rgid = $this->engine->getRgid(); $variablenames = $this->getRealVariables(explode("~", $this->engine->getDisplayed())); $variablenamesfull = $this->engine->getDisplayed(); $template = $this->engine->getTemplate(); $click = ""; if ($template != "") { $group = $this->engine->getGroup($template); $click = $this->engine->replaceFills($group->getClickLanguageChange()); } else { $vars = explode("~", $variablenames); $var = $this->engine->getVariableDescriptive($vars[0]); $click = $this->engine->replaceFills($var->getClickLanguageChange()); } $click = str_replace("'", "", $click); $clickmode = ""; if ($template != "") { $group = $this->engine->getGroup($template); $clickmode = $this->engine->replaceFills($group->getClickModeChange()); } else { $vars = explode("~", $variablenames); $var = $this->engine->getVariableDescriptive($vars[0]); $clickmode = $this->engine->replaceFills($var->getClickModeChange()); } $clickmode = str_replace("'", "", $clickmode); // begin language global $survey; $user = new User($_SESSION['URID']); $allowedmodes = $user->getModes(); $allowedlanguages = explode("~", $user->getLanguages(getSurvey(), getSurveyMode())); $default = $survey->getDefaultLanguage(); $ut = "sysadmin"; if ($user->getUserType() == USER_TRANSLATOR) { $ut = "translator"; if (!inArray($default, $allowedlanguages)) { $allowedlanguages[] = $default; } } else { if ($user->GetUserType() == USER_TESTER) { $ut = "tester"; } } if (getSurveyModeAllowChange() == MODE_CHANGE_RESPONDENT_ALLOWED) { //$allowed = explode("~", $survey->getAllowedModes()); if (sizeof($allowedmodes) > 1) { $template = $this->engine->getTemplate(); $returnStr .= '<li class="dropdown">'; $returnStr .= ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Mode <b class="caret"></b></a>'; $returnStr .= '<ul class="dropdown-menu" role="menu">'; $current = getSurveyMode(); $modes = Common::surveyModes(); foreach ($modes as $key => $mode) { if (inArray($key, $allowedmodes)) { $check = ''; if ($key == $current) { $check = ' <span class="glyphicon glyphicon-ok"></span>'; } //$returnStr .= '<li><a href=# onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_LASTACTION => $this->engine->getLastSurveyAction(), SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->primkey, SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => $current, SESSION_PARAM_VERSION => getSurveyVersion(), SESSION_PARAM_LANGUAGE => getSurveyLanguage(), SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWMODE => $key))) . '"; document.getElementById("navigation").value="' . NAVIGATION_MODE_CHANGE . '"; $("#form").submit(); \'>' . $mode . $check . '</a></li>'; $returnStr .= '<li><a href=# onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->engine->getPrimaryKey(), SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => getSurveyMode(), SESSION_PARAM_LANGUAGE => getSurveyLanguage(), SESSION_PARAM_TEMPLATE => getSurveyTemplate(), SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWMODE => $key))) . '"; document.getElementById("navigation").value="' . addslashes(Language::buttonUpdate()) . '"; ' . $clickmode . ' document.getElementById("form").submit(); \'>' . $mode . $check . '</a></li>'; } } $returnStr .= '</ul></li>'; } } if (getSurveyLanguageAllowChange() == LANGUAGE_CHANGE_RESPONDENT_ALLOWED) { //$allowed = explode("~", $survey->getAllowedLanguages(getSurveyMode())); if (sizeof($allowedlanguages) > 1) { $returnStr .= '<li class="dropdown">'; $returnStr .= ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Language <b class="caret"></b></a><ul class="dropdown-menu">'; $langs = Language::getLanguagesArray(); //getSurveyLanguages($this->engine->survey); foreach ($langs as $lang) { if (inArray($lang["value"], $allowedlanguages)) { $check = ''; if ($lang["value"] == getSurveyLanguage()) { $check = ' <span class="glyphicon glyphicon-ok"></span>'; } $returnStr .= '<li><a href=# onclick=\'document.getElementById("r").value="' . setSessionsParamString(array_merge(array(SESSION_PARAM_SURVEY => $survey->getSuid(), SESSION_PARAM_PRIMKEY => $this->engine->getPrimaryKey(), SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_GROUP => $template, SESSION_PARAM_MODE => getSurveyMode(), SESSION_PARAM_LANGUAGE => getSurveyLanguage(), SESSION_PARAM_TEMPLATE => getSurveyTemplate(), SESSION_PARAM_TIMESTAMP => time(), SESSION_PARAM_SEID => $this->engine->getSeid(), SESSION_PARAM_MAINSEID => $this->engine->getMainSeid()), array(SESSION_PARAM_NEWLANGUAGE => $lang["value"]))) . '"; document.getElementById("navigation").value="' . addslashes(Language::buttonUpdate()) . '"; ' . $click . ' document.getElementById("form").submit(); \'>' . $lang["name"] . $check . '</a></li>'; } } $returnStr .= '</ul></li>'; } //end language } $user = new User($_SESSION['URID']); $returnStr .= '<li class="dropdown"> <a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown">' . $user->getName() . ' <b class="caret"></b></a> <ul class="dropdown-menu"> <li class="dropdown-header">' . $this->engine->getPrimaryKey() . '</li> <li class="dropdown-header">' . $variablenamesfull . '</li>'; $windowopen = 'window.open(\'tester/' . setSessionParams(array('reporturid' => $_SESSION['URID'], 'testpage' => 'report', 'reportsuid' => $this->engine->getSuid(), 'reportseid' => $this->engine->getSeid(), 'reportmainseid' => $this->engine->getMainSeid(), 'reportrgid' => $rgid, 'reportdisplayed' => $variablenames, 'reportlanguage' => getSurveyLanguage(), 'reportmode' => getSurveyMode(), 'reportversion' => getSurveyVersion(), 'reportprimkey' => $this->engine->getPrimarykey())) . '\', \'popupWindow\', \'width=770,height=500,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-remove-sign"></span> ' . Language::linkReportProblem() . '</a></li>'; $windowopen = 'window.open(\'tester/' . setSessionParams(array('testpage' => 'watch', 'watchurid' => $_SESSION['URID'], 'watchsuid' => $this->engine->getSuid(), 'watchseid' => $this->engine->getSeid(), 'watchmainseid' => $this->engine->getMainSeid(), 'watchrgid' => $rgid, 'watchdisplayed' => $variablenames, 'watchlanguage' => getSurveyLanguage(), 'watchmode' => getSurveyMode(), 'watchversion' => getSurveyVersion(), 'watchprimkey' => $this->engine->getPrimarykey())) . '\', \'popupWindow\', \'width=770,height=650,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-zoom-in"></span> ' . Language::linkWatch() . '</a></li>'; $first = $this->engine->isFirstState(); if ($first == false || $first == true && $this->engine->getForward() == true) { if ($this->engine->getForward() == true) { $stateid = $this->engine->getStateId() + 1; } else { $stateid = $this->engine->getStateId(); } $windowopen = 'window.open(\'tester/' . setSessionParams(array('testpage' => 'jumpback', 'jumpurid' => $_SESSION['URID'], 'jumpsuid' => $this->engine->getSuid(), 'jumpstateid' => $stateid, 'jumpprimkey' => $this->engine->getPrimaryKey())) . '\', \'popupWindow\', \'width=770,height=300,scrollbars=yes,top=100,left=100\'); return false;'; $javascript = ' onclick="' . $windowopen . '"'; $returnStr .= '<li><a style="cursor: pointer;" ' . $javascript . '><span class="glyphicon glyphicon-arrow-left"></span> ' . Language::linkJumpBack() . '</a></li>'; } $returnStr .= '<li><a href="' . setSessionParams(array('page' => $ut . '.tools.test', 'suid' => $this->engine->getSuid())) . '&se=' . addslashes(USCIC_SMS) . '"><span class="glyphicon glyphicon-home"></span> ' . Language::linkBackToNubis() . '</a></li> <li class="divider"></li> <li><a href="index.php?rs=1&se=2"><span class="glyphicon glyphicon-log-out"></span> ' . Language::linkLogout() . '</a></li> </ul> </li> </ul> '; $returnStr .= '</div><!--/.nav-collapse --> </div> </div>'; return $returnStr; }
function generateAnswer($var, $queryobject) { $variable = $var->getName(); if ($variable == VARIABLE_LANGUAGE) { if (getSurveyLanguageAllowChange() == LANGUAGE_CHANGE_PROGRAMMATIC_ALLOWED) { $allowed = explode("~", $this->survey->getAllowedLanguages(getSurveyMode())); if (sizeof($allowed) > 1) { $rand = mt_rand(0, sizeof($allowed)); return $allowed[$rand]; } } return getSurveyLanguage(); } if ($variable == VARIABLE_MODE) { if (getSurveyModeAllowChange() == MODE_CHANGE_PROGRAMMATIC_ALLOWED) { $allowed = explode("~", $this->survey->getAllowedModes()); if (sizeof($allowed) > 1) { $rand = mt_rand(0, sizeof($allowed)); return $allowed[$rand]; } } return getSurveyMode(); } if ($variable == VARIABLE_VERSION) { return getSurveyVersion(); } // check for error options $noanswer = array(); if ($var->getIfEmpty() != IF_EMPTY_NOTALLOW) { $noanswer[] = ""; } $allowerror = $var->getIfError() != IF_ERROR_NOTALLOW; // check for dk/rf/na if ($queryobject->getShowDKButton() == BUTTON_YES) { $noanswer[] = ANSWER_DK; } if ($queryobject->getShowRFButton() == BUTTON_YES) { $noanswer[] = ANSWER_RF; } if ($queryobject->getShowNAButton() == BUTTON_YES) { $noanswer[] = ANSWER_NA; } // no answer is an option, then do a random probe if (sizeof($noanswer) > 0) { // 1/50 chance for an empty answer if (mt_rand(1, 50) == 25) { return $noanswer[mt_rand(0, sizeof($noanswer))]; // return a no answer option } } // we return a non-empty answer $answertype = $var->getAnswerType(); switch ($answertype) { case ANSWER_TYPE_INTEGER: return mt_rand(0, PHP_INT_MAX); case ANSWER_TYPE_DOUBLE: return mt_rand(0, PHP_INT_MAX); case ANSWER_TYPE_RANGE: $min = $this->getFill($variable, $var, SETTING_MINIMUM_RANGE); if ($min == "") { $min = 0; } $max = $this->getFill($variable, $var, SETTING_MAXIMUM_RANGE); if ($max == "") { $max = PHP_INT_MAX; } $others = explode(",", $this->getFill($variable, $var, SETTING_OTHER_RANGE)); $r = mt_rand(1, 50); if (sizeof($others) > 0 && $r == 50) { $opt = array(); foreach ($others as $o) { if (is_numeric($o)) { $opt[] = $o; } } if (sizeof($opt) > 0) { return $opt[mt_rand(0, sizeof($opt))]; } else { return mt_rand($min, $max); } } else { return mt_rand($min, $max); } case ANSWER_TYPE_SLIDER: $min = $this->getFill($variable, $var, SETTING_MINIMUM_RANGE); if ($min == "") { $min = 0; } $max = $this->getFill($variable, $var, SETTING_MAXIMUM_RANGE); if ($max == "") { $max = PHP_INT_MAX; } return mt_rand($min, $max); case ANSWER_TYPE_STRING: $min = $this->getFill($variable, $var, SETTING_MINIMUM_LENGTH); if ($min == "") { $min = 5; } $max = $this->getFill($variable, $var, SETTING_MAXIMUM_LENGTH); if ($max == "") { $max = PHP_INT_MAX; } return $this->generateRandomText($min); case ANSWER_TYPE_OPEN: $min = $this->getFill($variable, $var, SETTING_MINIMUM_LENGTH); if ($min == "") { $min = 5; } $max = $this->getFill($variable, $var, SETTING_MAXIMUM_LENGTH); if ($max == "") { $max = PHP_INT_MAX; } return $this->generateRandomText($min); case ANSWER_TYPE_DROPDOWN: /* fall through */ /* fall through */ case ANSWER_TYPE_ENUMERATED: return $this->generateRandomEnumerated($variable, $var); case ANSWER_TYPE_MULTIDROPDOWN: /* fall through */ /* fall through */ case ANSWER_TYPE_SETOFENUMERATED: return $this->generateRandomSetOfEnumerated($variable, $var); case ANSWER_TYPE_DATE: return date("Y-m-d", $this->generateRandomDateTime($variable, $var)); case ANSWER_TYPE_TIME: return $this->generateRandomDateTime($variable, $var); case ANSWER_TYPE_DATETIME: return date("Y-m-d H:i:s", $this->generateRandomDateTime($variable, $var)); case ANSWER_TYPE_CUSTOM: return "1"; case ANSWER_TYPE_SECTION: /* fall through */ /* fall through */ case ANSWER_TYPE_NONE: return ""; // should not happen, but ok // should not happen, but ok default: return ""; } }
function showTranslateGroupAssistanceRes() { $displayTranslator = new DisplayTranslator(); $survey = new Survey($_SESSION['SUID']); $gid = getFromSessionParams('gid'); $group = $survey->getGroup($gid); $_SESSION['GID'] = $gid; $group->setEmptyMessage(loadvarAllowHTML(SETTING_EMPTY_MESSAGE)); $group->setErrorMessageExactRequired(loadvarAllowHTML(SETTING_ERROR_MESSAGE_EXACT_REQUIRED)); $group->setErrorMessageMinimumRequired(loadvarAllowHTML(SETTING_ERROR_MESSAGE_MINIMUM_REQUIRED)); $group->setErrorMessageMaximumRequired(loadvarAllowHTML(SETTING_ERROR_MESSAGE_MAXIMUM_REQUIRED)); $group->setErrorMessageExclusive(loadvarAllowHTML(SETTING_ERROR_MESSAGE_EXCLUSIVE)); $group->setErrorMessageInclusive(loadvarAllowHTML(SETTING_ERROR_MESSAGE_INCLUSIVE)); $group->SetErrorMessageUniqueRequired(loadvarAllowHTML(SETTING_ERROR_MESSAGE_UNIQUE_REQUIRED)); $content = $displayTranslator->displaySuccess(Language::messageGroupChanged($group->getName())); $group->save(); /* compile */ $compiler = new Compiler($_SESSION['SUID'], getSurveyVersion($survey)); $mess = $compiler->generateGroups(array($group)); $mess = $compiler->generateGetFillsGroups(array($group)); /* update last page */ $_SESSION['LASTPAGE'] = substr($_SESSION['LASTPAGE'], 0, strripos($_SESSION['LASTPAGE'], "res")); /* return result */ return $displayTranslator->showTranslateGroup($_SESSION['GID'], $content); }