* @copyright Deakin University 2007,2008,2009 * @package queXS * @subpackage admin * @link http://www.deakin.edu.au/dcarf/ queXS was writen for DCARF - Deakin Computer Assisted Research Facility * @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL) Version 2 * * */ /** * Configuration file */ include("../config.inc.php"); /** * Database file */ include ("../db.inc.php"); /** * XHTML functions */ include("../functions/functions.xhtml.php"); /** * Display functions */ include("../functions/functions.display.php"); /** * Input functions */ include("../functions/functions.input.php"); /** * Limesurvey functions */ include("../functions/functions.limesurvey.php"); /** * Operator functions */ include("../functions/functions.operator.php"); global $db; if (isset($_GET['questionnaire_id']) && isset($_GET['sgqa']) && isset($_GET['value']) && isset($_GET['completions']) && isset($_GET['sample_import_id']) && isset($_GET['comparison']) && isset($_GET['exclude_var_id']) && isset($_GET['exclude_var']) && isset($_GET['exclude_val'])) { //need to add quota $value = -1; $comparison = -1; $completions = -1; $sgqa = -1; $autoprioritise = 0; if (isset($_GET['autoprioritise'])) $autoprioritise = 1; $priority = intval($_GET['priority']); $questionnaire_id = bigintval($_GET['questionnaire_id']); $sample_import_id = bigintval($_GET['sample_import_id']); if ($_GET['sgqa'] != -1) { if ($_GET['sgqa'] != -2) { $comparison = $db->quote($_GET['comparison']); $value = $db->quote($_GET['value']); $sgqa = $db->quote($_GET['sgqa']); } else { $sgqa = -2; } $completions = $db->quote($_GET['completions']); } $exclude_var_id = $db->quote($_GET['exclude_var_id']); $exclude_val = $db->quote($_GET['exclude_val']); $exclude_var = $db->quote($_GET['exclude_var']); $description = $db->quote($_GET['description']); $sql = "INSERT INTO questionnaire_sample_quota_row(questionnaire_id, sample_import_id, lime_sgqa,value,completions,comparison,exclude_var_id,exclude_var,exclude_val,description, priority, autoprioritise) VALUES ($questionnaire_id, $sample_import_id, $sgqa, $value, $completions, $comparison, $exclude_var_id, $exclude_var, $exclude_val, $description, $priority, $autoprioritise)"; $db->Execute($sql); //Make sure to calculate on the spot update_quotas($questionnaire_id); } if (isset($_GET['questionnaire_id']) && isset($_GET['questionnaire_sample_quota_row_id'])) { //need to remove quota $questionnaire_id = bigintval($_GET['questionnaire_id']); $questionnaire_sample_quota_row_id = bigintval($_GET['questionnaire_sample_quota_row_id']); open_row_quota($questionnaire_sample_quota_row_id); } $questionnaire_id = false; if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']); xhtml_head(T_("Quota row management"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/bootstrap-toggle/css/bootstrap-toggle.min.css","../css/custom.css"),array("../js/jquery-2.1.3.min.js","../include/bootstrap-toggle/js/bootstrap-toggle.min.js","../js/window.js")); print "

" . T_("Questionnaire") . ": 

"; $sql = "SELECT questionnaire_id as value,description, CASE WHEN questionnaire_id = '$questionnaire_id' THEN 'selected=\'selected\'' ELSE '' END AS selected FROM questionnaire WHERE enabled = 1"; display_chooser($db->GetAll($sql),"questionnaire","questionnaire_id", true,false,true,true,false,true,"form-inline pull-left "); if ($questionnaire_id != false) { $sample_import_id = false; if (isset($_GET['sample_import_id'])) $sample_import_id = bigintval($_GET['sample_import_id']); $sql = "SELECT s.sample_import_id as value,s.description, CASE WHEN s.sample_import_id = '$sample_import_id' THEN 'selected=\'selected\'' ELSE '' END AS selected FROM sample_import as s, questionnaire_sample as q WHERE q.questionnaire_id = $questionnaire_id AND q.sample_import_id = s.sample_import_id"; $s = $db->GetAll($sql); if (!empty($s)){ print "

   " . T_("Sample") . ": 

"; display_chooser($s,"sample","sample_import_id",true,"questionnaire_id=$questionnaire_id",true,true,false,true,"pull-left"); } else { print "
" . T_("No samples assigned to this questionnaire.") . "
"; } print "
"; if ($sample_import_id != false) { if (isset($_POST['copy_sample_import_id'])) { copy_row_quota($questionnaire_id,$sample_import_id,bigintval($_POST['copy_sample_import_id'])); print "

" . T_("Copied quotas") . ":

"; } if (isset($_POST['copy_sample_import_id_with_adjustment'])) { copy_row_quota_with_adjusting($questionnaire_id,$sample_import_id,bigintval($_POST['copy_sample_import_id_with_adjustment'])); print "

" . T_("Copied quotas with adjustment") . ":

"; } print "

" . T_("Current row quotas ") . ":

"; //(click to delete) $sql = "SELECT questionnaire_sample_quota_row_id, lime_sgqa, value, completions, quota_reached, lime_sid, comparison, exclude_var, exclude_val, current_completions FROM questionnaire_sample_quota_row as qsq, questionnaire as q WHERE qsq.questionnaire_id = '$questionnaire_id' AND qsq.sample_import_id = '$sample_import_id' AND q.questionnaire_id = '$questionnaire_id'"; $r = $db->GetAll($sql); if (empty($r)) { print "

" . T_("Currently no row quotas") . "

