diff --git a/admin/operatorlist.php b/admin/operatorlist.php index 415640b6..002466f1 100644 --- a/admin/operatorlist.php +++ b/admin/operatorlist.php @@ -108,6 +108,9 @@ if (isset($_POST['submit'])) $htp->deleteUser($_POST["existing_username"]); $htp->deleteUser($_POST["username"]); $htp->addUser($_POST["username"],$_POST["password"]); + $htg = New Htgroup(HTGROUP_PATH); + $htg->deleteUserFromGroup($_POST["existing_username"],HTGROUP_INTERVIEWER); + $htg->addUserToGroup($_POST["username"],HTGROUP_INTERVIEWER); } $msg = T_("Successfully updated user"); diff --git a/include/limesurvey/admin/exportresults.php b/include/limesurvey/admin/exportresults.php index f03897d7..357fa226 100644 --- a/include/limesurvey/admin/exportresults.php +++ b/include/limesurvey/admin/exportresults.php @@ -263,7 +263,8 @@ $quexsfilterstate = questionnaireSampleFilterstate(); ."\n" ."\n" ."\n" - ."\n"; + ."\n" + ."\n"; $sql = "SELECT sv.var,sv.val @@ -500,6 +501,18 @@ if ($tokenTableExists && $thissurvey['anonymized']=='N' && isset($_POST['attribu ORDER BY cl5.call_id DESC LIMIT 1) as operatoru "; } + if (in_array('shiftr',$_POST['attribute_select'])) + { + $dquery .= ", (SELECT GROUP_CONCAT(DISTINCT sr1.report SEPARATOR '|') + FROM `call` as cl6, `case` as ca8, `shift` as sh1, `shift_report` as sr1 + WHERE cl6.case_id = ca8.case_id + AND ca8.token = {$dbprefix}survey_$surveyid.token + AND sr1.shift_id = sh1.shift_id + AND sh1.questionnaire_id = ca8.questionnaire_id + AND cl6.start >= sh1.start + AND cl6.end < sh1.end + GROUP BY sr1.shift_id) as shiftr "; + } if (in_array('token',$_POST['attribute_select'])) { $dquery .= ", {$dbprefix}tokens_$surveyid.token"; @@ -620,6 +633,11 @@ for ($i=0; $i<$fieldcount; $i++) if ($type == "csv") {$firstline .= "\"".$elang->gT("Operator username for last call")."\"$separator";} else {$firstline .= $elang->gT("Operator username for last call")."$separator";} } + elseif ($fieldinfo == "shiftr") + { + if ($type == "csv") {$firstline .= "\"".$elang->gT("Shift report")."\"$separator";} + else {$firstline .= $elang->gT("Shift report")."$separator";} + } elseif ($fieldinfo == "caseid") { if ($type == "csv") {$firstline .= "\"".$elang->gT("Case ID")."\"$separator";} @@ -923,7 +941,7 @@ elseif ($answers == "long") //chose complete answers $fqid=0; // By default fqid is set to zero $field=$dresult->FetchField($i); $fieldinfo=$field->name; - if ($fieldinfo != "startlanguage" && $fieldinfo != "id" && $fieldinfo != "datestamp" && $fieldinfo != "startdate" && $fieldinfo != "ipaddr" && $fieldinfo != "refurl" && $fieldinfo != "token" && $fieldinfo != "firstname" && $fieldinfo != "lastname" && $fieldinfo != "email" && (substr($fieldinfo,0,10)!="attribute_") && $fieldinfo != "completed" && $fieldinfo != "caseoutcome"&& $fieldinfo != "caseid" && $fieldinfo != "callattempts" && $fieldinfo != "messagesleft"&& $fieldinfo != "casenotes"&& $fieldinfo != "interviewtimec"&& $fieldinfo != "interviewtimel"&& $fieldinfo != "lastnumber"&& $fieldinfo != "operatoru") + if ($fieldinfo != "startlanguage" && $fieldinfo != "id" && $fieldinfo != "datestamp" && $fieldinfo != "startdate" && $fieldinfo != "ipaddr" && $fieldinfo != "refurl" && $fieldinfo != "token" && $fieldinfo != "firstname" && $fieldinfo != "lastname" && $fieldinfo != "email" && (substr($fieldinfo,0,10)!="attribute_") && $fieldinfo != "completed" && $fieldinfo != "caseoutcome"&& $fieldinfo != "caseid" && $fieldinfo != "callattempts" && $fieldinfo != "messagesleft"&& $fieldinfo != "casenotes"&& $fieldinfo != "interviewtimec"&& $fieldinfo != "interviewtimel"&& $fieldinfo != "lastnumber"&& $fieldinfo != "operatoru"&& $fieldinfo != "shiftr") { $fielddata=$fieldmap[$fieldinfo]; $fqid=$fielddata['qid']; @@ -971,6 +989,9 @@ elseif ($answers == "long") //chose complete answers case "operatoru": $ftitle=$elang->gT("Operator username for last call").":"; break; + case "shiftr": + $ftitle=$elang->gT("Shift report").":"; + break; case "datestamp": $ftitle=$elang->gT("Date Last Action").":"; break; diff --git a/include/limesurvey/classes/expressions/LimeExpressionManager.php b/include/limesurvey/classes/expressions/LimeExpressionManager.php index 659e125b..5d0709d5 100644 --- a/include/limesurvey/classes/expressions/LimeExpressionManager.php +++ b/include/limesurvey/classes/expressions/LimeExpressionManager.php @@ -3416,10 +3416,25 @@ //Add all sample variables for this case global $connect; - $sql = "SELECT sv.var,sv.val - FROM sample_var as sv, `case` as c - WHERE c.sample_id = sv.sample_id - AND c.token = '{$_SESSION['token']}'"; + $use_call = true; + if (strlen($_SESSION['token']) == 15) + $use_call = false; + + if ($use_call) + { + $sql = "SELECT sv.var,sv.val + FROM sample_var as sv, `case` as c, `call` as cl + WHERE c.sample_id = sv.sample_id + AND c.case_id = cl.case_id + AND cl.call_id = '{$_SESSION['token']}'"; + } + else + { + $sql = "SELECT sv.var,sv.val + FROM sample_var as sv, `case` as c + WHERE c.sample_id = sv.sample_id + AND c.token = '{$_SESSION['token']}'"; + } $queXSrs = $connect->GetAssoc($sql); @@ -3434,46 +3449,57 @@ ); } + if ($use_call) + { + $osql = "FROM operator as o, `call` as cl + WHERE o.operator_id = cl.operator_id + AND cl.call_id = '{$_SESSION['token']}'"; + + $rsql = "FROM respondent as r, `call` as cl + WHERE cl.call_id = '{$_SESSION['token']}' + AND r.respondent_id = cl.respondent_id"; + } + else + { + $osql = "FROM operator as o, `case` as c + WHERE c.token = '{$_SESSION['token']}' + AND o.operator_id = c.current_operator_id"; + + $rsql = "FROM respondent as r, `case` as c, call_attempt as ca + WHERE c.token = '{$_SESSION['token']}' + AND ca.case_id = c.case_id + AND ca.end IS NULL + AND r.respondent_id = ca.respondent_id"; + } + //add operator and respondent details $this->knownVars["OPERATOR:FIRSTNAME"] = - array('code' => $connect->GetOne(" SELECT o.firstName - FROM operator as o, `case` as c - WHERE c.token = '{$_SESSION['token']}' - AND o.operator_id = c.current_operator_id"), + array('code' => $connect->GetOne(" SELECT o.firstName " . $osql + ), 'jsName_on'=>'', 'jsName'=>'', 'readWrite'=>'N', ); $this->knownVars["OPERATOR:LASTNAME"] = - array('code' => $connect->GetOne(" SELECT o.lastName - FROM operator as o, `case` as c - WHERE c.token = '{$_SESSION['token']}' - AND o.operator_id = c.current_operator_id"), + array('code' => $connect->GetOne(" SELECT o.lastName " . $osql + ), 'jsName_on'=>'', 'jsName'=>'', 'readWrite'=>'N', ); $this->knownVars["RESPONDENT:FIRSTNAME"] = - array('code' => $connect->GetOne(" SELECT r.firstName - FROM respondent as r, `case` as c, call_attempt as ca - WHERE c.token = '{$_SESSION['token']}' - AND ca.case_id = c.case_id - AND ca.end IS NULL - AND r.respondent_id = ca.respondent_id"), + array('code' => $connect->GetOne(" SELECT r.firstName " . $rsql + ), 'jsName_on'=>'', 'jsName'=>'', 'readWrite'=>'N', ); $this->knownVars["RESPONDENT:LASTNAME"] = - array('code' => $connect->GetOne(" SELECT r.lastName - FROM respondent as r, `case` as c, call_attempt as ca - WHERE c.token = '{$_SESSION['token']}' - AND ca.case_id = c.case_id - AND ca.end IS NULL - AND r.respondent_id = ca.respondent_id"), + array('code' => $connect->GetOne(" SELECT r.lastName " . $rsql + ), 'jsName_on'=>'', 'jsName'=>'', 'readWrite'=>'N',