* @copyright Deakin University 2007,2008 * @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"); /** * Authentication */ require ("auth-admin.php"); /** * XHTML functions */ include("../functions/functions.xhtml.php"); /** * Display functions */ include("../functions/functions.display.php"); /** * Input functions */ include("../functions/functions.input.php"); $css = array( "../include/bootstrap/css/bootstrap.min.css", "../include/bootstrap/css/bootstrap-theme.min.css", "../include/font-awesome/css/font-awesome.css", "../include/bootstrap-toggle/css/bootstrap-toggle.min.css", "../css/custom.css" ); $js_head = array( "../include/jquery/jquery.min.js", "../include/bootstrap/js/bootstrap.min.js", "../include/bootstrap-toggle/js/bootstrap-toggle.min.js", "../js/window.js" ); $js_foot = array( "../js/bootstrap-confirmation.js", "../js/custom.js" ); global $db; if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['call_max']) && isset($_GET['call_attempt_max'])) { //need to add sample to questionnaire $questionnaire_id = bigintval($_GET['questionnaire_id']); $sid = bigintval($_GET['sample']); $cm = bigintval($_GET['call_max']); $cam = bigintval($_GET['call_attempt_max']); $am = bigintval($_GET['answering_machine_messages']); $selecttype = 0; if (isset($_GET['selecttype'])) $selecttype = 1; $an = 0; if (isset($_GET['allownew'])) $an = 1; $sql = "SELECT MAX(sort_order) + 1 FROM questionnaire_sample"; if(!$so = $db->GetOne($sql)) $so = 1; $sql = "INSERT INTO questionnaire_sample(questionnaire_id,sample_import_id,call_max,call_attempt_max,random_select,answering_machine_messages,allow_new,sort_order) VALUES('$questionnaire_id','$sid','$cm','$cam','$selecttype','$am', '$an', '$so')"; $db->Execute($sql); if (isset($_GET['generatecases'])) { 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'"); //add limesurvey attribute for each sample var record $sql = "SELECT var,type FROM sample_import_var_restrict WHERE sample_import_id = '$sid'"; $rs = $db->GetAll($sql); $i = 1; $fields = array(); $fieldcontents=''; foreach($rs as $r) { $fields[]=array('attribute_'.$i,'C','255'); $fieldcontents.='attribute_'.$i.'='.$r['var']."\n"; $i++; } $dict = NewDataDictionary($db); $sqlarray = $dict->ChangeTableSQL(LIME_PREFIX ."tokens_$lime_sid", $fields); $execresult=$dict->ExecuteSQLArray($sqlarray, false); $sql = "UPDATE " . LIME_PREFIX . "surveys SET attributedescriptions = " . $db->qstr($fieldcontents) . " WHERE sid='$lime_sid'"; $db->Execute($sql); //generate one case for each sample record and set outcome to 41 $sql = "SELECT sample_id FROM sample WHERE import_id = '$sid'"; $rs = $db->GetAll($sql); foreach($rs as $r) { set_time_limit(30); add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, true); } $db->CompleteTrans(); } } if (isset($_POST['edit'])) { //need to add sample to questionnaire $questionnaire_id = bigintval($_POST['questionnaire_id']); $sid = bigintval($_POST['sample_import_id']); $cm = bigintval($_POST['call_max']); $cam = bigintval($_POST['call_attempt_max']); $am = bigintval($_POST['answering_machine_messages']); $selecttype = 0; if (isset($_POST['selecttype'])) $selecttype = 1; $an = 0; if (isset($_POST['allownew'])) $an = 1; $sql = "UPDATE questionnaire_sample SET call_max = '$cm', call_attempt_max = '$cam', random_select = '$selecttype', answering_machine_messages = '$am', allow_new = '$an' WHERE questionnaire_id = '$questionnaire_id' AND sample_import_id = '$sid'"; $db->Execute($sql); } if (isset($_GET['questionnaire_id']) && isset($_GET['rsid'])) { $questionnaire_id = bigintval($_GET['questionnaire_id']); $sid = bigintval($_GET['rsid']); if (isset($_GET['edit'])) { $subtitle = T_("Edit assignment parameters"); xhtml_head(T_("Assign samples to questionnaire: "),true,$css,$js_head,false,false,false,$subtitle); $sql = "SELECT si.description as description, qr.description as qdescription, q.call_max, q.call_attempt_max, q.random_select, q.answering_machine_messages, q.allow_new FROM questionnaire_sample as q, sample_import as si, questionnaire as qr WHERE q.sample_import_id = si.sample_import_id AND q.questionnaire_id = '$questionnaire_id' AND si.sample_import_id = '$sid' AND qr.questionnaire_id = q.questionnaire_id"; $qs = $db->GetRow($sql); //print "

" . T_("Edit sample details") . "

"; print "

 " . T_("Go back") . "

" . T_("Questionnaire") . ": " . $qs['qdescription'] . "

" . T_("Sample") . ": " . $qs['description'] . "

"; $allownew = $selected =""; if ($qs['random_select'] == 1) $selected = "checked=\"checked\""; if ($qs['allow_new'] == 1) $allownew = "checked=\"checked\""; ?>






