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;
 }
Example #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;
 }
Example #3
0
 public function showLoginAnonymous($randomId)
 {
     global $survey, $engine;
     //echo $survey->getTemplate();
     require_once "display/templates/displayquestion_" . $survey->getTemplate() . ".php";
     $engine = loadEngine($survey->getSuid(), $randomId, "", getSurveyVersion(), getBaseSectionSeid($survey->getSuid()));
     $do = $engine->getDisplayObject();
     $returnStr = $do->showHeader($survey->getTitle(), '<link href="bootstrap/css/sticky-footer-navbar.min.css" rel="stylesheet">');
     //$returnStr .= '<form id="form" role="form" method=post>';
     $returnStr .= $do->displayBody();
     $returnStr .= $do->showWelcomeSurvey();
     $returnStr .= '<input type=hidden name="' . POST_PARAM_PRIMKEY . '" value="' . $randomId . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_SUID . '" value="' . $survey->getSuid() . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_R . '" value="' . loadvar(POST_PARAM_R) . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_LANGUAGE . '" value="' . getSurveyLanguage() . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_MODE . '" value="' . getSurveyMode() . '">';
     $returnStr .= '<div class="panel-footer text-center">';
     $var = $engine->getVariableDescriptive(VARIABLE_INTRODUCTION);
     $returnStr .= '<button type="submit" class="btn btn-default" value="' . $do->applyFormatting($var->getLabelNextButton(), $var->getButtonFormatting()) . '">' . $do->applyFormatting($var->getLabelNextButton(), $var->getButtonFormatting()) . '</button>';
     $returnStr .= '</form>';
     $returnStr .= "</div></div></div></div>";
     /* footer */
     $returnStr .= $this->showFooter();
     return $returnStr;
 }
 function redirect($page)
 {
     global $survey;
     $returnStr = $this->showHeader($survey->getTitle(), '<link href="bootstrap/css/sticky-footer-navbar.min.css" rel="stylesheet">');
     $returnStr .= '<form method="post" action="../index.php">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_PRIMKEY . '" value="' . addslashes(encryptC($this->primkey, Config::directLoginKey())) . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_SUID . '" value="' . getSurvey() . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_LANGUAGE . '" value="' . getSurveyLanguage() . '">';
     $returnStr .= '<input type=hidden name="' . POST_PARAM_MODE . '" value="' . getSurveyMode() . '">';
     $returnStr .= setSessionParamsPost(array('page' => $page));
     $returnStr .= '</form>';
     $returnStr .= '<script>';
     $returnStr .= '$(document).ready(function(){ $("form:first").submit(); }); ';
     $returnStr .= '</script></body><html>';
     return $returnStr;
 }
    public function showNavBar()
    {
        $returnStr = $this->showCalculator();
        //language
        $rgid = $this->engine->getRgid();
        $variablenames = $this->engine->getDisplayed();
        // 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_PRIMKEY => $this->engine->primkey, SESSION_PARAM_RGID => $rgid, SESSION_PARAM_VARIABLES => $variablenames, SESSION_PARAM_LANGUAGE => getSurveyLanguage(), 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()) . '"; 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">' . $variablenames . '</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> Calculator</a></li>';
        $returnStr .= '<li><a href="' . setSessionParams(array('page' => 'nurse.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;
    }
Example #6
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]);
     }
 }
Example #7
0
function checkUserAccess()
{
    $user = new User($_SESSION['URID']);
    $cm = getSurveyMode();
    $cl = getSurveyLanguage();
    $modes = $user->getModes();
    $languages = explode("~", $user->getLanguages(getSurvey(), getSurveyMode()));
    if (!inArray($cm, $modes) || !inArray($cl, $languages)) {
        return false;
    }
    return true;
}
    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;
    }
