Merge branch 'MDL-40481' of git://github.com/timhunt/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 11 Nov 2013 23:38:35 +0000 (00:38 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 11 Nov 2013 23:38:35 +0000 (00:38 +0100)
1  2 
mod/quiz/report/responses/responses_table.php

@@@ -91,17 -91,18 +91,23 @@@ class quiz_responses_table extends quiz
  
          $stepdata = $this->lateststeps[$attempt->usageid][$slot];
  
-         if (is_null($stepdata->$field)) {
+         if (property_exists($stepdata, $field . 'full')) {
+             $value = $stepdata->{$field . 'full'};
+         } else {
+             $value = $stepdata->$field;
+         }
+         if (is_null($value)) {
              $summary = '-';
          } else {
-             $summary = trim($stepdata->$field);
+             $summary = trim($value);
          }
  
 +        if ($this->is_downloading() && $this->is_downloading() != 'xhtml') {
 +            return $summary;
 +        }
 +        $summary = s($summary);
 +
          if ($this->is_downloading() || $field != 'responsesummary') {
              return $summary;
          }
       * @param string $alias the table alias for latest state information relating to that slot.
       */
      protected function get_required_latest_state_fields($slot, $alias) {
-         return "$alias.questionsummary AS question$slot,
-                 $alias.rightanswer AS right$slot,
-                 $alias.responsesummary AS response$slot";
+         global $DB;
+         $sortableresponse = $DB->sql_order_by_text("{$alias}.questionsummary");
+         if ($sortableresponse === "{$alias}.questionsummary") {
+             // Can just order by text columns. No complexity needed.
+             return "{$alias}.questionsummary AS question{$slot},
+                     {$alias}.rightanswer AS right{$slot},
+                     {$alias}.responsesummary AS response{$slot}";
+         } else {
+             // Work-around required.
+             return $DB->sql_order_by_text("{$alias}.questionsummary") . " AS question{$slot},
+                     {$alias}.questionsummary AS question{$slot}full,
+                     " . $DB->sql_order_by_text("{$alias}.rightanswer") . " AS right{$slot},
+                     {$alias}.rightanswer AS right{$slot}full,
+                     " . $DB->sql_order_by_text("{$alias}.responsesummary") . " AS response{$slot},
+                     {$alias}.responsesummary AS response{$slot}full";
+         }
      }
  }