function scorm_get_toc($user, $scorm, $cmid, $toclink = TOCJSLINK, $currentorg = '', $scoid = '', $mode = 'normal', $attempt = '', $play = false, $tocheader = false) { global $CFG, $DB, $OUTPUT; if (empty($attempt)) { $attempt = scorm_get_last_attempt($scorm->id, $user->id); } $result = new stdClass(); $organizationsco = null; if ($tocheader) { $result->toc = "<div id=\"scorm_layout\" class=\"yui3-g-r\">\n"; $result->toc .= "<div id=\"scorm_toc\" class=\"yui3-u-1-5\">\n"; $result->toc .= "<div id=\"scorm_toc_title\"></div>\n"; $result->toc .= "<div id=\"scorm_tree\">\n"; } if (!empty($currentorg)) { $organizationsco = $DB->get_record('scorm_scoes', array('scorm' => $scorm->id, 'identifier' => $currentorg)); if (!empty($organizationsco->title)) { if ($play) { $result->toctitle = $organizationsco->title; } } } $scoes = scorm_get_toc_object($user, $scorm, $currentorg, $scoid, $mode, $attempt, $play, $organizationsco); $treeview = scorm_format_toc_for_treeview($user, $scorm, $scoes['scoes'][0]->children, $scoes['usertracks'], $cmid, $toclink, $currentorg, $attempt, $play, $organizationsco, false); if ($tocheader) { $result->toc .= $treeview->toc; } else { $result->toc = $treeview->toc; } if (!empty($scoes['scoid'])) { $scoid = $scoes['scoid']; } if (empty($scoid)) { $result->sco = $scoes['scoes'][0]->children[0]; } else { $result->sco = scorm_get_sco($scoid); } if ($scorm->hidetoc == SCORM_TOC_POPUP) { $tocmenu = scorm_format_toc_for_droplist($scorm, $scoes['scoes'][0]->children, $scoes['usertracks'], $currentorg, $organizationsco); $modestr = ''; if ($mode != 'normal') { $modestr = '&mode=' . $mode; } $url = new moodle_url('/mod/scorm/player.php?a=' . $scorm->id . '¤torg=' . $currentorg . $modestr); $result->tocmenu = $OUTPUT->single_select($url, 'scoid', $tocmenu, $result->sco->id, null, "tocmenu"); } $result->prerequisites = $treeview->prerequisites; $result->incomplete = $treeview->incomplete; $result->attemptleft = $treeview->attemptleft; if ($tocheader) { $result->toc .= "</div></div>\n"; $result->toc .= "<div id=\"scorm_toc_toggle\">\n"; $result->toc .= "<button id=\"scorm_toc_toggle_btn\"></button></div>\n"; $result->toc .= "<div id=\"scorm_content\">"; $result->toc .= "<div id=\"scorm_navpanel\"></div>\n"; $result->toc .= "</div></div>\n"; } return $result; }
function scorm_get_toc($user, $scorm, $cmid, $toclink=TOCJSLINK, $currentorg='', $scoid='', $mode='normal', $attempt='', $play=false, $tocheader=false) { global $CFG, $DB, $OUTPUT; if (empty($attempt)) { $attempt = scorm_get_last_attempt($scorm->id, $user->id); } $result = new stdClass(); $organizationsco = null; if ($tocheader) { $result->toc = html_writer::start_div('yui3-g-r', array('id' => 'scorm_layout')); $result->toc .= html_writer::start_div('yui3-u-1-5', array('id' => 'scorm_toc')); $result->toc .= html_writer::div('', '', array('id' => 'scorm_toc_title')); $result->toc .= html_writer::start_div('', array('id' => 'scorm_tree')); } if (!empty($currentorg)) { $organizationsco = $DB->get_record('scorm_scoes', array('scorm' => $scorm->id, 'identifier' => $currentorg)); if (!empty($organizationsco->title)) { if ($play) { $result->toctitle = $organizationsco->title; } } } $scoes = scorm_get_toc_object($user, $scorm, $currentorg, $scoid, $mode, $attempt, $play, $organizationsco); $treeview = scorm_format_toc_for_treeview($user, $scorm, $scoes['scoes'][0]->children, $scoes['usertracks'], $cmid, $toclink, $currentorg, $attempt, $play, $organizationsco, false); if ($tocheader) { $result->toc .= $treeview->toc; } else { $result->toc = $treeview->toc; } if (!empty($scoes['scoid'])) { $scoid = $scoes['scoid']; } if (empty($scoid)) { // If this is a normal package with an org sco and child scos get the first child. if (!empty($scoes['scoes'][0]->children)) { $result->sco = $scoes['scoes'][0]->children[0]; } else { // This package only has one sco - it may be a simple external AICC package. $result->sco = $scoes['scoes'][0]; } } else { $result->sco = scorm_get_sco($scoid); } if ($scorm->hidetoc == SCORM_TOC_POPUP) { $tocmenu = scorm_format_toc_for_droplist($scorm, $scoes['scoes'][0]->children, $scoes['usertracks'], $currentorg, $organizationsco); $modestr = ''; if ($mode != 'normal') { $modestr = '&mode='.$mode; } $url = new moodle_url('/mod/scorm/player.php?a='.$scorm->id.'¤torg='.$currentorg.$modestr); $result->tocmenu = $OUTPUT->single_select($url, 'scoid', $tocmenu, $result->sco->id, null, "tocmenu"); } $result->prerequisites = $treeview->prerequisites; $result->incomplete = $treeview->incomplete; $result->attemptleft = $treeview->attemptleft; if ($tocheader) { $result->toc .= html_writer::end_div().html_writer::end_div(); $result->toc .= html_writer::start_div('', array('id' => 'scorm_toc_toggle')); $result->toc .= html_writer::tag('button', '', array('id' => 'scorm_toc_toggle_btn')).html_writer::end_div(); $result->toc .= html_writer::start_div('', array('id' => 'scorm_content')); $result->toc .= html_writer::div('', '', array('id' => 'scorm_navpanel')); $result->toc .= html_writer::end_div().html_writer::end_div(); } return $result; }