Parent Directory
|
Revision Log
Revision 1.3 - (view) (download)
| 1 : | dservos | 1.1 | <?php |
| 2 : | dservos | 1.3 | /////////////////////////////////////////////////////////////////////////// |
| 3 : | // // | ||
| 4 : | // NOTICE OF COPYRIGHT // | ||
| 5 : | // // | ||
| 6 : | // Moodle - Modular Object-Oriented Dynamic Learning Environment // | ||
| 7 : | // http://moodle.org // | ||
| 8 : | // // | ||
| 9 : | // Copyright (C) 1999 onwards Martin Dougiamas http://moodle.com // | ||
| 10 : | // // | ||
| 11 : | // This program is free software; you can redistribute it and/or modify // | ||
| 12 : | // it under the terms of the GNU General Public License as published by // | ||
| 13 : | // the Free Software Foundation; either version 2 of the License, or // | ||
| 14 : | // (at your option) any later version. // | ||
| 15 : | // // | ||
| 16 : | // This program is distributed in the hope that it will be useful, // | ||
| 17 : | // but WITHOUT ANY WARRANTY; without even the implied warranty of // | ||
| 18 : | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // | ||
| 19 : | // GNU General Public License for more details: // | ||
| 20 : | // // | ||
| 21 : | // http://www.gnu.org/copyleft/gpl.html // | ||
| 22 : | // // | ||
| 23 : | /////////////////////////////////////////////////////////////////////////// | ||
| 24 : | |||
| 25 : | /** | ||
| 26 : | * Generates XML output that describes a visualization and is | ||
| 27 : | * sent to the flash/flex front end. The output is based on the | ||
| 28 : | * visualizations classes found in ./visualizations | ||
| 29 : | */ | ||
| 30 : | |||
| 31 : | dservos | 1.2 | /// Get a session id from the URI request and make a cookie |
| 32 : | /// for it temparaly. This is needed as the flex application will | ||
| 33 : | /// not have the users oringal cookie and only the session information | ||
| 34 : | /// witch is passed to it. | ||
| 35 : | $cookiewasset = false; | ||
| 36 : | if(empty($_COOKIE) && isset($_GET['sessionid']) && isset($_GET['sessioncookie']) && isset($_GET['sessiontest'])) { | ||
| 37 : | $_COOKIE['MoodleSession' . $_GET['sessioncookie']] = $_GET['sessionid']; | ||
| 38 : | $_COOKIE['MoodleSessionTest' . $_GET['sessioncookie']] = $_GET['sessiontest']; | ||
| 39 : | $cookiewasset = true; | ||
| 40 : | } | ||
| 41 : | |||
| 42 : | dservos | 1.1 | require_once '../../../config.php'; |
| 43 : | require_once $CFG->dirroot.'/grade/report/visual/lib.php'; | ||
| 44 : | require_once $CFG->libdir.'/phpxml/xml.php'; | ||
| 45 : | |||
| 46 : | $visname = required_param('visid'); | ||
| 47 : | dservos | 1.2 | $courseid = required_param('id'); |
| 48 : | |||
| 49 : | /// basic access checks | ||
| 50 : | if(isset($DB) && !is_null($DB)) { | ||
| 51 : | $course = $DB->get_record('course', array('id' => $courseid)); | ||
| 52 : | } else { | ||
| 53 : | $course = get_record('course', 'id', $courseid); | ||
| 54 : | } | ||
| 55 : | if (!$course) { | ||
| 56 : | print_error('nocourseid'); | ||
| 57 : | } | ||
| 58 : | require_login($course); | ||
| 59 : | $context = get_context_instance(CONTEXT_COURSE, $course->id); | ||
| 60 : | require_capability('gradereport/visual:view', $context); | ||
| 61 : | |||
| 62 : | dservos | 1.3 | $vis = grade_report_visual::get_visualization($visname, $context); |
| 63 : | |||
| 64 : | /// Make sure the user is allowed see this visualization | ||
| 65 : | require_capability($vis->capability, $context); | ||
| 66 : | dservos | 1.1 | |
| 67 : | dservos | 1.3 | /// Turn of error reporting as hummans will not be seeing |
| 68 : | /// this and it will be read by the front end. Notices and | ||
| 69 : | /// warnings will break the XML format and stop the | ||
| 70 : | /// front end from working. | ||
| 71 : | dservos | 1.1 | error_reporting(0); |
| 72 : | |||
| 73 : | dservos | 1.3 | /// Define array that repersents the XML output from the |
| 74 : | /// visualization class selected. | ||
| 75 : | dservos | 1.1 | $settings = array(); |
| 76 : | $settings['visualization'] = array(); | ||
| 77 : | |||
| 78 : | $settings['visualization']['name'] = $vis->name; | ||
| 79 : | $settings['visualization']['classname'] = get_class($vis); | ||
| 80 : | |||
| 81 : | $settings['visualization']['layout'] = array(); | ||
| 82 : | $settings['visualization']['layout']['type'] = $vis->layout; | ||
| 83 : | |||
| 84 : | $settings['visualization']['layout']['xaxis'] = array(); | ||
| 85 : | $settings['visualization']['layout']['yaxis'] = array(); | ||
| 86 : | $settings['visualization']['layout']['xaxis']['field'] = 'data.' . $vis->xaxis; | ||
| 87 : | $settings['visualization']['layout']['yaxis']['field'] = 'data.' . $vis->yaxis; | ||
| 88 : | $settings['visualization']['layout']['xaxis']['labelformat'] = $vis->xaxislabelformat; | ||
| 89 : | $settings['visualization']['layout']['yaxis']['labelformat'] = $vis->yaxislabelformat; | ||
| 90 : | $settings['visualization']['layout']['xaxis']['min'] = $vis->xaxismin; | ||
| 91 : | $settings['visualization']['layout']['xaxis']['max'] = $vis->xaxismax; | ||
| 92 : | $settings['visualization']['layout']['yaxis']['min'] = $vis->yaxismin; | ||
| 93 : | $settings['visualization']['layout']['yaxis']['max'] = $vis->yaxismax; | ||
| 94 : | $settings['visualization']['layout']['yaxis']['xoffset'] =$vis->yaxisxoffset; | ||
| 95 : | $settings['visualization']['layout']['yaxis']['yoffset'] =$vis->yaxisyoffset; | ||
| 96 : | $settings['visualization']['layout']['xaxis']['xoffset'] =$vis->xaxisxoffset; | ||
| 97 : | $settings['visualization']['layout']['xaxis']['yoffset'] =$vis->xaxisyoffset; | ||
| 98 : | |||
| 99 : | dservos | 1.2 | if($vis->layoutsettings != null) { |
| 100 : | $settings['visualization']['layout']['setting'] = array(); | ||
| 101 : | for($i = 0; $i < count($vis->layoutsettings); $i++) { | ||
| 102 : | $settings['visualization']['layout']['setting'][$i] = $vis->layoutsettings[$i]; | ||
| 103 : | } | ||
| 104 : | dservos | 1.1 | } |
| 105 : | |||
| 106 : | dservos | 1.2 | if($vis->edges != null) { |
| 107 : | $settings['visualization']['edge'] = array(); | ||
| 108 : | for($i = 0; $i < count($vis->edges); $i++) { | ||
| 109 : | $settings['visualization']['edge'][$i] = array(); | ||
| 110 : | dservos | 1.1 | |
| 111 : | dservos | 1.2 | if(is_array($vis->edges[$i]->sortby)) { |
| 112 : | $settings['visualization']['edge'][$i]['sortby'] = array(); | ||
| 113 : | dservos | 1.1 | |
| 114 : | dservos | 1.2 | for($k = 0; $k < count($vis->edges[$i]->sortby); $k++) { |
| 115 : | $settings['visualization']['edge'][$i]['sortby'][$k] = 'data.' . $vis->edges[$i]->sortby[$k]; | ||
| 116 : | } | ||
| 117 : | } else { | ||
| 118 : | $settings['visualization']['edge'][$i]['sortby'] = 'data.' . $vis->edges[$i]->sortby; | ||
| 119 : | } | ||
| 120 : | |||
| 121 : | if(is_array($vis->edges[$i]->groupby)) { | ||
| 122 : | $settings['visualization']['edge'][$i]['groupby'] = array(); | ||
| 123 : | |||
| 124 : | for($k = 0; $k < count($vis->edges[$i]->groupby); $k++) { | ||
| 125 : | $settings['visualization']['edge'][$i]['groupby'][$k] = 'data.' . $vis->edges[$i]->groupby[$k]; | ||
| 126 : | } | ||
| 127 : | } else { | ||
| 128 : | $settings['visualization']['edge'][$i]['groupby'] = 'data.' . $vis->edges[$i]->groupby; | ||
| 129 : | dservos | 1.1 | } |
| 130 : | } | ||
| 131 : | dservos | 1.2 | } |
| 132 : | |||
| 133 : | if($vis->encoders != null) { | ||
| 134 : | $settings['visualization']['encoder'] = array(); | ||
| 135 : | for($i = 0; $i < count($vis->encoders); $i++) { | ||
| 136 : | $settings['visualization']['encoder'][$i] = array(); | ||
| 137 : | $settings['visualization']['encoder'][$i]['id'] = $vis->encoders[$i]->id; | ||
| 138 : | $settings['visualization']['encoder'][$i]['type'] = $vis->encoders[$i]->type; | ||
| 139 : | $settings['visualization']['encoder'][$i]['datafield'] = 'data.' . $vis->encoders[$i]->datafield; | ||
| 140 : | dservos | 1.1 | |
| 141 : | dservos | 1.2 | if($vis->encoders[$i]->settings != null) { |
| 142 : | $settings['visualization']['encoder'][$i]['setting'] = array(); | ||
| 143 : | for($j = 0; $j < count($vis->encoders[$i]->settings); $j++) { | ||
| 144 : | $settings['visualization']['encoder'][$i]['setting'][$j] = $vis->encoders[$i]->settings[$j]; | ||
| 145 : | } | ||
| 146 : | dservos | 1.1 | } |
| 147 : | } | ||
| 148 : | } | ||
| 149 : | |||
| 150 : | dservos | 1.2 | if($vis->legends != null) { |
| 151 : | $settings['visualization']['legend'] = array(); | ||
| 152 : | for($i = 0; $i < count($vis->legends); $i++) { | ||
| 153 : | $settings['visualization']['legend'][$i] = array(); | ||
| 154 : | $settings['visualization']['legend'][$i]['encoderid'] = $vis->legends[$i]->encoder->id; | ||
| 155 : | $settings['visualization']['legend'][$i]['datafield'] = 'data.' . $vis->legends[$i]->encoder->datafield; | ||
| 156 : | |||
| 157 : | if($vis->legends[$i]->show != null) { | ||
| 158 : | $settings['visualization']['legend'][$i]['show'] = array(); | ||
| 159 : | for($j = 0; $j < count($vis->legends[$i]->show); $j++) { | ||
| 160 : | $settings['visualization']['legend'][$i]['show'][$j] = $vis->legends[$i]->show[$j]; | ||
| 161 : | } | ||
| 162 : | } | ||
| 163 : | dservos | 1.1 | } |
| 164 : | } | ||
| 165 : | |||
| 166 : | dservos | 1.2 | if($vis->selectors != null) { |
| 167 : | $settings['visualization']['selector'] = array(); | ||
| 168 : | for($i = 0; $i < count($vis->selectors); $i++) { | ||
| 169 : | $settings['visualization']['selector'][$i] = array(); | ||
| 170 : | $settings['visualization']['selector'][$i]['param'] = $vis->selectors[$i]->param; | ||
| 171 : | $settings['visualization']['selector'][$i]['active'] = $vis->selectors[$i]->active; | ||
| 172 : | |||
| 173 : | |||
| 174 : | if($vis->selectors[$i]->options != null) { | ||
| 175 : | $settings['visualization']['selector'][$i]['option'] = array(); | ||
| 176 : | $k = 0; | ||
| 177 : | foreach($vis->selectors[$i]->options as $value=>$title) { | ||
| 178 : | $settings['visualization']['selector'][$i]['option'][$k] = array(); | ||
| 179 : | $settings['visualization']['selector'][$i]['option'][$k]['title'] = $title; | ||
| 180 : | $settings['visualization']['selector'][$i]['option'][$k]['value'] = $value; | ||
| 181 : | $k++; | ||
| 182 : | } | ||
| 183 : | } | ||
| 184 : | } | ||
| 185 : | dservos | 1.1 | } |
| 186 : | |||
| 187 : | /// TODO: add in capabilities data | ||
| 188 : | $settings['visualization']['capabilities'] = array(); | ||
| 189 : | |||
| 190 : | $settings['visualization']['flash'] = array(); | ||
| 191 : | $settings['visualization']['flash']['width'] = $vis->width; | ||
| 192 : | $settings['visualization']['flash']['height'] = $vis->height; | ||
| 193 : | $settings['visualization']['flash']['framerate'] = $vis->framerate; | ||
| 194 : | $settings['visualization']['flash']['quality'] = $vis->quality; | ||
| 195 : | |||
| 196 : | $settings['visualization']['labels'] = array(); | ||
| 197 : | $settings['visualization']['labels']['xaxis'] = $vis->xaxislabel; | ||
| 198 : | $settings['visualization']['labels']['yaxis'] = $vis->yaxislabel; | ||
| 199 : | $settings['visualization']['labels']['title'] = $vis->title; | ||
| 200 : | |||
| 201 : | $settings['visualization']['style'] = array(); | ||
| 202 : | $settings['visualization']['style']['nodeshape'] = $vis->nodeshape; | ||
| 203 : | $settings['visualization']['style']['edgeshape'] = $vis->edgeshape; | ||
| 204 : | $settings['visualization']['style']['bgcolor'] = $vis->backgroundcolor; | ||
| 205 : | |||
| 206 : | $settings['visualization']['style']['text'] = array(); | ||
| 207 : | $settings['visualization']['style']['text']['font'] = $vis->font; | ||
| 208 : | $settings['visualization']['style']['text']['size'] = $vis->fontsize; | ||
| 209 : | |||
| 210 : | $settings['visualization']['style']['button'] = array(); | ||
| 211 : | $settings['visualization']['style']['button']['bgcolor'] = $vis->buttonbgcolor; | ||
| 212 : | $settings['visualization']['style']['button']['alpha'] = $vis->buttonbgalpha; | ||
| 213 : | $settings['visualization']['style']['button']['text'] = array(); | ||
| 214 : | $settings['visualization']['style']['button']['text']['font'] = $vis->buttonfont; | ||
| 215 : | $settings['visualization']['style']['button']['text']['size'] = $vis->buttonfontsize; | ||
| 216 : | $settings['visualization']['style']['button']['line'] = array(); | ||
| 217 : | $settings['visualization']['style']['button']['line']['size'] = $vis->buttonlinesize; | ||
| 218 : | $settings['visualization']['style']['button']['line']['color'] = $vis->buttonlinecolor; | ||
| 219 : | $settings['visualization']['style']['button']['line']['alpha'] = $vis->buttonlinealpha; | ||
| 220 : | |||
| 221 : | $settings['visualization']['style']['popup'] = array(); | ||
| 222 : | $settings['visualization']['style']['popup']['bgcolor'] = $vis->popupbgcolor; | ||
| 223 : | $settings['visualization']['style']['popup']['alpha'] = $vis->popupbgalpha; | ||
| 224 : | $settings['visualization']['style']['popup']['text'] = array(); | ||
| 225 : | $settings['visualization']['style']['popup']['text']['font'] = $vis->popupfont; | ||
| 226 : | $settings['visualization']['style']['popup']['text']['size'] = $vis->popupfontsize; | ||
| 227 : | $settings['visualization']['style']['popup']['line'] = array(); | ||
| 228 : | $settings['visualization']['style']['popup']['line']['size'] = $vis->popuplinesize; | ||
| 229 : | $settings['visualization']['style']['popup']['line']['color'] = $vis->popuplinecolor; | ||
| 230 : | $settings['visualization']['style']['popup']['line']['alpha'] = $vis->popuplinealpha; | ||
| 231 : | |||
| 232 : | $settings['visualization']['lang'] = array(); | ||
| 233 : | $settings['visualization']['lang']['hide'] = get_string('hide', 'gradereport_visual'); | ||
| 234 : | $settings['visualization']['lang']['show'] = get_string('show', 'gradereport_visual'); | ||
| 235 : | $settings['visualization']['lang']['xlabels'] = get_string('xlabels', 'gradereport_visual'); | ||
| 236 : | $settings['visualization']['lang']['ylabels'] = get_string('ylabels', 'gradereport_visual'); | ||
| 237 : | $settings['visualization']['lang']['axes'] = get_string('axes', 'gradereport_visual'); | ||
| 238 : | $settings['visualization']['lang']['invertaxes'] = get_string('invertaxes', 'gradereport_visual'); | ||
| 239 : | |||
| 240 : | dservos | 1.3 | /// Turn array into XML string and output. |
| 241 : | dservos | 1.1 | $xml = XML_serialize($settings); |
| 242 : | echo $xml; | ||
| 243 : | |||
| 244 : | dservos | 1.2 | /// Clean up cookie if it was created. |
| 245 : | if($cookiewasset) { | ||
| 246 : | $_COOKIE['MoodleSession' . $_GET['sessioncookie']] = null; | ||
| 247 : | $_COOKIE['MoodleSessionTest' . $_GET['sessioncookie']] = null; | ||
| 248 : | } | ||
| 249 : | dservos | 1.1 | ?> |
| Moodle CVS Admin | ViewVC Help |
| Powered by ViewVC 1.0.7 |