Skip to content

Commit

Permalink
Fixed issue: wrong sort when exporting survey as txt file
Browse files Browse the repository at this point in the history
  • Loading branch information
dominikvitt committed Dec 18, 2018
1 parent 3af1dea commit 546b83c
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions application/helpers/export_helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -2456,7 +2456,7 @@ function tsvSurveyExport($surveyid){
$conditions[$condition['qid']][] = $condition;
}

sortArrayByColumn($groups[$language], 'group_order');
$groups[$language] = sortArrayByColumn($groups[$language], 'group_order');
foreach ($groups[$language] as $gid => $group) {
$tsv_output = $fields;
$tsv_output['id'] = $gid;
Expand All @@ -2471,7 +2471,7 @@ function tsvSurveyExport($surveyid){

// questions
if (array_key_exists($gid, $questions[$language])){
sortArrayByColumn($questions[$language][$gid], 'question_order');
$questions[$language][$gid] = sortArrayByColumn($questions[$language][$gid], 'question_order');
foreach ($questions[$language][$gid] as $qid => $question) {
$tsv_output = $fields;
$tsv_output['id'] = $question['qid'];
Expand Down Expand Up @@ -2532,7 +2532,7 @@ function tsvSurveyExport($surveyid){
}

if (!empty($subquestions[$language][$qid])){
sortArrayByColumn($subquestions[$language][$qid], 'question_order');
$subquestions[$language][$qid] = sortArrayByColumn($subquestions[$language][$qid], 'question_order');
foreach ($subquestions[$language][$qid] as $key => $subquestion) {
$tsv_output = $fields;
$tsv_output['id'] = $subquestion['qid'];
Expand All @@ -2554,7 +2554,7 @@ function tsvSurveyExport($surveyid){
}

if (!empty($answers[$language][$qid])){
sortArrayByColumn($answers[$language][$qid], 'sortorder');
$answers[$language][$qid] = sortArrayByColumn($answers[$language][$qid], 'sortorder');
foreach ($answers[$language][$qid] as $key => $answer) {
$tsv_output = $fields;
$tsv_output['id'] = $answer['qid'];
Expand All @@ -2575,7 +2575,7 @@ function tsvSurveyExport($surveyid){

// assessments
if (!empty($assessments)){
//sortArrayByColumn($assessments[$gid], 'other');
//$assessments[$gid] = sortArrayByColumn($assessments[$gid], 'other');
foreach ($assessments as $key => $assessment) {
$tsv_output = $fields;
$tsv_output['id'] = $assessment['id'];
Expand All @@ -2593,7 +2593,7 @@ function tsvSurveyExport($surveyid){

// quotas
if (!empty($quotas)){
sortArrayByColumn($quotas, 'id');
$quotas = sortArrayByColumn($quotas, 'id');
foreach ($quotas as $key => $quota) {
$tsv_output = $fields;
$tsv_output['id'] = $quota['id'];
Expand Down Expand Up @@ -2634,10 +2634,13 @@ function tsvSurveyExport($surveyid){
* @param array $array
* @param string $column_name
**/
function sortArrayByColumn(&$array, $column_name){
uasort($array, function($a,$b) use (&$column_name) {
return @(strnatcmp($a["' . $column_name . '"], $b["' . $column_name . '"]));
});
function sortArrayByColumn($array, $column_name){
$keys = array_keys($array);
array_multisort(
array_column($array, $column_name), SORT_ASC, SORT_NUMERIC, $array, $keys
);
$array = array_combine($keys, $array);
return $array;
}

/**
Expand Down

0 comments on commit 546b83c

Please sign in to comment.