Example #9
0
 function generateChecks($variables = array(), $remove = false, $compile = true)
 {
     $_SESSION['PARAMETER_RETRIEVAL'] = PARAMETER_SURVEY_RETRIEVAL;
     /* create factory, printer and root node */
     $this->factory = new PHPParser_BuilderFactory();
     $this->printer = new PHPParser_PrettyPrinter_Default();
     $this->messages = array();
     //$setfillclasses = array();
     $this->fillclass = true;
     $this->checkclass = true;
     /* load any existing checks from context */
     $checkclasses = $this->loadChecks();
     /* go through all variable(s) if none provided */
     global $db;
     if (sizeof($variables) == 0) {
         $q = "select * from " . Config::dbSurvey() . "_variables where suid=" . $this->suid . " order by vsid asc";
         if ($result = $db->selectQuery($q)) {
             if ($db->getNumberOfRows($result) > 0) {
                 while ($row = $db->getRow($result)) {
                     $variables[] = new VariableDescriptive($row);
                 }
             }
         }
     }
     foreach ($variables as $var) {
         if ($remove == false) {
             $code = $var->getCheckCode();
             //echo $code;
             if (trim($code) != "") {
                 $this->currentfillvariable = $var->getName();
                 //$rule = trim(str_ireplace(".FILL", "", $s->getRule()));
                 //$rgid = $s->getRgid();
                 /* store pairing */
                 //$setfillarray[strtoupper(getBasicName($rule))] = $rgid;
                 $rootnode = $this->factory->class(CLASS_CHECK . "_" . $this->currentfillvariable)->extend(CLASS_BASICCHECK);
                 /* preset trackers */
                 $this->looptimes = 1;
                 $this->lasttimesloop = array();
                 $this->lastloopactions = array();
                 $this->loops = array();
                 $this->groups = array();
                 $this->groupsend = array();
                 $this->groupactions = array();
                 $this->instructions = array();
                 $this->whiles = array();
                 $this->lastwhileactions = array();
                 $this->doaction_cases = array();
                 $this->actions = array();
                 $stmts = array();
                 //$var = $this->survey->getVariableDescriptiveByName(getBasicName($rule));
                 $checkrules = explode("\r\n", $code);
                 $cnt = 1;
                 foreach ($checkrules as $checkrule) {
                     $this->instructions[$cnt] = new RoutingInstruction($var->getSuid(), $var->getSeid(), $cnt, rtrim($checkrule));
                     $cnt++;
                 }
                 //print_r($this->instructions);
                 /* process setfillvalue cases */
                 //echo "<hr>" . $rule . $rgid;
                 for ($this->cnt = 1; $this->cnt <= sizeof($this->instructions); $this->cnt++) {
                     if (isset($this->instructions[$this->cnt])) {
                         //echo $this->instructions[$this->cnt]->getRule() . "<br/>";
                         $this->addRule($rootnode, $this->instructions[$this->cnt]);
                     }
                 }
                 //echo "END";
                 /* add end */
                 $stmts[] = new PHPParser_Node_Stmt_Break();
                 $this->doaction_cases[] = new PHPParser_Node_Stmt_Case(null, $stmts);
                 /* add doAction function */
                 $this->doaction = $this->factory->method(FUNCTION_DO_ACTION);
                 $this->doaction->makePublic();
                 $param = new PHPParser_Builder_Param('rgid');
                 $param->setDefault("");
                 $this->doaction->addParam($param);
                 $doactioncond = new PHPParser_Node_Expr_Variable("rgid");
                 $this->doaction->addStmt(new PHPParser_Node_Stmt_Switch($doactioncond, $this->doaction_cases));
                 $rootnode->addStmt($this->doaction);
                 /* add getFirstAction function */
                 $firstaction = $this->factory->method(FUNCTION_GET_FIRST_ACTION);
                 $firstaction->makePublic();
                 $firstaction->addStmt(new PHPParser_Node_Stmt_Return(new PHPParser_Node_Scalar_LNumber($this->actions[0])));
                 $rootnode->addStmt($firstaction);
                 /* get statements */
                 $stmts = array($rootnode->getNode());
                 /* generate code for check class */
                 //$setfillclasses[$rgid] = $this->printer->prettyPrint($stmts);
                 $checkclasses[strtoupper($this->currentfillvariable) . getSurveyLanguage() . getSurveyMode()] = $this->printer->prettyPrint($stmts);
                 //echo "<textarea style='width: 100%;' rows=5>" . $checkclasses[strtoupper($this->currentfillvariable) . getSurveyLanguage() . getSurveyMode()] . "</textarea><hr>";
             } else {
                 // no check code, then remove
                 if (isset($checkclasses[strtoupper($var->getName() . getSurveyLanguage() . getSurveyMode())])) {
                     unset($checkclasses[strtoupper($var->getName() . getSurveyLanguage() . getSurveyMode())]);
                 }
             }
         } else {
             if (isset($checkclasses[strtoupper($var->getName() . getSurveyLanguage() . getSurveyMode())])) {
                 unset($checkclasses[strtoupper($var->getName() . getSurveyLanguage() . getSurveyMode())]);
             }
         }
     }
     if ($compile == true) {
         /* check for first time */
         $this->addContext();
         /* store in db */
         global $db;
         $bp = new BindParam();
         $bp->add(MYSQL_BINDING_STRING, gzcompress(serialize($checkclasses), 9));
         $bp->add(MYSQL_BINDING_INTEGER, $this->suid);
         $bp->add(MYSQL_BINDING_INTEGER, $this->version);
         $query = "update " . Config::dbSurvey() . "_context set checks = ? where suid=? and version = ? ";
         $db->executeBoundQuery($query, $bp->get());
     }
     $_SESSION['PARAMETER_RETRIEVAL'] = PARAMETER_ADMIN_RETRIEVAL;
     return $this->messages;
 }
