diff --git a/admin/questionnairelist.php b/admin/questionnairelist.php index d1fecc46..4795dd79 100644 --- a/admin/questionnairelist.php +++ b/admin/questionnairelist.php @@ -1,8 +1,6 @@ -<<<<<<< TREE - * @copyright Deakin University 2007,2008,2009 + * @author Adam Zammit + * @copyright Australian Consortium for Social and Political Research Incorporated (ACSPRI) 2011 * @package queXS * @subpackage admin - * @link http://www.deakin.edu.au/dcarf/ queXS was writen for DCARF - Deakin Computer Assisted Research Facility + * @link http://www.acspri.org.au/ queXS was writen for ACSPRI * @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL) Version 2 - * * */ @@ -40,7 +37,7 @@ include("../config.inc.php"); /** * Database file */ -include ("../db.inc.php"); +include("../db.inc.php"); /** * XHTML functions @@ -48,7 +45,7 @@ include ("../db.inc.php"); include("../functions/functions.xhtml.php"); /** - * Display functions + * Input functions */ include("../functions/functions.display.php"); @@ -58,7 +55,7 @@ include("../functions/functions.display.php"); include("../functions/functions.input.php"); /** - * Limesurvey functions + * CKEditor */ include("../functions/functions.limesurvey.php"); @@ -67,888 +64,538 @@ include("../functions/functions.limesurvey.php"); */ include("../functions/functions.operator.php"); +/** + * CKEditor + */ +include("../include/ckeditor/ckeditor.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'])) +$css = array( +"../include/bootstrap-3.3.2/css/bootstrap.min.css", +"../include/bootstrap-3.3.2/css/bootstrap-theme.min.css", +"../include/font-awesome-4.3.0/css/font-awesome.css", +"../include/bootstrap-toggle/css/bootstrap-toggle.min.css", +"../css/custom.css" + ); +$js_head = array( +"../js/jquery-2.1.3.min.js", +"../include/bootstrap-3.3.2/js/bootstrap.min.js" + ); +$js_foot = array( +"../js/new.js", +"../include/bootstrap-toggle/js/bootstrap-toggle.min.js", +"../js/bootstrap-confirmation.js", +"../js/custom.js" + ); + +if (isset($_POST['questionnaire_id']) && isset($_POST['submit'])) { - //need to add quota - $value = -1; - $comparison = -1; - $completions = -1; - $sgqa = -1; - $autoprioritise = 0; + //Delete the questionnaire - 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']); + $questionnaire_id = intval($_POST['questionnaire_id']); - $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->StartTrans(); + + $sql = "DELETE FROM `appointment` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_id)"; $db->Execute($sql); - //Make sure to calculate on the spot - update_quotas($questionnaire_id); -} + $sql = "DELETE FROM `call` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $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 "); + $db->Execute($sql); -if ($questionnaire_id != false) -{ - $sample_import_id = false; - if (isset($_GET['sample_import_id'])) $sample_import_id = bigintval($_GET['sample_import_id']); + $sql = "DELETE FROM `call_attempt` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_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(); - -?>======= - - * @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"); + $db->Execute($sql); -global $db; + $sql = "DELETE FROM `case_availability` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_id)"; + $db->Execute($sql); -if (isset($_POST['submitdelete'])) -{ - foreach($_POST as $key => $val) - { - if (substr($key,0,7) == "select_") - { - $tmp = bigintval(substr($key,7)); - open_row_quota($tmp); - } - } -} + $sql = "DELETE FROM `case_note` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_id)"; -if (isset($_POST['submitexport'])) -{ - $csv = array(); - foreach($_POST as $key => $val) - { - if (substr($key,0,7) == "select_") - { - $tmp = bigintval(substr($key,7)); + $db->Execute($sql); - $sql = "SELECT description,completions,autoprioritise - FROM questionnaire_sample_quota_row - WHERE questionnaire_sample_quota_row_id = $tmp"; + $sql = "DELETE FROM `contact_phone` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_id)"; - $rs = $db->GetRow($sql); + $db->Execute($sql); - $sql = "SELECT lime_sgqa,comparison,value - FROM qsqr_question - WHERE questionnaire_sample_quota_row_id = $tmp"; + $sql = "DELETE FROM `respondent` + WHERE case_id IN + (SELECT case_id + FROM `case` + WHERE questionnaire_id = $questionnaire_id)"; - $q2 = $db->GetAll($sql); + $db->Execute($sql); - $sql = "SELECT exclude_var as samplerecord,comparison,exclude_val as value - FROM qsqr_sample - WHERE questionnaire_sample_quota_row_id = $tmp"; + $sql = "DELETE FROM `client_questionnaire` + WHERE questionnaire_id = $questionnaire_id"; - $q3 = $db->GetAll($sql); + $db->Execute($sql); - $ta = array($rs['description'],$rs['completions'],$rs['autoprioritise']); + $sql = "DELETE FROM `operator_questionnaire` + WHERE questionnaire_id = $questionnaire_id"; - //just search where col 1 looks like 333X2X2 and assume it is a question + $db->Execute($sql); - foreach($q2 as $qr) - foreach($qr as $qe => $val) - $ta[] = $val; - - foreach($q3 as $qr) - foreach($qr as $qe => $val) - $ta[] = $val; + $sql = "DELETE FROM `questionnaire_availability` + WHERE questionnaire_id = $questionnaire_id"; - $csv[] = $ta; - } - } - if (!empty($csv)) - { - $fn = T_("Quota") .".csv"; + $db->Execute($sql); - header("Content-Type: text/csv"); - header("Content-Disposition: attachment; filename=$fn"); - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - Header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); - header("Pragma: no-cache"); // HTTP/1.0 + $sql = "DELETE FROM `questionnaire_prefill` + WHERE questionnaire_id = $questionnaire_id"; - foreach($csv as $cr) - { - for ($i = 0; $i < count($cr); $i++) - { - echo str_replace(","," ",$cr[$i]); - if ($i < (count($cr) - 1)) - echo ","; - } - echo "\n"; - } - die(); - } -} + $db->Execute($sql); -if (isset($_GET['delete'])) -{ - $qsqri = bigintval($_GET['qsqri']); + $sql = "DELETE FROM `questionnaire_sample` + WHERE questionnaire_id = $questionnaire_id"; - if (isset($_GET['qsqrqi'])) - { - $qsqrqi = bigintval($_GET['qsqrqi']); - $sql = "DELETE FROM qsqr_question - WHERE qsqr_question_id = $qsqrqi"; - $db->Execute($sql); + $db->Execute($sql); - //Make sure to calculate on the spot - update_single_row_quota($qsqri); - } - if (isset($_GET['qsqrsi'])) - { - $qsqrsi = bigintval($_GET['qsqrsi']); - $sql = "DELETE FROM qsqr_sample - WHERE qsqr_sample_id = $qsqrsi"; - $db->Execute($sql); + $sql = "DELETE FROM `questionnaire_sample_exclude_priority` + WHERE questionnaire_id = $questionnaire_id"; - //Make sure to calculate on the spot - update_single_row_quota($qsqri); - } -} + $db->Execute($sql); + $sql = "DELETE FROM `questionnaire_sample_quota` + WHERE questionnaire_id = $questionnaire_id"; -if (isset($_POST['add_quota'])) -{ - //need to add quota - $completions = intval($_POST['completions']); - $autoprioritise = 0; - if (isset($_POST['autoprioritise'])) $autoprioritise = 1; - $priority = intval($_POST['priority']); - $questionnaire_id = bigintval($_GET['questionnaire_id']); - $sample_import_id = bigintval($_GET['sample_import_id']); - $description = $db->quote($_POST['description']); + $db->Execute($sql); - $sql = "INSERT INTO questionnaire_sample_quota_row(questionnaire_id, sample_import_id, completions, description, priority, autoprioritise) - VALUES ($questionnaire_id, $sample_import_id, $completions, $description, $priority, $autoprioritise)"; + $sql = "DELETE FROM qsqr_question + WHERE questionnaire_sample_quota_row_id IN ( + SELECT questionnaire_sample_quota_row_id + FROM questionnaire_sample_quota_row + WHERE questionnaire_id = $questionnaire_id)"; $db->Execute($sql); - $qq = $db->Insert_ID(); + $sql = "DELETE FROM qsqr_sample + WHERE questionnaire_sample_quota_row_id IN ( + SELECT questionnaire_sample_quota_row_id + FROM questionnaire_sample_quota_row + WHERE questionnaire_id = $questionnaire_id)"; - //Make sure to calculate on the spot - update_single_row_quota($qq); -} + $db->Execute($sql); -if (isset($_POST['edit_quota'])) -{ - $completions = intval($_POST['completions']); - $autoprioritise = 0; - if (isset($_POST['autoprioritise'])) $autoprioritise = 1; - $priority = intval($_POST['priority']); - $description = $db->quote($_POST['description']); - $qsqri = bigintval($_POST['qsqri']); - - $sql = "UPDATE questionnaire_sample_quota_row - SET completions = $completions, - autoprioritise = $autoprioritise, - priority = $priority, - description = $description - WHERE questionnaire_sample_quota_row_id = $qsqri"; + $sql = "DELETE FROM `questionnaire_sample_quota_row` + WHERE questionnaire_id = $questionnaire_id"; $db->Execute($sql); - $_GET['qsqri'] = $qsqri; - $_GET['edit'] = "edit"; + $sql = "DELETE FROM `questionnaire_sample_quota_row_exclude` + WHERE questionnaire_id = $questionnaire_id"; - //Make sure to calculate on the spot - update_single_row_quota($qsqri); + $db->Execute($sql); + + $sql = "DELETE FROM `shift_report` + WHERE shift_id IN + (SELECT shift_id + FROM `shift` + WHERE questionnaire_id = $questionnaire_id)"; + + $db->Execute($sql); + + $sql = "DELETE FROM `shift` + WHERE questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + $sql = "DELETE FROM `case` + WHERE questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + $sql = "DELETE FROM `questionnaire` + WHERE questionnaire_id = $questionnaire_id"; + + $db->Execute($sql); + + $db->CompleteTrans(); } - -$qsqri = false; -$qsqrid = false; -if (isset($_GET['qsqri']) & isset($_GET['edit'])) +if (isset($_GET['disable'])) { - $qsqri = bigintval($_GET['qsqri']); + $questionnaire_id = intval($_GET['disable']); - $sql = "SELECT questionnaire_id,sample_import_id,description,autoprioritise,priority,completions - FROM questionnaire_sample_quota_row - WHERE questionnaire_sample_quota_row_id = $qsqri"; + $sql = "UPDATE questionnaire + SET enabled = 0 + WHERE questionnaire_id = '$questionnaire_id'"; - $rs = $db->GetRow($sql); - - $_GET['questionnaire_id'] = $rs['questionnaire_id']; - $_GET['sample_import_id'] = $rs['sample_import_id']; - $qsqrid = $rs['description']; - $qsqrich = ""; - if ($rs['autoprioritise'] == 1) - $qsqrich = "checked=\"checked\""; - $qsqric = $rs['completions']; - $qsqrip = $rs['priority']; - - if (isset($_POST['adds'])) - { - $comparison = $db->qstr($_POST['comparisons']); - $exvar = $db->qstr(substr($_POST['sample_var'],12,strpos($_POST['sample_var'],'&')-12)); - $exval = $db->qstr($_POST['exclude_val']); - //add ssample - $sql = "INSERT INTO qsqr_sample (questionnaire_sample_quota_row_id,exclude_var,exclude_val,comparison) - VALUES ($qsqri,$exvar,$exval,$comparison)"; - - $db->Execute($sql); - - //Make sure to calculate on the spot - update_single_row_quota($qsqri); - } - - if (isset($_POST['addq'])) - { - $comparison = $db->qstr($_POST['comparison']); - $value = $db->qstr($_POST['value']); - $sgqa = $db->qstr(substr($_POST['sgqa'],6,strpos($_POST['sgqa'],'&')-6)); - //add ssample - $sql = "INSERT INTO qsqr_question (questionnaire_sample_quota_row_id,lime_sgqa,value,comparison) - VALUES ($qsqri,$sgqa,$value,$comparison)"; - - $db->Execute($sql); - - //Make sure to calculate on the spot - update_single_row_quota($qsqri); - } + $db->Execute($sql); } -$questionnaire_id = false; -if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']); - -xhtml_head(T_("Quota row management"),true,array("../css/table.css"),array("../js/window.js")); -print "

