Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 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]);
     }
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
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 "";
}
Exemplo n.º 6
0
 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;
     }
 }
Exemplo n.º 7
0
             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());
Exemplo n.º 8
0
    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;
    }
Exemplo n.º 9
0
    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;
    }
Exemplo n.º 10
0
 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));
 }
Exemplo n.º 11
0
 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;
 }
Exemplo n.º 12
0
 function __construct()
 {
     $primkey = getFromSessionParams('watchprimkey');
     $seid = getSurveySection(getFromSessionParams('watchsuid'), $primkey);
     $this->engine = loadEngine(getFromSessionParams('watchsuid'), $primkey, "", getSurveyVersion(), $seid);
 }
Exemplo n.º 13
0
 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);
 }
Exemplo n.º 14
0
    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;
    }
Exemplo n.º 15
0
 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();
         }
     }
 }
Exemplo n.º 16
0
 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;
 }
Exemplo n.º 17
0
 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 "";
 }
Exemplo n.º 18
0
 }
 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();
Exemplo n.º 19
0
    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;
    }
Exemplo n.º 20
0
 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 "";
     }
 }
Exemplo n.º 21
0
 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);
 }