2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

limesurvey querries adjusted for sample_import_var_restrict table

This commit is contained in:
Alex
2015-05-17 17:14:53 +03:00
parent ee3eac2234
commit 790933c7bd
4 changed files with 43 additions and 41 deletions

View File

@@ -283,11 +283,11 @@ function validate_email($email){
* @param int $questionnaire_id The questionnaire ID
* @param int $sample_import_id The sample import ID
* @param string $val The value to compare
* @param string $var The variable to compare
* --- changed @param string $var the variable to compare
* to @param string $var_id - ID for variable to compare
* @return bool|int False if failed, otherwise the number of completions
*
*/
function limesurvey_quota_replicate_completions($lime_sid,$questionnaire_id,$sample_import_id,$val,$var)
function limesurvey_quota_replicate_completions($lime_sid,$questionnaire_id,$sample_import_id,$val,$var_id)
{
global $db;
@@ -305,7 +305,7 @@ function limesurvey_quota_replicate_completions($lime_sid,$questionnaire_id,$sam
FROM " . LIME_PREFIX . "survey_$lime_sid as s
JOIN `case` as c ON (c.questionnaire_id = '$questionnaire_id')
JOIN `sample` as sam ON (c.sample_id = sam.sample_id AND sam.import_id = '$sample_import_id')
JOIN `sample_var` as sv ON (sv.sample_id = sam.sample_id AND sv.var LIKE '$var' AND sv.val LIKE '$val')
JOIN `sample_var` as sv ON (sv.sample_id = sam.sample_id AND sv.var_id = '$var_id' AND sv.val LIKE '$val')
WHERE s.submitdate IS NOT NULL
AND s.token = c.token";
@@ -355,14 +355,15 @@ function limesurvey_quota_match($lime_sgqa,$lime_sid,$case_id,$value,$comparison
* @param int $lime_sid The Limesurvey survey id
* @param int $case_id The case id
* @param string $val The sample value to compare
* @param string $var The sample variable to compare
* --- changed @param string $var the variable to compare
* to @param string $var_id - ID for variable to compare
* @param int $sample_import_id The sample import id we are looking at
*
* @return bool|int False if failed, otherwise 1 if matched, 0 if doesn't
* @author Adam Zammit <adam.zammit@acspri.org.au>
* @since 2012-04-30
*/
function limesurvey_quota_replicate_match($lime_sid,$case_id,$val,$var,$sample_import_id)
function limesurvey_quota_replicate_match($lime_sid,$case_id,$val,$var_id,$sample_import_id)
{
global $db;
@@ -370,7 +371,7 @@ function limesurvey_quota_replicate_match($lime_sid,$case_id,$val,$var,$sample_i
FROM " . LIME_PREFIX . "survey_$lime_sid as s
JOIN `case` as c ON (c.case_id = '$case_id')
JOIN `sample` as sam ON (c.sample_id = sam.sample_id and sam.import_id = $sample_import_id)
JOIN `sample_var` as sv ON (sv.sample_id = sam.sample_id AND sv.var LIKE '$var' AND sv.val LIKE '$val')
JOIN `sample_var` as sv ON (sv.sample_id = sam.sample_id AND sv.var_id = '$var_id' AND sv.val LIKE '$val')
WHERE s.token = c.token";
$rs = $db->GetRow($sql);

View File

@@ -267,13 +267,13 @@ $quexsfilterstate = questionnaireSampleFilterstate();
."<option value='shiftr' id='shiftr' />".T_("Shift report")."</option>\n";
$sql = "SELECT sv.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample as s, sample_var as sv
WHERE q.lime_sid = $surveyid
$sql = "SELECT sivr.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample_var as sv, `sample_import_var_restrict` as sivr
WHERE q.lime_sid = $surveyid
AND qs.questionnaire_id = q.questionnaire_id
AND s.import_id = qs.sample_import_id
AND sv.sample_id = s.sample_id
GROUP BY qs.sample_import_id,sv.var";
AND sivr.sample_import_id = qs.sample_import_id
AND sv.var_id = sivr.var_id
GROUP BY qs.sample_import_id,sivr.var";
$queXSrs = $connect->GetAssoc($sql);
@@ -305,13 +305,13 @@ if ($tokenTableExists)
{
$aTokenFieldNames=GetTokenFieldsAndNames($surveyid,false,true);
$sql = "SELECT sv.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample as s, sample_var as sv
WHERE q.lime_sid = $surveyid
$sql = "SELECT sivr.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample_var as sv, `sample_import_var_restrict` as sivr
WHERE q.lime_sid = $surveyid
AND qs.questionnaire_id = q.questionnaire_id
AND s.import_id = qs.sample_import_id
AND sv.sample_id = s.sample_id
GROUP BY qs.sample_import_id,sv.var";
AND sivr.sample_import_id = qs.sample_import_id
AND sv.var_id = sivr.var_id
GROUP BY qs.sample_import_id,sivr.var";
$attributeFields = $connect->GetAssoc($sql);
@@ -554,10 +554,11 @@ if ($tokenTableExists && $thissurvey['anonymized']=='N' && isset($_POST['attribu
if (in_array("SAMPLE:$attr_name",$_POST['attribute_select']))
{
$dquery .= ", ( SELECT sv.val
FROM sample_var as sv, `case` as c3
FROM sample_var as sv, `case` as c3,`sample_import_var_restrict` as sivr
WHERE c3.token = {$dbprefix}survey_$surveyid.token
AND c3.sample_id = sv.sample_id
AND sv.var LIKE '$attr_name') as attribute_$i ";
AND sivr.var_id = sv.var_id
AND sivr.var LIKE '$attr_name') as attribute_$i ";
$attributeFieldAndNames["attribute_$i"] = $attr_name;
@@ -1362,4 +1363,4 @@ function strip_tags_full($string) {
$string=str_replace('-oth-','',$string);
return FlattenText($string,true,'UTF-8',false);
}
?>
?>

View File

@@ -3422,17 +3422,19 @@
if ($use_call)
{
$sql = "SELECT sv.var,sv.val
FROM sample_var as sv, `case` as c, `call` as cl
$sql = "SELECT sivr.var,sv.val
FROM sample_var as sv, `case` as c, `call` as cl, `sample_import_var_restrict` as sivr
WHERE c.sample_id = sv.sample_id
AND c.case_id = cl.case_id
AND sv.var_id = sivr.var_id
AND cl.call_id = '{$_SESSION['token']}'";
}
else
{
$sql = "SELECT sv.var,sv.val
FROM sample_var as sv, `case` as c
$sql = "SELECT sivr.var,sv.val
FROM sample_var as sv, `case` as c, `sample_import_var_restrict` as sivr
WHERE c.sample_id = sv.sample_id
AND sv.var_id = sivr.var_id
AND c.token = '{$_SESSION['token']}'";
}
@@ -3504,10 +3506,6 @@
'jsName'=>'',
'readWrite'=>'N',
);
}
else
@@ -3535,13 +3533,13 @@
//Add all sample variables for this questionnaire
global $connect;
$sql = "SELECT sv.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample as s, sample_var as sv
WHERE q.lime_sid = $surveyid
AND qs.questionnaire_id = q.questionnaire_id
AND s.import_id = qs.sample_import_id
AND sv.sample_id = s.sample_id
GROUP BY qs.sample_import_id,sv.var";
$sql = "SELECT sivr.var,sv.val
FROM `questionnaire` as q, questionnaire_sample as qs, sample_var as sv, `sample_import_var_restrict` as sivr
WHERE q.lime_sid = $surveyid
AND qs.questionnaire_id = q.questionnaire_id
AND sivr.sample_import_id = qs.sample_import_id
AND sv.var_id = sivr.var_id
GROUP BY qs.sample_import_id,sivr.var";
$queXSrs = $connect->GetAssoc($sql);

View File

@@ -419,10 +419,11 @@ function quexs_update_sample($lime_sid,$id,$postedfieldnames)
$sgqa = $r['sid'] . 'X' . $r['gid'] . 'X' . $r['qid'] . $r['title'];
$var = $r['answer'];
$sql = "UPDATE sample_var as sv, ".LIME_PREFIX."survey_$lime_sid as ld
$sql = "UPDATE sample_var as sv, ".LIME_PREFIX."survey_$lime_sid as ld, `sample_import_var_restrict` as sivr
SET sv.val = ld.$sgqa
WHERE sv.var LIKE '$var'
WHERE sivr.var LIKE '$var'
AND sv.sample_id = '$sample_id'
AND sivr.var_id = sv.var_id
AND ld.id = '$id'";
$db->Execute($sql);
@@ -477,8 +478,9 @@ function get_sample_variable($variable,$case_id)
$sql = "SELECT s.val as r
FROM sample_var as s
JOIN `case` as c on (c.case_id = '$case_id' and s.sample_id = c.sample_id)
WHERE s.var = '$variable'";
JOIN `case` as c on (c.case_id = '$case_id' and s.sample_id = c.sample_id), `sample_import_var_restrict` as sivr
WHERE sivr.var = '$variable'
AND s.var_id = sivr.var_id";
$rs = $db->GetRow($sql);