|
By dservos:
CONTRIB-497
*Added more visualizations
*Added selector UI Widget for flex/flare visualization
*Refactored some of flex actionscript code.
*Added defaults for selected group and items in visualizations.
*Improved removal of nodes and edges when an item or group is deselected in a legend.
*Fixed a memory leak realting to the removal and addtion of nodes.
*Added more options for and control of the flex/flare based visualization from the Moodle back end.
|
| 1 |
<?php |
<?php |
| 2 |
|
/// Get a session id from the URI request and make a cookie |
| 3 |
|
/// for it temparaly. This is needed as the flex application will |
| 4 |
|
/// not have the users oringal cookie and only the session information |
| 5 |
|
/// witch is passed to it. |
| 6 |
|
$cookiewasset = false; |
| 7 |
|
if(empty($_COOKIE) && isset($_GET['sessionid']) && isset($_GET['sessioncookie']) && isset($_GET['sessiontest'])) { |
| 8 |
|
$_COOKIE['MoodleSession' . $_GET['sessioncookie']] = $_GET['sessionid']; |
| 9 |
|
$_COOKIE['MoodleSessionTest' . $_GET['sessioncookie']] = $_GET['sessiontest']; |
| 10 |
|
$cookiewasset = true; |
| 11 |
|
} |
| 12 |
|
|
| 13 |
require_once '../../../config.php'; |
require_once '../../../config.php'; |
| 14 |
require_once $CFG->dirroot.'/grade/report/visual/lib.php'; |
require_once $CFG->dirroot.'/grade/report/visual/lib.php'; |
| 15 |
require_once $CFG->libdir.'/phpxml/xml.php'; |
require_once $CFG->libdir.'/phpxml/xml.php'; |
| 16 |
|
|
| 17 |
$visname = required_param('visid'); |
$visname = required_param('visid'); |
| 18 |
|
$courseid = required_param('id'); |
| 19 |
|
|
| 20 |
|
/// basic access checks |
| 21 |
|
if(isset($DB) && !is_null($DB)) { |
| 22 |
|
$course = $DB->get_record('course', array('id' => $courseid)); |
| 23 |
|
} else { |
| 24 |
|
$course = get_record('course', 'id', $courseid); |
| 25 |
|
} |
| 26 |
|
if (!$course) { |
| 27 |
|
print_error('nocourseid'); |
| 28 |
|
} |
| 29 |
|
require_login($course); |
| 30 |
|
$context = get_context_instance(CONTEXT_COURSE, $course->id); |
| 31 |
|
require_capability('gradereport/visual:view', $context); |
| 32 |
|
|
| 33 |
|
|
| 34 |
error_reporting(0); |
error_reporting(0); |
| 35 |
|
|
| 62 |
$settings['visualization']['layout']['xaxis']['xoffset'] =$vis->xaxisxoffset; |
$settings['visualization']['layout']['xaxis']['xoffset'] =$vis->xaxisxoffset; |
| 63 |
$settings['visualization']['layout']['xaxis']['yoffset'] =$vis->xaxisyoffset; |
$settings['visualization']['layout']['xaxis']['yoffset'] =$vis->xaxisyoffset; |
| 64 |
|
|
| 65 |
|
if($vis->layoutsettings != null) { |
| 66 |
$settings['visualization']['layout']['setting'] = array(); |
$settings['visualization']['layout']['setting'] = array(); |
| 67 |
for($i = 0; $i < count($vis->layoutsettings); $i++) { |
for($i = 0; $i < count($vis->layoutsettings); $i++) { |
| 68 |
$settings['visualization']['layout']['setting'][$i] = $vis->layoutsettings[$i]; |
$settings['visualization']['layout']['setting'][$i] = $vis->layoutsettings[$i]; |
| 69 |
} |
} |
| 70 |
|
} |
| 71 |
|
|
| 72 |
|
if($vis->edges != null) { |
| 73 |
$settings['visualization']['edge'] = array(); |
$settings['visualization']['edge'] = array(); |
| 74 |
for($i = 0; $i < count($vis->edges); $i++) { |
for($i = 0; $i < count($vis->edges); $i++) { |
| 75 |
$settings['visualization']['edge'][$i] = array(); |
$settings['visualization']['edge'][$i] = array(); |
| 94 |
$settings['visualization']['edge'][$i]['groupby'] = 'data.' . $vis->edges[$i]->groupby; |
$settings['visualization']['edge'][$i]['groupby'] = 'data.' . $vis->edges[$i]->groupby; |
| 95 |
} |
} |
| 96 |
} |
} |
| 97 |
|
} |
| 98 |
|
|
| 99 |
|
if($vis->encoders != null) { |
| 100 |
$settings['visualization']['encoder'] = array(); |
$settings['visualization']['encoder'] = array(); |
| 101 |
for($i = 0; $i < count($vis->encoders); $i++) { |
for($i = 0; $i < count($vis->encoders); $i++) { |
| 102 |
$settings['visualization']['encoder'][$i] = array(); |
$settings['visualization']['encoder'][$i] = array(); |
| 103 |
$settings['visualization']['encoder'][$i]['id'] = $vis->encoders[$i]->id; |
$settings['visualization']['encoder'][$i]['id'] = $vis->encoders[$i]->id; |
| 104 |
$settings['visualization']['encoder'][$i]['type'] = $vis->encoders[$i]->type; |
$settings['visualization']['encoder'][$i]['type'] = $vis->encoders[$i]->type; |
| 105 |
$settings['visualization']['encoder'][$i]['datafield'] = 'data.' . $vis->encoders[$i]->datafield; |
$settings['visualization']['encoder'][$i]['datafield'] = 'data.' . $vis->encoders[$i]->datafield; |
| 106 |
|
|
| 107 |
|
if($vis->encoders[$i]->settings != null) { |
| 108 |
$settings['visualization']['encoder'][$i]['setting'] = array(); |
$settings['visualization']['encoder'][$i]['setting'] = array(); |
| 109 |
for($j = 0; $j < count($vis->encoders[$i]->settings); $j++) { |
for($j = 0; $j < count($vis->encoders[$i]->settings); $j++) { |
| 110 |
$settings['visualization']['encoder'][$i]['setting'][$j] = $vis->encoders[$i]->settings[$j]; |
$settings['visualization']['encoder'][$i]['setting'][$j] = $vis->encoders[$i]->settings[$j]; |
| 111 |
} |
} |
| 112 |
} |
} |
| 113 |
|
} |
| 114 |
|
} |
| 115 |
|
|
| 116 |
|
if($vis->legends != null) { |
| 117 |
$settings['visualization']['legend'] = array(); |
$settings['visualization']['legend'] = array(); |
| 118 |
for($i = 0; $i < count($vis->legends); $i++) { |
for($i = 0; $i < count($vis->legends); $i++) { |
| 119 |
$settings['visualization']['legend'][$i] = array(); |
$settings['visualization']['legend'][$i] = array(); |
| 120 |
$settings['visualization']['legend'][$i]['encoderid'] = $vis->legends[$i]->encoder->id; |
$settings['visualization']['legend'][$i]['encoderid'] = $vis->legends[$i]->encoder->id; |
| 121 |
$settings['visualization']['legend'][$i]['datafield'] = 'data.' . $vis->legends[$i]->encoder->datafield; |
$settings['visualization']['legend'][$i]['datafield'] = 'data.' . $vis->legends[$i]->encoder->datafield; |
| 122 |
|
|
| 123 |
|
if($vis->legends[$i]->show != null) { |
| 124 |
|
$settings['visualization']['legend'][$i]['show'] = array(); |
| 125 |
|
for($j = 0; $j < count($vis->legends[$i]->show); $j++) { |
| 126 |
|
$settings['visualization']['legend'][$i]['show'][$j] = $vis->legends[$i]->show[$j]; |
| 127 |
|
} |
| 128 |
|
} |
| 129 |
|
} |
| 130 |
|
} |
| 131 |
|
|
| 132 |
|
if($vis->selectors != null) { |
| 133 |
|
$settings['visualization']['selector'] = array(); |
| 134 |
|
for($i = 0; $i < count($vis->selectors); $i++) { |
| 135 |
|
$settings['visualization']['selector'][$i] = array(); |
| 136 |
|
$settings['visualization']['selector'][$i]['param'] = $vis->selectors[$i]->param; |
| 137 |
|
$settings['visualization']['selector'][$i]['active'] = $vis->selectors[$i]->active; |
| 138 |
|
|
| 139 |
|
|
| 140 |
|
if($vis->selectors[$i]->options != null) { |
| 141 |
|
$settings['visualization']['selector'][$i]['option'] = array(); |
| 142 |
|
$k = 0; |
| 143 |
|
foreach($vis->selectors[$i]->options as $value=>$title) { |
| 144 |
|
$settings['visualization']['selector'][$i]['option'][$k] = array(); |
| 145 |
|
$settings['visualization']['selector'][$i]['option'][$k]['title'] = $title; |
| 146 |
|
$settings['visualization']['selector'][$i]['option'][$k]['value'] = $value; |
| 147 |
|
$k++; |
| 148 |
|
} |
| 149 |
|
} |
| 150 |
|
} |
| 151 |
} |
} |
| 152 |
|
|
| 153 |
/// TODO: add in capabilities data |
/// TODO: add in capabilities data |
| 207 |
$xml = XML_serialize($settings); |
$xml = XML_serialize($settings); |
| 208 |
echo $xml; |
echo $xml; |
| 209 |
|
|
| 210 |
|
|
| 211 |
|
|
| 212 |
|
/// Clean up cookie if it was created. |
| 213 |
|
if($cookiewasset) { |
| 214 |
|
$_COOKIE['MoodleSession' . $_GET['sessioncookie']] = null; |
| 215 |
|
$_COOKIE['MoodleSessionTest' . $_GET['sessioncookie']] = null; |
| 216 |
|
} |
| 217 |
?> |
?> |