libdir.'/adminlib.php'); require_once($CFG->libdir.'/ddllib.php'); /// Add required XMLDB action classes require_once('actions/XMLDBAction.class.php'); require_once('actions/XMLDBCheckAction.class.php'); admin_externalpage_setup('xmldbeditor'); /// Add other used libraries require_once($CFG->libdir . '/xmlize.php'); /// Handle session data global $XMLDB; /// State is stored in session - we have to serialise it because the classes are not loaded when creating session if (!isset($SESSION->xmldb)) { $XMLDB = new stdClass; } else { $XMLDB = unserialize($SESSION->xmldb); } /// Some previous checks if (! $site = get_site()) { redirect("$CFG->wwwroot/$CFG->admin/index.php"); } require_login(); require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)); /// Body of the script, based on action, we delegate the work $action = optional_param ('action', 'main_view', PARAM_ALPHAEXT); /// Get the action path and invoke it $actionsroot = "$CFG->dirroot/$CFG->admin/xmldb/actions"; $actionclass = $action . '.class.php'; $actionpath = "$actionsroot/$action/$actionclass"; /// Load and invoke the proper action if (file_exists($actionpath) && is_readable($actionpath)) { require_once($actionpath); if ($xmldb_action = new $action) { //Invoke it $result = $xmldb_action->invoke(); // store the result in session $SESSION->xmldb = serialize($XMLDB); if ($result) { /// Based on getDoesGenerate() switch ($xmldb_action->getDoesGenerate()) { case ACTION_GENERATE_HTML: /// Define $CFG->javascript to use our custom javascripts. /// Save the original one to add it from ours. Global too! :-( global $standard_javascript; $standard_javascript = $CFG->javascript; // Save original javascript file $CFG->javascript = $CFG->dirroot.'/'.$CFG->admin.'/xmldb/javascript.php'; //Use our custom javascript code /// Go with standard admin header admin_externalpage_print_header(); print_heading($xmldb_action->getTitle()); echo $xmldb_action->getOutput(); admin_externalpage_print_footer(); break; case ACTION_GENERATE_XML: header('Content-type: application/xhtml+xml'); echo $xmldb_action->getOutput(); break; } } else { //TODO: need more detailed error info print_error('xmldberror'); } } else { $a = new stdclass; $a->action = $action; $a->actionclass = $actionclass; print_error('cannotinstantiateclass', 'xmldb', '', $a); } } else { print_error('invalidaction'); } if ($xmldb_action->getDoesGenerate() != ACTION_GENERATE_XML) { if (debugging()) { ///print_object($XMLDB); } } ?>