AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** This file is responsible for producing the graph for survey reports** @package mod_survey* @copyright 2021 Sujith Haridasan <sujith@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/require_once("../../config.php");require_once("$CFG->libdir/graphlib.php");require_once("lib.php");$id = required_param('id', PARAM_INT); // Course Module ID.$type = required_param('type', PARAM_FILE); // Graph Type.$group = optional_param('group', 0, PARAM_INT); // Group ID.$sid = optional_param('sid', false, PARAM_INT); // Student ID.$qid = optional_param('qid', 0, PARAM_INT); // Group ID.$url = new moodle_url('/mod/survey/graph.php', array('id' => $id, 'type' => $type));if ($group !== 0) {$url->param('group', $group);}if ($sid !== false) {$url->param('sid', $sid);}if ($qid !== 0) {$url->param('qid', $qid);}$PAGE->set_url($url);if (!$cm = get_coursemodule_from_id('survey', $id)) {throw new \moodle_exception('invalidcoursemodule');}if (!$course = $DB->get_record("course", array("id" => $cm->course))) {throw new \moodle_exception('coursemisconf');}if ($sid) {if (!$user = $DB->get_record("user", array("id" => $sid))) {throw new \moodle_exception('invaliduserid');}}require_login($course, false, $cm);$groupmode = groups_get_activity_groupmode($cm); // Groups are being used.$context = context_module::instance($cm->id);if (!has_capability('mod/survey:readresponses', $context)) {if ($type != "student.png" or $sid != $USER->id) {throw new \moodle_exception('nopermissiontoshow');} else if ($groupmode and !groups_is_member($group)) {throw new \moodle_exception('nopermissiontoshow');}}if (!$survey = $DB->get_record("survey", array("id" => $cm->instance))) {throw new \moodle_exception('invalidsurveyid', 'survey');}// Check to see if groups are being used in this survey.if ($group) {$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $group, null, false);} else if (!empty($cm->groupingid)) {$groups = groups_get_all_groups($courseid, 0, $cm->groupingid);$groups = array_keys($groups);$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $groups, null, false);} else {$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', '', null, false);$group = false;}$stractual = get_string("actual", "survey");$stractualclass = get_string("actualclass", "survey");$strpreferred = get_string("preferred", "survey");$strpreferredclass = get_string("preferredclass", "survey");if ($sid || isset($user)) {$stractualstudent = get_string("actualstudent", "survey", fullname($user));$strpreferredstudent = get_string("preferredstudent", "survey", fullname($user));}$virtualscales = false; // Set default value for case clauses.switch ($type) {case "question.png":$question = $DB->get_record("survey_questions", array("id" => $qid));$question->text = wordwrap(get_string($question->text, "survey"), SURVEY_QLENGTH_WRAP);$question->options = get_string($question->options, "survey");$options = explode(",", $question->options);foreach ($options as $key => $unused) {$buckets1[$key] = 0;$buckets2[$key] = 0;}if ($aaa = $DB->get_records('survey_answers', array('survey' => $cm->instance, 'question' => $qid))) {foreach ($aaa as $aa) {if (!$group or isset($users[$aa->userid])) {if ($a1 = $aa->answer1) {$buckets1[$a1 - 1]++;}if ($a2 = $aa->answer2) {$buckets2[$a2 - 1]++;}}}}$maxbuckets1 = max($buckets1);$maxbuckets2 = max($buckets2);$maxbuckets = ($maxbuckets1 > $maxbuckets2) ? $maxbuckets1 : $maxbuckets2;$graph = new graph($SURVEY_GWIDTH, $SURVEY_GHEIGHT);$graph->parameter['title'] = "$question->text";$graph->x_data = $options;$graph->y_data['answers1'] = $buckets1;$graph->y_format['answers1'] = array('colour' => 'ltblue', 'bar' => 'fill', 'legend' => $stractual, 'bar_size' => 0.4);$graph->y_data['answers2'] = $buckets2;$graph->y_format['answers2'] = array('colour' => 'ltorange', 'bar' => 'fill', 'legend' => $strpreferred, 'bar_size' => 0.2);$graph->parameter['legend'] = 'outside-top';$graph->parameter['legend_border'] = 'black';$graph->parameter['legend_offset'] = 4;if (($maxbuckets1 > 0.0) && ($maxbuckets2 > 0.0)) {$graph->y_order = array('answers1', 'answers2');} else if ($maxbuckets1 > 0.0) {$graph->y_order = array('answers1');} else {$graph->y_order = array('answers2');}$graph->parameter['y_axis_gridlines'] = $maxbuckets + 1;$graph->parameter['y_resolution_left'] = 1;$graph->parameter['y_decimal_left'] = 0;$graph->parameter['x_axis_angle'] = 20;$graph->parameter['shadow'] = 'none';$graph->y_tick_labels = null;$graph->offset_relation = null;$graph->draw_stack();break;case "multiquestion.png":$question = $DB->get_record("survey_questions", array("id" => $qid));$question->text = get_string($question->text, "survey");$question->options = get_string($question->options, "survey");$options = explode(",", $question->options);$questionorder = explode(",", $question->multi);$qqq = $DB->get_records_list("survey_questions", "id", explode(',', $question->multi));foreach ($questionorder as $i => $val) {$names[$i] = get_string($qqq["$val"]->shorttext, "survey");$buckets1[$i] = 0;$buckets2[$i] = 0;$count1[$i] = 0;$count2[$i] = 0;$indexof[$val] = $i;$stdev1[$i] = 0;$stdev2[$i] = 0;}$aaa = $DB->get_records_select("survey_answers", "((survey = ?) AND (question in ($question->multi)))",array($cm->instance));if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {$index = $indexof[$a->question];if ($a->answer1) {$buckets1[$index] += $a->answer1;$count1[$index]++;}if ($a->answer2) {$buckets2[$index] += $a->answer2;$count2[$index]++;}}}}foreach ($questionorder as $i => $val) {if ($count1[$i]) {$buckets1[$i] = (float) $buckets1[$i] / (float) $count1[$i];}if ($count2[$i]) {$buckets2[$i] = (float) $buckets2[$i] / (float) $count2[$i];}}if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {$index = $indexof[$a->question];if ($a->answer1) {$difference = (float) ($a->answer1 - $buckets1[$index]);$stdev1[$index] += ($difference * $difference);}if ($a->answer2) {$difference = (float) ($a->answer2 - $buckets2[$index]);$stdev2[$index] += ($difference * $difference);}}}}foreach ($questionorder as $i => $val) {if ($count1[$i]) {$stdev1[$i] = sqrt((float) $stdev1[$i] / ((float) $count1[$i]));}if ($count2[$i]) {$stdev2[$i] = sqrt((float) $stdev2[$i] / ((float) $count2[$i]));}$buckets1[$i] = $buckets1[$i] - 1;$buckets2[$i] = $buckets2[$i] - 1;}$maxbuckets1 = max($buckets1);$maxbuckets2 = max($buckets2);$graph = new graph($SURVEY_GWIDTH, $SURVEY_GHEIGHT);$graph->parameter['title'] = "$question->text";$graph->x_data = $names;$graph->y_data['answers1'] = $buckets1;$graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $stractual);$graph->y_data['answers2'] = $buckets2;$graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $strpreferred);$graph->y_data['stdev1'] = $stdev1;$graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill','shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.3);$graph->y_data['stdev2'] = $stdev2;$graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill','shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.2);$graph->offset_relation['stdev1'] = 'answers1';$graph->offset_relation['stdev2'] = 'answers2';$graph->parameter['bar_size'] = 0.15;$graph->parameter['legend'] = 'outside-top';$graph->parameter['legend_border'] = 'black';$graph->parameter['legend_offset'] = 4;$graph->y_tick_labels = $options;if (($maxbuckets1 > 0.0) && ($maxbuckets2 > 0.0)) {$graph->y_order = array('stdev1', 'answers1', 'stdev2', 'answers2');} else if ($maxbuckets1 > 0.0) {$graph->y_order = array('stdev1', 'answers1');} else {$graph->y_order = array('stdev2', 'answers2');}$graph->parameter['y_max_left'] = count($options) - 1;$graph->parameter['y_axis_gridlines'] = count($options);$graph->parameter['y_resolution_left'] = 1;$graph->parameter['y_decimal_left'] = 1;$graph->parameter['x_axis_angle'] = 20;$graph->draw();break;case "overall.png":$qqq = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));foreach ($qqq as $key => $qq) {if ($qq->multi) {$qqq[$key]->text = get_string($qq->text, "survey");$qqq[$key]->options = get_string($qq->options, "survey");if ($qq->type < 0) {$virtualscales = true;}}}foreach ($qqq as $qq) { // If any virtual, then use JUST virtual, else use JUST nonvirtual.if ($qq->multi) {if ($virtualscales && $qq->type < 0) {$question[] = $qq;} else if (!$virtualscales && $qq->type > 0) {$question[] = $qq;}}}$numquestions = count($question);$options = explode(",", $question[0]->options);$numoptions = count($options);for ($i = 0; $i < $numquestions; $i++) {$names[$i] = $question[$i]->text;$buckets1[$i] = 0.0;$buckets2[$i] = 0.0;$stdev1[$i] = 0.0;$stdev2[$i] = 0.0;$count1[$i] = 0;$count2[$i] = 0;$subquestions = $question[$i]->multi; // Otherwise next line doesn't work.$aaa = $DB->get_records_select("survey_answers", "((survey = ?) AND (question in ($subquestions)))",array($cm->instance));if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {if ($a->answer1) {$buckets1[$i] += $a->answer1;$count1[$i]++;}if ($a->answer2) {$buckets2[$i] += $a->answer2;$count2[$i]++;}}}}if ($count1[$i]) {$buckets1[$i] = (float) $buckets1[$i] / (float) $count1[$i];}if ($count2[$i]) {$buckets2[$i] = (float) $buckets2[$i] / (float) $count2[$i];}// Calculate the standard devaiations.if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {if ($a->answer1) {$difference = (float) ($a->answer1 - $buckets1[$i]);$stdev1[$i] += ($difference * $difference);}if ($a->answer2) {$difference = (float) ($a->answer2 - $buckets2[$i]);$stdev2[$i] += ($difference * $difference);}}}}if ($count1[$i]) {$stdev1[$i] = sqrt((float) $stdev1[$i] / ((float) $count1[$i]));}if ($count2[$i]) {$stdev2[$i] = sqrt((float) $stdev2[$i] / ((float) $count2[$i]));}$buckets1[$i] = $buckets1[$i] - 1; // Hack because there should not be ANY 0 values in the data.$buckets2[$i] = $buckets2[$i] - 1;}$maxbuckets1 = max($buckets1);$maxbuckets2 = max($buckets2);$graph = new graph($SURVEY_GWIDTH, $SURVEY_GHEIGHT);$graph->parameter['title'] = strip_tags(format_string($survey->name, true));$graph->x_data = $names;$graph->y_data['answers1'] = $buckets1;$graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $stractual);$graph->y_data['answers2'] = $buckets2;$graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $strpreferred);$graph->y_data['stdev1'] = $stdev1;$graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill','shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.3);$graph->y_data['stdev2'] = $stdev2;$graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill','shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.2);$graph->offset_relation['stdev1'] = 'answers1';$graph->offset_relation['stdev2'] = 'answers2';$graph->parameter['legend'] = 'outside-top';$graph->parameter['legend_border'] = 'black';$graph->parameter['legend_offset'] = 4;$graph->y_tick_labels = $options;if (($maxbuckets1 > 0.0) && ($maxbuckets2 > 0.0)) {$graph->y_order = array('stdev1', 'answers1', 'stdev2', 'answers2');} else if ($maxbuckets1 > 0.0) {$graph->y_order = array('stdev1', 'answers1');} else {$graph->y_order = array('stdev2', 'answers2');}$graph->parameter['y_max_left'] = $numoptions - 1;$graph->parameter['y_axis_gridlines'] = $numoptions;$graph->parameter['y_resolution_left'] = 1;$graph->parameter['y_decimal_left'] = 1;$graph->parameter['x_axis_angle'] = 0;$graph->parameter['x_inner_padding'] = 6;$graph->draw();break;case "student.png":$qqq = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));foreach ($qqq as $key => $qq) {if ($qq->multi) {$qqq[$key]->text = get_string($qq->text, "survey");$qqq[$key]->options = get_string($qq->options, "survey");if ($qq->type < 0) {$virtualscales = true;}}}foreach ($qqq as $qq) { // If any virtual, then use JUST virtual, else use JUST nonvirtual.if ($qq->multi) {if ($virtualscales && $qq->type < 0) {$question[] = $qq;} else if (!$virtualscales && $qq->type > 0) {$question[] = $qq;}}}$numquestions = count($question);$options = explode(",", $question[0]->options);$numoptions = count($options);for ($i = 0; $i < $numquestions; $i++) {$names[$i] = $question[$i]->text;$buckets1[$i] = 0.0;$buckets2[$i] = 0.0;$count1[$i] = 0;$count2[$i] = 0;$studbuckets1[$i] = 0.0;$studbuckets2[$i] = 0.0;$studcount1[$i] = 0;$studcount2[$i] = 0;$stdev1[$i] = 0.0;$stdev2[$i] = 0.0;$subquestions = $question[$i]->multi; // Otherwise next line doesn't work.$aaa = $DB->get_records_select("survey_answers", "((survey = ?) AND (question in ($subquestions)))",array($cm->instance));if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {if ($a->userid == $sid) {if ($a->answer1) {$studbuckets1[$i] += $a->answer1;$studcount1[$i]++;}if ($a->answer2) {$studbuckets2[$i] += $a->answer2;$studcount2[$i]++;}}if ($a->answer1) {$buckets1[$i] += $a->answer1;$count1[$i]++;}if ($a->answer2) {$buckets2[$i] += $a->answer2;$count2[$i]++;}}}}if ($count1[$i]) {$buckets1[$i] = (float) $buckets1[$i] / (float) $count1[$i];}if ($count2[$i]) {$buckets2[$i] = (float) $buckets2[$i] / (float) $count2[$i];}if ($studcount1[$i]) {$studbuckets1[$i] = (float) $studbuckets1[$i] / (float) $studcount1[$i];}if ($studcount2[$i]) {$studbuckets2[$i] = (float) $studbuckets2[$i] / (float) $studcount2[$i];}// Calculate the standard devaiations.foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {if ($a->answer1) {$difference = (float) ($a->answer1 - $buckets1[$i]);$stdev1[$i] += ($difference * $difference);}if ($a->answer2) {$difference = (float) ($a->answer2 - $buckets2[$i]);$stdev2[$i] += ($difference * $difference);}}}if ($count1[$i]) {$stdev1[$i] = sqrt((float) $stdev1[$i] / ((float) $count1[$i]));}if ($count2[$i]) {$stdev2[$i] = sqrt((float) $stdev2[$i] / ((float) $count2[$i]));}$buckets1[$i] = $buckets1[$i] - 1; // Hack because there should not be ANY 0 values in the data.$buckets2[$i] = $buckets2[$i] - 1;$studbuckets1[$i] = $studbuckets1[$i] - 1;$studbuckets2[$i] = $studbuckets2[$i] - 1;}$maxbuckets1 = max($buckets1);$maxbuckets2 = max($buckets2);$graph = new graph($SURVEY_GWIDTH, $SURVEY_GHEIGHT);$graph->parameter['title'] = strip_tags(format_string($survey->name, true));$graph->x_data = $names;$graph->y_data['answers1'] = $buckets1;$graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square','shadow_offset' => 0.1, 'legend' => $stractualclass);$graph->y_data['answers2'] = $buckets2;$graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square','shadow_offset' => 0.1, 'legend' => $strpreferredclass);$graph->y_data['studanswers1'] = $studbuckets1;$graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $stractualstudent);$graph->y_data['studanswers2'] = $studbuckets2;$graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $strpreferredstudent);$graph->y_data['stdev1'] = $stdev1;$graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill','shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.3);$graph->y_data['stdev2'] = $stdev2;$graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill','shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.2);$graph->offset_relation['stdev1'] = 'answers1';$graph->offset_relation['stdev2'] = 'answers2';$graph->y_tick_labels = $options;$graph->parameter['bar_size'] = 0.15;$graph->parameter['legend'] = 'outside-top';$graph->parameter['legend_border'] = 'black';$graph->parameter['legend_offset'] = 4;if (($maxbuckets1 > 0.0) && ($maxbuckets2 > 0.0)) {$graph->y_order = array('stdev1', 'stdev2', 'answers1', 'answers2', 'studanswers1', 'studanswers2');} else if ($maxbuckets1 > 0.0) {$graph->y_order = array('stdev1', 'answers1', 'studanswers1');} else {$graph->y_order = array('stdev2', 'answers2', 'studanswers2');}$graph->parameter['y_max_left'] = $numoptions - 1;$graph->parameter['y_axis_gridlines'] = $numoptions;$graph->parameter['y_resolution_left'] = 1;$graph->parameter['y_decimal_left'] = 1;$graph->parameter['x_axis_angle'] = 20;$graph->draw();break;case "studentmultiquestion.png":$question = $DB->get_record("survey_questions", array("id" => $qid));$question->text = get_string($question->text, "survey");$question->options = get_string($question->options, "survey");$options = explode(",", $question->options);$questionorder = explode(",", $question->multi);$qqq = $DB->get_records_list("survey_questions", "id", explode(',', $question->multi));foreach ($questionorder as $i => $val) {$names[$i] = get_string($qqq[$val]->shorttext, "survey");$buckets1[$i] = 0;$buckets2[$i] = 0;$count1[$i] = 0;$count2[$i] = 0;$indexof[$val] = $i;$studbuckets1[$i] = 0.0;$studbuckets2[$i] = 0.0;$studcount1[$i] = 0;$studcount2[$i] = 0;$stdev1[$i] = 0.0;$stdev2[$i] = 0.0;}$aaa = $DB->get_records_select("survey_answers", "((survey = ?) AND (question in ($question->multi)))",array($cm->instance));if ($aaa) {foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {$index = $indexof[$a->question];if ($a->userid == $sid) {if ($a->answer1) {$studbuckets1[$index] += $a->answer1;$studcount1[$index]++;}if ($a->answer2) {$studbuckets2[$index] += $a->answer2;$studcount2[$index]++;}}if ($a->answer1) {$buckets1[$index] += $a->answer1;$count1[$index]++;}if ($a->answer2) {$buckets2[$index] += $a->answer2;$count2[$index]++;}}}}foreach ($questionorder as $i => $val) {if ($count1[$i]) {$buckets1[$i] = (float) $buckets1[$i] / (float) $count1[$i];}if ($count2[$i]) {$buckets2[$i] = (float) $buckets2[$i] / (float) $count2[$i];}if ($studcount1[$i]) {$studbuckets1[$i] = (float) $studbuckets1[$i] / (float) $studcount1[$i];}if ($studcount2[$i]) {$studbuckets2[$i] = (float) $studbuckets2[$i] / (float) $studcount2[$i];}}foreach ($aaa as $a) {if (!$group or isset($users[$a->userid])) {$index = $indexof[$a->question];if ($a->answer1) {$difference = (float) ($a->answer1 - $buckets1[$index]);$stdev1[$index] += ($difference * $difference);}if ($a->answer2) {$difference = (float) ($a->answer2 - $buckets2[$index]);$stdev2[$index] += ($difference * $difference);}}}foreach ($questionorder as $i => $val) {if ($count1[$i]) {$stdev1[$i] = sqrt((float) $stdev1[$i] / ((float) $count1[$i]));}if ($count2[$i]) {$stdev2[$i] = sqrt((float) $stdev2[$i] / ((float) $count2[$i]));}$buckets1[$i] = $buckets1[$i] - 1; // Hack because there should not be ANY 0 values in the data.$buckets2[$i] = $buckets2[$i] - 1;$studbuckets1[$i] = $studbuckets1[$i] - 1;$studbuckets2[$i] = $studbuckets2[$i] - 1;}$maxbuckets1 = max($buckets1);$maxbuckets2 = max($buckets2);$graph = new graph($SURVEY_GWIDTH, $SURVEY_GHEIGHT);$graph->parameter['title'] = "$question->text";$graph->x_data = $names;$graph->y_data['answers1'] = $buckets1;$graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square','shadow_offset' => 0.1, 'legend' => $stractualclass);$graph->y_data['answers2'] = $buckets2;$graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square','shadow_offset' => 0.1, 'legend' => $strpreferredclass);$graph->y_data['studanswers1'] = $studbuckets1;$graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $stractualstudent);$graph->y_data['studanswers2'] = $studbuckets2;$graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square','shadow_offset' => 4, 'legend' => $strpreferredstudent);$graph->y_data['stdev1'] = $stdev1;$graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill','shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.3);$graph->y_data['stdev2'] = $stdev2;$graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill','shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.2);$graph->offset_relation['stdev1'] = 'answers1';$graph->offset_relation['stdev2'] = 'answers2';$graph->parameter['bar_size'] = 0.15;$graph->parameter['legend'] = 'outside-top';$graph->parameter['legend_border'] = 'black';$graph->parameter['legend_offset'] = 4;$graph->y_tick_labels = $options;if (($maxbuckets1 > 0.0) && ($maxbuckets2 > 0.0)) {$graph->y_order = array('stdev1', 'stdev2', 'answers1', 'answers2', 'studanswers1', 'studanswers2');} else if ($maxbuckets1 > 0.0) {$graph->y_order = array('stdev1', 'answers1', 'studanswers1');} else {$graph->y_order = array('stdev2', 'answers2', 'studanswers2');}$graph->parameter['y_max_left'] = count($options) - 1;$graph->parameter['y_axis_gridlines'] = count($options);$graph->parameter['y_resolution_left'] = 1;$graph->parameter['y_decimal_left'] = 1;$graph->parameter['x_axis_angle'] = 20;$graph->draw();break;default:break;}exit;