diff --git a/classes/expressions/LimeExpressionManager.php b/classes/expressions/LimeExpressionManager.php index 61dcd35889c..3556c740077 100644 --- a/classes/expressions/LimeExpressionManager.php +++ b/classes/expressions/LimeExpressionManager.php @@ -3802,7 +3802,63 @@ static function StartSurvey($surveyid,$surveyMode='group',$options=NULL,$forceRe if (isset($_SESSION['startingValues']) && is_array($_SESSION['startingValues']) && count($_SESSION['startingValues']) > 0) { - $startingValues = $_SESSION['startingValues']; + $startingValues = array(); + foreach ($_SESSION['startingValues'] as $k=>$value) + { + if (isset($LEM->knownVars[$k])) + { + $knownVar = $LEM->knownVars[$k]; + } + else if (isset($LEM->qcode2sgqa[$k])) + { + $knownVar = $LEM->knownVars[$LEM->qcode2sgqa[$k]]; + } + else if (isset($LEM->tempVars[$k])) + { + $knownVar = $LEM->tempVar[$k]; + } + else + { + continue; + } + if (!isset($knownVar['jsName'])) + { + continue; + } + switch ($knownVar['type']) + { + case 'D': //DATE + if (trim($value)=="") + { + $value = NULL; + } + else + { + $dateformatdatat=getDateFormatData($LEM->surveyOptions['surveyls_dateformat']); + $datetimeobj = new Date_Time_Converter($value, $dateformatdatat['phpdate']); + $value=$datetimeobj->convert("Y-m-d"); + } + break; + case 'N': //NUMERICAL QUESTION TYPE + case 'K': //MULTIPLE NUMERICAL QUESTION + if (trim($value)=="") { + $value = NULL; + } + else { + $value = sanitize_float($value); + } + break; + case '|': //File Upload + $value=NULL; // can't upload a file via GET + break; + } + $_SESSION[$knownVar['sgqa']] = $value; + $startingValues[$k]=array( + 'type'=>$knownVar['type'], + 'value'=>$value, + ); + + } $LEM->_UpdateValuesInDatabase($startingValues); } diff --git a/index.php b/index.php index c3614e29d74..4ee638cbfc6 100644 --- a/index.php +++ b/index.php @@ -2270,50 +2270,15 @@ function buildsurveysession($previewGroup=false) // } // Prefill questions/answers from command line params $startingValues=array(); - if (isset($_SESSION['insertarray'])) + if (isset($_GET)) { - foreach($_SESSION['insertarray'] as $field) + foreach ($_GET as $k=>$v) { - if (isset($_GET[$field]) && $field!='token') + if (preg_match('/^(token|sid|lang|newtest)$/',$k)) { - $value=$_GET[$field]; - $type = $fieldmap[$field]['type']; - switch($type) - { - case 'D': //DATE - if (trim($value)=="") - { - $value = NULL; - } - else - { - $dateformatdatat=getDateFormatData($thissurvey['surveyls_dateformat']); - $datetimeobj = new Date_Time_Converter($value, $dateformatdatat['phpdate']); - $value=$datetimeobj->convert("Y-m-d"); - } - break; - case 'N': //NUMERICAL QUESTION TYPE - case 'K': //MULTIPLE NUMERICAL QUESTION - if (trim($value)=="") { - $value = NULL; - } - else { - $value = sanitize_float($value); - } - break; - case '|': //File Upload - $value=NULL; // can't upload a file via GET - break; - } - if (!is_null($value)) - { - $_SESSION[$field] = $value; - $startingValues[$field] = array ( - 'type'=>$type, - 'value'=>$value, - ); - } + continue; } + $startingValues[$k] = $v; } } $_SESSION['startingValues']=$startingValues;