Skip to content

Commit

Permalink
Merge branch 'master' of github.com:LimeSurvey/LimeSurvey
Browse files Browse the repository at this point in the history
  • Loading branch information
Shnoulle committed Jul 4, 2012
2 parents 9ea9574 + 4d6ea3d commit 4604bdf
Show file tree
Hide file tree
Showing 8 changed files with 1,186 additions and 119 deletions.
59 changes: 36 additions & 23 deletions classes/expressions/LimeExpressionManager.php
Expand Up @@ -3788,7 +3788,10 @@ static function GetAllVarNamesForQ($qseq,$varname)
$parts = explode('.',$varname);
$qroot = '';
$suffix = '';
$sqpatts = array();
$nosqpatts = array();
$sqpatt = '';
$nosqpatt = '';
$comments = '';

if ($parts[0] == 'self')
Expand All @@ -3808,45 +3811,42 @@ static function GetAllVarNamesForQ($qseq,$varname)
return $varname;
}
}
array_shift($parts);

if (count($parts) > 3)
if (count($parts) > 0)
{
return $varname; // invalid
}
if (count($parts) == 3)
{
if (preg_match('/^' . ExpressionManager::$RDP_regex_var_attr . '$/',$parts[2]))
{
$suffix = '.' . $parts[2];
}
else
if (preg_match('/^' . ExpressionManager::$RDP_regex_var_attr . '$/',$parts[count($parts)-1]))
{
return $varname; // invalid
$suffix = '.' . $parts[count($parts)-1];
array_pop($parts);
}
}
if (count($parts) >= 2)

foreach($parts as $part)
{
if (count($parts) == 2 && preg_match('/^' . ExpressionManager::$RDP_regex_var_attr . '$/',$parts[1]))
if ($part == 'nocomments')
{
$suffix = '.' . $parts[1];
$comments = 'N';
}
else if (preg_match('/^sq_.+$/',$parts[1]))
else if ($part == 'comments')
{
$sqpatt = substr($parts[1],3);
$comments = 'Y';
}
else if ($parts[1] == 'nocomments')
else if (preg_match('/^sq_.+$/',$part))
{
$comments = 'N';
$sqpatts[] = substr($part,3);
}
else if ($parts[1] == 'comments')
else if (preg_match('/^nosq_.+$/',$part))
{
$comments = 'Y';
$nosqpatts[] = substr($part,5);
}
else
{
return $varname; // invalid
}
}
$sqpatt = implode('|',$sqpatts);
$nosqpatt = implode('|',$nosqpatts);
$vars = array();

foreach ($LEM->knownVars as $kv)
Expand Down Expand Up @@ -3876,18 +3876,31 @@ static function GetAllVarNamesForQ($qseq,$varname)
continue;
}
}
$sgq = $LEM->sid . 'X' . $kv['gid'] . 'X' . $kv['qid'];
$ext = substr($kv['sgqa'],strlen($sgq));

if ($sqpatt != '')
{
$sgq = $LEM->sid . 'X' . $kv['gid'] . 'X' . $kv['qid'];
$ext = substr($kv['sgqa'],strlen($sgq));
if (!preg_match('/'.$sqpatt.'/',$ext))
{
continue;
}
}
if ($nosqpatt != '')
{
if (preg_match('/'.$nosqpatt.'/',$ext))
{
continue;
}
}

$vars[] = $kv['sgqa'] . $suffix;
}
return implode(',',$vars);
if (count($vars) > 0)
{
return implode(',',$vars);
}
return $varname; // invalid
}

/**
Expand Down

0 comments on commit 4604bdf

Please sign in to comment.