Example #10
0
 function showReported($content = "")
 {
     $returnStr = $this->showTestHeader(Language::messageSMSTitle());
     $returnStr .= '<div id="wrap">';
     $returnStr .= $this->showNavBar();
     $returnStr .= '<div class="container"><p>';
     $surveys = new Surveys();
     $surveys = $surveys->getSurveys();
     if (sizeof($surveys) > 0) {
         $returnStr .= "<form id=refreshform method=post>";
         $returnStr .= '<input type=hidden name=page value="sysadmin.tools.issues">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_SURVEY . '" id="' . SMS_POST_SURVEY . '_hidden" value="' . getSurvey() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_MODE . '" id="' . SMS_POST_MODE . '_hidden" value="' . getSurveyMode() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_LANGUAGE . '" id="' . SMS_POST_LANGUAGE . '_hidden" value="' . getSurveyLanguage() . '">';
         $returnStr .= "</form>";
         // get reported issues for survey
         global $survey;
         $issues = $survey->getReportedIssues();
         // no problems reported
         if (sizeof($issues) == 0) {
             $returnStr .= "<br/>" . '<div class="alert alert-warning">' . Language::labelNoProblemsReported() . '</div>';
         } else {
             $returnStr .= $this->displayComboBox();
             $returnStr .= '<span class="label label-default">Filter by</span>';
             $returnStr .= '<div class="well well-sm">';
             $returnStr .= '<table>';
             $returnStr .= '<tr><td>' . Language::labelTestSurvey() . "</td><td><select onchange='document.getElementById(\"" . SMS_POST_SURVEY . "_hidden\").value=this.value; document.getElementById(\"refreshform\").submit();' name=" . POST_PARAM_SUID . " class='selectpicker show-tick'>";
             $current = new Survey(getSurvey());
             foreach ($surveys as $survey) {
                 $selected = "";
                 if ($survey->getSuid() == $current->getSuid()) {
                     $selected = "SELECTED";
                 }
                 $returnStr .= "<option {$selected} value=" . $survey->getSuid() . '>' . $survey->getName() . '</option>';
             }
             $returnStr .= "</select></td></tr></table></div>";
             $returnStr .= $this->displayDataTablesScripts(array("colvis", "rowreorder"));
             $returnStr .= "<script type='text/javascript'>\n                        \$(document).ready(function(){\n                            \$('#issuetable').dataTable(\n                                {\n                                    \"iDisplayLength\": " . sizeof($issues) . ",\n                                    dom: 'C<\"clear\">lfrtip',\n                                    searching: false,\n                                    paging: false\n                                    }    \n                                );\n                                         \n                       });</script>\n\n                        ";
             //
             $returnStr .= "<br/><table id='issuetable' class='table table-bordered table-striped'><thead>";
             $returnStr .= "<th>" . Language::labelReportedBy() . "</th><th>" . Language::labelReportedOn() . "</th><th>" . Language::labelReportedCategory() . "</th><th>" . Language::labelReportedDescription() . "</th><th>" . Language::labelReportedPrimaryKey() . "</th><th>" . Language::labelReportedMode() . "</th><th>" . Language::labelReportedLanguage() . "</th>";
             $returnStr .= "</thead><tbody>";
             $modes = Common::surveyModes();
             $languages = Language::getLanguagesArray();
             $cats = Language::reportProblemCategories();
             foreach ($issues as $is) {
                 $us = new User($is['urid']);
                 $returnStr .= "<tr>";
                 $returnStr .= "<td>" . $us->getUsername() . "</td>";
                 $returnStr .= "<td>" . $is["ts"] . "</td>";
                 $returnStr .= "<td>" . $cats[$is["category"]] . "</td>";
                 $returnStr .= "<td>" . $is["comment"] . "</td>";
                 $returnStr .= "<td>" . $is["primkey"] . "</td>";
                 $returnStr .= "<td>" . $modes[$is["mode"]] . "</td>";
                 $returnStr .= "<td>" . $languages[str_replace("_", "", getSurveyLanguagePostFix($is["language"]))]['name'] . "</td>";
                 $returnStr .= "</tr>";
             }
             $returnStr .= "</tbody></table>";
         }
     } else {
         $returnStr .= $this->displayInfo(Language::messageNoSurveysAvailable());
     }
     $returnStr .= '</p></div></div>';
     //container and wrap
     $returnStr .= $this->showBottomBar();
     $returnStr .= $this->showFooter(false);
     return $returnStr;
 }
