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

Merged up to 1.15.0

This commit is contained in:
Adam Zammit
2017-03-21 16:00:23 +11:00
32 changed files with 1055 additions and 1030 deletions

View File

@@ -1,7 +1,63 @@
queXS 2.0.0 - Changes since 1.15.0
queXS 2.0.0 removes the included version of Limesurvey 1.91+ and instead relies on an existing install of Limesurvey
of at least version 2.0, with the JSON remote control API enabled to collect data.
Therefore queXS 2.0.0 has an additional requirement of a separate installation of Limesurvey with the JSON RPC API enabled.
Both the 1.x and 2.x branches will continue to be maintained for now. Be warned: If you choose to upgrade to the 2.0.0 version,
there is "no going back" unless you restore from a backup.
Due to the previous tight integration of queXS and Limesurvey, some noteable features are NOT supported in the 2.x series, including:
- Data export:
* Exporting data "by sample" or "by questionnaire" from Limesurvey directly
* queXS paradata export from within Limesurvey
- Integration:
* {SAMPLE:xxx} replacement fields in Limesurvey (you will need to replace these with {TOKEN:attribute_1}, {TOKEN:attribute_2}, etc)
* queXS replacement fields including: CALLATTEMPTS, ONAPPOINTMENT, PERIODOFDAY, APPOINTMENTDATE, APPOINTMENTTIME, APPOINTMENTNUMBER, PERCCOMPLETE, ENDINTERVIEWURL, STARTINTERVIEWURL
* Altering of template / mode of delivery for self complete surveys versus interviewer administered surveys
- Interface:
* Automatically proceedingt to next question on answer selection (no need to press "NEXT")
Please note that you may be able to implement some of these in Limesurvey directly or work around them. If they are critical for your operations,
please do not proceed with the upgrade to queXS 2.0.0
Upgrade procedure from 1.15.0 to 2.0.0:
ALTER TABLE `questionnaire` ADD `remote_id` INT NOT NULL ,
ADD INDEX ( `remote_id` ) ;
queXS 1.15.0 - Changes since 1.14.4
This release contains a weighted timeslot feature to allow for varying numbers of attempts in particular timeslots,
as well as features and fixes to web/CATI mode integration.
New feature: Weighted timeslots (allow more attempts in particular timeslots)
New feature: Allow for tokens to be imported in a queXS sample
Fixed issue: Database structure not optimised for sample_var_import_restrict table
Fixed issue: Cases being generated without a valid email address when importing to Limesurvey
Fixed issue: Limesurvey save form not displaying
Fixed issue: Limesurvey welcome screen not displaying
Fixed issue: Admin permissions not propogating to Limesurvey
Fixed issue: Mode of delivery (single page, group by group, etc) not determined if no token in queXS
Database changes required:
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(9, 'Token', '');
ALTER TABLE `sample_import_var_restrict` ADD INDEX ( `var` ) ;
ALTER TABLE `sample_import_var_restrict` ADD INDEX ( `sample_import_id` ) ;
ALTER TABLE `questionnaire_timeslot` ADD `weight` INT( 11 ) NOT NULL DEFAULT '1';
ALTER TABLE `questionnaire_sample_timeslot` ADD `weight` INT( 11 ) NOT NULL DEFAULT '1';
queXS 1.14.4 - Changes since 1.14.3
Fourth bug fix release.

View File

