diff --git a/admin/assignsample.php b/admin/assignsample.php
index fc3798fe..61c563a0 100644
--- a/admin/assignsample.php
+++ b/admin/assignsample.php
@@ -92,6 +92,57 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['
VALUES('$questionnaire_id','$sid','$cm','$cam','$selecttype','$am', '$an')";
$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)
+ {
+ add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, true);
+ }
+
+ $db->CompleteTrans();
+ }
}
if (isset($_POST['edit']))
@@ -266,7 +317,14 @@ if ($questionnaire_id != false)
" data-off="" data-width="85"/>
+
+ GetOne("SELECT self_complete FROM questionnaire WHERE questionnaire_id = '$questionnaire_id'");
+ if ($self_complete) {?>
+
+ " data-off="" data-width="85"/>
+
+
diff --git a/functions/functions.operator.php b/functions/functions.operator.php
index 50fbea9d..e8367ab6 100644
--- a/functions/functions.operator.php
+++ b/functions/functions.operator.php
@@ -345,17 +345,19 @@ function is_respondent_selection($operator_id)
* @param int $questionnaire_id The questionnaire id
* @param int $operator_id The operator id (Default NULL)
* @param int $testing 0 if a live case otherwise 1 for a testing case
+ * @param int $current_outcome_id The current outcome id (defaults to 1 - not attempted)
+ * @param bool $addlimeattributes If true, add sample values as lime attributes
*
* @return int The case id
*/
-function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing = 0)
+function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing = 0, $current_outcome_id = 1, $addlimeattributes = false)
{
global $db;
$token = sRandomChars();
$sql = "INSERT INTO `case` (case_id, sample_id, questionnaire_id, last_call_id, current_operator_id, current_call_id, current_outcome_id,token)
- VALUES (NULL, $sample_id, $questionnaire_id, NULL, $operator_id, NULL, 1, '$token')";
+ VALUES (NULL, $sample_id, $questionnaire_id, NULL, $operator_id, NULL, '$current_outcome_id','$token')";
$db->Execute($sql);
@@ -440,10 +442,75 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing =
if ($lime_sid)
{
+ $lfirstname = '';
+ $llastname = '';
+ $lemail = '';
+
+ if ($addlimeattributes)
+ {
+ $lfirstname = $db->GetOne("SELECT sv.val
+ FROM sample_var as sv, sample_import_var_restrict as s
+ WHERE sv.var_id = s.var_id
+ AND sv.sample_id = '$sample_id'
+ AND s.type = '6'");
+
+ $llastname = $db->GetOne("SELECT sv.val
+ FROM sample_var as sv, sample_import_var_restrict as s
+ WHERE sv.var_id = s.var_id
+ AND sv.sample_id = '$sample_id'
+ AND s.type = '7'");
+
+ $lemail = $db->GetOne("SELECT sv.val
+ FROM sample_var as sv, sample_import_var_restrict as s
+ WHERE sv.var_id = s.var_id
+ AND sv.sample_id = '$sample_id'
+ AND s.type = '8'");
+
+ }
+
$sql = "INSERT INTO ".LIME_PREFIX."tokens_$lime_sid (tid,firstname,lastname,email,token,language,sent,completed,mpid)
- VALUES (NULL,'','','','$token','".DEFAULT_LOCALE."','N','N',NULL)";
+ VALUES (NULL,'$lfirstname','$llastname','$lemail','$token','".DEFAULT_LOCALE."','N','N',NULL)";
$db->Execute($sql);
+
+ $tid = $db->Insert_Id();
+
+ if ($addlimeattributes)
+ {
+ //also add sample values as attributes
+ //match by name
+
+ $sql = "SELECT attributedescriptions
+ FROM " . LIME_PREFIX . "surveys
+ WHERE sid = '$lime_sid'";
+
+ $names = $db->GetOne($sql);
+
+ $attdescriptiondata=explode("\n",$names);
+ $atts=array();
+
+ foreach ($attdescriptiondata as $attdescription)
+ {
+ if (!empty($attdescription))
+ $atts['attribute_'.substr($attdescription,10,strpos($attdescription,'=')-10)] = substr($attdescription,strpos($attdescription,'=')+1);
+ }
+
+ foreach($atts as $key => $val)
+ {
+ $lval = $db->GetOne("SELECT sv.val
+ FROM sample_var as sv, sample_import_var_restrict as s
+ WHERE sv.var_id = s.var_id
+ AND sv.sample_id = '$sample_id'
+ AND s.var LIKE '$val'");
+
+ $sql = "UPDATE " . LIME_PREFIX . "tokens_$lime_sid
+ SET $key = '$lval'
+ WHERE tid = '$tid'";
+
+ $db->Execute($sql);
+ }
+
+ }
}
}
diff --git a/locale/quexs.pot b/locale/quexs.pot
index a9fd1cd0..a567574d 100644
--- a/locale/quexs.pot
+++ b/locale/quexs.pot
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: queXS\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-08-05 10:48+1000\n"
+"POT-Creation-Date: 2015-08-07 15:48+1000\n"
"PO-Revision-Date: \n"
"Last-Translator: Adam Zammit \n"
"Language-Team: \n"
@@ -146,32 +146,6 @@ msgstr ""
msgid "Show to operator?"
msgstr ""
-#: functions/functions.freepbx.php:138
-#, php-format
-msgid "Reload failed because retrieve_conf encountered an error: %s"
-msgstr ""
-
-#: functions/functions.freepbx.php:140
-msgid "retrieve_conf failed, config not applied"
-msgstr ""
-
-#: functions/functions.freepbx.php:146
-msgid ""
-"Reload failed because FreePBX could not connect to the asterisk manager "
-"interface."
-msgstr ""
-
-#: functions/functions.freepbx.php:165
-msgid ""
-"Could not reload the FOP operator panel server using the bounce_op.sh "
-"script. Configuration changes may not be reflected in the panel display."
-msgstr ""
-
-#: functions/functions.freepbx.php:174
-#, php-format
-msgid "Exit code was %s and output was: %s"
-msgstr ""
-
#: functions/functions.operator.php:167 include/limesurvey/quexs.php:362
msgid "morning"
msgstr ""
@@ -184,7 +158,7 @@ msgstr ""
msgid "evening"
msgstr ""
-#: functions/functions.operator.php:905
+#: functions/functions.operator.php:972
msgid ""
"ERROR: You do not have server side authentication enabled therefore queXS "
"cannot determine which user is accessing the system."
@@ -506,7 +480,7 @@ msgstr ""
#: admin/operatorlist.php:184 admin/operatorlist.php:372
#: admin/casesbyoutcome.php:88 admin/supervisor.php:372
#: admin/supervisor.php:399 admin/supervisor.php:416
-#: admin/operatorskill.php:244 admin/operatorperformance.php:81
+#: admin/operatorskill.php:246 admin/operatorperformance.php:81
#: admin/operatorperformance.php:104 admin/shiftreport.php:104
#: admin/extensionstatus.php:257 admin/operatorquestionnaire.php:242
msgid "Operator"
@@ -540,7 +514,7 @@ msgstr ""
#: admin/questionnairelist.php:538 admin/callhistory.php:137
#: admin/availability.php:121 admin/operatorlist.php:182 admin/import.php:43
#: admin/import.php:81 admin/import.php:112 admin/casesbyoutcome.php:54
-#: admin/assignsample.php:150 admin/assignsample.php:203
+#: admin/assignsample.php:201 admin/assignsample.php:254
#: admin/casestatus.php:205 admin/extensionstatus.php:185 respondent.php:95
#: contactdetails.php:92
msgid "Go back"
@@ -598,11 +572,12 @@ msgstr ""
#: admin/questionnairelist.php:388 admin/questionnairelist.php:392
#: admin/questionnairelist.php:396 admin/questionnairelist.php:400
#: admin/operatorlist.php:239 admin/operatorlist.php:251
-#: admin/operatorlist.php:255 admin/assignsample.php:173
-#: admin/assignsample.php:176 admin/assignsample.php:264
-#: admin/assignsample.php:268 admin/supervisor.php:185 admin/quotarow.php:392
-#: admin/quotarow.php:596 admin/new.php:199 admin/new.php:206
-#: admin/new.php:213 admin/new.php:220 admin/new.php:227
+#: admin/operatorlist.php:255 admin/assignsample.php:224
+#: admin/assignsample.php:227 admin/assignsample.php:315
+#: admin/assignsample.php:319 admin/assignsample.php:325
+#: admin/supervisor.php:185 admin/quotarow.php:392 admin/quotarow.php:596
+#: admin/new.php:199 admin/new.php:206 admin/new.php:213 admin/new.php:220
+#: admin/new.php:227
msgid "Yes"
msgstr ""
@@ -1078,14 +1053,14 @@ msgstr ""
#: nocaseavailable.php:116 admin/samplelist.php:320 admin/quotareport.php:294
#: admin/assigntimeslots.php:260 admin/outcomes.php:122 admin/outcomes.php:178
#: admin/callhistory.php:124 admin/callhistory.php:149
-#: admin/callhistory.php:160 admin/quota.php:131 admin/assignsample.php:152
-#: admin/assignsample.php:228 admin/supervisor.php:298 admin/quotarow.php:306
+#: admin/callhistory.php:160 admin/quota.php:131 admin/assignsample.php:203
+#: admin/assignsample.php:279 admin/supervisor.php:298 admin/quotarow.php:306
#: admin/casestatus.php:116 admin/casestatus.php:234
msgid "Sample"
msgstr ""
#: nocaseavailable.php:141 admin/callhistory.php:124 admin/callhistory.php:149
-#: admin/callhistory.php:154 admin/quota.php:110 admin/assignsample.php:151
+#: admin/callhistory.php:154 admin/quota.php:110 admin/assignsample.php:202
#: admin/quotarow.php:288 admin/casestatus.php:231
#: admin/displayappointments.php:258 admin/displayappointments.php:277
#: admin/new.php:127 admin/new.php:135 shifts.php:103
@@ -1245,7 +1220,7 @@ msgstr ""
msgid "Delete ?"
msgstr ""
-#: admin/samplelist.php:346 admin/addshift.php:263 admin/assignsample.php:179
+#: admin/samplelist.php:346 admin/addshift.php:263 admin/assignsample.php:230
#: admin/quotarow.php:394 admin/extensionstatus.php:202
#: admin/displayappointments.php:231
msgid "Save changes"
@@ -1405,7 +1380,7 @@ msgid "Added operator :"
msgstr ""
#: admin/operators.php:150
-msgid "FreePBX has been reloaded for the new VoIP extension to take effect"
+msgid "FreePBX needs to be reloaded for the new VoIP extension to take effect"
msgstr ""
#: admin/operators.php:172
@@ -1430,7 +1405,7 @@ msgstr ""
#: admin/operators.php:242 admin/clientquestionnaire.php:238
#: admin/operatorlist.php:200 admin/operatorlist.php:372
-#: admin/operatorskill.php:244 admin/operatorquestionnaire.php:242
+#: admin/operatorskill.php:246 admin/operatorquestionnaire.php:242
msgid "Username"
msgstr ""
@@ -1453,7 +1428,7 @@ msgstr ""
#: admin/operators.php:267 admin/operators.php:276
#: admin/questionnairelist.php:380 admin/operatorlist.php:225
-#: admin/operatorlist.php:233 admin/assignsample.php:228
+#: admin/operatorlist.php:233 admin/assignsample.php:279
#: admin/quotarow.php:582 admin/shiftreport.php:104
#: admin/displayappointments.php:258 admin/displayappointments.php:277
msgid "Edit"
@@ -1478,11 +1453,12 @@ msgstr ""
#: admin/questionnairelist.php:392 admin/questionnairelist.php:396
#: admin/questionnairelist.php:400 admin/operatorlist.php:239
#: admin/operatorlist.php:251 admin/operatorlist.php:255
-#: admin/assignsample.php:173 admin/assignsample.php:174
-#: admin/assignsample.php:176 admin/assignsample.php:264
-#: admin/assignsample.php:265 admin/assignsample.php:268
-#: admin/quotarow.php:392 admin/quotarow.php:596 admin/new.php:199
-#: admin/new.php:206 admin/new.php:213 admin/new.php:220 admin/new.php:227
+#: admin/assignsample.php:224 admin/assignsample.php:225
+#: admin/assignsample.php:227 admin/assignsample.php:315
+#: admin/assignsample.php:316 admin/assignsample.php:319
+#: admin/assignsample.php:325 admin/quotarow.php:392 admin/quotarow.php:596
+#: admin/new.php:199 admin/new.php:206 admin/new.php:213 admin/new.php:220
+#: admin/new.php:227
msgid "No"
msgstr ""
@@ -1516,7 +1492,7 @@ msgstr ""
#: admin/quotareport.php:111 admin/assigntimeslots.php:156
#: admin/questionnaireprefill.php:100 admin/outcomes.php:68
-#: admin/addshift.php:168 admin/assignsample.php:204
+#: admin/addshift.php:168 admin/assignsample.php:255
msgid "Select a questionnaire"
msgstr ""
@@ -2349,7 +2325,7 @@ msgstr ""
msgid "Select columns to import"
msgstr ""
-#: admin/import.php:97 admin/import.php:145 admin/assignsample.php:272
+#: admin/import.php:97 admin/import.php:145 admin/assignsample.php:330
msgid "Add sample"
msgstr ""
@@ -2458,7 +2434,7 @@ msgstr ""
msgid "Assign operators to questionnaires"
msgstr ""
-#: admin/index.php:134 admin/operatorskill.php:268
+#: admin/index.php:134 admin/operatorskill.php:270
msgid "Modify operator skills"
msgstr ""
@@ -2679,82 +2655,89 @@ msgstr ""
msgid "Code value"
msgstr ""
-#: admin/assignsample.php:131
+#: admin/assignsample.php:182
msgid "Edit assignment parameters"
msgstr ""
-#: admin/assignsample.php:132 admin/assignsample.php:201
+#: admin/assignsample.php:183 admin/assignsample.php:252
msgid "Assign samples to questionnaire: "
msgstr ""
-#: admin/assignsample.php:163 admin/assignsample.php:228
-#: admin/assignsample.php:251
+#: admin/assignsample.php:214 admin/assignsample.php:279
+#: admin/assignsample.php:302
msgid "Max calls"
msgstr ""
-#: admin/assignsample.php:165 admin/assignsample.php:168
-#: admin/assignsample.php:253 admin/assignsample.php:257
+#: admin/assignsample.php:216 admin/assignsample.php:219
+#: admin/assignsample.php:304 admin/assignsample.php:308
msgid "Unlimited"
msgstr ""
-#: admin/assignsample.php:166 admin/assignsample.php:228
-#: admin/assignsample.php:255
+#: admin/assignsample.php:217 admin/assignsample.php:279
+#: admin/assignsample.php:306
msgid "Max call attempts"
msgstr ""
-#: admin/assignsample.php:169 admin/assignsample.php:259
+#: admin/assignsample.php:220 admin/assignsample.php:310
msgid "Number of answering machine messages to leave per case"
msgstr ""
-#: admin/assignsample.php:171 admin/assignsample.php:261
+#: admin/assignsample.php:222 admin/assignsample.php:312
msgid "Never"
msgstr ""
-#: admin/assignsample.php:172 admin/assignsample.php:263
+#: admin/assignsample.php:223 admin/assignsample.php:314
msgid "Select from sample randomly?"
msgstr ""
-#: admin/assignsample.php:174 admin/assignsample.php:265
+#: admin/assignsample.php:225 admin/assignsample.php:316
msgid "Sequentially"
msgstr ""
-#: admin/assignsample.php:175 admin/assignsample.php:228
-#: admin/assignsample.php:267
+#: admin/assignsample.php:226 admin/assignsample.php:279
+#: admin/assignsample.php:318
msgid "Allow new numbers to be drawn?"
msgstr ""
-#: admin/assignsample.php:200
+#: admin/assignsample.php:251
msgid "List & Add Sample"
msgstr ""
-#: admin/assignsample.php:211
+#: admin/assignsample.php:262
msgid "Samples selected for this questionnaire"
msgstr ""
-#: admin/assignsample.php:228
+#: admin/assignsample.php:279
msgid "Answering machine messages"
msgstr ""
-#: admin/assignsample.php:228
+#: admin/assignsample.php:279
msgid "Selection type"
msgstr ""
-#: admin/assignsample.php:228
+#: admin/assignsample.php:279
msgid "Unassign sample"
msgstr ""
-#: admin/assignsample.php:230
+#: admin/assignsample.php:281
msgid "No samples selected for this questionnaire"
msgstr ""
-#: admin/assignsample.php:244
+#: admin/assignsample.php:295
msgid "Add a sample to this questionnaire:"
msgstr ""
-#: admin/assignsample.php:247
+#: admin/assignsample.php:298
msgid "Select sample:"
msgstr ""
+#: admin/assignsample.php:324
+msgid ""
+"Generate cases for all sample records and set outcome to 'Self completion "
+"email invitation sent'? (Ideal if you intend to send an email invitation to "
+"sample members before attempting to call using queXS)"
+msgstr ""
+
#: admin/supervisor.php:126 respondent.php:101 contactdetails.php:98
msgid "Case id:"
msgstr ""