2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

Add specification for storing self completion details

Allow for self completion without using interviewer argument to Limesurvey (need to update to take details from database)
This commit is contained in:
Adam Zammit
2013-01-30 15:45:24 +11:00
parent 61a7ac0803
commit 01cd69c0fc
5 changed files with 95 additions and 26 deletions

View File

@@ -23,6 +23,11 @@ New sample variable type (Email address):
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES
(8, 'Email address', ''); (8, 'Email address', '');
Specify details of respondent self completion:
ALTER TABLE `questionnaire` ADD `lime_mode` VARCHAR( 64 ) NULL COMMENT 'Limesurvey mode for respondent self completion' AFTER `info` ,
ADD `lime_template` VARCHAR( 128 ) NULL COMMENT 'Limesurvey template for respondent self completion' AFTER `lime_mode` ,
ADD `lime_endurl` VARCHAR( 256 ) NULL COMMENT 'Forwarding end URL for respondent self completion' AFTER `lime_template` ;
queXS 1.6.1 - Changes since 1.6.0 queXS 1.6.1 - Changes since 1.6.0

View File

@@ -1099,7 +1099,7 @@ function get_respondentselection_url($operator_id,$escape = true,$interface2 = f
{ {
$sid = get_limesurvey_id($operator_id,true); //true for RS $sid = get_limesurvey_id($operator_id,true); //true for RS
if ($sid != false && !empty($sid) && $sid != 'NULL') if ($sid != false && !empty($sid) && $sid != 'NULL')
$url = LIME_URL . "index.php?loadall=reload" . $amp . "sid=$sid" . $amp . "token=$call_id" . $amp . "lang=" . DEFAULT_LOCALE; $url = LIME_URL . "index.php?interviewer=interviewer&loadall=reload" . $amp . "sid=$sid" . $amp . "token=$call_id" . $amp . "lang=" . DEFAULT_LOCALE;
else else
{ {
if ($interface2) if ($interface2)
@@ -1142,7 +1142,7 @@ function get_limesurvey_url($operator_id)
$token = $db->GetOne($sql); $token = $db->GetOne($sql);
$sid = get_limesurvey_id($operator_id); $sid = get_limesurvey_id($operator_id);
$url = LIME_URL . "index.php?loadall=reload&sid=$sid&token=$token&lang=" . DEFAULT_LOCALE; $url = LIME_URL . "index.php?interviewer=interviewer&loadall=reload&sid=$sid&token=$token&lang=" . DEFAULT_LOCALE;
$questionnaire_id = get_questionnaire_id($operator_id); $questionnaire_id = get_questionnaire_id($operator_id);
//get prefills //get prefills

View File

@@ -19,19 +19,26 @@ require_once("save.php"); // for supporting functions only
// $LEMdebugLevel - customizable debugging for Lime Expression Manager // $LEMdebugLevel - customizable debugging for Lime Expression Manager
$LEMdebugLevel=0; // LEM_DEBUG_TIMING; // (LEM_DEBUG_TIMING + LEM_DEBUG_VALIDATION_SUMMARY + LEM_DEBUG_VALIDATION_DETAIL); $LEMdebugLevel=0; // LEM_DEBUG_TIMING; // (LEM_DEBUG_TIMING + LEM_DEBUG_VALIDATION_SUMMARY + LEM_DEBUG_VALIDATION_DETAIL);
$LEMskipReprocessing=false; // true if used GetLastMoveResult to avoid generation of unneeded extra JavaScript $LEMskipReprocessing=false; // true if used GetLastMoveResult to avoid generation of unneeded extra JavaScript
switch ($thissurvey['format'])
if ($interviewer)
{ {
case "A": //All in one switch ($thissurvey['format'])
$surveyMode='survey'; {
break; case "A": //All in one
default: $surveyMode='survey';
case "S": //One at a time break;
$surveyMode='question'; default:
break; case "S": //One at a time
case "G": //Group at a time $surveyMode='question';
$surveyMode='group'; break;
break; case "G": //Group at a time
$surveyMode='group';
break;
}
} }
else
$surveyMode='survey';
$radix=getRadixPointData($thissurvey['surveyls_numberformat']); $radix=getRadixPointData($thissurvey['surveyls_numberformat']);
$radix = $radix['seperator']; $radix = $radix['seperator'];
@@ -462,7 +469,16 @@ else
$quexs_url = get_start_interview_url(); $quexs_url = get_start_interview_url();
$url = str_replace("{STARTINTERVIEWURL}", $quexs_url, $url); $url = str_replace("{STARTINTERVIEWURL}", $quexs_url, $url);
$end_url = get_end_interview_url(); if ($interviewer)
{
$end_url = get_end_interview_url();
}
else
{
$url = get_end_interview_url($clienttoken);
quexs_completed_by_respondent($surveyid,$clienttoken);
}
$url = str_replace("{ENDINTERVIEWURL}", $end_url, $url); $url = str_replace("{ENDINTERVIEWURL}", $end_url, $url);
header("Location: {$url}"); header("Location: {$url}");

View File

@@ -56,6 +56,7 @@ if (isset($_GET['loadall']) && $_GET['loadall'] == "reload" && isset($_GET['toke
//Must destroy the session //Must destroy the session
session_unset(); session_unset();
} }
//end queXS Addition //end queXS Addition
//LimeExpressionManager::SetSurveyId($surveyid); // must be called early - it clears internal cache if a new survey is being used //LimeExpressionManager::SetSurveyId($surveyid); // must be called early - it clears internal cache if a new survey is being used
@@ -120,6 +121,21 @@ if ( $embedded && $embedded_inc != '' )
require_once( $embedded_inc ); require_once( $embedded_inc );
} }
//queXS Addition
//see who is doing this survey - an interviewer or the respondent directly
$interviewer=returnglobal('interviewer');
if (!empty($interviewer) || (isset($_SESSION['interviewer']) && $_SESSION['interviewer'] == true))
{
$interviewer = true;
$_SESSION['interviewer'] = true;
}
else
{
$interviewer = false;
}
//CHECK FOR REQUIRED INFORMATION (sid) //CHECK FOR REQUIRED INFORMATION (sid)
if (!$surveyid || !$surveyexists) if (!$surveyid || !$surveyexists)
{ {
@@ -512,16 +528,20 @@ else
if ($interviewer)
//SET THE TEMPLATE DIRECTORY
if (!$thissurvey['templatedir'])
{ {
$thistpl=sGetTemplatePath($defaulttemplate); //SET THE TEMPLATE DIRECTORY
if (!$thissurvey['templatedir'])
{
$thistpl=sGetTemplatePath($defaulttemplate);
}
else
{
$thistpl=sGetTemplatePath($thissurvey['templatedir']);
}
} }
else else
{ $thistpl=sGetTemplatePath('sherpa');
$thistpl=sGetTemplatePath($thissurvey['templatedir']);
}

View File

@@ -36,6 +36,30 @@
require_once(dirname(__FILE__).'/../../config.inc.php'); require_once(dirname(__FILE__).'/../../config.inc.php');
/**
* Set the case as completed by respondent
*
* @param int $surveyid The limesurvey survey id
* @param string $clienttoken The token
*
* @return none
* @author Adam Zammit <adam.zammit@acspri.org.au>
* @since 2013-01-30
*/
function quexs_completed_by_respondent($surveyid,$clienttoken)
{
$db = newADOConnection(DB_TYPE);
$db->Connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$sql = "UPDATE `case`
SET current_outcome_id = 34
WHERE token = '$clienttoken'";
$db->Execute($sql);
}
/** /**
* Get the number of answering messages left for this case * Get the number of answering messages left for this case
* *
@@ -715,7 +739,7 @@ function get_respondent_selection_url()
{ {
$sid = get_limesurvey_id($operator_id,true); //true for RS $sid = get_limesurvey_id($operator_id,true); //true for RS
if ($sid != false && !empty($sid) && $sid != 'NULL') if ($sid != false && !empty($sid) && $sid != 'NULL')
$url = LIME_URL . "index.php?loadall=reload&amp;sid=$sid&amp;token=$call_id&amp;lang=" . DEFAULT_LOCALE; $url = LIME_URL . "index.php?interviewer=interviewer&amp;loadall=reload&amp;sid=$sid&amp;token=$call_id&amp;lang=" . DEFAULT_LOCALE;
else else
$url = 'rs_intro.php'; $url = 'rs_intro.php';
} }
@@ -727,11 +751,15 @@ function get_respondent_selection_url()
/** /**
* Get the URL to end the interview * Get the URL to end the interview
* *
* @param string $token The token if ended by the respondent, blank if ended by the interviewer
* @return string The URL to end the interview * @return string The URL to end the interview
*/ */
function get_end_interview_url() function get_end_interview_url($token = "")
{ {
return QUEXS_URL . "rs_project_end.php"; if ($token == "")
return QUEXS_URL . "rs_project_end.php";
else
return "http://www.google.com.au";
} }
/** /**
@@ -760,7 +788,7 @@ function get_start_interview_url()
$token = $db->GetOne($sql); $token = $db->GetOne($sql);
$sid = get_limesurvey_id($operator_id); $sid = get_limesurvey_id($operator_id);
$url = LIME_URL . "index.php?loadall=reload&sid=$sid&token=$token&lang=" . DEFAULT_LOCALE; $url = LIME_URL . "index.php?interviewer=interviewer&amp;loadall=reload&sid=$sid&token=$token&lang=" . DEFAULT_LOCALE;
$questionnaire_id = get_questionnaire_id($operator_id); $questionnaire_id = get_questionnaire_id($operator_id);
//get prefills //get prefills