data-toggle="toggle" data-size="small" data-on="" data-off="" data-width="85"/>


class="col-sm-1" data-toggle="toggle" data-size="small" data-on="" data-off="" data-width="85"/>



GetOne(" SELECT sort_order FROM questionnaire_sample WHERE questionnaire_id = $questionnaire_id AND sample_import_id = $sid"); if ($_GET['sort'] == "up") { //find previous in sort order $dir = "<"; } else if ($_GET['sort'] == "down") { //find next in sort order $dir = ">"; } $sql = "SELECT sample_import_id,sort_order FROM questionnaire_sample WHERE questionnaire_id = $questionnaire_id AND sort_order $dir $cso ORDER BY sort_order DESC LIMIT 1"; $rs = $db->GetRow($sql); //do a swap $ssid = $rs['sample_import_id']; $sso = $rs['sort_order']; $sql = "UPDATE questionnaire_sample SET sort_order = $sso WHERE sample_import_id = $sid AND questionnaire_id = $questionnaire_id"; $db->Execute($sql); $sql = "UPDATE questionnaire_sample SET sort_order = $cso WHERE sample_import_id = $ssid AND questionnaire_id = $questionnaire_id"; $db->Execute($sql); unset($_GET['sort']); } else { //need to remove rsid from questionnaire $sql = "DELETE FROM questionnaire_sample WHERE questionnaire_id = '$questionnaire_id' AND sample_import_id = '$sid'"; $db->Execute($sql); // update sort_order after unassigning $db->Execute("SELECT @i := 0"); $db->Execute("UPDATE `questionnaire_sample` SET sort_order = @i:=@i+1 WHERE 1=1 ORDER BY sort_order ASC"); } } $subtitle = T_("List & Add Sample"); xhtml_head(T_("Assign samples to questionnaires"),true,$css,$js_head,false,false,false,$subtitle);//array("../css/table.css"),array("../js/window.js") print " " . T_("Go back") . ""; $questionnaire_id = false; if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']); print "

 " . T_("Select a questionnaire") . "

"; display_questionnaire_chooser($questionnaire_id,false, "pull-left btn", "form-control "); print "
"; if ($questionnaire_id != false) { print "

 ". T_("Samples assigned to questionnaire") ." " . $db->GetOne("SELECT description from questionnaire WHERE questionnaire_id = $questionnaire_id") . "

"; $sql = "SELECT q.sort_order, si.description as description,si.sample_import_id, CASE WHEN q.call_max = 0 THEN '". TQ_("Unlimited") ."' ELSE q.call_max END as call_max, CASE WHEN q.call_attempt_max = 0 THEN '". TQ_("Unlimited") . "' ELSE q.call_attempt_max END AS call_attempt_max, CASE WHEN q.random_select = 0 THEN '". TQ_("Sequential") ."' ELSE '". TQ_("Random") . "' END as random_select, CASE WHEN q.answering_machine_messages = 0 THEN '". TQ_("Never") . "' ELSE q.answering_machine_messages END as answering_machine_messages, CASE WHEN q.allow_new = 0 THEN '". TQ_("No") ."' ELSE '".TQ_("Yes")."' END as allow_new, CONCAT('') as edit, CONCAT('') as unassign FROM questionnaire_sample as q, sample_import as si WHERE q.sample_import_id = si.sample_import_id AND q.questionnaire_id = '$questionnaire_id' ORDER BY q.sort_order ASC"; $qs = $db->GetAll($sql); if (!empty($qs)) { $co = count($qs); if ($co > 1) { for($i = 0; $i < $co; $i++) { $down = ""; $up = ""; if ($i == 0) //down only { $qs[$i]['sort_order'] = "
   " . $qs[$i]['sort_order'] . " " . $down . "
"; } else if ($i == ($co - 1)) //up only { $qs[$i]['sort_order'] = "
" .$up . " " . $qs[$i]['sort_order'] . ""; } else { $qs[$i]['sort_order'] = "
" . $up . " " . $qs[$i]['sort_order'] . " " . $down . "
"; } } } else $qs[0]['sort_order'] = " " . $qs[0]['sort_order'] . " "; xhtml_table($qs,array("sort_order","description","call_max","call_attempt_max","answering_machine_messages","random_select","allow_new","edit","unassign"),array(T_("Sort order"),T_("Sample"), T_("Max calls"), T_("Max call attempts"), T_("Answering machine messages"), T_("Selection type"), T_("Allow new numbers to be drawn?"), T_("Edit"), T_("Unassign sample"))); } else print "

". T_("No samples selected for this questionnaire") ."

"; print"
"; $sql = "SELECT si.sample_import_id,si.description FROM sample_import as si LEFT JOIN questionnaire_sample as q ON (q.questionnaire_id = '$questionnaire_id' AND q.sample_import_id = si.sample_import_id) WHERE q.questionnaire_id is NULL AND si.enabled = 1"; $qs = $db->GetAll($sql); if (!empty($qs)) { print "
"; print "

" . T_("Add a sample to this questionnaire:") . "

"; ?>








" data-off="" data-width="85"/>


" data-off="" data-width="85"/>



GetOne("SELECT self_complete FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'"); if ($self_complete) {?>
" data-off="" data-width="85"/>
*