Example #11
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;
    }
Example #12
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();
         }
     }
 }
Example #13
0
 function showFlood($content = "")
 {
     $returnStr = $this->showToolsHeader(Language::headerToolsFlooder());
     $returnStr .= $content;
     $surveys = new Surveys();
     $surveys = $surveys->getSurveys();
     if (sizeof($surveys) > 0) {
         $returnStr .= "<form method=post>";
         $returnStr .= setSessionParamsPost(array('page' => 'sysadmin.tools.floodres'));
         $returnStr .= '<span class="label label-default">' . Language::labelToolsFloodSettings() . '</span>';
         $returnStr .= '<div class="well well-sm">';
         $returnStr .= $this->displayComboBox();
         $returnStr .= '<table>';
         $returnStr .= '<tr><td>' . Language::labelFloodSurvey() . "</td><td><select name=" . POST_PARAM_SUID . " class='selectpicker show-tick'>";
         foreach ($surveys as $survey) {
             $returnStr .= "<option value=" . $survey->getSuid() . '>' . $survey->getName() . '</option>';
         }
         $returnStr .= "</select></td></tr>";
         $returnStr .= "<tr><td>" . Language::labelFloodLanguage() . "</td><td>" . $this->displayLanguagesAdmin(POST_PARAM_LANGUAGE, POST_PARAM_LANGUAGE, getSurveyLanguage()) . "</td></tr>";
         $returnStr .= "<tr><td>" . Language::labelFloodMode() . "</td><td>" . $this->displayModesAdmin(POST_PARAM_MODE, POST_PARAM_MODE, getSurveyMode()) . "</td></tr>";
         $returnStr .= "<tr><td>" . Language::labelFloodNumber() . "</td><td><input name='number' class='form-control' type='text' /></td></tr>";
         $returnStr .= '</table>';
         $returnStr .= '</div>';
         $returnStr .= '<button type="submit" class="btn btn-default navbar-btn">' . Language::buttonFlood() . '</button>';
         $returnStr .= "</form>";
     } else {
         $returnStr .= $this->displayInfo(Language::messageNoSurveysAvailable());
     }
     //END CONTENT
     $returnStr .= '</p></div>    </div>';
     //container and wrap
     $returnStr .= $this->showBottomBar();
     $returnStr .= $this->showFooter(false);
     return $returnStr;
 }