"; } else { foreach($r as $v) { if ($v['lime_sgqa'] == -1) print "
" . T_("Replicate: Where") . " " . $v['exclude_var'] . " " . T_("like") . " " . $v['exclude_val'] . " - "; else if ($v['lime_sgqa'] == -2) print "
" . T_("Sample only. Stop calling where") . " " . $v['exclude_var'] . " " . T_("like") . " " . $v['exclude_val'] . " " . T_("rows from this sample when:") . " {$v['completions']} " . T_("completions") . " - "; else print "
" . T_("Stop calling") . " " . $v['exclude_var'] . " " . T_("like") . " " . $v['exclude_val'] . " " . T_("rows from this sample when:") . " {$v['lime_sgqa']} {$v['comparison']} {$v['value']} " . T_("for") . ": {$v['completions']} " . T_("completions") ." - "; if ($v['quota_reached'] == 1) print T_("Row quota reached (Closed)"); else print T_("Row quota not yet reached (Open)"); if ($v['lime_sgqa'] != -1) print " - " . T_("Current completions: ") . $v['current_completions'] . ":" . limesurvey_quota_completions($v['lime_sgqa'],$v['lime_sid'],$questionnaire_id,$sample_import_id,$v['value'],$v['comparison']); print "
"; } $sql = "SELECT s.sample_import_id as value,s.description, '' AS selected FROM sample_import as s, questionnaire_sample as q WHERE q.questionnaire_id = $questionnaire_id AND q.sample_import_id = s.sample_import_id AND s.sample_import_id != '$sample_import_id'"; $ss = $db->GetAll($sql); if (!empty($ss)) { print "

" . T_("Copy quotas for this sample to (No error/duplicate checking): "); display_chooser($ss,"copy_sample_import_id","copy_sample_import_id",false,false,false,false); print "

"; print "

" . T_("Copy quotas for this sample to (No error/duplicate checking) with adjusting: "); display_chooser($ss,"copy_sample_import_id_with_adjustment","copy_sample_import_id_with_adjustment",false,false,false,false); print "

"; } } print "

" . T_("Select a question for the row quota") . ": 

"; $sql = "SELECT lime_sid FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'"; $r = $db->GetRow($sql); $lime_sid = $r['lime_sid']; $sgqa = false; if (isset($_GET['sgqa'])) $sgqa = $_GET['sgqa']; $sql = "SELECT CONCAT( lq.sid, 'X', lq.gid, 'X', CASE WHEN lq.parent_qid = 0 THEN lq.qid ELSE CONCAT(lq.parent_qid, lq.title) END) as value, CASE WHEN lq.parent_qid = 0 THEN lq.question ELSE CONCAT(lq2.question, ': ', lq.question) END as description, CASE WHEN CONCAT( lq.sid, 'X', lq.gid, 'X', CASE WHEN lq.parent_qid = 0 THEN lq.qid ELSE CONCAT(lq.parent_qid, lq.title) END) = '$sgqa' THEN 'selected=\'selected\'' ELSE '' END AS selected FROM `" . LIME_PREFIX . "questions` AS lq LEFT JOIN `" . LIME_PREFIX . "questions` AS lq2 ON ( lq2.qid = lq.parent_qid ) JOIN `" . LIME_PREFIX . "groups` as g ON (g.gid = lq.gid) WHERE lq.sid = '$lime_sid' ORDER BY CASE WHEN lq2.question_order IS NULL THEN lq.question_order ELSE lq2.question_order + (lq.question_order / 1000) END ASC"; $rs = $db->GetAll($sql); $selected = ""; if ($sgqa == -1) $selected = "selected='selected'"; array_unshift($rs,array("value" => -1, "description" => T_("No question (Replicate)"), "selected" => $selected)); $selected = ""; if ($sgqa == -2) $selected = "selected='selected'"; array_unshift($rs,array("value" => -2, "description" => T_("Sample only quota"), "selected" => $selected)); display_chooser($rs,"sgqa","sgqa",true,"questionnaire_id=$questionnaire_id&sample_import_id=$sample_import_id"); print "
"; if ($sgqa != false) { $sample_var_id = false; if (isset($_GET['sample_var_id'])) $sample_var_id = $_GET['sample_var_id']; print "

" . T_("Select the sample variable to exclude") . ": 

"; $sql = "SELECT sivr.var_id as value, sivr.var as description, CASE WHEN sivr.var_id = '$sample_var_id' THEN 'selected=\'selected\'' ELSE '' END AS selected FROM `sample_import_var_restrict` as sivr WHERE sivr.sample_import_id = '$sample_import_id'"; $rsv = $db->GetAll($sql); $sample_var = $rsv[0]['description']; display_chooser($rsv,"sample_var_id","sample_var_id",true,"questionnaire_id=$questionnaire_id&sample_import_id=$sample_import_id&sgqa=$sgqa",true,true,false,true,"pull-left"); print "
"; if ($sample_var_id != false) { print "

" . T_("Enter the details for creating the row quota:") . "

"; ?>

" data-off="" data-offstyle="warning"/>

GetAll($sql),"exclude_val","exclude_val",false,false,false,false); flush(); ?>

" class="btn btn-primary fa"/>
"; print "

" . T_("Code values for this question") . ":

"; $rs = ""; if ($sgqa != -2 && $sgqa != -1 && !empty($sgqa)) { $qid = explode("X", $sgqa); $qid = $qid[2]; $sql = "SELECT CONCAT(' ', l.code , '')as code, l.answer as title FROM `" . LIME_PREFIX . "answers` as l WHERE l.qid = '$qid'"; $rs = $db->GetAll($sql); } if (!isset($rs) || empty($rs)) print "

" . T_("No labels defined for this question") ."

"; else xhtml_table($rs,array('code','title'),array(T_("Code value"), T_("Description"))); print "
"; } } } } xhtml_foot(); ?>