Skip to content

Commit

Permalink
Fixed issue #06225: unable to pass qcode-named variables via URL
Browse files Browse the repository at this point in the history
Dev can now pass variables via either qcode or SGQA naming on the URL
  • Loading branch information
TMSWhite committed Jun 17, 2012
1 parent c15eaf3 commit fc4fe01
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 41 deletions.
58 changes: 57 additions & 1 deletion classes/expressions/LimeExpressionManager.php
Expand Up @@ -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);
}

Expand Down
45 changes: 5 additions & 40 deletions index.php
Expand Up @@ -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;
Expand Down

0 comments on commit fc4fe01

Please sign in to comment.