From 2cdcb9055389993e25c90d42fd3df071c2a5e373 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Sat, 14 Jul 2012 09:06:07 +0100 Subject: [PATCH] MDL-34164 quiz reports: only try to show graphs if GD is installed. if (empty($CFG->gdversion)) { seems to be the common idiom for this. I refactored the graph output into the renderer, to avoid having to duplicate that test three times. --- mod/quiz/renderer.php | 18 ++++++++++++++++++ mod/quiz/report/overview/report.php | 21 ++++++++------------- mod/quiz/report/statistics/report.php | 9 ++++----- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/mod/quiz/renderer.php b/mod/quiz/renderer.php index 165ec10e47c..b7961aaeae9 100644 --- a/mod/quiz/renderer.php +++ b/mod/quiz/renderer.php @@ -1149,6 +1149,24 @@ class mod_quiz_renderer extends plugin_renderer_base { 'id' => $cm->id, 'mode' => quiz_report_default_report($context))); return html_writer::link($url, $summary); } + + /** + * Output a graph, or a message saying that GD is required. + * @param moodle_url $url the URL of the graph. + * @param string $title the title to display above the graph. + * @return string HTML fragment for the graph. + */ + public function graph(moodle_url $url, $title) { + global $CFG; + + if (empty($CFG->gdversion)) { + $graph = get_string('gdneed'); + } else { + $graph = html_writer::empty_tag('img', array('src' => $url, 'alt' => $title)); + } + + return $this->heading($title) . html_writer::tag('div', $graph, array('class' => 'graph')); + } } class mod_quiz_links_to_other_attempts implements renderable { diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index ae2e1f66fa4..27b4df5cbe1 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -40,7 +40,7 @@ require_once($CFG->dirroot . '/mod/quiz/report/overview/overview_table.php'); class quiz_overview_report extends quiz_attempts_report { public function display($quiz, $cm, $course) { - global $CFG, $DB, $OUTPUT; + global $CFG, $DB, $OUTPUT, $PAGE; list($currentgroup, $students, $groupstudents, $allowed) = $this->init('overview', 'quiz_overview_settings_form', $quiz, $cm, $course); @@ -237,30 +237,25 @@ class quiz_overview_report extends quiz_attempts_report { } if (!$table->is_downloading() && $options->usercanseegrades) { + $output = $PAGE->get_renderer('mod_quiz'); if ($currentgroup && $groupstudents) { list($usql, $params) = $DB->get_in_or_equal($groupstudents); $params[] = $quiz->id; if ($DB->record_exists_select('quiz_grades', "userid $usql AND quiz = ?", $params)) { - $imageurl = new moodle_url('/mod/quiz/report/overview/overviewgraph.php', + $imageurl = new moodle_url('/mod/quiz/report/overview/overviewgraph.php', array('id' => $quiz->id, 'groupid' => $currentgroup)); - $graphname = get_string('overviewreportgraphgroup', 'quiz_overview', + $graphname = get_string('overviewreportgraphgroup', 'quiz_overview', groups_get_group_name($currentgroup)); - echo $OUTPUT->heading($graphname); - echo html_writer::tag('div', html_writer::empty_tag('img', - array('src' => $imageurl, 'alt' => $graphname)), - array('class' => 'graph')); + echo $output->graph($imageurl, $graphname); } } if ($DB->record_exists('quiz_grades', array('quiz'=> $quiz->id))) { - $graphname = get_string('overviewreportgraph', 'quiz_overview'); - $imageurl = new moodle_url('/mod/quiz/report/overview/overviewgraph.php', + $imageurl = new moodle_url('/mod/quiz/report/overview/overviewgraph.php', array('id' => $quiz->id)); - echo $OUTPUT->heading($graphname); - echo html_writer::tag('div', html_writer::empty_tag('img', - array('src' => $imageurl, 'alt' => $graphname)), - array('class' => 'graph')); + $graphname = get_string('overviewreportgraph', 'quiz_overview'); + echo $output->graph($imageurl, $graphname); } } return true; diff --git a/mod/quiz/report/statistics/report.php b/mod/quiz/report/statistics/report.php index 99cbd31fdc4..48c91eebb03 100644 --- a/mod/quiz/report/statistics/report.php +++ b/mod/quiz/report/statistics/report.php @@ -579,18 +579,17 @@ class quiz_statistics_report extends quiz_default_report { * @param int $quizstatsid the id of the statistics to show in the graph. */ protected function output_statistics_graph($quizstatsid, $s) { - global $OUTPUT; + global $PAGE; if ($s == 0) { return; } + $output = $PAGE->get_renderer('mod_quiz'); $imageurl = new moodle_url('/mod/quiz/report/statistics/statistics_graph.php', array('id' => $quizstatsid)); - $OUTPUT->heading(get_string('statisticsreportgraph', 'quiz_statistics')); - echo html_writer::tag('div', html_writer::empty_tag('img', array('src' => $imageurl, - 'alt' => get_string('statisticsreportgraph', 'quiz_statistics'))), - array('class' => 'graph')); + $graphname = get_string('statisticsreportgraph', 'quiz_statistics'); + echo $output->graph($imageurl, $graphname); } /**