Example #1
0
 function addLogs($variable, $answer, $di)
 {
     if (Config::logSurveyActions() == false) {
         return;
     }
     $localdb = null;
     if (Config::useTransactions() == true) {
         global $transdb;
         $localdb = $transdb;
     } else {
         global $db;
         $localdb = $db;
     }
     $ans = $answer;
     if ($ans == "") {
         $ans = null;
     }
     $prim = $this->getPrimaryKey();
     $var = $variable;
     $dirty = $di;
     $action = $this->currentaction;
     $suid = $this->getSuid();
     $version = getSurveyVersion();
     $language = getSurveyLanguage();
     $mode = getSurveyMode();
     if (Config::prepareDataQueries() == false) {
         global $survey;
         $key = $survey->getDataEncryptionKey();
         $answer = '"' . prepareDatabaseString($ans) . '"';
         if ($key != "") {
             $answer = "aes_encrypt('" . prepareDatabaseString($ans) . "', '" . $key . "')";
         }
         $localdb->executeQuery('INSERT INTO ' . Config::dbSurveyData() . '_logs (suid, primkey, variablename, answer, dirty, action, version, language, mode) VALUES (' . $suid . ',"' . $prim . '","' . $var . '",' . $answer . ',' . $dirty . ',' . $action . ',' . $version . ',' . $language . ',' . $mode . ')');
         //echo 'INSERT INTO ' . Config::dbSurveyData() . '_logs (suid, primkey, variablename, answer, dirty, action, version, language, mode) VALUES (' . $suid . ',"' . $prim . '","' . $var . '",' . $answer . ',' . $dirty . ',' . $action . ',' . $version . ',' . $language . ',' . $mode . ')<br/>';
     } 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, $action);
         $bp->add(MYSQL_BINDING_INTEGER, $version);
         $bp->add(MYSQL_BINDING_INTEGER, $language);
         $bp->add(MYSQL_BINDING_INTEGER, $mode);
         $answer = "?";
         global $survey;
         $key = $survey->getDataEncryptionKey();
         if ($key != "") {
             $answer = "aes_encrypt(?, '" . $key . "')";
         }
         $localdb->executeBoundQuery('INSERT INTO ' . Config::dbSurveyData() . '_logs (suid, primkey, variablename, answer, dirty, action, version, language, mode) VALUES (?,?,?,' . $answer . ',?,?,?,?,?)', $bp->get());
     }
 }
Example #2
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;
     }
 }