Example #14
0
 function save()
 {
     // nothing changed, then don't save (so the timestamp remains the same, so it does not appear as if it needs translation again)!
     if ($this->changed == false) {
         return;
     }
     global $db;
     //$query = "replace into " . Config::dbSurvey() . "_settings (suid, object, objecttype, name, value, mode, language) values(";
     $query = "replace into " . Config::dbSurvey() . "_settings (suid, object, objecttype, name, value, mode, language) values(?,?,?,?,?,?,?)";
     $suid = $this->getSuid();
     $object = $this->getObject();
     $objecttype = $this->getObjectType();
     $name = $this->getName();
     $value = $this->getValue();
     if ($this->getMode() != "") {
         $mode = $this->getMode();
     } else {
         $mode = getSurveyMode();
     }
     if ($this->getLanguage() != "") {
         $language = $this->getLanguage();
     } else {
         $language = getSurveyLanguage();
     }
     $bp = new BindParam();
     $bp->add(MYSQL_BINDING_INTEGER, $suid);
     $bp->add(MYSQL_BINDING_INTEGER, $object);
     $bp->add(MYSQL_BINDING_STRING, $objecttype);
     $bp->add(MYSQL_BINDING_STRING, $name);
     $bp->add(MYSQL_BINDING_STRING, $value);
     $bp->add(MYSQL_BINDING_INTEGER, $mode);
     $bp->add(MYSQL_BINDING_STRING, $language);
     $db->executeBoundQuery($query, $bp->get());
     /* save history if value change */
     if ($this->previousvalue != $value) {
         $track = new Track($suid, $object, $objecttype);
         $track->addEntry($name, $value);
     }
     // update previous values now we saved
     $this->previousvalue = $this->getValue();
     $this->previousobject = $this->getObject();
     $this->previoussuid = $this->getSuid();
     $this->previouslanguage = $this->getLanguage();
     $this->previousmode = $this->getMode();
     $this->previousobjecttype = $this->getObjectType();
 }
Example #15
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;
    }
