mirror of
https://github.com/ACSPRI/queXS
synced 2024-04-02 12:12:16 +00:00
got quotas working with RPC
This commit is contained in:
@@ -493,7 +493,8 @@ if ($case_id != false)
|
|||||||
$sid = get_lime_sid($case_id);
|
$sid = get_lime_sid($case_id);
|
||||||
$id = get_lime_id($case_id);
|
$id = get_lime_id($case_id);
|
||||||
$url = get_lime_url($case_id);
|
$url = get_lime_url($case_id);
|
||||||
print "<div class='panel-body'>";
|
|
||||||
|
print "<div class='panel-body'>";
|
||||||
if ($id)
|
if ($id)
|
||||||
print "<h4><a href='" . $url . "/admin/dataentry/sa/editdata/subaction/edit/surveyid/$sid/id/$id' class='btn btn-default btn-lime'><i class='fa fa-lemon-o fa-lg'></i> " . T_("Modify responses for this case") . "</a></h4>";
|
print "<h4><a href='" . $url . "/admin/dataentry/sa/editdata/subaction/edit/surveyid/$sid/id/$id' class='btn btn-default btn-lime'><i class='fa fa-lemon-o fa-lg'></i> " . T_("Modify responses for this case") . "</a></h4>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ function lime_list_answeroptions($qid,$qcode)
|
|||||||
|
|
||||||
/** Get completed responses as an array based on the case_id
|
/** Get completed responses as an array based on the case_id
|
||||||
*/
|
*/
|
||||||
function lime_get_responses_by_case($case_id,$fields)
|
function lime_get_responses_by_case($case_id,$fields = null)
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
global $limeRPC;
|
global $limeRPC;
|
||||||
@@ -165,7 +165,7 @@ function lime_get_responses_by_case($case_id,$fields)
|
|||||||
$rs = $db->GetRow($sql);
|
$rs = $db->GetRow($sql);
|
||||||
|
|
||||||
$token = $rs['token'];
|
$token = $rs['token'];
|
||||||
$qid = $rs['qid'];
|
$qid = $rs['questionnaire_id'];
|
||||||
|
|
||||||
$lime_id = limerpc_init_qid($qid);
|
$lime_id = limerpc_init_qid($qid);
|
||||||
|
|
||||||
@@ -175,12 +175,10 @@ function lime_get_responses_by_case($case_id,$fields)
|
|||||||
$q = $limeRPC->export_responses_by_token($limeKey,$lime_id,'json',$token,null,'complete','code','short',$fields);
|
$q = $limeRPC->export_responses_by_token($limeKey,$lime_id,'json',$token,null,'complete','code','short',$fields);
|
||||||
if (!isset($q['status'])) {
|
if (!isset($q['status'])) {
|
||||||
$ret = json_decode(base64_decode($q));
|
$ret = json_decode(base64_decode($q));
|
||||||
//TODO: check how this returns
|
|
||||||
var_dump($ret); die();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
limerpc_close();
|
limerpc_close();
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
@@ -190,7 +188,7 @@ function lime_get_responses_by_case($case_id,$fields)
|
|||||||
/** Get completd responses as an array based on the questionnaire
|
/** Get completd responses as an array based on the questionnaire
|
||||||
* indexed by token
|
* indexed by token
|
||||||
*/
|
*/
|
||||||
function lime_get_responses_by_questionnaire($qid,$fields)
|
function lime_get_responses_by_questionnaire($qid,$fields = null)
|
||||||
{
|
{
|
||||||
global $limeRPC;
|
global $limeRPC;
|
||||||
global $limeKey;
|
global $limeKey;
|
||||||
@@ -203,8 +201,6 @@ function lime_get_responses_by_questionnaire($qid,$fields)
|
|||||||
$q = $limeRPC->export_responses($limeKey,$lime_id,'json',null,'complete','code','short',null,null,$fields);
|
$q = $limeRPC->export_responses($limeKey,$lime_id,'json',null,'complete','code','short',null,null,$fields);
|
||||||
if (!isset($q['status'])) {
|
if (!isset($q['status'])) {
|
||||||
$ret = json_decode(base64_decode($q));
|
$ret = json_decode(base64_decode($q));
|
||||||
//TODO: check how this returns
|
|
||||||
var_dump($ret); die();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,7 +296,6 @@ function get_survey_list ()
|
|||||||
* @param mixed $email
|
* @param mixed $email
|
||||||
* @param resource $replace Optional, defaults to ''.
|
* @param resource $replace Optional, defaults to ''.
|
||||||
*
|
*
|
||||||
* @return TODO
|
|
||||||
* @author Adam Zammit <adam.zammit@acspri.org.au>
|
* @author Adam Zammit <adam.zammit@acspri.org.au>
|
||||||
* @since 2013-02-26
|
* @since 2013-02-26
|
||||||
*/
|
*/
|
||||||
@@ -524,6 +519,25 @@ function validate_email($email){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function lime_compare($val1,$operator,$val2)
|
||||||
|
{
|
||||||
|
$val1 = trim($val1);
|
||||||
|
$val2 = trim($val2);
|
||||||
|
if ($operator == "<")
|
||||||
|
return ($val1 < $val2);
|
||||||
|
else if ($operator == ">")
|
||||||
|
return ($val1 > $val2);
|
||||||
|
else if ($operator == "<=")
|
||||||
|
return ($val1 <= $val2);
|
||||||
|
else if ($operator == ">=")
|
||||||
|
return ($val1 >= $val2);
|
||||||
|
else if ($operator == "NOT LIKE" || $operator == "!=")
|
||||||
|
return ($val1 != $val2);
|
||||||
|
else
|
||||||
|
return ($val1 == $val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of completions for a given
|
* Return the number of completions for a given
|
||||||
* questionnaire, where the given question has
|
* questionnaire, where the given question has
|
||||||
@@ -542,25 +556,32 @@ function limesurvey_quota_completions($lime_sgqa,$lime_sid,$questionnaire_id,$sa
|
|||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$resp = lime_get_responses_by_questionnaire($questionnaire_id,array($lime_sgqa));
|
$resp = lime_get_responses_by_questionnaire($questionnaire_id);
|
||||||
|
|
||||||
$completions = false;
|
$completions = false;
|
||||||
|
|
||||||
if ($resp !== false) {
|
if ($resp !== false) {
|
||||||
$sql = "SELECT c.token
|
$sql = "SELECT c.token,c.token as tok
|
||||||
FROM `case` as c
|
FROM `case` as c
|
||||||
JOIN `sample` as sam ON (c.sample_id = sam.sample_id AND sam.import_id = '$sample_import_id')
|
JOIN `sample` as sam ON (c.sample_id = sam.sample_id AND sam.import_id = '$sample_import_id')
|
||||||
WHERE c.questionnaire_id = '$questionnaire_id'";
|
WHERE c.questionnaire_id = '$questionnaire_id'";
|
||||||
|
|
||||||
$rs = $db->GetAssoc($sql);
|
$rs = $db->GetAssoc($sql);
|
||||||
|
|
||||||
$completions = 0;
|
$completions = 0;
|
||||||
|
foreach($resp as $r) {
|
||||||
foreach($resp as $r) {
|
foreach($r as $r1) {
|
||||||
|
foreach($r1 as $rl) {
|
||||||
|
if (isset($rl->token) && isset($rs[$rl->token])) {
|
||||||
|
//match to a case in the sample
|
||||||
|
if (isset($rl->$lime_sgqa)) {
|
||||||
|
$completions += lime_compare($rl->$lime_sgqa, $comparison, $value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $completions;
|
return $completions;
|
||||||
}
|
}
|
||||||
@@ -709,7 +730,7 @@ function limesurvey_percent_complete($case_id)
|
|||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
|
|
||||||
//TODO: use export_responses_by_token and check the lastpage variable
|
//TODO: use export_responses_by_token and check the lastpage variable?
|
||||||
//
|
//
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1794,13 +1794,16 @@ function update_single_row_quota($qsqri,$case_id = false)
|
|||||||
//get response data from Limesurvey
|
//get response data from Limesurvey
|
||||||
$resp = lime_get_responses_by_case($case_id);
|
$resp = lime_get_responses_by_case($case_id);
|
||||||
|
|
||||||
|
//get the result from the current response
|
||||||
|
$resp = current(current(current($resp)));
|
||||||
|
|
||||||
foreach($qev as $ev)
|
foreach($qev as $ev)
|
||||||
{
|
{
|
||||||
$sql2 .= " AND '" . $resp[$ev['lime_sgqa']] . " ' {$ev['comparison']} '{$ev['value']}' ";
|
$sql2 .= " AND '" . trim($resp->$ev['lime_sgqa']) . "' {$ev['comparison']} '{$ev['value']}' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
$match = $db->GetOne($sql2);
|
$match = $db->GetOne($sql2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($match == 1)
|
if ($match == 1)
|
||||||
@@ -1841,24 +1844,40 @@ function update_single_row_quota($qsqri,$case_id = false)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//find all completions from cases with matching limesurvey records
|
//find all completions from cases with matching limesurvey records
|
||||||
$sql2 = "SELECT token
|
|
||||||
FROM `case` as c
|
|
||||||
WHERE c.questionnaire_id = '$questionnaire_id'";
|
|
||||||
|
|
||||||
//get all completed responses from limesurvey, indexed by token
|
|
||||||
|
|
||||||
include_once(dirname(__FILE__).'/functions.limesurvey.php');
|
include_once(dirname(__FILE__).'/functions.limesurvey.php');
|
||||||
$resp = lime_get_responses_by_questionnaire($questionnaire_id);
|
$resp = lime_get_responses_by_questionnaire($questionnaire_id);
|
||||||
|
|
||||||
foreach($qev as $ev)
|
if ($resp !== false) {
|
||||||
{
|
|
||||||
//TODO: Exclude responses from the $resp array where there isn't a match
|
$sql2 = "SELECT c.token,c.token as tok
|
||||||
//based on the comparisons
|
FROM `case` as c
|
||||||
$sql2 .= " AND s.`{$ev['lime_sgqa']}` {$ev['comparison']} '{$ev['value']}' ";
|
JOIN `sample` as sam ON (c.sample_id = sam.sample_id AND sam.import_id = '$sample_import_id')
|
||||||
|
WHERE c.questionnaire_id = '$questionnaire_id'";
|
||||||
|
|
||||||
|
$rs = $db->GetAssoc($sql2);
|
||||||
|
|
||||||
|
foreach($resp as $r) {
|
||||||
|
foreach($r as $r1) {
|
||||||
|
foreach($r1 as $rl) {
|
||||||
|
if (isset($rl->token) && isset($rs[$rl->token])) {
|
||||||
|
//match to a case in the sample
|
||||||
|
$tmp = 0;
|
||||||
|
foreach($qev as $ev) {
|
||||||
|
if (isset($rl->$ev['lime_sgqa'])) {
|
||||||
|
$tmp = lime_compare($rl->$ev['lime_sgqa'], $ev['comparison'], $ev['value']);
|
||||||
|
if ($tmp != 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$completions += $tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$completions = count($resp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$updatequota = true;
|
$updatequota = true;
|
||||||
@@ -2483,11 +2502,8 @@ function get_limesurvey_id($operator_id,$rs = false)
|
|||||||
else
|
else
|
||||||
$sql = "SELECT q.lime_sid as sid";
|
$sql = "SELECT q.lime_sid as sid";
|
||||||
|
|
||||||
$sql .= " FROM `case` as c, questionnaire_sample as qs, sample as s, questionnaire as q
|
$sql .= " FROM `case` as c, questionnaire as q
|
||||||
WHERE c.current_operator_id = '$operator_id'
|
WHERE c.current_operator_id = '$operator_id'
|
||||||
AND c.sample_id = s.sample_id
|
|
||||||
AND s.import_id = qs.sample_import_id
|
|
||||||
AND q.questionnaire_id = qs.questionnaire_id
|
|
||||||
AND c.questionnaire_id = q.questionnaire_id";
|
AND c.questionnaire_id = q.questionnaire_id";
|
||||||
|
|
||||||
$rs = $db->GetRow($sql);
|
$rs = $db->GetRow($sql);
|
||||||
|
|||||||
Reference in New Issue
Block a user