mirror of
https://github.com/ACSPRI/queXS
synced 2024-04-02 12:12:16 +00:00
Allow for adding sample variables as attributes
This commit is contained in:
@@ -79,6 +79,9 @@ $js_foot = array(
|
|||||||
);
|
);
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
|
$error = "";
|
||||||
|
|
||||||
|
|
||||||
if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['call_max']) && isset($_GET['call_attempt_max']))
|
if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['call_max']) && isset($_GET['call_attempt_max']))
|
||||||
{
|
{
|
||||||
//need to add sample to questionnaire
|
//need to add sample to questionnaire
|
||||||
@@ -103,51 +106,46 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['
|
|||||||
|
|
||||||
if (isset($_GET['generatecases']))
|
if (isset($_GET['generatecases']))
|
||||||
{
|
{
|
||||||
include_once("../functions/functions.operator.php");
|
|
||||||
|
|
||||||
//TODO: check here if attributes available for assigning sample variables
|
|
||||||
//if not - fail
|
|
||||||
|
|
||||||
$db->StartTrans();
|
//find the number of sample variables required
|
||||||
|
$sql = "SELECT count(*)
|
||||||
$lime_sid = $db->GetOne("SELECT lime_sid FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'");
|
FROM sample_import_var_restrict
|
||||||
$testing = $db->GetOne("SELECT testing FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'");
|
|
||||||
|
|
||||||
//add limesurvey attribute for each sample var record
|
|
||||||
$sql = "SELECT var,type
|
|
||||||
FROM sample_import_var_restrict
|
|
||||||
WHERE sample_import_id = '$sid'
|
WHERE sample_import_id = '$sid'
|
||||||
ORDER BY var_id ASC";
|
AND type = 1";
|
||||||
|
|
||||||
$rs = $db->GetAll($sql);
|
$varsrequired = $db->GetOne($sql);
|
||||||
|
|
||||||
$i = 1;
|
$addsample = false;
|
||||||
|
|
||||||
$fields = array();
|
if ($varsrequired > 0) {
|
||||||
$fieldcontents='';
|
$addsample = true;
|
||||||
foreach($rs as $r)
|
}
|
||||||
{
|
|
||||||
$fields[]=array('attribute_'.$i,'C','255');
|
|
||||||
$fieldcontents.='attribute_'.$i.'='.$r['var']."\n";
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
include_once("../functions/functions.operator.php");
|
||||||
|
|
||||||
|
$db->StartTrans();
|
||||||
|
|
||||||
|
$lime_sid = $db->GetOne("SELECT lime_sid FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'");
|
||||||
|
$testing = $db->GetOne("SELECT testing FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'");
|
||||||
|
|
||||||
//generate one case for each sample record and set outcome to 41
|
//generate one case for each sample record and set outcome to 41
|
||||||
$sql = "SELECT sample_id
|
$sql = "SELECT sample_id
|
||||||
FROM sample
|
FROM sample
|
||||||
WHERE import_id = '$sid'";
|
WHERE import_id = '$sid'";
|
||||||
|
|
||||||
$rs = $db->GetAll($sql);
|
$rs = $db->GetAll($sql);
|
||||||
|
|
||||||
foreach($rs as $r)
|
foreach($rs as $r)
|
||||||
{
|
{
|
||||||
set_time_limit(30);
|
set_time_limit(30);
|
||||||
//TODO : update add_case function to include attributes based on var_id ASC
|
if (add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, $addsample) === false) {
|
||||||
add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, true);
|
$error = "Could not add case - please ensure there enough additional attributes available in your Limesurvey participant table";
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$db->CompleteTrans();
|
$db->CompleteTrans();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_POST['edit']))
|
if (isset($_POST['edit']))
|
||||||
@@ -312,8 +310,11 @@ print "</div>";
|
|||||||
|
|
||||||
if ($questionnaire_id != false)
|
if ($questionnaire_id != false)
|
||||||
{
|
{
|
||||||
|
if ($error != "") {
|
||||||
print "<div class='panel-body'>
|
print "<div class='alert text-danger'>$error</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
print "<div class='panel-body'>
|
||||||
<h3 class=''><i class='fa fa-list-ul text-primary'></i> ". T_("Samples assigned to questionnaire") ." <span class='text-primary'>" . $db->GetOne("SELECT description from questionnaire WHERE questionnaire_id = $questionnaire_id") . "</span></h3>";
|
<h3 class=''><i class='fa fa-list-ul text-primary'></i> ". T_("Samples assigned to questionnaire") ." <span class='text-primary'>" . $db->GetOne("SELECT description from questionnaire WHERE questionnaire_id = $questionnaire_id") . "</span></h3>";
|
||||||
|
|
||||||
$sql = "SELECT q.sort_order, si.description as description,si.sample_import_id,
|
$sql = "SELECT q.sort_order, si.description as description,si.sample_import_id,
|
||||||
|
|||||||
@@ -234,7 +234,6 @@ function lime_add_token($qid,$params)
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function get_token_value($questionnaire_id,$token, $value = 'sent')
|
function get_token_value($questionnaire_id,$token, $value = 'sent')
|
||||||
{
|
{
|
||||||
global $limeKey;
|
global $limeKey;
|
||||||
|
|||||||
@@ -436,19 +436,24 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing =
|
|||||||
$llastname = "";
|
$llastname = "";
|
||||||
$lemail = "";
|
$lemail = "";
|
||||||
|
|
||||||
$lfirstname = ($db->GetOne("SELECT sv.val
|
$params = array('firstname' => "",
|
||||||
|
'lastname' => "",
|
||||||
|
'email' => "",
|
||||||
|
'token' => $token);
|
||||||
|
|
||||||
|
$params['firstname'] = ($db->GetOne("SELECT sv.val
|
||||||
FROM sample_var as sv, sample_import_var_restrict as s
|
FROM sample_var as sv, sample_import_var_restrict as s
|
||||||
WHERE sv.var_id = s.var_id
|
WHERE sv.var_id = s.var_id
|
||||||
AND sv.sample_id = '$sample_id'
|
AND sv.sample_id = '$sample_id'
|
||||||
AND s.type = '6'"));
|
AND s.type = '6'"));
|
||||||
|
|
||||||
$llastname = ($db->GetOne("SELECT sv.val
|
$params['lastname'] = ($db->GetOne("SELECT sv.val
|
||||||
FROM sample_var as sv, sample_import_var_restrict as s
|
FROM sample_var as sv, sample_import_var_restrict as s
|
||||||
WHERE sv.var_id = s.var_id
|
WHERE sv.var_id = s.var_id
|
||||||
AND sv.sample_id = '$sample_id'
|
AND sv.sample_id = '$sample_id'
|
||||||
AND s.type = '7'"));
|
AND s.type = '7'"));
|
||||||
|
|
||||||
$lemail = ($db->GetOne("SELECT sv.val
|
$params['email'] = ($db->GetOne("SELECT sv.val
|
||||||
FROM sample_var as sv, sample_import_var_restrict as s
|
FROM sample_var as sv, sample_import_var_restrict as s
|
||||||
WHERE sv.var_id = s.var_id
|
WHERE sv.var_id = s.var_id
|
||||||
AND sv.sample_id = '$sample_id'
|
AND sv.sample_id = '$sample_id'
|
||||||
@@ -457,19 +462,32 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing =
|
|||||||
//include limesurvey functions
|
//include limesurvey functions
|
||||||
include_once(dirname(__FILE__).'/functions.limesurvey.php');
|
include_once(dirname(__FILE__).'/functions.limesurvey.php');
|
||||||
|
|
||||||
$ret = lime_add_token($questionnaire_id,array( 'firstname' => $lfirstname,
|
if ($addlimeattributes)
|
||||||
'lastname' => $llastname,
|
|
||||||
'email' => $lemail,
|
|
||||||
'token' => $token));
|
|
||||||
|
|
||||||
//fail to create case if can't add remote token
|
|
||||||
if ($ret === false)
|
|
||||||
$db->FailTrans();
|
|
||||||
|
|
||||||
if ($addlimeattributes)
|
|
||||||
{
|
{
|
||||||
//TODO: Add attributes from sample
|
$sql = "SELECT sv.val
|
||||||
|
FROM sample_var as sv, sample_import_var_restrict as s
|
||||||
|
WHERE sv.var_id = s.var_id
|
||||||
|
AND sv.sample_id = '$sample_id'
|
||||||
|
AND s.type = '1'
|
||||||
|
ORDER BY s.var_id ASC";
|
||||||
|
|
||||||
|
$vars = $db->GetAll($sql);
|
||||||
|
|
||||||
|
$att = 1;
|
||||||
|
|
||||||
|
foreach($vars as $v) {
|
||||||
|
$params['attribute_' . $att] = $v['val'];
|
||||||
|
$att++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ret = lime_add_token($questionnaire_id,$params);
|
||||||
|
|
||||||
|
//fail to create case if can't add remote token
|
||||||
|
if ($ret === false) {
|
||||||
|
$db->FailTrans();
|
||||||
|
$case_id = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user