From 85f5c354056971ea4c2c953db9d0ffa9ec7ea7c8 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 May 2015 17:11:07 +0300 Subject: [PATCH] functions querries adjusted for sample_import_var_restrict table and exclude_var_id in row quotas instead of exclude_var --- functions/functions.import.php | 19 +++++++----- functions/functions.operator.php | 51 ++++++++++++++++---------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/functions/functions.import.php b/functions/functions.import.php index 13295f0d..0b567a7c 100644 --- a/functions/functions.import.php +++ b/functions/functions.import.php @@ -130,7 +130,7 @@ function display_table($data) global $db; $sql = "SELECT description,type - FROM sample_var_type"; + FROM sample_var_type ORDER BY type ASC"; $rs = $db->GetAll($sql); @@ -145,11 +145,11 @@ function display_table($data) "; print ""; @@ -212,6 +212,7 @@ function import_file($file, $description, $fields, $firstrow = 2) $selected_type = array(); $selected_name = array(); + $sirv_id = array(); foreach($fields as $key => $val) { @@ -229,10 +230,12 @@ function import_file($file, $description, $fields, $firstrow = 2) } $sql = "INSERT INTO sample_import_var_restrict - (`sample_import_id`,`var`,`restrict`) - VALUES ($id,'" . $fields["n_" . substr($key,2)] . "',$restrict)"; + (`sample_import_id`,`var`,`type`,`restrict`) + VALUES ($id,'" . $fields["n_" . substr($key,2)] . "','" . $fields["t_" . substr($key,2)] . "',$restrict)"; - $db->Execute($sql); + $db->Execute($sql); + + $sirv_id[substr($key,2)] = $db->Insert_ID(); // } } @@ -312,8 +315,8 @@ function import_file($file, $description, $fields, $firstrow = 2) { $dkey = $db->Quote($data[$key - 1]); - $sql = "INSERT INTO sample_var (sample_id,var,val,type) - VALUES ('$sid','$val',{$dkey},'{$selected_type[$key]}')"; + $sql = "INSERT INTO sample_var (sample_id,var_id,var,val,type) + VALUES ('$sid','{$sirv_id[$key]}','$val',{$dkey},'{$selected_type[$key]}')"; $db->Execute($sql); diff --git a/functions/functions.operator.php b/functions/functions.operator.php index 77b361e6..9fd59380 100644 --- a/functions/functions.operator.php +++ b/functions/functions.operator.php @@ -184,8 +184,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); @@ -238,7 +239,6 @@ function get_respondent_variable($variable,$respondent_id) $rs = $db->GetRow($sql); - if (empty($rs)) return ""; return $rs['r']; @@ -380,14 +380,15 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing = //$db->Execute("SET @row := 0"); - $sql = "SELECT val as phone - FROM sample_var - WHERE sample_id = '$sample_id' - AND val > 0 - AND val is NOT NULL - AND val != \"\" - AND (`type` = 2 or `type` = 3) - ORDER BY `type` DESC"; + $sql = "SELECT sv.val as phone + FROM sample_var as sv, sample_import_var_restrict as sivr + WHERE sv.sample_id = '$sample_id' + AND sv.var_id = sivr.var_id + AND sv.val > 0 + AND sv.val is NOT NULL + AND sv.val != \"\" + AND sivr.`type` IN (2,3) + ORDER BY sivr.`type` DESC"; $r5 = $db->GetAll($sql); @@ -418,8 +419,8 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing = $sql = "INSERT INTO respondent (case_id,firstName,lastName,Time_zone_name) SELECT $case_id as case_id, IFNULL(s1.val,'') as firstName, IFNULL(s2.val,'') as lastName, s3.Time_zone_name as Time_zone_name FROM sample as s3 - LEFT JOIN sample_var as s2 on (s2.sample_id = '$sample_id' and s2.type = 7) - LEFT JOIN sample_var as s1 on (s1.sample_id = '$sample_id' and s1.type = 6) + LEFT JOIN (sample_var as s2 , sample_import_var_restrict as sivr2) on (s2.sample_id = '$sample_id' and s2.var_id = sivr2.var_id and sivr2.type = 7) + LEFT JOIN (sample_var as s1 , sample_import_var_restrict as sivr1) on (s1.sample_id = '$sample_id' and s1.var_id = sivr1.var_id and sivr1.type = 6) WHERE s3.sample_id = '$sample_id'"; $db->Execute($sql); @@ -637,8 +638,8 @@ function get_case_id($operator_id, $create = false) AND ((qsep.questionnaire_id is NULL) or qsep.exclude = 0) AND !(q.restrict_work_shifts = 1 AND sh.shift_id IS NULL AND os.outcome_type_id != 2) AND !(si.call_restrict = 1 AND cr.day_of_week IS NULL AND os.outcome_type_id != 2) - AND ((apn.appointment_id IS NOT NULL) or qs.call_attempt_max = 0 or ((SELECT count(*) FROM call_attempt WHERE case_id = c.case_id) < qs.call_attempt_max)) - AND ((apn.appointment_id IS NOT NULL) or qs.call_max = 0 or ((SELECT count(*) FROM `call` WHERE case_id = c.case_id) < qs.call_max)) + AND ((apn.appointment_id IS NOT NULL) or qs.call_attempt_max = 0 or ((SELECT count(*) FROM call_attempt WHERE call_attempt.case_id = c.case_id) < qs.call_attempt_max)) + AND ((apn.appointment_id IS NOT NULL) or qs.call_max = 0 or ((SELECT count(*) FROM `call` WHERE `call`.case_id = c.case_id) < qs.call_max)) AND (apn.require_operator_id IS NULL OR apn.require_operator_id = '$operator_id') AND (SELECT count(*) FROM `questionnaire_sample_quota` WHERE questionnaire_id = c.questionnaire_id AND sample_import_id = s.import_id AND quota_reached = 1) = 0 ORDER BY IF(ISNULL(apn.end),1,0),apn.end ASC, qsep.priority DESC, a.start ASC @@ -1515,7 +1516,7 @@ function close_row_quota($questionnaire_sample_quota_row_id,$update = true) WHERE s.import_id = qs.sample_import_id AND qs.questionnaire_sample_quota_row_id = $questionnaire_sample_quota_row_id AND s.sample_id = sv.sample_id - AND sv.var = qs.exclude_var + AND sv.var_id = qs.exclude_var_id AND qs.exclude_val LIKE sv.val"; $db->Execute($sql); @@ -1549,8 +1550,8 @@ function copy_row_quota($questionnaire_id,$sample_import_id,$copy_sample_import_ //Set quota_reached to 0 always - $sql = "INSERT INTO questionnaire_sample_quota_row (questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,exclude_var,exclude_val,quota_reached,description) - SELECT questionnaire_id, $copy_sample_import_id, lime_sgqa,value,comparison,completions,exclude_var,exclude_val,0,description + $sql = "INSERT INTO questionnaire_sample_quota_row (questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,exclude_var_id,exclude_var,exclude_val,quota_reached,description) + SELECT questionnaire_id, $copy_sample_import_id, lime_sgqa,value,comparison,completions,exclude_var_id,exclude_var,exclude_val,0,description FROM questionnaire_sample_quota_row WHERE questionnaire_id = '$questionnaire_id' AND sample_import_id = '$sample_import_id'"; @@ -1578,8 +1579,8 @@ function copy_row_quota_with_blocking($questionnaire_id,$sample_import_id,$copy_ //Set quota_reached to 0 always - $sql = "INSERT INTO questionnaire_sample_quota_row (questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,exclude_var,exclude_val,quota_reached,description) - SELECT questionnaire_id, $copy_sample_import_id, lime_sgqa,value,comparison,completions,exclude_var,exclude_val,quota_reached,description + $sql = "INSERT INTO questionnaire_sample_quota_row (questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,exclude_var_id,exclude_var,exclude_val,quota_reached,description) + SELECT questionnaire_id, $copy_sample_import_id, lime_sgqa,value,comparison,completions, exclude_var_id,exclude_var,exclude_val, quota_reached,description FROM questionnaire_sample_quota_row WHERE questionnaire_id = '$questionnaire_id' AND sample_import_id = '$sample_import_id'"; @@ -1609,7 +1610,7 @@ function copy_row_quota_with_adjusting($questionnaire_id,$sample_import_id,$copy $db->StartTrans(); // Select quotas from the old sample rows and calculate - $sql = "SELECT questionnaire_sample_quota_row_id,q.questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,quota_reached,q.lime_sid,qsq.exclude_var,qsq.exclude_val + $sql = "SELECT questionnaire_sample_quota_row_id,q.questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,quota_reached,q.lime_sid,qsq.exclude_var_id,qsq.exclude_var,qsq.exclude_val FROM questionnaire_sample_quota_row as qsq, questionnaire as q WHERE qsq.questionnaire_id = '$questionnaire_id' AND q.questionnaire_id = '$questionnaire_id' @@ -1664,7 +1665,7 @@ function update_row_quota($questionnaire_id,$case_id = false) $db->StartTrans(); - $sql = "SELECT questionnaire_sample_quota_row_id,q.questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,quota_reached,q.lime_sid,qsq.exclude_var,qsq.exclude_val,qsq.current_completions,qsq.priority,qsq.autoprioritise + $sql = "SELECT questionnaire_sample_quota_row_id,q.questionnaire_id,sample_import_id,lime_sgqa,value,comparison,completions,quota_reached,q.lime_sid, qsq.exclude_var_id,qsq.exclude_var,qsq.exclude_val,qsq.current_completions,qsq.priority,qsq.autoprioritise FROM questionnaire_sample_quota_row as qsq, questionnaire as q WHERE qsq.questionnaire_id = '$questionnaire_id' AND q.questionnaire_id = '$questionnaire_id' @@ -1688,7 +1689,7 @@ function update_row_quota($questionnaire_id,$case_id = false) if ($case_id != false) { if ($r['lime_sgqa'] == -2) - $match = limesurvey_quota_replicate_match($r['lime_sid'],$case_id,$r['exclude_val'],$r['exclude_var'],$r['sample_import_id']); + $match = limesurvey_quota_replicate_match($r['lime_sid'],$case_id,$r['exclude_val'],$r['exclude_var_id'],$r['sample_import_id']); else $match = limesurvey_quota_match($r['lime_sgqa'],$r['lime_sid'],$case_id,$r['value'],$r['comparison'],$r['sample_import_id']); @@ -1709,7 +1710,7 @@ function update_row_quota($questionnaire_id,$case_id = false) else { if ($r['lime_sgqa'] == -2) - $completions = limesurvey_quota_replicate_completions($r['lime_sid'],$r['questionnaire_id'],$r['sample_import_id'],$r['exclude_val'],$r['exclude_var']); + $completions = limesurvey_quota_replicate_completions($r['lime_sid'],$r['questionnaire_id'],$r['sample_import_id'],$r['exclude_val'],$r['exclude_var_id']); else $completions = limesurvey_quota_completions($r['lime_sgqa'],$r['lime_sid'],$r['questionnaire_id'],$r['sample_import_id'],$r['value'],$r['comparison']); $updatequota = true; @@ -1832,7 +1833,7 @@ function update_quota_priorities($questionnaire_id) WHERE s.import_id = qs.sample_import_id AND qs.questionnaire_sample_quota_row_id = '$qsqri' AND s.sample_id = sv.sample_id - AND sv.var = qs.exclude_var + AND sv.var_id = qs.exclude_var_id AND qs.exclude_val LIKE sv.val AND qsep.questionnaire_id = qs.questionnaire_id AND qsep.sample_id = s.sample_id";