Example #16
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;
     }
 }
 function showTest($content = "")
 {
     $returnStr = $this->showToolsHeader(Language::headerToolsTester());
     $returnStr .= $content;
     $surveys = new Surveys();
     $surveys = $surveys->getSurveys();
     if (sizeof($surveys) > 0) {
         $returnStr .= "<form id=refreshform method=post>";
         $returnStr .= '<input type=hidden name=page value="translator.tools.test">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_SURVEY . '" id="' . SMS_POST_SURVEY . '_hidden" value="' . getSurvey() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_MODE . '" id="' . SMS_POST_MODE . '_hidden" value="' . getSurveyMode() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_LANGUAGE . '" id="' . SMS_POST_LANGUAGE . '_hidden" value="' . getSurveyLanguage() . '">';
         $returnStr .= "</form>";
         $returnStr .= "<form method=post>";
         $returnStr .= '<input type=hidden name=' . POST_PARAM_SE . ' value="' . addslashes(USCIC_SURVEY) . '">';
         $returnStr .= '<input type=hidden name=' . POST_PARAM_PRIMKEY . ' value="' . addslashes(encryptC(generateRandomPrimkey(8), Config::directLoginKey())) . '">';
         $returnStr .= '<input type=hidden name=' . POST_PARAM_NEW_PRIMKEY . ' value="1">';
         $returnStr .= '<input type=hidden name=' . POST_PARAM_SURVEY_EXECUTION_MODE . ' value="' . SURVEY_EXECUTION_MODE_TEST . '">';
         $returnStr .= '<span class="label label-default">' . Language::labelToolsTestSettings() . '</span>';
         $returnStr .= '<div class="well well-sm">';
         $returnStr .= $this->displayComboBox();
         $returnStr .= '<table>';
         $returnStr .= '<tr><td>' . Language::labelTestSurvey() . "</td><td><select onchange='document.getElementById(\"" . SMS_POST_SURVEY . "_hidden\").value=this.value; document.getElementById(\"refreshform\").submit();' name=" . POST_PARAM_SUID . " class='selectpicker show-tick'>";
         $current = new Survey(getSurvey());
         foreach ($surveys as $survey) {
             $selected = "";
             if ($survey->getSuid() == $current->getSuid()) {
                 $selected = "SELECTED";
             }
             $returnStr .= "<option {$selected} value=" . $survey->getSuid() . '>' . $survey->getName() . '</option>';
         }
         $returnStr .= "</select></td></tr>";
         $user = new User($_SESSION['URID']);
         $cm = getSurveyMode();
         $cl = getSurveyLanguage();
         $modes = $user->getModes(getSurvey());
         $langs = explode("~", $user->getLanguages(getSurvey(), getSurveyMode()));
         $default = $current->getDefaultLanguage();
         if (!inArray($default, $langs)) {
             $langs[] = $default;
         }
         $returnStr .= "<tr><td>" . Language::labelTestModeInput() . "</td><td>" . $this->displayModesAdmin(POST_PARAM_MODE, POST_PARAM_MODE, getSurveyMode(), "", implode("~", $modes), "onchange='document.getElementById(\"" . SMS_POST_MODE . "_hidden\").value=this.value; document.getElementById(\"refreshform\").submit();'") . "</td></tr>";
         $returnStr .= "<tr><td>" . Language::labelTestLanguage() . "</td><td>" . $this->displayLanguagesAdmin(POST_PARAM_LANGUAGE, POST_PARAM_LANGUAGE, getSurveyLanguage(), true, true, false, "", implode("~", $langs)) . "</td></tr>";
         $returnStr .= '</table>';
         $returnStr .= '</div>';
         $returnStr .= '<button type="submit" class="btn btn-default navbar-btn">' . Language::buttonTest() . '</button>';
         $returnStr .= "</form>";
     } else {
         $returnStr .= $this->displayInfo(Language::messageNoSurveysAvailable());
     }
     $returnStr .= '</p></div></div>';
     //container and wrap
     $returnStr .= $this->showBottomBar();
     $returnStr .= $this->showFooter(false);
     return $returnStr;
 }
