Skip to content
Browse files

MDL-30592 question_bank: make files in qtext work in the question list.

  • Loading branch information...
1 parent 1357ab1 commit 2a1733aafce06a658a979d90d0af3d68fd9eea99 @timhunt timhunt committed
Showing with 38 additions and 5 deletions.
  1. +27 −0 lib/questionlib.php
  2. +11 −5 question/editlib.php
View
27 lib/questionlib.php
@@ -1828,6 +1828,33 @@ function question_pluginfile($course, $context, $component, $filearea, $args, $f
}
/**
+ * Serve questiontext files in the question text when they are displayed in this report.
+ * @param context $context the context
+ * @param int $questionid the question id
+ * @param array $args remaining file args
+ * @param bool $forcedownload
+ */
+function core_question_questiontext_preview_pluginfile($context, $questionid, $args, $forcedownload) {
+ global $DB;
+
+ // Verify that contextid matches the question.
+ $question = $DB->get_record_sql('
+ SELECT q.*, qc.contextid
+ FROM {question} q
+ JOIN {question_categories} qc ON qc.id = q.category
+ WHERE q.id = :id AND qc.contextid = :contextid',
+ array('id' => $questionid, 'contextid' => $context->id), MUST_EXIST);
+
+ // Check the capability.
+ list($context, $course, $cm) = get_context_info_array($context->id);
+ require_login($course, false, $cm);
+
+ question_require_capability_on($question, 'use');
+
+ question_send_questiontext_file($questionid, $args, $forcedownload);
+}
+
+/**
* Create url for question export
*
* @param int $contextid, current context
View
16 question/editlib.php
@@ -791,16 +791,22 @@ protected function get_title() {
}
protected function display_content($question, $rowclasses) {
- $text = format_text($question->questiontext, $question->questiontextformat,
- $this->formatoptions, $this->qbank->get_courseid());
+ $text = question_rewrite_questiontext_preview_urls($question->questiontext,
+ $question->contextid, 'question', $question->id);
+ $text = format_text($text, $question->questiontextformat,
+ $this->formatoptions);
if ($text == '') {
$text = ' ';
}
echo $text;
}
+ public function get_extra_joins() {
+ return array('qc' => 'JOIN {question_categories} qc ON qc.id = q.category');
+ }
+
public function get_required_fields() {
- return array('q.questiontext', 'q.questiontextformat');
+ return array('q.id', 'q.questiontext', 'q.questiontextformat', 'qc.contextid');
}
}
@@ -1100,10 +1106,10 @@ protected function build_query_sql($category, $recurse, $showhidden) {
}
/// Build the where clause.
- $tests = array('parent = 0');
+ $tests = array('q.parent = 0');
if (!$showhidden) {
- $tests[] = 'hidden = 0';
+ $tests[] = 'q.hidden = 0';
}
if ($recurse) {

0 comments on commit 2a1733a

Please sign in to comment.
Something went wrong with that request. Please try again.