" . T_("Select a questionnaire from the list below") . "

"; - -$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"); - - -if ($questionnaire_id != false) +if (isset($_GET['enable'])) { - $sample_import_id = false; - if (isset($_GET['sample_import_id'])) $sample_import_id = bigintval($_GET['sample_import_id']); + $questionnaire_id = intval($_GET['enable']); - print "

" . T_("Select a sample from the list below") . "

"; - - $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"; + $sql = "UPDATE questionnaire + SET enabled = 1 + WHERE questionnaire_id = '$questionnaire_id'"; - display_chooser($db->GetAll($sql),"sample","sample_import_id",true,"questionnaire_id=$questionnaire_id"); - - if ($sample_import_id != false) - { - if (isset($_POST['import_quota'])) - { - if (isset($_FILES['file']['tmp_name'])) - { - $handle = fopen($_FILES['file']['tmp_name'], "r"); - while (($data = fgetcsv($handle)) !== FALSE) - { - if (count($data) > 2) - { - //one quota record per row - $completions = intval($data[1]); - $autoprioritise = 0; - if ($data[2] != 0) $autoprioritise = 1; - $description = $db->quote($data[0]); - - $sql = "INSERT INTO questionnaire_sample_quota_row(questionnaire_id, sample_import_id, completions, description, priority, autoprioritise) - VALUES ($questionnaire_id, $sample_import_id, $completions, $description, 50, $autoprioritise)"; - - $db->Execute($sql); - - $qq = $db->Insert_ID(); - - if (count($data) > 5) //also some other records - { - //check if records exist (come in triplets - for ($i = 1; isset($data[$i * 3]) && !empty($data[$i*3]); $i++) - { - if (preg_match("/\d+X\d+X.+/",$data[$i*3])) - { - //is a limesurvey question - $comparison = $db->qstr($data[($i*3) + 1]); - $value = $db->qstr($data[($i*3) + 2]); - $sgqa = $db->qstr($data[$i*3]); - - $sql = "INSERT INTO qsqr_question (questionnaire_sample_quota_row_id,lime_sgqa,value,comparison) - VALUES ($qq,$sgqa,$value,$comparison)"; - - $db->Execute($sql); - } - else - { - //is a sample variable - $comparison = $db->qstr($data[($i*3) + 1]); - $value = $db->qstr($data[($i*3) + 2]); - $var = $db->qstr($data[$i*3]); - - $sql = "INSERT INTO qsqr_sample (questionnaire_sample_quota_row_id,exclude_var,exclude_val,comparison) - VALUES ($qq,$var,$value,$comparison)"; - - $db->Execute($sql); - } - } - } - - //Make sure to calculate on the spot - update_single_row_quota($qq); - } - } - fclose($handle); - } - } - - - - if ($qsqri != false) - { - print "

" . T_("Quota") . ": $qsqrid

"; - print "

" . T_("Go back") . "

"; - - ?> -
" method="post"> -

-
-
- />
-
- - "/>

-
- " . TQ_("Delete") . "') as qdelete - FROM qsqr_question - WHERE questionnaire_sample_quota_row_id = $qsqri"; - - - $rs = $db->GetAll($sql); - - if (empty($rs)) - { - print "

" . T_("All completed responses that match the sample criteria below will be counted towards the quota") . "

"; - } - else - { - print "

" . T_("Only completed responses that have answered the following will be counted") . "

"; - xhtml_table($rs,array('lime_sgqa','comparison','value','qdelete'),array(T_("Question"),T_("Comparison"),T_("Value"),T_("Delete"))); - } - - //add questionnaire references if any (refer to sample only or count completions based on responses to questions) - - $sql = "SELECT lime_sid - FROM questionnaire - WHERE questionnaire_id = $questionnaire_id"; - - $lime_sid = $db->GetOne($sql); - - $ssgqa = "''"; - if (isset($_GET['sgqa'])) - $ssgqa = $db->qstr($_GET['sgqa']); - - //select question - $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 $ssgqa LIKE CONCAT( lq.sid, 'X', lq.gid, 'X', CASE WHEN lq.parent_qid = 0 THEN lq.qid ELSE CONCAT(lq.parent_qid, lq.title) END) 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 g.group_order ASC, lq.question_order ASC"; - - $rs = $db->GetAll($sql); - - if (!empty($rs)) - { - print "
"; - print "

" . T_("Add restriction based on answered questions") . "

"; - print ""; - display_chooser($rs,"sgqa","sgqa",false,"edit=edit&qsqri=$qsqri",true,false); - ?> -

-
- "/> -
- " . TQ_("Delete") . "') as sdelete - FROM qsqr_sample - WHERE questionnaire_sample_quota_row_id = $qsqri"; - - $rs = $db->GetAll($sql); - - if (empty($rs)) - { - print "

" . T_("All sample records will be excluded") . "

"; - } - else - { - print "

" . T_("Completed responses that have the following sample details will be counted towards the quota and excluded when the quota is reached") . "

"; - xhtml_table($rs,array('exclude_var','comparison','exclude_val','sdelete'),array(T_("Sample record"),T_("Comparison"),T_("Value"),T_("Delete"))); - } - - - $ssample_var = "''"; - if (isset($_GET['sample_var'])) - $ssample_var = $db->qstr($_GET['sample_var']); - - //add sample references (records from sample to exclude when quota reached) - $sql = "SELECT sv.var as value, sv.var as description, CASE WHEN sv.var LIKE $ssample_var THEN 'selected=\'selected\'' ELSE '' END AS selected - FROM sample_var AS sv, sample AS s - WHERE s.import_id = $sample_import_id - AND s.sample_id = sv.sample_id - GROUP BY sv.var"; - - $rs = $db->GetAll($sql); - - if (!empty($rs)) - { - if ($ssample_var == "''") - $ssample_var = "'" . $rs[0]['value']. "'"; - - print "

" . T_("Add restriction based on sample records") . "

"; - print "
"; - print ""; - display_chooser($rs,"sample_var","sample_var",false,"edit=edit&qsqri=$qsqri",true,false); - ?> -

- - GetAll($sql),"exclude_val","exclude_val",false,false,false,false); - flush(); - ?> -
"/> -
- " . T_("Current row quotas (click to edit)") . ""; - - - $sql = "SELECT questionnaire_sample_quota_row_id,qsq.description, - CONCAT('', qsq.description, '') as qedit, - CONCAT('') as qselect, - qsq.completions,qsq.quota_reached,qsq.current_completions, - CASE WHEN qsq.autoprioritise = 1 THEN '" . TQ_("Yes") . "' ELSE '" . TQ_("No") . "' END AS ap, qsq.priority, - CASE WHEN qsq.quota_reached = 1 THEN '" . TQ_("closed") . "' ELSE '" . TQ_("open") . "' END AS status - 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); - - print "
"; - if (empty($r)) - { - print "

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

"; - } - else - { - xhtml_table($r,array('qedit','completions','current_completions','status','priority','ap','qselect'),array(T_("Description"),T_("Quota"),T_("Completions"),T_("Status"),T_("Priority"),T_("Auto prioritise"),T_("Select"))); - print ""; - print ""; - - //select sample - - } - print "
"; - print "

" . T_("Add row quota") . "

"; - ?> -
" method="post"> -

-
-
-
-
- "/>

-
- " . T_("Import row quota") . ""; - ?> -
" method="post"> -

-

-

"/>

-
- Execute($sql); } -xhtml_foot(); +if (isset($_POST['update']) && isset($_GET['modify'])) +{ + $questionnaire_id = intval($_GET['modify']); + $ras =0; + $rws = 0; + $rs = 0; + $respsc = 0; + $referral = 0; + if (isset($_POST['ras'])) $ras = 1; + if (isset($_POST['rws'])) $rws = 1; + if (isset($_POST['respsc'])) $respsc = 1; + if (isset($_POST['referral'])) $referral = 1; + + $name = $db->qstr(html_entity_decode($_POST['description'],ENT_QUOTES,'UTF-8')); + if (isset($_POST['rs_intro'])) + { + $rs = 1; + $rs_intro = $db->qstr(html_entity_decode($_POST['rs_intro'],ENT_QUOTES,'UTF-8')); + $rs_project_intro = $db->qstr(html_entity_decode($_POST['rs_project_intro'],ENT_QUOTES,'UTF-8')); + $rs_callback = $db->qstr(html_entity_decode($_POST['rs_callback'],ENT_QUOTES,'UTF-8')); + $rs_answeringmachine = $db->qstr(html_entity_decode($_POST['rs_answeringmachine'],ENT_QUOTES,'UTF-8')); + } + $info = $db->qstr(html_entity_decode($_POST['info'],ENT_QUOTES,'UTF-8')); + $rs_project_end = $db->qstr(html_entity_decode($_POST['rs_project_end'],ENT_QUOTES,'UTF-8')); + + $sql = "UPDATE questionnaire + SET description = $name, info = $info, rs_project_end = $rs_project_end, restrict_appointments_shifts = '$ras', restrict_work_shifts = '$rws', self_complete = $respsc, referral = $referral + WHERE questionnaire_id = '$questionnaire_id'"; + + $db->Execute($sql); + + if ($rs) + { + $sql = "UPDATE questionnaire + SET rs_intro = $rs_intro, rs_project_intro = $rs_project_intro, rs_callback = $rs_callback, rs_answeringmachine = $rs_answeringmachine + WHERE questionnaire_id = '$questionnaire_id'"; + $db->Execute($sql); + } + + if ($respsc == 1) + { + $lime_mode = $db->qstr($_POST['lime_mode'],get_magic_quotes_gpc()); + $lime_template = $db->qstr($_POST['lime_template'],get_magic_quotes_gpc()); + $lime_endurl = $db->qstr($_POST['lime_endurl'],get_magic_quotes_gpc()); + + $sql = "UPDATE questionnaire + SET lime_mode = $lime_mode, lime_template = $lime_template, lime_endurl = $lime_endurl + WHERE questionnaire_id = $questionnaire_id"; + $db->Execute($sql); + } +} + +if (isset($_GET['modify'])) +{ + $questionnaire_id = intval($_GET['modify']); + + $sql = "SELECT * + FROM questionnaire + WHERE questionnaire_id = $questionnaire_id"; + $rs = $db->GetRow($sql); + + $referral = $testing = $rws = $ras = $rsc = "checked=\"checked\""; + $rscd = ""; + + $aio = $qbq = $gat = ""; + if ($rs['lime_mode'] == "survey") $aio = "selected=\"selected\""; + if ($rs['lime_mode'] == "question") $qbq = "selected=\"selected\""; + if ($rs['lime_mode'] == "group") $gat = "selected=\"selected\""; + + if ($rs['restrict_appointments_shifts'] != 1) $ras = ""; + if ($rs['restrict_work_shifts'] != 1) $rws = ""; + if ($rs['testing'] != 1) $testing = ""; + if ($rs['referral'] != 1) $referral = ""; + if ($rs['self_complete'] == 0) + { + $rsc = ""; + $rscd = "style='display:none;'"; + } + + xhtml_head(T_("Modify Questionnaire "),true,$css,$js_head, false, false, false, "  " . "$rs[description]" . ""); + + $CKEditor = new CKEditor(); + $CKEditor->basePath = "../include/ckeditor/"; + + $ckeditorConfig = array("toolbar" => array(array("tokens","-","Source"), + array("Cut","Copy","Paste","PasteText","PasteFromWord","-","Print","SpellChecker"), + array("Undo","Redo","-","Find","Replace","-","SelectAll","RemoveFormat"), + array('Link','Unlink','Anchor'), + array('Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'), + array('About'), + "/", + array("Bold","Italic","Underline","Strike","-","Subscript","Superscript"), + array("NumberedList","BulletedList","-","Outdent","Indent","Blockquote"), + array('JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'), + array('BidiLtr', 'BidiRtl'), + array('Styles','Format','Font','FontSize'), + array('TextColor','BGColor')), + "extraPlugins" => "tokens"); ?> ->>>>>>> MERGE-SOURCE +
+ +
+
 " . T_("Edit instrument in Limesurvey") . " "; ?>
+
+ +
+
+ +
"/>
+
+
+ +
data-toggle="toggle" data-on="" data-off="" data-width="80"/>
+
+
+
data-toggle="toggle" data-on="" data-off="" data-width="80"/>
+
+
+ +
" data-off="" data-onstyle="danger" data-width="80"/>
+
+
+ +
data-toggle="toggle" data-on="" data-off="" data-width="80"/>
+
+
+ +
onchange="if(this.checked==true) {show(this,'limesc'); $('#url').attr('required','required');} else{ hide(this,'limesc'); $('#url').removeAttr('required');}" data-toggle="toggle" data-on="" data-off="" data-width="80"/>
+
+
> +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("rs_intro",$rs['rs_intro'],$ckeditorConfig);?> +
+
+ +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("rs_project_intro",$rs['rs_project_intro'],$ckeditorConfig);?> +
+
+ +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("rs_callback",$rs['rs_callback'],$ckeditorConfig);?> +
+
+ +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("rs_answeringmachine",$rs['rs_answeringmachine'],$ckeditorConfig);?> +
+
+ + " . T_("Edit respondent selection instrument in Limesurvey") . "
"; } +?> + +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("rs_project_end",$rs['rs_project_end'],$ckeditorConfig);?> +
+
+ +
+
+ " style="margin-top: -5px;"> +

+
+
+ editor("info",$rs['info'],$ckeditorConfig);?> +
+
+ + + "/> + + +GetRow($sql); + + xhtml_head(T_("Delete Questionnaire"),true,$css,$js_head, false, false, false, " " . "$rs[description]" . ""); + + print "

" . T_("Any collected data and the limesurvey instrument will NOT be deleted") . "

"; + print "

" . T_("The questionnaire will be deleted from queXS including call history, cases, case notes, respondent details, appointments and the links between operators, clients and the questionnaire") . "

"; + print "

" . T_("Please confirm you wish to delete the questionnaire") . "

"; + + print "
"; + print "

   " . T_("Go back") . ""; + print "

"; + print "
"; +} +else +{ + xhtml_head(T_("Questionnaire management"),true,$css,$js_head, false, false, false, "Questionnaire list"); + echo ""; + print "
"; // add timeslots, callattempts, quotas? + + $sql = "SELECT + CONCAT(' ',questionnaire_id,' ') as qid, + CONCAT('

',description,'

') as description, + CASE WHEN enabled = 0 THEN + CONCAT(' " . TQ_("Disabled") . " ') + ELSE + CONCAT(' " . TQ_("Enabled") . " ') + END as status, + CASE WHEN enabled = 0 THEN + CONCAT('  ') + ELSE + CONCAT('  ') + END as enabledisable, + CONCAT('') as modify, + CONCAT('') as inlime, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as shifts, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as prefill, + CASE WHEN enabled = 1 THEN + CONCAT('') + ELSE + CONCAT('') + END as deletee, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as outcomes, + CONCAT('') as calls, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as dataout, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as assample, + CASE WHEN enabled = 0 THEN + CONCAT('') + ELSE + CONCAT('') + END as casestatus + FROM questionnaire"; + $rs = $db->GetAll($sql); + + $columns = array("qid","description","status","enabledisable","outcomes","calls","casestatus","shifts","assample","dataout","modify","inlime","prefill","deletee"); + xhtml_table($rs,$columns,false,"table-hover table-condensed "); + +print "
"; +} +xhtml_foot($js_foot); +?> + \ No newline at end of file diff --git a/admin/samplecallattempts.php b/admin/samplecallattempts.php index 0757ca08..5ea6e597 100644 --- a/admin/samplecallattempts.php +++ b/admin/samplecallattempts.php @@ -90,7 +90,7 @@ function sample_call_attempt_report($questionnaire_id = false, $sample_id = fals $x = 1; foreach($rev as $ev) { - $qs .= " JOIN sample_var_id as sv$x ON (sv$x.sample_id = c.sample_id AND sv$x.var_id = '{$ev['exclude_var_id']}' AND sv$x.val {$ev['comparison']} '{$ev['exclude_val']}') "; + $qs .= " JOIN sample_var as sv$x ON (sv$x.sample_id = c.sample_id AND sv$x.var_id = '{$ev['exclude_var_id']}' AND sv$x.val {$ev['comparison']} '{$ev['exclude_val']}') "; $x++; } } @@ -213,7 +213,6 @@ if ($questionnaire_id || $questionnaire_id == -1) { if (!sample_call_attempt_report($questionnaire_id,$sample_import_id,$questionnaire_sample_quota_row_id)) print "

" . T_("No calls for this quota") . "

"; - } } else