Example #18
0
 function showEditSettingsLanguageRes()
 {
     $_SESSION['EDITSURVEY'] = 1;
     $displaySysAdmin = new DisplaySysAdmin();
     $survey = new Survey($_SESSION['SUID']);
     $ans = loadvar(SETTING_ALLOWED_LANGUAGES);
     if (!is_array($ans)) {
         $ans = array($ans);
     }
     if (!inArray(loadvar(SETTING_DEFAULT_LANGUAGE), $ans)) {
         $content = $displaySysAdmin->displayError(Language::messageLanguageSettingsNotChanged());
     } else {
         $current = explode("~", $survey->getAllowedLanguages(getSurveyMode()));
         $survey->setDefaultLanguage(loadvar(SETTING_DEFAULT_LANGUAGE));
         $survey->setChangeLanguage(loadvar(SETTING_CHANGE_LANGUAGE));
         $survey->setReentryLanguage(loadvar(SETTING_REENTRY_LANGUAGE));
         $survey->setBackLanguage(loadvar(SETTING_BACK_LANGUAGE));
         $survey->setAllowedLanguages(implode("~", $ans));
         $users = new Users();
         $users = $users->getUsers();
         $update = loadvar("uridsel");
         foreach ($users as $u) {
             foreach ($current as $c) {
                 if (!inArray($c, $ans)) {
                     $u->removeLanguage($_SESSION['SUID'], getSurveyMode(), $c);
                 }
             }
             foreach ($ans as $a) {
                 if (!inArray($a, $current)) {
                     if (inArray($u->getUrid(), $update) || inArray(-1, $update)) {
                         $u->addLanguage($_SESSION['SUID'], getSurveyMode(), $a);
                     }
                 }
             }
             $u->saveChanges();
         }
         $content = $displaySysAdmin->displaySuccess(Language::messageLanguageSettingsChanged());
         if (!inArray(getSurveyLanguage(), $ans)) {
             $_SESSION['SURVEY_LANGUAGE'] = $ans[0];
         }
     }
     /* update last page */
     $_SESSION['LASTPAGE'] = substr($_SESSION['LASTPAGE'], 0, strripos($_SESSION['LASTPAGE'], "res"));
     return $displaySysAdmin->showEditSettingsLanguage($content);
 }
Example #19
0
 function showOutputStatisticsParadata($content = "")
 {
     $survey = new Survey($_SESSION['SUID']);
     //echo $_SESSION["SUID"] . '----';
     $headers[] = array('link' => setSessionParamsHref(array('page' => 'sysadmin.output'), Language::headerOutput()), 'label' => Language::headerOutputData());
     $headers[] = array('link' => setSessionParamsHref(array('page' => 'sysadmin.output.statistics'), Language::headerOutputStatistics()), 'label' => Language::headerOutputStatistics());
     $headers[] = array('link' => '', 'label' => Language::headerOutputStatisticsParadata());
     $returnStr = $this->showOutputHeader($headers);
     $returnStr .= $content;
     $returnStr .= $this->displayComboBox();
     $surveys = new Surveys();
     $surveys = $surveys->getSurveys();
     if (sizeof($surveys) > 0) {
         $returnStr .= "<form id=refreshform method=post>";
         $returnStr .= '<input type=hidden name=page value="sysadmin.output.statistics.paradata">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_SURVEY . '" id="' . SMS_POST_SURVEY . '_hidden" value="' . getSurvey() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_MODE . '" id="' . SMS_POST_MODE . '_hidden" value="' . getSurveyMode() . '">';
         $returnStr .= '<input type=hidden name="' . SMS_POST_LANGUAGE . '" id="' . SMS_POST_LANGUAGE . '_hidden" value="' . getSurveyLanguage() . '">';
         $returnStr .= "</form>";
         $returnStr .= '<div class="well well-sm">';
         $returnStr .= '<table>';
         $returnStr .= '<tr><td>' . Language::labelTestSurvey() . "</td><td><select onchange='document.getElementById(\"" . SMS_POST_SURVEY . "_hidden\").value=this.value; document.getElementById(\"refreshform\").submit();' name=" . POST_PARAM_SUID . " class='selectpicker show-tick'>";
         $current = new Survey(getSurvey());
         foreach ($surveys as $s) {
             $selected = "";
             if ($s->getSuid() == $current->getSuid()) {
                 $selected = "SELECTED";
             }
             $returnStr .= "<option {$selected} value=" . $s->getSuid() . '>' . $s->getName() . '</option>';
         }
         $returnStr .= "</select></td></tr>";
         $returnStr .= '</table><br/><br/>';
         $sections = $survey->getSections();
         foreach ($sections as $section) {
             $returnStr .= '<a href="index.php?r=' . setSessionsParamString(array('page' => 'sysadmin.output.statistics.paradata.section', 'seid' => $section->getSeid())) . '" class="list-group-item">' . $section->getName() . ' ' . $section->getDescription() . '</a>';
         }
         $returnStr .= "</div>";
     } else {
         $returnStr .= $this->displayInfo(Language::messageNoSurveysAvailable());
     }
     $returnStr .= '</p></div>    </div>';
     //container and wrap
     $returnStr .= $this->showBottomBar();
     $returnStr .= $this->showFooter(false);
     return $returnStr;
 }
