* @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 file */ require ("auth-admin.php"); /** * XHTML functions */ include ("../functions/functions.xhtml.php"); $msg = ""; /** * Return if an client has already been assigned to this questionnaire * * @param int $client Client id * @param int $questionnaire_id Questionnaire id * @return int 1 if assigned otherwise 0 * */ function vq($client_id,$questionnaire_id) { global $db; $sql = "SELECT client_id,questionnaire_id FROM client_questionnaire WHERE client_id = '$client_id' and questionnaire_id = '$questionnaire_id'"; $vq = $db->Execute($sql); if ($vq) return $vq->RecordCount(); else return 0; } /** * Assign an client to a questionnaire * * @param int $client_id Client id * @param int $questionnaire_id Questionnaire id * @param int $lime_sid Lime survey ID * @param int $uid Lime user ID * */ function vqi($client_id,$questionnaire_id,$lime_sid,$uid) { global $db; $db->StartTrans(); $sql = "INSERT INTO client_questionnaire (client_id,questionnaire_id) VALUES('$client_id','$questionnaire_id')"; $db->Execute($sql); /* Add client questionnaire permissions to view Lime results + statistics and quotas, //preserve superadmin permissions */ if ($uid != 1 && empty($db->GetAll("SELECT * FROM " . LIME_PREFIX . "survey_permissions WHERE `sid` = '$lime_sid' AND `uid` = '$uid'"))) { $sql = "INSERT INTO " . LIME_PREFIX . "survey_permissions (`sid`,`uid`,`permission`,`create_p`,`read_p`,`update_p`,`delete_p`,`import_p`,`export_p`) VALUES ($lime_sid,$uid,'survey',0,1,0,0,0,0),($lime_sid,$uid,'statistics',0,1,0,0,0,0),($lime_sid,$uid,'quotas',0,1,0,0,0,0)"; $db->Execute($sql); } $db->CompleteTrans(); } if (isset($_POST['submit'])) { $db->StartTrans(); /* Unassign a client from a questionnaire , remove survey_permissions*/ $sql = "DELETE FROM client_questionnaire WHERE questionnaire_id IN ( SELECT questionnaire_id FROM questionnaire WHERE enabled = 1)"; $db->Execute($sql); /*Currently disabled -> need to decide how to manage permissions set earlier*/ /* $questionnaires = $db->GetAll("SELECT lime_sid FROM questionnaire WHERE enabled = 1"); $clients = $db->GetAll("SELECT uid FROM client, " . LIME_PREFIX . "users WHERE `users_name` = `username`"); foreach($questionnaires as $q){ foreach($clients as $v){ $sql = "DELETE FROM " . LIME_PREFIX . "survey_permissions WHERE `uid` = {$v['uid']} AND `sid`={$q['lime_sid']} AND `uid` != 1"; $db->Execute($sql); } } */ /* - end - */ foreach ($_POST as $g => $v) { $a = explode("_",$g); if ($a[0] == "cb") vqi($a[2],$a[1],$a[3],$a[4]); } $db->CompleteTrans(); } /* delete client from quexs and lime tables*/ //requires data-toggle-confirmation to finalize if (isset($_GET['delete']) && isset($_GET['uid']) && isset($_GET['uname'])) { $client_id = intval($_GET['delete']); $uid = intval($_GET['uid']); $uname = $_GET['uname']; global $db; if ($uid !=1){ //double protect superadmin from being deleted $db->StartTrans(); $sql = "DELETE FROM " . LIME_PREFIX . "templates_rights WHERE `uid` = '$uid' AND `uid` != 1"; $db->Execute($sql); $sql = "DELETE FROM " . LIME_PREFIX . "survey_permissions WHERE `uid` = '$uid' AND `uid` != 1"; $db->Execute($sql); $sql = "DELETE FROM " . LIME_PREFIX . "user_in_groups WHERE `uid` = '$uid' AND `uid` != 1"; $db->Execute($sql); $sql = "DELETE FROM " . LIME_PREFIX . "users WHERE `uid` = '$uid' AND `uid` != 1"; $db->Execute($sql); $sql = "DELETE FROM `client_questionnaire` WHERE `client_id` = '$client_id' "; $db->Execute($sql); $sql = "DELETE FROM `client` WHERE `client_id` = '$client_id'"; $db->Execute($sql); $db->CompleteTrans(); } if ($db->CompleteTrans()) $msg = "

". T_("Client with username $uname deleted") . "

"; else $msg = "

". T_("ERROR deleting client with username $uname") . "

"; unset($_GET['delete'], $_GET['uid'], $_GET['uname'], $client_id, $username, $uid); } $sql = "SELECT questionnaire_id,description, lime_sid FROM questionnaire WHERE enabled = 1 ORDER by questionnaire_id ASC"; $questionnaires = $db->GetAll($sql); $sql = "SELECT client_id, CONCAT(firstName,' ', lastName ) as description, username, uid FROM client, " . LIME_PREFIX . "users WHERE `users_name` = `username` ORDER by client_id ASC"; $clients = $db->GetAll($sql); xhtml_head(T_("Clients and questionnaires"),true,array("../include/bootstrap/css/bootstrap.min.css","../include/font-awesome/css/font-awesome.css","../include/iCheck/skins/square/blue.css","../css/custom.css"),array("../include/jquery/jquery.min.js","../include/iCheck/icheck.min.js")); if (!empty($msg)) print $msg; ?> "; print ""; foreach($questionnaires as $q) { print ""; } print ""; foreach($clients as $v) { print ""; foreach($questionnaires as $q) { if (vq($v['client_id'],$q['questionnaire_id'])) $checked="checked=\"checked\""; else $checked = ""; print ""; } print ""; } print "
 " . T_("Username") . "  " . T_("Client") . " " . T_("Questionnaire permissions") . "
{$q['description']}
 {$v['username']} 
{$v['description']}
"; ?>