~adamzammit/quexs/quexscativm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
queXS 1.9.0 - Changes since 1.8.0

New Feature: Supervisor chat via XMPP/Jabber (allow interviewers to chat with a supervisor from the interviewer screen)
New Feature: Set downloading VoIP client as the default
Fixed Bug: Server overloads when downloading VoIP client if temporary directory not writeable
Translations: Updated Czech translation - Thank you!

Database updates:

ALTER TABLE `operator` ADD `chat_enable` TINYINT( 1 ) NULL DEFAULT '0',
ADD `chat_user` VARCHAR( 255 ) NULL ,
ADD `chat_password` VARCHAR( 255 ) NULL ;

queXS 1.8.0 - Changes since 1.7.6

New Feature: Allow for restricting the view of sample variables to operators
New Feature: Case status and assignment page allowing to view the current status of cases by questionnaire, and allow for the manual assigning to operators if required

Database updates:

CREATE TABLE IF NOT EXISTS `case_queue` (
  `case_queue_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `case_id` bigint(20) NOT NULL,
  `operator_id` bigint(20) NOT NULL,
  `sortorder` int(11) NOT NULL,
  PRIMARY KEY (`case_queue_id`),
  UNIQUE KEY `case_id` (`case_id`),
  KEY `operator_id` (`operator_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `sample_import_var_restrict` (
  `sample_import_id` bigint(20) NOT NULL,
  `var` char(128) collate utf8_unicode_ci NOT NULL,
  `restrict` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`sample_import_id`,`var`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

queXS 1.7.6 - Changes since 1.7.5

Fixed Bug: Define operator skills as for the assigning of cases to operators
Fixed Bug: Define availability group as for respondent
Fixed Bug: Add description of shift defining process and label year and week of year
Fixed Bug: Add message about missing sample if sample not assigned 
Fixed Bug: Don't display overall stats unless explicitly selected
New Feature: Search for cases that have been assigned but not completed in more than 24 hours and put them back in the pool
New Feature: Allow for editing of assigned sample details
New Feature: Assign appointments in order of closest ending time
New Feature: Added IS_INTERVIEWER token so can check if the questionnaire is administered by an interviewer by the following Lime Expression Manager code: {if(IS_INTERVIEWER,'This is an interviewer','THIS IS NOT AN INTERVIEWER')}
Fixed Bug: Set default template if token specified but no equivalent token in queXS (i.e. when using limesurvey within queXS standalone)
Translations: Added Persian language and updated translations from Launchpad - thank you

queXS 1.7.5 - Changes since 1.7.4

Fixed Bug: Set default supervisor extension to be 1000
Fixed Bug: Add quota updates to system sort process to keep additive quotas up to date
Fixed Bug: Previews in Limesurvey should be as an interviewer
Fixed Bug: Reset page position when respondent is to self complete in a different mode
Fixed Bug: Only apply automatic text focus when working as an interviewer (otherwise may jump to strange part of page)
Fixed Bug: Updated error message when adding operator if extension is the same
Fixed Bug: Make sure cases are only generated for enabled questionnaires
Fixed Bug: Email charset wasn't UTF8
New Feature: Display if assigned questionnaires are enabled or not
Translations: Updated translations (thank you again to all the translators)

queXS 1.7.4 - Changes since 1.7.3

Fixed Bug: Only auto advance in the questionnaire if an interviewer (not when self completing)
Fixed Bug: When emailing - respect the limesurvey email settings including SSL

queXS 1.7.3 - Changes since 1.7.2

Fixed Bug: Reliance on JS executing as PHP for ckeditor
Fixed Bug: Use of group concat for timezones is character limited and causes timezone list to truncate
Fixed Bug: PEAR Calendar class issuing PHP Strict notices
Fixed Bug: Adding a contact phone without a description causes new case transaction to fail on some versions of MySQL
Fixed Bug: Can't add operator with \ in name 
Fixed Bug: HTTPS incorrectly being used in admin pages on IIS

queXS 1.7.2 - Changes since 1.7.1

New Feature: Add display of cases currently available by sample (in: questionnaire outcomes)
Fixed Bug: Fixed .htaccess.example for limesurvey/admin directory
Fixed Bug: Fixed errors that seemed to afflict mysql 5.1.68 on windows with PHP 5.4 and IIS (not creating a new case due to transaction failure)
Fixed Bug: Removed deprecated ereg_replace
Fixed Bug: Replace date time hardcoding with defaults from config
Fixed Bug: Add operator and respondent details to core replacements in Limesurvey expression manager (need to use capitalisation)
Translations: Updated and a new full Czech translation (thank you Zbyněk Schwarz)

queXS 1.7.1 - Changes since 1.7.0

Fixed Bug: Deletion of queXS questionnaire failed

queXS 1.7.0 - Changes since 1.6.1

New Feature: Replace queXS caseid as token with a random token to allow for safe external access
New Feature: Allow for responents to self complete the questionnaire via email invitation
New Feature: Allow restricting appointment to just yourself
New Feature: Added ability to edit operators
New Feature: Can delete a queXS questionnaire
New Feature: List, rename and enable/disable sample files
New Feature: Deidentify (delete fields) from sample files
Fixed Bug: Replaced php short tags with long tags

Database updates:

ALTER TABLE `case` ADD `token` VARCHAR( 36 ) NOT NULL ;

-- To allow for accessing existing cases in new system, need to assign a "token" for each case:

UPDATE `case` SET token = case_id;
ALTER TABLE `case` ADD UNIQUE (`token`);

-- New outcomes for email invitation and online self completion:

INSERT INTO `outcome` (`outcome_id`, `aapor_id`, `description`, `default_delay_minutes`, `outcome_type_id`, `tryanother`, `contacted`, `tryagain`, `eligible`, `require_note`, `calc`) VALUES
(40, '1.1', 'Self completed online', 0, 4, 0, 1, 1, 1, 0, 'I'),
(41, '2.36', 'Self completion email invitation sent', 10080, 1, 0, 1, 1, 1, 0, 'O');

-- New sample variable type (Email address):

INSERT INTO `sample_var_type` (`type`, `description`, `table`) VALUES
(8, 'Email address', '');

-- Specify details of respondent self completion:

ALTER TABLE `questionnaire` ADD `self_complete` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `info`,
ADD `lime_mode` VARCHAR( 64 ) NULL COMMENT 'Limesurvey mode for respondent self completion' AFTER `self_complete` ,
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` ;

-- Allow for enabling/disabling sample files:

ALTER TABLE `sample_import` ADD `enabled` TINYINT( 1 ) NOT NULL DEFAULT '1';

-- Contact phone should allow for char phone numbers:

ALTER TABLE `contact_phone` CHANGE `phone` `phone` CHAR( 30 ) NOT NULL 


queXS 1.6.1 - Changes since 1.6.0

New Feature: Include paradata/metadata in data output (number call attempts, number of answering machine messages and all sample variables)
Fixed Bug: Sample import lists not translatable
Translations updated (Thanks to those who contributed on Launchpad) 

quexs 1.6.0 - Changes since 1.5.4

Major New Feature: Updated to Limesurvey 1.92 Build 120919 last commit a2955e94e254f09b6f31c6c0ca8cf25929ec7e7 on GitHub 13 November 2012
New Feature: Use ADODB from Limesurvey (so no additional ADODB installation required)
New Feature: Access sample variables via the Limesurvey Expression Manager system (using {SAMPLE:xxxx} notation)
New Feature: Make default end URL {ENDINTERVIEWURL}


queXS 1.5.4 - Changes since 1.5.3:

New Feature: Added bulk appointment generator from CSV 
New Feature: Added questionnaire to call history and CSV download option
New Feature: List questionnaires from newest first
New Feature: Added count of outcomes by call attempt
New Feature: Add process_clear_log function to make sure process_log table doesn't get too big
Fixed Bug: Use less memory when exporting CSV call history
Fixed Bug: Fixed timezone assignment in AU database by phone number prefix
Fixed Bug: List questionnaires even if not in default language
Fixed Bug: Updated jquery in Limesurvey due to Firefox 12 scroll bug: https://bugzilla.mozilla.org/show_bug.cgi?id=749935
Translations updated (Thanks to those who contributed on Launchpad)

Database changes suggested:

ALTER TABLE sample_prefix_timezone MODIFY val char(10) NOT NULL;

queXS 1.5.3 - Changes since 1.5.2:

New Feature: Automatically create tokens table when activating (as is required by queXS)
New Feature: Sample only quota for row quota (set quotas based on sample record values)
New Feature: Complete sample file output with caseid (if assigned) and current outcome
New Feature: Added a listing of cases by outcome for a questionnaire when clicking on the outcome code. Can then link through to individual case management

Fixed Bug: Make sure to mark system sort process as stopped when manually killed
Fixed Bug: Question quota selections to work properly with Limesurvey 1.91+ database structure


queXS 1.5.2 - Changes since 1.5.1:

New Feature: Add a response via XML RPC. Using this revision of queXS and queXF 1.13.0 - you can export a paper form from queXS and once paper forms are scanned and verified, the data can be sent from queXF back to queXS using XMLRPC (can be on different servers)
Fixed Bug: Timezones entered from list instead of manually
Updates: Limesurvey to 1.91+ Revision 11354 
Translations updated (thanks!)

queXS 1.5.1 - Changes since 1.5.0:

New features:
*Alternate interface avaialble to operators that aren't using VoIP (enable with ALTERNATE_INTERFACE directive in config file) - sponsor: Zimi

Updates:
*Updated Limesurvey to 1.91+ Revision 11132
*Translations updated (thank you to everyone who contributed on Launchpad)

queXS 1.5.0 - Changes since 1.4.0:

New features:
*Updated to Limesurvey 1.91+
*Data export via Limesurvey allowing for limitations by queXS questionnaire / sample
*Select the first respondent for an appointment by default

queXS 1.4.0 - Changes since 1.3.0:

New features:
*Administrator appointment editing added calendar to assist
*Disabled overall performance information as it is slow with large installations and not particularly useful
*Added "availability" feature:
**Administrators specificy "availability groups" which include days of the week and times
**Operators then choose if a case will be available within the availability group
*Updated queXMLPDF class to queXML 1.3.3
*Assign the next case to an operator specifically using the administrative functions
*Reorganised administrators menu
*Added database optimisations and keys
*Updated translations. Thank you to all who contributed on Launchpad!

Bug fixes:
*Fixed: SIP Channels not hanging up
*Fixed: Respondent selection text editor not printed correctly in Chrome - Patch by Grzesiek (thank you)
*Fixed: Export to SPSS was failing due to queXS tokens
*Removed reliance on sessions in sample import process unecessary

Database changes:

ALTER TABLE `operator` ADD `next_case_id` BIGINT( 20 ) default NULL ;
ALTER TABLE `call` ADD INDEX(`start`);
ALTER TABLE `case` ADD INDEX(`last_call_id`);
ALTER TABLE `lime_saved_control` CHANGE `identifier` `identifier` BIGINT( 20 ) NOT NULL;
ALTER TABLE `lime_saved_control` ADD INDEX(`identifier`);
ALTER TABLE `lime_saved_control` ADD INDEX(`srid`);

CREATE TABLE IF NOT EXISTS `availability` (
  `availability_id` bigint(20) NOT NULL auto_increment,
  `availability_group_id` bigint(20) NOT NULL,
  `start` time NOT NULL,
  `end` time NOT NULL,
  `day_of_week` tinyint(1) NOT NULL,
  PRIMARY KEY  (`availability_id`),
  KEY `availability_group_id` (`availability_group_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `availability` (`availability_id`, `availability_group_id`, `start`, `end`, `day_of_week`) VALUES
(1, 1, '00:00:00', '11:59:59', 2),
(2, 1, '00:00:00', '11:59:59', 3),
(3, 1, '00:00:00', '11:59:59', 4),
(4, 1, '00:00:00', '11:59:59', 5),
(5, 1, '00:00:00', '11:59:59', 6),
(6, 2, '12:00:00', '17:59:59', 2),
(7, 2, '12:00:00', '17:59:59', 3),
(8, 2, '12:00:00', '17:59:59', 4),
(9, 2, '12:00:00', '17:59:59', 5),
(10, 2, '12:00:00', '17:59:59', 6),
(11, 3, '18:00:00', '23:59:59', 2),
(12, 3, '18:00:00', '23:59:59', 3),
(13, 3, '18:00:00', '23:59:59', 4),
(14, 3, '18:00:00', '23:59:59', 5),
(15, 3, '18:00:00', '23:59:59', 6),
(16, 4, '00:00:00', '23:59:59', 7);

CREATE TABLE IF NOT EXISTS `availability_group` (
  `availability_group_id` bigint(20) NOT NULL auto_increment,
  `description` text collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`availability_group_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `availability_group` (`availability_group_id`, `description`) VALUES
(1, 'Weekday mornings (Before 12pm)'),
(2, 'Weekday afternoons (After 12pm but before 6pm)'),
(3, 'Evenings (After 6pm)'),
(4, 'Saturdays');

CREATE TABLE IF NOT EXISTS `case_availability` (
  `case_id` bigint(20) NOT NULL,
  `availability_group_id` bigint(20) NOT NULL,
  PRIMARY KEY  (`case_id`,`availability_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `questionnaire_availability` (
  `questionnaire_id` bigint(20) NOT NULL,
  `availability_group_id` bigint(20) NOT NULL,
  PRIMARY KEY  (`questionnaire_id`,`availability_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


queXS 1.3.0 - Changes since 1.2.0:

queXS 1.3.0 includes major performance improvements for larger installations using the system sort process, better handling of VoIP, integration with FreePBX for easy VoIP extension creation, improved questionnaire management and support for the Internet Explorer >= 6.0 browser.

New features:
*{PERCCOMPLETE} token displays percentage complete in limesurvey and can be used as conditions token (eg > 0 means interview started)
*messagesleft token for limesurvey conditions on number of answering messages left
*Choose operator timezone from a list instead of having to enter
*Integration with FREEPBX v2.8.0 (creation of extensions and reloading)
*Operator management functions added 
*Split database configuration file to structure and data by region (Added for Australia and USA)
*Ability to download VoIP client
*Support for Internet Explorer >= 6.0 (Sponsored by Zimi)
*Can define project information in administrative menu
*Ability to enable/disable questionnaires to remove clutter in administration screens
*Complete outcome only appears for completed cases (Sponsored by Zimi)
*Jump directly to questionnaire where no respondent selection informatino defined (Sponsored by Zimi)
*AUTO_COMPLETE_OUTCOME added to automatically assign complete outcome on questionnaire completion (Sponsored by Zimi)
*AUTO_LOGOUT_MINUTES to automatically logout interviewer session if left idle (Sponsored by Zimi)
*DEFAULT_TAB, DEFAULT_TAB_APPOINTMENT set default tab to display in info section (Sponsored by Zimi)
*Tabs can be enabled/disabled in configuration file
*System sort process added for system wide case sorting. May improve performance in large installations
*HEADER_EXPANDER_MANUAL directive added to allow for the header to be shrunk by the operator (Sponsored by Zimi)
*Log of system sorting and voip monitoring displayed in table form
*Limesurvey database automatically installed with new install

Bug fixes:
*queXS admin menu stays in place when using limesurvey condition editor
*Case and appointments display correctly when questionnaire is not shift restrcited
*Appointment time display respects TIME_FORMAT configuration directive
*Word "till" localised (Thank you Zimi)
*VoIP monitoring process gracefully handles errors/timeouts


Required database modifications from 1.2.0:

ALTER TABLE `questionnaire_sample_exclude_priority` ADD `sortorder` INT( 11 ) NULL ;
ALTER TABLE `questionnaire_sample_exclude_priority` ADD INDEX ( `sortorder` ) ;
ALTER TABLE `case` ADD `sortorder` INT( 11 ) NULL ;
ALTER TABLE `case` ADD INDEX ( `sortorder` ) ;
ALTER TABLE `questionnaire` ADD `info` text NULL ;
ALTER TABLE `questionnaire` ADD `enabled` TINYINT( 1 ) NOT NULL default '1';
ALTER TABLE `process` ADD `type` INT NOT NULL DEFAULT '1' AFTER `process_id` ;
CREATE TABLE `process_log` (
`process_log_id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`process_id` BIGINT NOT NULL ,
`datetime` DATETIME NOT NULL ,
 `data` text collate utf8_unicode_ci NOT NULL,
INDEX ( `process_id` )
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `setting` (
 `setting_id` int(11) NOT NULL auto_increment,
 `field` varchar(255) collate utf8_unicode_ci NOT NULL,
 `value` text collate utf8_unicode_ci NOT NULL,
 PRIMARY KEY  (`setting_id`),
 UNIQUE KEY `field` (`field`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
COMMENT='Serialised table of settings';


queXS 1.2.0 - Changes since 1.1.0:

queXS 1.2.0 has 3 major feature additions since 1.1.0.

1. Ability to produce a seperate Limesurvey questionnaire to act as a respondent selection module
2. Can export Limesurvey questionnaires directly to queXML PDF files, ready to import to queXF for banding
3. Quota row prioritisation added including auto priority calculation (Sponsor: Zimi)

In addition, Translations have been updated (Thank you to those on Launchpad who have contributed). 

The documentation on the website (Administration manual and Reports and quota documentation) has been ammended to include details of the new features.

Upgrading requires a small database update:

INSERT INTO `outcome` VALUES(33, '2.36', 'Miscellaneous - Unavailable for a week', 10080, 1, 0, 1, 1, 1, 0, 'O');
ALTER TABLE `questionnaire` ADD `lime_rs_sid` INT( 11 ) NULL ;

queXS 1.1.0 - Changes since 1.0.0:

New features:
*Performance improvements when using quota rows (Thank you Zimi)
*Added configuration directive for Auto advance: LIME_AUTO_ADVANCE
*Added more descriptive elements to printable survey for debugging
*Added extension password to operator details
*Status updated to handle extension password for switching VoIP on an off
*VoIP Functions can properly handle IAX2 extensions
*Can output entire key file 
*(Limesurvey) Can assign queXS sample codes in the fieldname of a condition
*Added VoIP Extension status monitoring in admin functions
*Does not use popup windows (better for Kiosks) (Thank you McMaster University)
*Added ability to delete case notes as supervisor

Bug fixes:
*Put the code for outcome to be for the supervisor in the right spot
*Supervisor outcomes given priority along with final outcomes
*Added error message when not an operator and trying to add a shift
*Fixed bug where not displaying if default lang is not 'en'
*(Limesurvey) When INSERTANS used, do not display "No Answer" when no answer is selected
*Make sure to only move forward on click where appropriate (allow false to be passed to stop auto click)
*(Limesurevy) Updated templates to look a bit better and include the limesurvey customonLoad function
*VoIP status is now part of VoIP monitoring so we don't query the Asterisk server often
*Added index to appointment table to speed up case selection criteria
*Added case_id and date to queXML structure output (as appears in fixed width data file)
*Doesn't try to call supervisor when on a call

Translations updated from Launchpad. Thank you for your contributions:
*Galacian
*Spanish
*French
*Italian
*Lithuanian
*Dutch