Example #20
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();
Example #21
0
 function isTranslatedAssistance()
 {
     $arr = array(SETTING_EMPTY_MESSAGE, SETTING_ERROR_MESSAGE_MINIMUM_LENGTH, SETTING_ERROR_MESSAGE_MAXIMUM_LENGTH, SETTING_ERROR_MESSAGE_MINIMUM_WORDS, SETTING_ERROR_MESSAGE_MAXIMUM_WORDS, SETTING_ERROR_MESSAGE_PATTERN, SETTING_ERROR_MESSAGE_DOUBLE, SETTING_ERROR_MESSAGE_INTEGER, SETTING_ERROR_MESSAGE_MINIMUM_SELECT, SETTING_ERROR_MESSAGE_MAXIMUM_SELECT, SETTING_ERROR_MESSAGE_EXACT_SELECT, SETTING_ERROR_MESSAGE_INVALID_SUB_SELECT, SETTING_ERROR_MESSAGE_INVALID_SELECT, SETTING_ERROR_MESSAGE_RANGE, SETTING_ERROR_MESSAGE_MAXIMUM_CALENDAR, SETTING_ERROR_MESSAGE_INLINE_ANSWERED, SETTING_ERROR_MESSAGE_INLINE_EXACT_REQUIRED, SETTING_ERROR_MESSAGE_INLINE_EXCLUSIVE, SETTING_ERROR_MESSAGE_INLINE_INCLUSIVE, SETTING_ERROR_MESSAGE_INLINE_MINIMUM_REQUIRED, SETTING_ERROR_MESSAGE_INLINE_MAXIMUM_REQUIRED, SETTING_ERROR_MESSAGE_EXACT_REQUIRED, SETTING_ERROR_MESSAGE_MINIMUM_REQUIRED, SETTING_ERROR_MESSAGE_MAXIMUM_REQUIRED, SETTING_ERROR_MESSAGE_EXCLUSIVE, SETTING_ERROR_MESSAGE_INCLUSIVE, SETTING_ERROR_MESSAGE_UNIQUE_REQUIRED);
     global $survey;
     $mode = getSurveyMode();
     $default = $survey->getDefaultLanguage($mode);
     foreach ($arr as $a) {
         $s = $this->getSetting($a);
         $s1 = $this->getSettingModeLanguage($a, $mode, $default, $this->getObjectType());
         if ($s->getValue() == "" && $s1->getValue() != "" || $s1->getTimestamp() > $s->getTimestamp()) {
             return false;
         }
     }
     return true;
 }
    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;
    }
Example #23
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 "";
     }
 }
Example #24
0
     }
     return "";
 }
 function getSettingValue($name, $default = true)
 {
     return $this->getSetting($name, $default)->getValue();
 }
 function setSettingValue($name, $value)
 {
     /* determine index */
     $index = strtoupper($name . getSurveyMode() . getSurveyLanguage() . $this->getObjectType());
     /* don't store if follow generic/follow type (these are implicitly derived, 
      * so no need to store them explicitly). Also don't store if empty (if something should be empty
      * like a text, then enter &nbsp; for example as value).
      * If we had a value stored before, then we remove it now.
      */
     if (inArray($value, array("", SETTING_FOLLOW_GENERIC, SETTING_FOLLOW_TYPE))) {
         if (isset($this->settings[$index])) {
             $s = $this->settings[$index];
             if ($s != null) {
                 $s->remove();
             }
             unset($this->settings[$index]);
         }
         return;
     }
     /* update */
     if (isset($this->settings[$index])) {
         $this->settings[$index]->setValue($value);
     } else {
         /* create new */