@@ -81,7 +81,6 @@ global $db;
$error = "";
if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['call_max']) && isset($_GET['call_attempt_max']))
{
//need to add sample to questionnaire
@@ -106,7 +105,6 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['
if (isset($_GET['generatecases']))
{
//find the number of sample variables required
$sql = "SELECT count(*)
FROM sample_import_var_restrict
@@ -122,28 +120,31 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample']) && isset($_GET['
}
include_once("../functions/functions.operator.php");
include_once("../functions/functions.limesurvey.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'");
//generate one case for each sample record and set outcome to 41
$sql = "SELECT sample_id
FROM sample
WHERE import_id = '$sid'";
//generate one case for each sample record and set outcome to 41 (where an email address provided)
$sql = "SELECT s.sample_id, sv.val as email
FROM sample as s
LEFT JOIN (sample_var as sv, sample_import_var_restrict as sivr) ON (sv.sample_id = s.sample_id and sv.var_id = sivr.var_id and sivr.type = 8)
WHERE s.import_id = '$sid'";
$rs = $db->GetAll($sql);
foreach($rs as $r)
{
set_time_limit(30);
if (add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, $addsample) === false) {
$error = "Could not add case - please ensure there enough additional attributes available in your Limesurvey participant table";
break;
if (validate_email($r['email'])) {
if (add_case($r['sample_id'],$questionnaire_id,"NULL",$testing,41, $addsample) === false) {
$error = "Could not add case - please ensure there enough additional attributes available in your Limesurvey participant table";
break;
}
}
}
$db->CompleteTrans();
}
}
@@ -300,6 +301,9 @@ xhtml_head(T_("Assign samples to questionnaires"),true,$css,$js_head,false,false
print "<a href='' onclick='history.back();return false;' class='btn btn-default pull-left'><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>";
if (!empty($error)) {
print "<div class='alert text-danger'>$error</div>";
}
$questionnaire_id = false;
if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']);
@@ -401,7 +405,7 @@ if ($questionnaire_id != false)
<div class="col-sm-1"><input type="checkbox" id = "allownew" name="allownew" checked="checked" class="col-sm-1" data-toggle="toggle" data-size="small" data-on="<?php echo T_("Yes");?>" data-off="<?php echo T_("No");?>" data-width="85"/></div>
<label class="control-label text-info"><?php ;?></label><br/><br/><br/>
<label for="generatecases" class="control-label col-lg-4"><?php echo T_("Generate cases for all sample records and set outcome to 'Self completion email invitation sent'?");?></label>
<label for="generatecases" class="control-label col-lg-4"><?php echo T_("Generate cases for all sample records with a valid email address and set outcome to 'Self completion email invitation sent'?");?></label>
<div class="col-sm-1"><input type="checkbox" id = "generatecases" name="generatecases" class="col-sm-1" data-toggle="toggle" data-size="small" data-on="<?php echo T_("Yes");?>" data-off="<?php echo T_("No");?>" data-width="85"/></div>
<em class="control-label"> * <?php echo T_("Ideal if you intend to send an email invitation to sample members before attempting to call using queXS") . " " . T_("Please ensure there are sufficient additional attribute fields in your Limesurvey questionnaire so that sample records can be inserted."); ?></em>
<div class='clearfix '></div></br>

View File

@@ -105,9 +105,10 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['ca_availability_group']))
//need to add availability_group to questionnaire
$questionnaire_id = bigintval($_GET['questionnaire_id']);
$availability_group = bigintval($_GET['ca_availability_group']);
$weight = bigintval($_GET['weight']);
$sql = "INSERT INTO questionnaire_timeslot(questionnaire_id,availability_group_id)
VALUES('$questionnaire_id','$availability_group')";
$sql = "INSERT INTO questionnaire_timeslot(questionnaire_id,availability_group_id,weight)
VALUES('$questionnaire_id','$availability_group','$weight')";
$db->Execute($sql);
}
@@ -131,9 +132,10 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sample_import_id']) && isse
$questionnaire_id = bigintval($_GET['questionnaire_id']);
$sample_import_id = bigintval($_GET['sample_import_id']);
$availability_group = bigintval($_GET['qs_availability_group']);
$weight = bigintval($_GET['weights']);
$sql = "INSERT INTO questionnaire_sample_timeslot (questionnaire_id,sample_import_id,availability_group_id)
VALUES('$questionnaire_id','$sample_import_id','$availability_group')";
$sql = "INSERT INTO questionnaire_sample_timeslot (questionnaire_id,sample_import_id,availability_group_id,weight)
VALUES('$questionnaire_id','$sample_import_id','$availability_group','$weight')";
$db->Execute($sql);
}
@@ -216,11 +218,12 @@ print "</div>";
print "<div class=col-sm-4><h2>" . T_("Call attempt time slots") . "</h2>";
print "<div class='well'>" . T_("Assigning call attempt time slots to questionnaires will only allow cases to be attempted in a time slot for the n + 1th time where it has been attempted at least n times in all assigned timeslots. Please note timeslots must cover all possible time periods otherwise no cases will be available during missing timeslots.") ."</div>";
$sql = "SELECT q.availability_group_id,a.description as description, CONCAT('<a href=\'?questionnaire_id=$questionnaire_id&amp;ca_ravailability_group=', q.availability_group_id,'\' >" . T_("Click to unassign") . "</a>') as link
FROM questionnaire_timeslot as q, availability_group as a
WHERE q.availability_group_id = a.availability_group_id
AND q.questionnaire_id = '$questionnaire_id'";
$sql = "SELECT q.availability_group_id,a.description as description,
CONCAT('<a href=\'?questionnaire_id=$questionnaire_id&amp;ca_ravailability_group=', q.availability_group_id,'\' >" . T_("Click to unassign") . "</a>') as link,
q.weight
FROM questionnaire_timeslot as q, availability_group as a
WHERE q.availability_group_id = a.availability_group_id
AND q.questionnaire_id = '$questionnaire_id'";
$qs = $db->GetAll($sql);
print "</br><div class='panel-body'>";
@@ -231,7 +234,7 @@ print "<div class='well'>" . T_("Assigning call attempt time slots to questionna
else
{
print "<h4>" . T_("Call attempt time slots selected for this questionnaire") . "</h4>";
xhtml_table ($qs,array("availability_group_id","description","link"),false,"table table-hover");
xhtml_table ($qs,array("description","weight","link"),array(T_("Availability group"),T_("Weight"),T_("Unassign")),"table table-hover");
}
print "</div>";
@@ -251,9 +254,15 @@ print "<div class='well'>" . T_("Assigning call attempt time slots to questionna
{
print "<option value=\"{$q['availability_group_id']}\">{$q['description']}</option>";
}
print "</select></div>
<input type='hidden' name='questionnaire_id' value='$questionnaire_id'/>
&ensp;<input type='submit' class='btn btn-default' name='add_ca_availability' value='" . TQ_("Add call attempt time slot") . "'/>
print "</select></div>";
?>
<div>
<label for="weight"><?php echo T_("Weighting (relative number of calls in this slot)");?></label>
<div><input type="number" min="1" max="20" style="width:6em;" name="weight" id="weight" value="1" class="form-control"/></div>
</div>
<?php
print "<input type='hidden' name='questionnaire_id' value='$questionnaire_id'/>
&ensp;<div><input type='submit' class='btn btn-default' name='add_ca_availability' value='" . TQ_("Add call attempt time slot") . "'/></div>
</form></div>";
}
print "</div>";
@@ -270,7 +279,9 @@ print "<div class='well'>" . T_("Assigning call attempt time slots to questionna
if ($sample_import_id !== false)
{
$sql = "SELECT q.availability_group_id,a.description as description, CONCAT('<a href=\'?sample_import_id=$sample_import_id&amp;questionnaire_id=$questionnaire_id&amp;qs_ravailability_group=', q.availability_group_id,'\' >" . T_("Click to unassign") . "</a>') as link
$sql = "SELECT q.availability_group_id,a.description as description,
CONCAT('<a href=\'?sample_import_id=$sample_import_id&amp;questionnaire_id=$questionnaire_id&amp;qs_ravailability_group=', q.availability_group_id,'\' >" . T_("Click to unassign") . "</a>') as link,
q.weight
FROM questionnaire_sample_timeslot as q, availability_group as a
WHERE q.availability_group_id = a.availability_group_id
AND q.questionnaire_id = '$questionnaire_id'
@@ -285,7 +296,7 @@ print "<div class='well'>" . T_("Assigning call attempt time slots to questionna
else
{
print "<h4>" . T_("Call attempt time slots selected for this sample") . ":</h4>";
xhtml_table ($qs,array("availability_group_id","description","link"),false,"table table-hover");
xhtml_table ($qs,array("description","weight","link"),array(T_("Availability group"),T_("Weight"),T_("Unassign")),"table table-hover");
}
$sql = "SELECT si.availability_group_id,si.description
@@ -304,8 +315,14 @@ print "<div class='well'>" . T_("Assigning call attempt time slots to questionna
{
print "<option value=\"{$q['availability_group_id']}\">{$q['description']}</option>";
}
print "</select></div>
<input type='hidden' name='questionnaire_id' value='$questionnaire_id'/>
print "</select></div>";
?>
<div>
<label for="weights"><?php echo T_("Weighting (relative number of calls in this slot)");?></label>
<div><input type="number" min="1" max="20" style="width:6em;" name="weights" id="weights" value="1" class="form-control"/></div>
</div>
<?php
print "<input type='hidden' name='questionnaire_id' value='$questionnaire_id'/>
<input type='hidden' name='sample_import_id' value='$sample_import_id'/>
&ensp;<input type='submit' name='add_qs_availability' class='btn btn-default' value='" . T_("Add call attempt time slot for sample") . "'/>
</form></div>";

View File

@@ -72,7 +72,11 @@ if (isset($_POST['submit']))
SET users_name = " . $db->qstr($_POST['username']) . ",
email = " . $db->qstr($_POST['email']) . ",
full_name = " . $db->qstr($_POST['firstName']) . ",
superadmin = $superadmin";
superadmin = $superadmin,
create_survey = $superadmin,
configurator = $superadmin,
manage_template = $superadmin,
manage_label = $superadmin";
if (!empty($_POST['password']))
{

View File

@@ -117,10 +117,9 @@ if (isset($_POST['operator']) && isset($_POST['adduser']))
include_once("../include/sha256.php");
//Insert into lime_users
//Insert into users
$sql = "INSERT INTO users (`users_name`,`password`,`full_name`,`superadmin`,`email`)
VALUES ($operator, '" . SHA256::hashing($_POST['password']) . "',$firstname,$admin,$email)";
$db->Execute($sql);
if (FREEPBX_PATH !== false)

View File

@@ -275,11 +275,8 @@ while (!is_process_killed($process_id)) //check if process killed every $sleepin
WHERE c.current_operator_id IS NULL
AND c.questionnaire_id = '$questionnaire_id'
AND ((apn.appointment_id IS NOT NULL) OR casa.case_id IS NULL OR (ava.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= ava.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= ava.end ))
AND ((apn.appointment_id IS NOT NULL) OR qast.questionnaire_id IS NULL OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT COUNT(call_attempt_id) FROM `call_attempt`, availability WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = ( SELECT (SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) as cou FROM availability_group, questionnaire_timeslot WHERE questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND availability_group.availability_group_id = questionnaire_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR qasts.questionnaire_id IS NULL OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT COUNT(call_attempt_id) FROM `call_attempt`, availability WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = ( SELECT (SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) as cou FROM availability_group, questionnaire_sample_timeslot WHERE questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_sample_timeslot.sample_import_id = si.sample_import_id AND availability_group.availability_group_id = questionnaire_sample_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR qast.questionnaire_id IS NULL OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT FLOOR(COUNT(call_attempt_id) / questionnaire_timeslot.weight) FROM `call_attempt`, availability, questionnaire_timeslot WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qast.availability_group_id AND questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_timeslot.availability_group_id = availability.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = (SELECT FLOOR((SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) / questionnaire_timeslot.weight) as cou FROM availability_group, questionnaire_timeslot WHERE questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND availability_group.availability_group_id = questionnaire_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR qasts.questionnaire_id IS NULL OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT FLOOR(COUNT(call_attempt_id) / questionnaire_sample_timeslot.weight) FROM `call_attempt`, availability, questionnaire_sample_timeslot WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qasts.availability_group_id AND questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_sample_timeslot.availability_group_id = availability.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = (SELECT FLOOR((SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) / questionnaire_sample_timeslot.weight) as cou FROM availability_group, questionnaire_sample_timeslot WHERE questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_sample_timeslot.sample_import_id = si.sample_import_id AND availability_group.availability_group_id = questionnaire_sample_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND (a.call_id is NULL or (a.end < CONVERT_TZ(DATE_SUB(NOW(), INTERVAL ou.default_delay_minutes MINUTE),'System','UTC')))
AND ap.case_id is NULL
AND ((qsep.questionnaire_id is NULL) or qsep.exclude = 0)

View File

@@ -760,6 +760,7 @@ CREATE TABLE `questionnaire_sample_timeslot` (
`questionnaire_id` bigint(20) NOT NULL,
`sample_import_id` bigint(20) NOT NULL,
`availability_group_id` bigint(20) NOT NULL,
`weight` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`questionnaire_id`,`availability_group_id`,`sample_import_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
@@ -772,6 +773,7 @@ CREATE TABLE `questionnaire_sample_timeslot` (
CREATE TABLE `questionnaire_timeslot` (
`questionnaire_id` bigint(20) NOT NULL,
`availability_group_id` bigint(20) NOT NULL,
`weight` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`questionnaire_id`,`availability_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
@@ -865,8 +867,10 @@ CREATE TABLE `sample_import_var_restrict` (
`var` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,
`type` smallint(10) unsigned NOT NULL,
`restrict` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`var_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
PRIMARY KEY (`var_id`),
KEY (`var`),
KEY (`sample_import_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
@@ -943,6 +947,7 @@ INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(5, 'Postco
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(6, 'Respondent first name', '');
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(7, 'Respondent last name', '');
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(8, 'Email address', '');
INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES(9, 'Token', '');
-- --------------------------------------------------------

View File

@@ -95,6 +95,18 @@ function verify_fields($fields)
}
}
//check that only 0 or 1 token fields selected
$count = 0;
foreach($names as $val)
{
if ($val == 9) $count++;
}
if ($count > 1)
{
return T_("No more than one field may be a token field");
}
//check that there is one and one only primary phone selected
$count = 0;
foreach($names as $val)

View File

@@ -333,10 +333,23 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing =
{
global $db;
//if token is specified, get from sample
$sql = "SELECT sv.val
FROM sample_var as sv, sample_import_var_restrict as sivr
WHERE sv.sample_id = '$sample_id'
AND sv.var_id = sivr.var_id
AND sivr.type = 9"; //9 is the token value
$dtoken = $db->GetOne($sql);
$ttries = 0;
do {
$token = sRandomChars();
if (empty($dtoken)) {
$token = sRandomChars();
} else {
$token = $dtoken;
}
$sql = "SELECT count(*) as c
FROM `case`
@@ -344,7 +357,9 @@ function add_case($sample_id,$questionnaire_id,$operator_id = "NULL",$testing =
$ttries++;
} while ($db->GetOne($sql) > 0 && $ttries < 10);
if ($ttries >= 10) //failed to get a token
return false;
$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, '$current_outcome_id','$token')";
@@ -674,8 +689,8 @@ function get_case_id($operator_id, $create = false)
JOIN operator_skill as os on (os.operator_id = op.operator_id and os.outcome_type_id = ou.outcome_type_id)
WHERE c.current_operator_id IS NULL
AND ((apn.appointment_id IS NOT NULL) OR (casa.case_id IS NULL) OR (ava.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= ava.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= ava.end ))
AND ((apn.appointment_id IS NOT NULL) OR (qast.questionnaire_id IS NULL) OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT COUNT(call_attempt_id) FROM `call_attempt`, availability WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = (SELECT (SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) as cou FROM availability_group, questionnaire_timeslot WHERE questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND availability_group.availability_group_id = questionnaire_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR (qasts.questionnaire_id IS NULL) OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT COUNT(call_attempt_id) FROM `call_attempt`, availability WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = ( SELECT (SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) as cou FROM availability_group, questionnaire_sample_timeslot WHERE questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_sample_timeslot.sample_import_id = si.sample_import_id AND availability_group.availability_group_id = questionnaire_sample_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR (qast.questionnaire_id IS NULL) OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qast.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT FLOOR(COUNT(call_attempt_id) / questionnaire_timeslot.weight) FROM `call_attempt`, availability, questionnaire_timeslot WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qast.availability_group_id AND questionnaire_timeslot.availability_group_id = availability.availability_group_id AND questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = (SELECT FLOOR((SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) / questionnaire_timeslot.weight) as cou FROM availability_group, questionnaire_timeslot WHERE questionnaire_timeslot.questionnaire_id = c.questionnaire_id AND availability_group.availability_group_id = questionnaire_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((apn.appointment_id IS NOT NULL) OR (qasts.questionnaire_id IS NULL) OR ((SELECT COUNT(*) FROM availability WHERE availability.availability_group_id = qasts.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(NOW(),'System',s.Time_zone_name)) AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(NOW(), 'System' , s.Time_zone_name)) <= availability.end)) >= 1 AND (SELECT FLOOR(COUNT(call_attempt_id) / questionnaire_sample_timeslot.weight) FROM `call_attempt`, availability, questionnaire_sample_timeslot WHERE call_attempt.case_id = c.case_id AND (availability.availability_group_id = qasts.availability_group_id AND questionnaire_sample_timeslot.availability_group_id = availability.availability_group_id AND questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end))) = (SELECT FLOOR((SELECT COUNT(*) FROM availability, call_attempt WHERE call_attempt.case_id = c.case_id AND availability.availability_group_id = availability_group.availability_group_id AND (availability.day_of_week = DAYOFWEEK(CONVERT_TZ(call_attempt.start,'UTC',s.Time_zone_name)) AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) >= availability.start AND TIME(CONVERT_TZ(call_attempt.start, 'UTC' , s.Time_zone_name)) <= availability.end)) / questionnaire_sample_timeslot.weight) as cou FROM availability_group, questionnaire_sample_timeslot WHERE questionnaire_sample_timeslot.questionnaire_id = c.questionnaire_id AND questionnaire_sample_timeslot.sample_import_id = si.sample_import_id AND availability_group.availability_group_id = questionnaire_sample_timeslot.availability_group_id ORDER BY cou ASC LIMIT 1)))
AND ((a.call_id is NULL) OR (a.end < CONVERT_TZ(DATE_SUB(NOW(), INTERVAL ou.default_delay_minutes MINUTE),'System','UTC')))
AND ap.case_id is NULL
AND ((qsep.questionnaire_id is NULL) OR (qsep.exclude = 0))

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-09-02 11:31+0000\n"
"Last-Translator: Siddiq <sidik@sidiklepic.com>\n"
"Language-Team: Bosnian <bs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-12-24 14:41+0000\n"
"Last-Translator: Zbyněk Schwarz <Unknown>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"
@@ -4502,9 +4502,11 @@ msgstr ""
#~ msgid "retrieve_conf failed, config not applied"
#~ msgstr "retrieve_conf selhalo, nastavení není použito"
#, php-format
#~ msgid "Reload failed because retrieve_conf encountered an error: %s"
#~ msgstr "Znovu načtení selhalo protože retrieve_conf narazilo na chybu: %s"
#, php-format
#~ msgid "Exit code was %s and output was: %s"
#~ msgstr "Kód ukončení byl %s a výstup byl: %s"
@@ -4837,6 +4839,7 @@ msgstr ""
#~ msgid "Search for:"
#~ msgstr "Hledat:"
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Použit znak % cjako zástupný znak"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2014-03-18 17:48+0000\n"
"Last-Translator: Daniel <weber@politik.uni-mainz.de>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek <el@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2016-06-28 17:43+0000\n"
"Last-Translator: Nicolas <nreali@aresco.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-05-09 18:23+0000\n"
"Last-Translator: A J <jazayeri@gmail.com>\n"
"Language-Team: Persian <fa@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Galician <gl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"
@@ -4743,6 +4743,7 @@ msgstr ""
#~ msgid "Link"
#~ msgstr "Ligazón"
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Usar o carácter % como comodín"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-12-30 05:48+0000\n"
"Last-Translator: Gal Zilberman <Unknown>\n"
"Language-Team: Hebrew <he@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2015-11-11 19:47+0000\n"
"Last-Translator: Alen <alen@webstanica.net>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian <id@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-12-17 13:37+0000\n"
"Last-Translator: Cristiano Santinello <cristiano.santinello@unitn.it>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"
@@ -4609,6 +4609,7 @@ msgstr ""
#~ msgid "End call with outcome: Quota filled"
#~ msgstr "Termina la chiamata con esito: Quota raggiunta"
#, php-format
#~ msgid "Reload failed because retrieve_conf encountered an error: %s"
#~ msgstr ""
#~ "Ricarica non riuscita perché retrieve_conf ha incontrato un errore: %s"
@@ -4631,6 +4632,7 @@ msgstr ""
#~ "utilizzando lo script bounce_op.sh. Modifiche alle configurazioni potrebbero "
#~ "non comparire nel pannello."
#, php-format
#~ msgid "Exit code was %s and output was: %s"
#~ msgstr "Il codice in uscita è stato %s e l'output è stato: %s"
@@ -4901,6 +4903,7 @@ msgstr ""
#~ msgid "Link"
#~ msgstr "Crea legame"
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Utilizza il carattere % come jolly"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian <lt@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"
@@ -4687,6 +4687,7 @@ msgstr ""
#~ msgid "Pre defined values for this question:"
#~ msgstr "Šio klausimo išakstinio užpildymo reikšmės"
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Use the % character as a wildcard"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Occitan (post 1500) <oc@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-10-21 18:44+0000\n"
"Last-Translator: Paweł Timler <pawel.timler@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-12-04 16:38+0000\n"
"Last-Translator: Marco Antonio Ciciliati <marco@ciciliati.com.br>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"
@@ -4444,6 +4444,7 @@ msgstr ""
#~ msgid "retrieve_conf failed, config not applied"
#~ msgstr "Falha no arquivo retrieve_conf. Configurações não aplicadas"
#, php-format
#~ msgid "Exit code was %s and output was: %s"
#~ msgstr "Código de saída foi %s e saída foi: %s"
@@ -4605,6 +4606,7 @@ msgstr ""
#~ msgid "Appointment:"
#~ msgstr "Agendamentos:"
#, php-format
#~ msgid "Reload failed because retrieve_conf encountered an error: %s"
#~ msgstr "Falha ao recarregar. Arquivo retrieve_conf encontrou um erro: %s"
@@ -4927,6 +4929,7 @@ msgstr ""
#~ msgid "Timezone: "
#~ msgstr "Fuso horário: "
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Use the % character as a wildcard"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs DDR\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2016-01-28 10:30+0000\n"
"Last-Translator: Alex <ddrmoscow@gmail.com>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
"Language: ru\n"
#: appointment.php:76
@@ -4978,6 +4978,7 @@ msgstr "Квота для опроса заполнена"
#~ "bounce_op.sh . Изменения в конфигурации могли не отразиться на экране "
#~ "панели."
#, php-format
#~ msgid "Reload failed because retrieve_conf encountered an error: %s"
#~ msgstr ""
#~ "Перезагрузка не удалась, т.к. выполнение файла retrieve_conf привело к "
@@ -5012,12 +5013,14 @@ msgstr "Квота для опроса заполнена"
#~ msgid "% complete"
#~ msgstr "% завершено"
#, php-format
#~ msgid "Use the % character as a wildcard"
#~ msgstr "Используйте символ % для подстановки любого значения"
#~ msgid "End call with outcome: Quota filled"
#~ msgstr "Закончить звонок с результатом: Квота заполнена"
#, php-format
#~ msgid "Exit code was %s and output was: %s"
#~ msgstr "Код выхода был %s с результатом : %s"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2013-03-08 01:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
#: appointment.php:76
msgid "Appointment error"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: quexs\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2016-10-25 15:08+1100\n"
"POT-Creation-Date: 2017-01-06 15:16+1100\n"
"PO-Revision-Date: 2014-09-01 03:16+0000\n"
"Last-Translator: Daniel lee <liding@ruc.edu.cn>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-01-06 04:12+0000\n"
"X-Generator: Launchpad (build 18302)\n"
"X-Launchpad-Export-Date: 2017-03-21 03:24+0000\n"
"X-Generator: Launchpad (build 18332)\n"
"Language: zh\n"
#: appointment.php:76
@@ -4410,6 +4410,7 @@ msgstr ""
#~ msgid "End call with outcome: Quota filled"
#~ msgstr "结束电话:配额已满"
#, php-format
#~ msgid "Reload failed because retrieve_conf encountered an error: %s"
#~ msgstr "重新加载失败retrieve_conf 文件遇到错误:%s"
@@ -4421,6 +4422,7 @@ msgstr ""
#~ "interface."
#~ msgstr "重新加载失败FreePBX无法连接到asterisk管理员界面"
#, php-format
#~ msgid "Exit code was %s and output was: %s"
#~ msgstr "退出编码是 %s ,输出是:%s"